Camelia, the Perl 6 bug

IRC log for #perl6, 2013-06-18

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | plain, newest first | full mode

All times shown according to UTC.

Time S Nick Message
00:03 rjbs Ummm.  I ran "perl Configure.pl --gen-parrot
00:03 rjbs and after doing some "make stuff" I eventually end up in less, showing the document "src/packfile.c - Parrot PackFile API"
00:04 rjbs If I quit that, I get into an ops document.  I quit that, then: Cannot chmod 0644 ops/bit.pod:No such file or directory at /Users/rjbs/perl5/perlbrew/perls/1​9.0/lib/5.19.0/ExtUtils/Command.pm line 274.
00:04 rjbs and the whole thing fails.
00:07 sorear do you have a PERLDOC environment variable?
00:16 dalek rakudo/nom: af50a6e | pmichaud++ | src/core/Str.pm:
00:16 dalek rakudo/nom: Add Str.succ for codepoints \x2581..\x2588 (RT #118519).
00:33 rjbs Worked okay once I unset PERLDOC.
00:39 * rjbs has a perl6 again!
00:44 rjbs Huh.  enum surprises me
00:44 rjbs (everything surprises me)
00:45 rjbs r: enum X <1 2 3>; say X ~~ Enum
00:45 camelia rakudo b2072f: OUTPUT«False␤»
00:46 sorear Enum is the type of immutable key/value pairs.
00:46 sorear Don't ask me why.
00:46 sorear Enumeration is a role which is mixed into all enum objects
00:48 sorear r: enum X <x1 x2 x3>; say Enumeration.^find_method("roll").perl
00:48 camelia rakudo b2072f: OUTPUT«method roll(Enumeration : *@pos, *%named) { ... }␤»
00:48 sorear oh right, ::?CLASS genericity
03:22 colomon rn: say ((set <a b c>), (bag <a b c>)).grep(* ~~ Baggy)
03:22 camelia rakudo b2072f, niecza v24-77-g2b14288: OUTPUT«␤»
03:23 colomon errr.... what am I missing with the first one?  and rakudobug?
03:25 lue .tell jnthn nqp-moar-cc.nqp:68 and MASTTesting.nqp:11 seem to be using a Windows specific command (the same one) without some OS-based conditional, leading to "sh: del: command not found" occurring in temp.output
05:47 skids star: https://gist.github.com/skids/5802914
05:47 camelia star 2013.02: OUTPUT«1 2 3 4␤1 2 3 4␤»
05:48 skids hmmm.  Oh it isn't 05.
05:48 skids r: https://gist.github.com/skids/5802914
05:48 camelia rakudo b2072f: OUTPUT«1 2 3 4␤1Block.new()␤No exception handler and no message␤␤current instr.: 'throw' pc 347557 (src/gen/CORE.setting.pir:151689) (src/gen/CORE.setting:8887)␤called from Sub 'sink' pc 379739 (src/gen/CORE.setting.pir:164183) (src/gen/CORE.setting:10169)␤called from Sub…
06:41 dalek nqp: ca52770 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
06:41 dalek nqp: Add a nqp::debugnoop opcode, which does nothing but you can put a breakpoint on it.
06:41 dalek nqp: Multi cache should decontainerize before taking the type for JVM/Parrot consistency.  Still a little dodgy because it assumes hashCode values are unique.
06:42 sorear sorear$ ./perl6 -e 'use v6; say "hi"'
06:42 sorear hi
06:43 moritz \o/
08:06 dalek roast: 0b9ec37 | (Elizabeth Mattijsen)++ | S32-list/categorize.t:
08:06 dalek roast: Added some typed hash tests to categorize
08:38 dalek rakudo/nom: 9fae045 | (Brent Laabs)++ | src/core/IO.pm:
08:38 dalek rakudo/nom: add IO::Path methods rename, chmod
08:38 dalek rakudo/nom: move dir()'s logic into IO::Path.contents; it's working with paths already
08:38 dalek rakudo/nom: change IO::Path.resolve to a proper X::NYI
08:38 dalek rakudo/nom: add IO::Path.succ and .pred
08:38 dalek rakudo/nom: undo rename for now
08:39 dalek nqp: fff73cf | sorear++ | src/NQP/Actions.nqp:
08:39 dalek nqp: Need to use savecapture when calling MMD dispatcher for reentrancy on JVM
08:58 sorear CLA is in the outbox
08:59 sorear 1..1
08:59 sorear ok 1 - hi
08:59 sorear this is promising
09:01 moritz sorear: is this rakudo?
09:04 sorear moritz: yes
09:04 moritz \o/
09:59 dalek v5: 8221c3a | (Tobias Leich)++ | t/test_summary:
09:59 dalek v5: print summary when tests are done too
09:59 dalek v5: make `time` an identifier with proto (), rather than a term
10:07 sorear masak: I've convinced rakudo-jvm to accept both use v6 and use Test.  also, my CLA is in the mail.  kind of.
10:16 sorear masak: how much time do I have left to surprise jnthn++ with a clean spectest run?
10:28 masak sorear: you can expect him to resurface in about 28 hours.
10:41 dalek nqp: 9625921 | sorear++ | src/vm/jvm/ (2 files):
10:41 dalek nqp: Add jvmgetproperties op for access to JVM VM info
10:41 dalek nqp: Implement CCLASS_PRINTING on jvm
11:02 dalek rakudo/nom: 6620d3b | (Elizabeth Mattijsen)++ | src/core/Hash.pm:
11:02 dalek rakudo/nom: Get rid of unneeded local lists in categorize
11:11 sorear https://gist.github.com/sorear/5804522
11:15 sorear (that's for everyone :D)
11:21 sorear i've pushed everything to sorear/rakudo/nom; beware that I haven't tested the changes on parrot
11:23 dalek rakudo/nom: 003f346 | (Timo Paulssen)++ | src/Perl6/Grammar.nqp:
11:23 dalek rakudo/nom: allow a dot before hyper postfix (also unspace).
11:24 dalek roast: 629ff33 | moritz++ | S03-operators/set.t:
11:24 dalek roast: fudge set.t for rakudo
11:39 pr_ Hi, is the :nl parameter in IO::Handle::open not functional? eg, open $file, :w, :enc<Latin-1>, :nl<"\r\n\r\n">
11:43 moritz pr_: the proper way to supply it would be :nl("\r\n\r\n")
11:43 moritz :nl<...> already implies quoting, so the double quotes would be part of the string passed to the function -- not what you want
11:43 moritz (but it's not yet implemented)
11:45 pr_ When nl("\r\n\r\n") is implemented, will this be the best way to specify Windows line endings?
11:46 masak pr_: I should think in the ordinary case, Windows line endings will be handled correctly by default.
11:46 masak pr_: what you want to do looks like a combination of that and paragraph breaks.
11:47 pr_ masak: it seems a bit complicated. I miss :crlf :-)
11:48 masak again, Windows line breaks Should Just Work without you doing anything. just like in Perl 5.
11:48 masak I don't think that seems complicated ;)
11:50 pr_ masak: understood. But I was thinking of writing to Unix/Mac files on Windows, and vice-versa. I will just have to practice the new technique.
11:53 lizmat r: my $a=1; my @a; @a.push($a); say $a === @a[0]; $a=2; say $a; say @a[0]  # apparently a===b is not enough to check for bound variables
11:54 lizmat Q: how would I check whether two values are bound to the same container?
11:54 lizmat Q: how can I push a bound value onto a list
11:59 moritz =:= checks for container equivalence
12:00 FROGGS r: my $a=1; my @a; @a[0] = $a; say $a =:= @a[0];
12:00 camelia rakudo b2072f: OUTPUT«False␤»
12:00 moritz r: my $a=1; my @a; @a[0] := $a; say $a =:= @a[0];
12:00 camelia rakudo b2072f: OUTPUT«True␤»
12:01 FROGGS answer to Q2: bind_pos might what you want
12:02 lizmat moritz++, FROGGS++ thanks for the pointers
12:23 lizmat I wonder how the description of pop at S32/Containers:697 can be combined with the reverse example at S32/Containers:386
12:24 lizmat in other words: 697 describes as pop failing on an empty array, while the reverse example seems to assume it will not?
12:29 masak rn: say (my @a).pop ~~ Failure
12:29 camelia ..rakudo b2072f: OUTPUT«True␤»
12:29 masak r: my @a = 1, 2, 3; say "yay" while @a.pop; say "alive"
12:29 camelia rakudo b2072f: OUTPUT«yay␤yay␤yay␤alive␤»
12:30 masak lizmat: no, the reverse example only seems to assume that 'pop @values' will return something falsy.
12:30 lizmat so the while eats the failure and interpretes it as false
12:30 lizmat so it never gets thrown?
12:30 masak right.
12:30 masak that's Failures for you.
12:30 masak lizmat: which works (see above) but is stupid for a different reason -- it would stop on 0 and "" and empty arrays.
12:31 masak I dislike pseudocode like this in the spec. it almost always turns out to be too naïve.
12:31 lizmat or if there is any other (internal) failure in pop, one would never know
12:34 lizmat so why couldn't pop return Mu on an empty array
12:34 lizmat and have it throw any Failures?
12:34 masak er. you throw Exceptions, not Failures.
12:35 moritz if you do nothing with the returned Failure, it blows up
12:35 masak and Failure seems to be the right thing to return from a pop on an empty array.
12:35 moritz so the chances of hiding a bug are smaller when returning a Failure
12:35 lizmat r: my @a; say pop @a
12:35 camelia rakudo b2072f: OUTPUT«Element popped from empty list␤  in method gist at src/gen/CORE.setting:10161␤  in method gist at src/gen/CORE.setting:893␤  in sub say at src/gen/CORE.setting:11047␤  in block  at /tmp/_boKEm_mAL:1␤␤»
12:35 lizmat so I guess "say" is stringifying the Failure
12:35 moritz .gist actually
12:36 moritz and it blows up, because it's not yet handled
12:37 moritz testing truthiness and .defined-ness on a Failure sets its 'handled' bit
12:37 * moritz is not a big fan of that one
12:41 [Coke] Anyone wants rakudo-jvm smoked for star (needs more infrastructure) or for the spec tests, we need a box we can run java on. feather1 is out, per Juerd.
12:43 lizmat [Coke]: am about to retire my 3 year old 17" MacBook Pro, with 8G of RAM, would that be able to do this?
12:43 [Coke] lizmat: aside from the difficulty of building pugs the first time, likely.
12:44 masak r: class C { has $.attr is rw = 5; multi method foo($x where { $x == $.attr }) { say "OH HAI" }; multi method foo($x) { say "OH default" } }; given C.new { .foo(5); .attr = 42; .foo(5) }
12:44 camelia rakudo b2072f: OUTPUT«OH HAI␤OH default␤»
12:44 masak lizmat: like that? :)
12:44 [Coke] https://github.com/coke/rakudo[…]/test-modules.log
12:45 moritz [Coke]: thanks
12:47 [Coke] so, I'm wondering if it make sense to have the daily rakudo star builds always go for latest rakudo and latest modules.
12:48 [Coke] (as opposed to the versions marked in the repo)
12:48 lizmat I would think so…  that was the whole idea, no?
13:11 timotimo S06 at least doesn't mention types on slurpies
13:13 timotimo it doesn't seem like the spec says anything about typed slurpy arguments; so there should be an addition somewhere that says "you can't do that."
13:24 tidux so is there any big software that's been built in perl6 yet?
13:25 dalek niecza: 9f58f84 | (Solomon Foster)++ | lib/CORE.setting:
13:25 dalek niecza: Rewrite infix:<∪> and infix:<∩> to take arbitrary inputs.
13:25 tidux bigger than simple scripts and the usual perl fare
13:26 JimmyZ how simple is simple?
13:26 tidux <500 lines
13:26 JimmyZ rakudo is big enough? it's written in Perl 6
13:29 colomon tidux: ABC module is 1600+ lines at the moment, not counting test files.
13:40 timotimo r: say dir()
13:40 camelia rakudo b2072f: OUTPUT«IO::Path<star> IO::Path<src> IO::Path<.subversion> IO::Path<.bashrc> IO::Path<nom-inst1> IO::Path<toqast> IO::Path<test3.pl> IO::Path<.profile> IO::Path<t> IO::Path<nom-inst2> IO::Path<nom-inst> IO::Path<toqast-inst> IO::Path<toqast-inst2> IO::Path<examples> IO::Pa…
13:40 moritz r: say ~<<dir()
13:40 camelia rakudo b2072f: OUTPUT«star src .subversion .bashrc nom-inst1 toqast test3.pl .profile t nom-inst2 nom-inst toqast-inst toqast-inst2 examples Makefile .gitignore lib test2.pl .local bin rakudo p1 VERSION simple-tests .perlbrew std obj main.pl .lesshst nom niecza test.pl .cpanm log .bash_…
13:44 timotimo thoughts? should Cool get a .path that runs .Stringy.path?
13:45 moritz aye
13:47 * timotimo prepares a patch & PR
14:08 dalek rakudo/nom: 5feb260 | (Timo Paulssen)++ | src/core/Cool.pm:
14:08 dalek rakudo/nom: give Cool a path method to run self.Stringy.path
14:17 dalek roast: b5485fa | (Timo Paulssen)++ | S0 (2 files):
14:17 dalek roast: unfudge now-passing unspace and dotty hyper tests

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | plain, newest first | full mode

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs