»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
00:02 BrowserUk joined 00:24 whiteknight joined, gbacon joined
snarkyboojum 32911 passing tests o/ 00:45
00:49 hercynium joined
snarkyboojum over 83% pass rate 00:54
jnthn :-) 00:55
00:56 jrtayloriv left
snarkyboojum that's amazing progress.. almost 600 additional passing tests since may 21 00:57
(core-devs)++ :)
jnthn FINALLY!
Backtraces that might actually be useful.
snarkyboojum :O 00:59
jnthn With actual line numbers that relate to your Perl 6 program. :-) 01:00
01:01 BrowserUk left 01:08 pausenclown left 01:12 pausenclown joined
snarkyboojum jnthn: wowsers :) 01:12
01:17 molaf_ joined 01:19 f00li5h is now known as coin-robot 01:20 coin-robot is now known as f00li5h 01:21 molaf left
jnthn snarkyboojum: gist.github.com/418686 for example 01:27
lue ohai! 01:29
Did I just hear that backtraces are ..... useful?
sorear snarkyboojum: don't forget certain non-core devs who make tests pass. 01:30
lue jnthn: if a part of Rakudo's insides were to fail, would it still look as nice as this? 01:37
jnthn lue: Well, not if the part of the internals is the backtrace printer. ;-)
lue: For subs in the setting, it should be able to do something sensible in theory.
lue: In practice we may have one more Parrot bug to fix yet. 01:38
lue .rnd(must .... get.... phone..... with MeeGo) 01:40
jnthn OK, dare I commit the backtrace code... :-) 01:41
sorear YES
jnthn :-)
We can debug and hack on it together to make it awesome. :-)
sorear It doesn't matter if you break all the spectests - it will still be worth pulling
jnthn sorear: Oh, it doesn't do that
All pass 01:42
Just didn't want to commit something that's even less helpful that the status quo.
But I think what I have now actually reporting real line numbers is more helpful.
lue
.oO(the next step in error message technology: STD-like suggestions as to what zarked up)
01:43
sorear I never payed attention to Parrot backtraces
jnthn sorear: Heh. Maybe nobody other than a few core devs did either. I dunno. :-)
sorear: They probably look a tad offputting though.
sorear No, they were better than your version 01:44
However, not containing any correct information compensated for the superior formatting
jnthn sorear: Heh, superior? :-) 01:45
What do you like better about the Parrot ones?
Also, patches welcome. ;-)
sorear I thought we had the various fields lining up, but I just checked and I misremembered 01:46
jnthn sorear: ah
sorear: But nice thought.
sorear also, I'd like to see more information in backtraces
01:46 whiteknight left
sorear like the PC value 01:46
(I really did use that)
jnthn Erm
Wow. :-)
sorear: In that case I'm going to suggest, let's provide a flag --pir-backtrace or something, that disables this. 01:47
sorear does your version know how to format long names when it's not being compiled into GLOBAL?
jnthn sorear: And then people can see the real Parrot backtrace and get the PC.
sorear: Not yet, that's one of the next things to add.
sorear What about code in other HLL universes?
jnthn sorear: It should be able to show that too.
sorear: It assumes it has a Parrot sub and anything more it can find out beyond that is a bonus. 01:48
01:52 Intensity joined
dalek kudo: b066578 | jonathan++ | (3 files):
First cut of a backtrace printer. With recent Parrot improvements, it actually

come, but commit early, commit often and all that. :-)
01:53
kudo: 339d0b9 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get latest Parrot with various backtrace production
sorear wonders whether enhancing the "make generated code pretty" functions would help or hurt debugging 02:03
jnthn sorear: Depends what chance they stand of breaking the code they're beautifying. ;_) 02:05
02:05 alester joined
jnthn Wow...it's getting light outside already. :-) 02:07
lue Well then, good morning jnthn o/ 02:09
jnthn ;-) 02:11
Saturday late-night hacking has been *so* easier since I moved to Sweden. :-)
(Having church at 5pm rather than 9:30am means I can stay up just as long as I want and not worry about missing it. :-)) 02:12
sorear: Adding namespace to the backtrace too 02:13
lue I thought now it was Sunday early-morning hacking :) 02:14
jnthn It's all relative. :-) 02:19
dalek kudo: 8b3bb0b | jonathan++ | src/Perl6/BacktracePrinter.pm:
Include fully qualified names of routines in the backtrace, plus better handling
02:22
02:30 eternaleye joined, patspam left
jnthn lue: Thanks for the inspiration - I tried to do something nice to make it clear what comes from the core setting: gist.github.com/418727 02:37
lue Ooh, nice. Now it helps both coders & P6 developers in one shot! 02:41
jnthn :-)
I hope this will make using Rakudo more -Ofun. :-) 02:42
lue I'm assuming <anon> is short for anonymous ?
jnthn lue: yeah
lue ERROR: maybe you should try calling something that exists
jnthn And the angles to indicate it's something special-ish.
;-)
rakudo: 0/0 02:43
p6eval rakudo 9581e6: OUTPUT«Divide by zero␤current instr.: 'infix:<div>' pc 365157 (src/gen/core.pir:22103)␤»
lue please email this error code to Rakudo developers, so they can help diagnose the problem: ID-10T
jnthn Awww, it's not updated yet.
oh argh, I seem to have broken something 02:44
lue RD* is just a space station full of broken vases :P 02:45
jnthn Heh, found it. 02:50
Only broke -e and repl. ;-)
lue "only" :) 02:51
jnthn I "only" have a small glass of Nemiroff!
lue It "only" accounts for ~50% of all examples in P6 RT tickets :)
jnthn What, Nemiroff? :-) 02:52
yay, all fixed.
lue
.oO(Quaternions — A healthy part of this balanced 3D modeling library)
02:53
rakudo: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)) my @c = (@a * @b); say @c 02:57
p6eval rakudo 8b3bb0: OUTPUT«===SORRY!===␤Confused at line 11, near "my @b=((7,"␤»
lue Awesome, jnthn!
jnthn++
But that looks suspiciously like STD... 02:58
std: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)) my @c = (@a * @b); say @c
p6eval std 30972: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/zK7i83RhI9 line 1:␤------> ,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)) ⏏my @c = (@a * @b); say @c␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse
..failed␤FAILED 00:01 …
jnthn STD is still a bit better
Colors. :-)
lue Not for me [at least in Konversation]
jnthn But yes, we are trying to converge with STD, so we now are SORRY about parse errors.
Ah, irssi shows them.
lue What caused a perfectly good matrix multiplication to go wrong? 02:59
jnthn A missing ; before the my
(the my @c)
lue durh :)
rakudo: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)); my @c = (@a * @b); say @c
p6eval rakudo 8b3bb0: OUTPUT«36␤»
lue hyper operators go like «*», right? 03:00
rakudo: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)); my @c = (@a «*» @b); say @c
p6eval rakudo 8b3bb0: OUTPUT«7162741018␤»
lue rakudo: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)); my @c = (@a «*» @b); say @c.perl
jnthn Yup, if you want both sides to dwim.
p6eval rakudo 8b3bb0: OUTPUT«[7, 16, 27, 4, 10, 18]␤»
lue I don't think it's dwimming 03:01
[for matrices anyway]
jnthn Oh, it won't do matrix mult. :-)
lue rakudo: my @a=((1,2,3),(4,5,6)); my @b=((7,8),(9,1),(2,3)); my @c = (@a »*« @b); say @c.perl
p6eval rakudo 8b3bb0: OUTPUT«[7, 16, 27, 4, 10, 18]␤»
lue strangles air 03:02
jnthn watches the air wither and die
lue thinks of a machine that converts CO2 into diamonds (carbon) and oxygen
how would you make matrix multiplication work? 03:03
What happens above shouldn't happen, mathematically. It's errorful :) 03:04
[or can I not have 2d arrays?]
jnthn Well, thing is that parcels flatten
03:04 gbacon left
lue I thought that happened. 03:05
jnthn So for a 2D array you want [1,2,3] not (1,2,3).
lue ah, dankon
03:06 gbacon joined
lue rakudo: my @a=en.wikipedia.org/wiki/Special:Searc...3],[4,5,6; my @b=en.wikipedia.org/wiki/Special:Searc...9,1],[2,3; my @c = @a »*« @b; say @c.perl 03:06
p6eval rakudo 8b3bb0: OUTPUT«===SORRY!===␤Confused at line 11, near "my @a=http"␤»
lue AH!?
rakudo: my @a=en.wikipedia.org/wiki/Special:Searc...3],[4,5,6; my @b=en.wikipedia.org/wiki/Special:Searc...9,1],[2,3; my @c = @a »*« @b; say @c.perl
p6eval rakudo 8b3bb0: OUTPUT«===SORRY!===␤Confused at line 11, near "my @a=http"␤»
lue > my @a=en.wikipedia.org/wiki/Special:Searc...3],[4,5,6; my @b=en.wikipedia.org/wiki/Special:Searc...9,1],[2,3; my @c = @a »*« @b; say @c.perl
what the...
Could this have happened because of something server-side? 03:07
rakudo: say [[1,2,3], [4,5,6]] 03:08
p6eval rakudo 8b3bb0: OUTPUT«1 2 3 4 5 6␤»
03:09 eternaleye left
lue rakudo: my @a=[[1,2,3], [4,5,6]]; my @b=[[7,8], [9,1], [2,3]]; my @c = @a »*« @b; say @c.perl 03:09
p6eval rakudo 8b3bb0: OUTPUT«[6]␤»
TimToady should fail
lue strangles ozone, going for an extra oxygen this time
TimToady hyper is only for strict parallelism 03:10
lue apparently, typing en.wikipedia.org/wiki/Special:Searc...,3],[4,5,6 causes some weird parsing thru IRC...
TimToady it's not do-what-a-mathematician-means
lue what if I am a mathematician? Then it has to dwim. :) 03:11
lue ponders a Matrix type...
TimToady »op« does not mean that
jnthn TimToady: I suspect Rakudo doesn't yet know about nested arrays in hypers. There was a patch to support it, but don't think it was yet applied.
TimToady: (thus why it didn't fail as expected)
lue rakudo: my @a=[[1,2,3], [4,5,6]]; my @b=[[7,8], [9,1], [2,3]]; my @c = @a «*» @b; say @c.perl # just in case it differs
p6eval rakudo 8b3bb0: OUTPUT«[6]␤» 03:12
03:12 meppl left
TimToady that also should not do what you mean :) 03:12
lue How does that happen?
just the [6], i mean
TimToady I imagine it's multiplying 2 by 3
jnthn I fear so. :-) 03:13
lue: It's numifying the arrays (and getting the number of elements) rather than descending into them.
TimToady rakudo: my @a = [1,2,3], [4,5,6]; say (@a »*» 3).perl 03:14
lue yeah. Seems rakudo is too scared to go farther than the first dimension :)
p6eval rakudo 8b3bb0: OUTPUT«[9, 9]␤»
TimToady alpha: my @a = [1,2,3], [4,5,6]; say (@a »*» 3).perl
jnthn phenny: help
phenny jnthn: Hi, I'm a bot. Say ".commands" to me in private for a list of my commands, or see inamidst.com/phenny/ for more general details. My owner is sbp.
p6eval alpha 30e0ed: OUTPUT«Non-dwimmy hyperoperator cannot be used on arrays of different sizes or dimensions.␤in Main (file <unknown>, line <unknown>)␤»
jnthn hugme: help
hugme jnthn: (add $who to $project | list projects | show $project | hug $nickname | tweet $twittername $message )
jnthn hugme: tweet rakudoperl Rakudo now has proper backtraces with line numbers from your Perl 6 code. 03:15
hugme jnthn: You need to register with freenode first
jnthn hugme: tweet rakudoperl Rakudo now has proper backtraces with line numbers from your Perl 6 code.
hugme hugs jnthn; tweet delivered
jnthn \o/
Well, maybe I should take some sleep. 03:16
lue yeah, before noon happens. :) Good night jnthn o/
OOPS morning
03:17 Wolfman2000 joined
lue I love jnthn's new backtrace :) 03:19
Wolfman2000 seems like rakudo is being updated more recently. (I've been following twitter)
dalek kudo: 6e39fe1 | jonathan++ | src/Perl6/Compiler.pir:
Little tweak so things in the core setting get shown in the backtrace with a
03:21
kudo: 34542f7 | jonathan++ | src/Perl6/Actions.pm:
Emit file annotation so backtraces have file names.
jnthn night o/ 03:23
TimToady o/
Wolfman2000 Still, Twitter doesn't say everything. How goes the Perl 6 development? 03:25
TimToady it's rapidly catching up with the future 03:26
lue
.oO(And the future keeps coming to the present. It's very annoying. :) )
Wolfman2000 *chuckles*
I'm hoping to get a new Macbook Pro in a few months. Should have plenty of ram and hard drive space. When that happens, I can try compiling Perl 6 again......unless you guys managed to make Perl 6 compile with a gig of ram with no problems. 03:27
TimToady that is much improved, I think 03:28
03:28 BrowserUk joined
Wolfman2000 ...my current laptop has 2 GB ram, roughly 20 GB hard drive space left. Think I can compile Rakudo at this point with few issues? 03:29
03:30 alester left
TimToady looks like you only need 275MB of disk 03:30
Wolfman2000 hard drive space I assume for that 03:31
TimToady and 2GB ram should be plenty adequate
I certainly have no trouble with 3GB 03:32
Wolfman2000 Fair enough
lue is src/Perl6/BacktracePrinter.pm written in NQP ?
Darn. Looks like it is. I looked at it and thought := was implemented :) 03:33
Wolfman2000 well, may as well try to build it now 03:35
Wolfman2000 gets the git source
lue has been struck by what to call %_ 03:39
lue is slowly going mad again
Is there any language with a pronoun for a hash-like structure? 03:40
Wolfman2000 ...huh. It compiled...relatively quickly. Seemed too quick. 03:42
Wolfman2000 goes to run the tests 03:43
sorear rakudo compilation has gotten a LOT faster in the last two months 03:44
it was around 10 hours when I joined the project for me
now it's down to 7 ... minutes
Wolfman2000 Compiler.pir took awhile to compile, but it...did its job
lue Maybe when R* comes along, I should try to compile on this old computer again.
Wolfman2000 It was about 7 minutes on my end as well, and I'm also pushing my ram usage to full.
Wolfman2000 is watching an iTunes U movie 03:45
sorear should take about 300 now
2 months ago, it was running 2500
which hurt a lot with 384 physical :/
(all numbers in megabytes)
lue I'd say. that's my number of physical ram (in MiB) 03:47
Wolfman2000 failed part of the spectest 03:49
t/spec/S05-capture/caps.rakudo ................................. Failed 2/21 subtests
03:50 gbacon left
sorear you ... ran... the... spectest....? 03:51
lue I think I heard something about that a while ago.
Wolfman2000 still running
sorear oh okay
Wolfman2000 it's just the first failing line 03:52
sorear the spectest takes like 4 hours, i's very exhaustive and not really intended to be run online
Wolfman2000 ...no summer classes on Memorial day. I can wait if need be
sorear (we'll call it Perl 6 once it passes the entire spectest with no TODOs)
Wolfman2000 I haven't seen any TODOs yet. Still on S-06 03:53
err...just skipped to S-09 somehow
sorear the TODOs are applied by a special script that runs before the test harness
when you see a file .rakudo, it's been modified
Wolfman2000 t/spec/S12-attributes/instance.rakudo .......................... ok random line that has .rakudo. Clarify what you mean by modification here. Should they be .t instead? 03:54
03:54 envi^home joined
lue the .rakudo means it's been fudged. 03:54
aka some parts of that test file don't pass yet, and break the spectest. They are "fudged" so things don't break.
sorear Wolfman2000: look in the t/spec/S12-attributes/instance.t file 03:55
lue [How I understand it at least]
sorear you'll see some special comments like #?rakudo skip 1 "This is not yet implemented"
Wolfman2000 ...I'll check later
t/spec/S29-context/die.rakudo .................................. Failed 2/15 subtests 03:56
03:56 patspam joined 03:57 patspam left 03:58 isBEKaml joined 04:00 Eevee left
Wolfman2000 computer slowing up... 04:00
hopefully not getting kernel paniced here
04:01 hercynium left 04:05 alester joined
isBEKaml TimToady: S02:629, missing variable? 04:07
04:11 xinming_ is now known as xinming
Wolfman2000 ...huh. The Perl 6 code we made for Advent 2009 is part of the test spec now? 04:12
Also: the spec test has finished.
sorear: 30-40 minutes
...huh. TimToady: paste.lisp.org doesn't seem to want me to paste to #perl6. Perhaps you can check? 04:14
lue That happens sometimes. Try gist.github.org
Wolfman2000 no server
or rather, can't find server 04:15
04:15 Eevee joined
lue on paste.lisp.org ? 04:16
Wolfman2000 gist.github.org couldnt' find server
saaki maybe your dns is flubbered, been working for me 04:17
lue .com
saaki gist.github.com
lue sorry :)
Wolfman2000 paste.lisp.org/display/110959
pugssvn r30973 | lwall++ | [S02] missing var noticed by isBEKaml++ 04:27
Wolfman2000 ...do I have to --gen-parrot AGAIN for that one change? 04:28
04:29 TimToady sets mode: +vvv buubot dalek hugme, TimToady sets mode: +vv ilogger2 IRSeekBot, TimToady sets mode: +vv p6eval phenny, TimToady sets mode: +v pugssvn
lue :O I search for 'dr math quaternion' and on the first page I get a CPAN module for quaternions (P5 of course, but still) 04:30
Wolfman2000 ...oh, that's pugs. Not rakudo.
sorear Wolfman2000: --gen-parrot is for Parrot changes, which aren't even announced here 04:31
also, Rakudo doesn't generally track the latest parrot 04:32
there is a file in your Rakudo tree, build/PARROT_REVISION
Wolfman2000 ...I forgot there are many bots in this room.
sorear TimToady: hi! any comments on the LTM-in-rules question?
Wolfman2000 rakudo: ([+] (1..999).grep( { $_ % 3 == 0 || $_ % 5 == 0 } )) 04:33
p6eval rakudo 8b3bb0: ( no output )
Wolfman2000 ...didn't do it right
sorear Wolfman2000: and yes, advent stuff is in the spectests. It makes great regression fodder
TimToady sorear: I usually set BEGIN { $ENV{STD5DEBUG} = -1; }
and figure it out from the logs
sorear Wolfman2000: you need to add a .say there 04:34
Wolfman2000 rakudo: ([+] (1..999).grep( { $_ % 3 == 0 || $_ % 5 == 0 } )).say
sorear Wolfman2000: p6eval just reads and evaluates, it doesn't print
p6eval rakudo 8b3bb0: OUTPUT«233168␤»
Wolfman2000 sorear: if I recall right...doesn't rakudo ahve a time limit?
...guess not
TimToady alias mc='less -R' will display the log in colors on Linux
sorear TimToady: I've actually been setting that on the command line
ye
but the question which I refer to is a semantic one, not a debugging one 04:35
take a look at STD.pm6:1430
notice that both sides of the alternation start with <.ws> 04:36
there should be no LTM going on, right?
TimToady ah, that is factored out
Wolfman2000 rakudo: "5065726C36".comb(/<xdigit>**2/)».fmt("0x%s")».chr.join.say
p6eval rakudo 8b3bb0: OUTPUT« 04:37
Wolfman2000 ...yeah, that still fails
rakudo: "5065726C36".comb(/<xdigit>**2/).map: { chr "0x" ~ $_ }).join.say
p6eval rakudo 8b3bb0: OUTPUT«===SORRY!===␤Confused at line 11, near ").join.say"␤»
TimToady if there's whitespace before [ a | b | c ] it ignores the first whitespace on each alternative
Wolfman2000 ...and that should have worked
sorear TimToady: gimme5 factors it out, but I rather suspect it's doing so in error, since it changes the semantics - <.ws> ends a LTM pattern
TimToady a new LTM starts at the [] alternation 04:38
Wolfman2000 rakudo: ("5065726C36".comb(/<xdigit>**2/).map: { chr "0x" ~ $_ }).join.say
p6eval rakudo 8b3bb0: OUTPUT«Perl6␤»
Wolfman2000 there
TimToady each alternation is its own LTM
unless the first thing in a token
sorear I don't follow
TimToady but certaint that particular one stands on its own
sorear each alternation starts with sigspace 04:39
so LTM shouldn't be able to affect which one is called?
04:39 finanalyst joined
TimToady sorear: I said it factors that whitespace out 04:40
since there is whitespace before the [], there is no need to match first inside the []
so it ignores that
sorear gimme5 does, viv doesn't
I think S05 supports viv
but I'm not sure 04:41
TimToady well, then S05 is wrong :)
or at least incomplete 04:42
finanalyst good morning all 04:46
TimToady biab &
finanalyst run across a bug, just checking to see if its known already
04:47 Lorn left
finanalyst rakudo: sub s ( $a ) { return $a }; class A { has $.b = s(2) }; my A $x .= new(); say $x.b 04:48
p6eval rakudo 8b3bb0: OUTPUT«Could not find sub &s␤in <anon> at line 11␤in main program body at line 11␤»
sorear TimToady: pastie.org/983940 ?
lue rakudo: our sub s ( $a ) { return $a }; class A { has $.b = s(2) }; my A $x .= new(); say $x.b 04:50
p6eval rakudo 34542f: OUTPUT«2␤»
finanalyst lue: thanx
lue you are welcome. 04:51
sorear TimToady: As a different but related issue, STD parses x ** y as x <.ws> ** y. Wrong? 04:53
lue afk 04:56
05:03 envi^home left
TimToady sorear: that looks fine 05:05
S05:945 talks about the other 05:06
pugssvn r30974 | sorear++ | [S05] Describe alternation left-factoring in rules, long implemented by gimme5 05:07
sorear what about sigspace with ~ ?
TimToady I think ~ currently screws up under sigspace 05:08
at the moment it's just a "Doctor, it hurts when I do this." 05:09
"So, don't do that."
sorear the viv component which reparses ~ currently just strips <.ws> from both sides
it runs a bit too low level though and even strips /explicit/ <.ws> ...
I wonder what the ideal behavior is 05:10
TimToady well, if we think of '(' ~ ')' <atom> as subbing in the <atom> for the ~, it kinda makes sense to transfer the ws to around <atom> 05:11
but generally, in practice, <atom> will be something that already handles whitespace
<statementlist> for instance
or EXPR
so the situation doesn't arise often in practice, and we could just say it treats it as '('~')' 05:12
sorear *lightbulb* the parsing behavior we want for ~ is exactly the same as for **
TimToady praps
sorear let's parse it as a psuedo quantifier
TimToady whatever works, and isn't *too* disgusting :) 05:13
sorear It'd be less disgusting than the current approach.
heh. I used $self->{dba} in the translation code for ~, but ~ is parsed with dba:additive... 05:19
TimToady you can always override the default dba
sorear no, $self is the match object for the ~ regex_infix__S_Tilde 05:20
that code would have been correct if I had written it as a method on a RE_node
pugssvn r30975 | sorear++ | [viv] Fix a stupid phaso which caused all parsing failures to be reported as "additive" 05:21
05:24 alester left
TimToady biab & 05:28
05:31 kaare joined, kaare is now known as Guest67735
pugssvn r30976 | sorear++ | [viv] More aggressive filtering of sigspace in ~ 05:32
05:39 JimmyZ joined
JimmyZ std: { } () 05:40
p6eval std 30975: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/GZr1AW0sff line 1:␤------> { }⏏ ()␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED
..00:01 115m␤»
JimmyZ std: {}()
p6eval std 30975: OUTPUT«ok 00:01 111m␤»
JimmyZ rakudo: {}() # oh hi, is it a bug? 05:41
p6eval rakudo 34542f: OUTPUT«invoke() not implemented in class ''␤in main program body at line 11:/tmp/fV4VLyeY9P␤»
JimmyZ rakudo: { say 'hi'; }()
p6eval rakudo 34542f: OUTPUT«hi␤»
JimmyZ rakudo: { say 'hi'; } ()
p6eval rakudo 34542f: OUTPUT«===SORRY!===␤Confused at line 11, near "{ say 'hi'"␤»
JimmyZ rakudo: { } () 05:42
p6eval rakudo 34542f: OUTPUT«===SORRY!===␤Confused at line 11, near "{ } ()"␤»
JimmyZ std: { } () 05:43
p6eval std 30975: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/lH4PkUNOFT line 1:␤------> { }⏏ ()␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED
..00:01 112m␤»
JimmyZ TimToady, hello 05:44
TimToady a postfix may not have space in front of it
JimmyZ rakudo: { say 'hi' }() 05:48
p6eval rakudo 34542f: OUTPUT«hi␤»
JimmyZ rakudo: { }()
p6eval rakudo 34542f: OUTPUT«invoke() not implemented in class ''␤in main program body at line 11:/tmp/uhsZpZL0Wn␤»
TimToady rakudo: {;}()
p6eval rakudo 34542f: OUTPUT«invoke() not implemented in class ''␤in main program body at line 11:/tmp/cKD0G2h84Y␤»
TimToady rakudo: Hash.new() 05:49
p6eval rakudo 34542f: ( no output )
JimmyZ rakudo: {1;}()
TimToady rakudo: Hash.new()()
p6eval rakudo 34542f: ( no output )
rakudo 34542f: OUTPUT«invoke() not implemented in class ''␤in main program body at line 11:/tmp/zLkd13L4Fp␤»
JimmyZ rakudo: {say;}()
p6eval rakudo 34542f: OUTPUT«␤»
JimmyZ rakudo: {True;}() 05:50
p6eval rakudo 34542f: ( no output )
JimmyZ rakudo: {return True;}()
p6eval rakudo 34542f: ( no output )
JimmyZ rakudo: {return 1;}()
p6eval rakudo 34542f: ( no output )
TimToady rakudo: say {;}.WHAT
p6eval rakudo 34542f: OUTPUT«Hash()␤»
JimmyZ rakudo: {1;}()
p6eval rakudo 34542f: ( no output )
JimmyZ rakudo: {return 1;}.WHAT
TimToady {;} shouldn't be a hash
p6eval rakudo 34542f: ( no output )
JimmyZ rakudo: {return 1;}.WHAT.say 05:51
p6eval rakudo 34542f: OUTPUT«Block()␤»
JimmyZ {} is a Hash or Block: 05:53
{} is a Hash or Block?
rakudo: {}.WHAT.say
p6eval rakudo 34542f: OUTPUT«Hash()␤»
JimmyZ rakudo: {}()
p6eval rakudo 34542f: OUTPUT«invoke() not implemented in class ''␤in main program body at line 11:/tmp/zeA1me5H0K␤»
sorear JimmyZ: stop
hold on 05:54
JimmyZ already stop
I got two different results with same code 05:56
mberends jnthn++ did an awesome nightshift on Rakudo backtraces! 05:58
sorear JimmyZ: S04:1463 06:02
06:12 isBEKaml left
pugssvn r30977 | sorear++ | [viv] Bring whitespace in alternations in line with S05 changes 06:17
06:17 JimmyZ left
sorear TimToady: Since it's semantically important, what would you say about doing this analysis at the STD level? 06:20
TimToady makes sense 06:21
sorear notes
sorear is not going to actually change STD until viv is working
06:26 Eevee left 06:27 Eevee joined 06:28 jhuni left
sorear oh, wonderful 06:40
TimToady good w or bad w?
sorear JSPON looks like *exactly* what I want for a new viv output form
it's got all the useful features of YAML but without the 200-page spec 06:41
mberends :)
sorear: can you get by without YAML anchors? 06:43
sorear mberends: no 06:44
every VAST node lists its children twice
once positionally and once by name 06:45
mberends JSON does not do anchors afair 06:46
sorear correct 06:48
which is why I said JSPON 06:49
JSPON is an extension of JSON which adds anchors and object types
mberends
.oO( and I thought it was a little tyPpo ;-)
06:52
pugssvn r30978 | snarkyboojum++ | [t/spec] Added Caesar Cipher tests for Perl 6 Advent Calendar Day 8 06:53
r30979 | sorear++ | [viv] Work around STD's misparsing of whitespace in quantifiers for now 07:13
07:15 [mark] joined 07:19 gfx joined
sorear something is amiss... despite the superior optimization technology in viv, viv-compiled STD.pmc appears to be *slower* 07:22
much. much. much. slower 07:23
takes over 8 minutes to parsefail on line 277
instead of 4 minutes to parse all 6000 lines
07:42 Su-Shee joined
snarkyboojum is it a bug that you need to prepend a module sub with our to use Module::Name::mysub() ? 07:43
moritz_ nope, that's spec 07:44
you can also export them (doesn't need "our")
"our" means "put into the symbol table", and Module::Name::mysub() is an access to the symbol table 07:45
snarkyboojum oh, so the first example of day 12 is wrong
in the advent calendar
moritz_ might very well be the case
snarkyboojum cool.. I've always used our, so good to know :)
thanks moritz_++ 07:46
07:46 Jmax left
snarkyboojum moritz_: would this be an appropriate way to test 'use' etc in day 12? gist.github.com/418867 07:47
07:47 eternaleye joined
Su-Shee good morning. 07:48
mberends: can I bore you with some basic questions today? I played with some more mysql C api functions. (after I had coffee :) 07:50
moritz_ snarkyboojum: yes; though tradtionally the package go into t/spec/packages/
snarkyboojum k
will move it to there then 07:51
moritz_ starts crying 07:53
t/spec/S05-capture/caps.rakudo ................................. Failed 2/21 subtests
that was working yesterday
sorear crying?
moritz_ then I broke it
then I fixed it again
now it's broken
sigh
Su-Shee offers a tissue.
moritz_ thanks *sniff*
Su-Shee also remember Brazil! "it fixed itself..?!" and then robert de niro comes to the rescue. ;) 07:54
moritz_ huh, it's non-deterministic 07:56
Su-Shee it's awakening! have you named it yet?
moritz_ oh, the backtrace is printed to STDOUT 07:59
finanalyst rakudo: for 1,2 X <a b> { say "$^x $^y" } 08:01
p6eval rakudo 34542f: OUTPUT«1 a 1 b␤2 a 2 b␤»
finanalyst rakudo: for 1,2 X (<a b> X 'x') { say "$^x $^y" } 08:02
p6eval rakudo 34542f: ( no output )
finanalyst moritz_: am i missing something in the second range?
moritz_ something's wrong 08:03
I guess it has to do with list flattening
finanalyst ok i will file a bug
rakudo: for 1,2 X | (<a b> X 'x') { say "$^x $^y" }
p6eval rakudo 34542f: ( no output )
finanalyst rakudo: for 1,2 X (| <a b> X 'x') { say "$^x $^y" } 08:04
p6eval rakudo 34542f: ( no output )
08:10 Ross joined
mberends Su-Shee: yes, I'm also working on SQL stuff 08:19
snarkyboojum moritz_: multi subs aren't exported by default in current Rakudo? 08:20
Su-Shee mberends: I didn't commit yesterday because I didn't ran make test without errors. in that regard I probably have a question too.
moritz_ snarkyboojum: no idea
snarkyboojum moritz_: ok :)
sorear snarkyboojum: afaik nothing is exported by default
snarkyboojum moritz_: doesn't seem to work :)
sorear: ok - I should look up the spec - the advent post indicates that they are, but perhaps they don't work for a good reason :) 08:21
otherwise why would people be writing out multi sub :)
sorear has just discovered that Q works in double quoted strings in Perl 5 08:23
snarkyboojum not quite sure what this means "When there is no proto for a multi, the autogenerated proto is assumed to be exportable." perlcabal.org/syn/S11.html#line_114 08:28
mberends Su-Shee: let's have a look at the test error. I've been studying mysql_fetch_field() etc and am afraid zavolaj may be unable to handle that because it returns a struct, not an array. 08:32
Su-Shee mberends: ha, that's where I poked around the entire evening yesterday. :) 08:33
the test error occurs at "disconnect" ;) I'm just running without it to see wether or not this is my only fail 08:34
mberends: I've also added mysql_fetch_fields and tried it.
moritz_ rakudo: say Seq.new(1, 2, 3) 08:38
p6eval rakudo 34542f: OUTPUT«123␤»
moritz_ rakudo: say Seq.new(1, 2, 3).perl
p6eval rakudo 34542f: OUTPUT«(1, 2, 3)␤»
moritz_ rakudo: say %(Seq.new(1, 2, 3)).perl
p6eval rakudo 34542f: OUTPUT«Method 'hash' not found for invocant of class 'Seq'␤in main program body at line 11:/tmp/KMQY0vuGzD␤»
moritz_ rakudo: say (my %h = Seq.new(1, 2, 3)).perl 08:39
p6eval rakudo 34542f: OUTPUT«Odd number of elements found where hash expected␤in '!STORE' at line 4224:CORE.setting␤in main program body at line 11:/tmp/8ndTQS7Mqb␤»
moritz_ rakudo: say (my %h = Seq.new(1, 2, 3, 5)).perl
p6eval rakudo 34542f: OUTPUT«{"1" => 2, "3" => 5}␤»
mberends Su-Shee: if you're willing to overlook the remaining attributes of a field, the name is at the beginning of the mysql_field struct (a pointer to a null terminated string). It's a bit of a cheat, but I think we can fish the field name out of that.
moritz_ rakudo: say (my % = Seq.new(1, 2, 3, 5)).perl 08:40
Su-Shee mberends: I was always stuck with the first field name and couldn't get to anything else.
p6eval rakudo 34542f: OUTPUT«===SORRY!===␤Malformed my at line 11, near "% = Seq.ne"␤»
moritz_ rakudo: say (my (%) = Seq.new(1, 2, 3, 5)).perl 08:41
p6eval rakudo 34542f: OUTPUT«(!whatever_dispatch_helper, )␤»
Su-Shee mberends: I ended up with magically suddenly having the dbname in some fields and things like that.
moritz_
.oO( ... )
mberends Su-Shee: ah I see, well that is progress anyway
Su-Shee mberends: well I learned a lot. ;) 08:42
08:42 mantovani joined
pugssvn r30980 | snarkyboojum++ | [t/spec] Added Fancy::Utilities and initial tests for Perl 6 Advent Calendar Day 12: Modules and Exporting 08:42
moritz_ \o/ these shiny backtraces make programming with rakudo a lot more fun
mberends +1 :-) :-)
moritz_ time to update my poniewishlist blog entry :-) 08:43
Su-Shee mberends: I also learned that for some reason if OpaquePointer gets returned I can't do an if on it.
mberends it really is worth upgrading to today's ble[ea]ding Rakudo for the better error messages
08:43 sorear left
Su-Shee ok, first I fix make test here. :) 08:44
"open source is when you already worked an hour while not even being out of bed yet."
mberends haha 08:45
moritz_ lol
snarkyboojum Su-Shee: that applies to my paid work often as well :)
Su-Shee in comparison to "work" where you at least were allowed to get up and shower and dress :)
snarkyboojum: I work fully dressed and showered in an office. yay for civilization! ;) 08:46
snarkyboojum Su-Shee: on a good day I try to work fully dressed and showered in a park with water views :) 08:47
mberends feels an envious twitch
Su-Shee snarkyboojum: this doesn't impress me at all, because this is my view from work: en.wikipedia.org/wiki/File:Berlin_night.jpg 08:48
moritz_ rakudo: say (my %h = Seq.new('a' => 0)).perl 08:55
p6eval rakudo 34542f: OUTPUT«{"a" => 0}␤»
snarkyboojum beautiful :)
moritz_ Su-Shee: you work late at night? :-)
snarkyboojum I see more trees and water though ;) (hard to beat sydney harbour) 08:56
Su-Shee usally not, my wo-worker took the picture in winter :)
08:57 sorear joined
moritz_ ah well, in winter it's easier to be at work while it's dark 08:57
rakudo: say Hash.new(|('abc' => 3)).perl 08:59
p6eval rakudo 34542f: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤in 'EnumMap::new' at line 4035:CORE.setting␤in main program body at line 11:/tmp/UxTycbvg6n␤»
09:01 gfx left
dalek kudo: dd8b9f0 | moritz++ | docs/ChangeLog:
update ChangeLog
09:07
kudo: 5aba135 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION yet again to get backtraces printed to STDERR
kudo: 6eec67c | moritz++ | src/core/Seq.pm:
Seq hash coercion
Su-Shee aaah finally... 09:08
09:09 M_o_C joined
moritz_ jnthn: it seems the reported filename is always that of the main script, never that of a module 09:09
Su-Shee mberends: my make test fail was my fault. no further questions. ;)
mberends Su-Shee: :) the 10-mysql.t has far too many tests using fetchrow_arrayref and almost none using fetchrow_array. Could you change for example lines 406 and 409 to test your new fetchrow_array() ? 09:13
Su-Shee I saw, I was just looking for an example to copy. 09:14
406 and 409 it is. 09:15
mberends :)
Su-Shee ok, first getting up. 09:18
mberends there is a new, much more concise and effective FakeDBI test script under construction locally. 09:19
pugssvn r30981 | sorear++ | [viv] Quash a bunch of escaping bugs in regexes 09:20
Su-Shee mberends: oh, nice :) 09:24
pugssvn r30982 | sorear++ | [viv] Handle backslash forms in adverbs correctly 09:28
r30983 | sorear++ | [viv] Implement 'does' trait 09:31
r30984 | sorear++ | [viv] Implement does and is with our scoped bases 09:33
dalek p-rx: d1d1d31 | moritz++ | src/stage0/ (4 files):
update stage0
09:36
sorear viv-on-STD-on-viv just passed a torture test of quoted strings; I'll let it run overnight *off* 09:38
mberends sorear++
pugssvn r30985 | snarkyboojum++ | [t/spec] Added initial tests for Perl 6 Advent Calendar Day 13: Junctions 09:48
snarkyboojum wow, that was cool, I was getting a 'Divide by zero current instr.: '' pc -1 ((unknown file):-1)' error when I ran rakudo outside the rakudo root directory, until I did make install; nice error :) 09:52
now I get a 'Confused at line 31....' error message
:)
Su-Shee \o/ t/10-mysql.t .. ok 09:54
All tests successful.
mberends ship it! 09:55
Su-Shee how does that actually work with p6 tests right now? it can "ok" and a little more?
mberends "is" gives nicer diagnostics when something fails 09:56
Su-Shee but it really is perl6 already with no help of perl5? 09:57
sorear agh. It failed, ONE LINE LATER
mberends rakudo/Test.pm is a little subset of the typical P5 frameworks
snarkyboojum Su-Shee: you have ok, nok, is, isnt, is_approx, isa_ok, dies_ok, lives_ok, eval_dies_ok, eval_lives_ok, is_deeply, and anything else from Test.pm
sorear after 8+ minutes
snarkyboojum Su-Shee: and Test.pm is written in Perl 6 09:58
Su-Shee looks at it.
mberends: pastebin.org/292310 10:01
mberends that should pass 10:02
sorear At my current rate of progress debugging viv, I will finish on Tuesday, July 29, 2042
snarkyboojum moritz_: none of day 21 passes on current rakudo unfortunately 10:03
mberends heh, window fail from my editor: "my $\o/"
10:07 Ross left 10:09 Ross joined
snarkyboojum I love the for @list Z ^@list.elems -> $item, $i { } idiom for looping over a list and still getting an index $i into it 10:12
well, I think it's neat anyway 10:13
10:14 masak joined
masak oh hai, #perl6! 10:14
Su-Shee do I have to do more then git push if I'm not pushing onto my repositories?
mberends masak: hai!
masak does the "it's weekend!" dance 10:15
mberends Su-Shee: git add the changed files, git commit, then git push
Su-Shee done.
mberends joins the dancing masak
masak :) 10:16
m6locks it's sunday, tomorrow the weekend will be over ;____; 10:17
yet, a couple of minutes left to dance
Su-Shee "minutes"? :)
m6locks sure thing, time flies 10:18
snarkyboojum has less than 4 hours of weekend left :(
masak time flies like a Haskell arrow.
m6locks :P
masak snarkyboojum! \o/
snarkyboojum masak \o/ !
:)
masak snarkyboojum: I haven't had any chance to play with if statements in Yapsi yet. thought I'd do that today.
10:19 envi^home joined
snarkyboojum masak: in all truth, I haven't played with that stuff I was going to look at either :| 10:19
10:19 pmurias joined
masak 's ok :) 10:19
snarkyboojum masak: I've been writing tests for advent calendar posts instead :O but I will!
masak snarkyboojum++ # doing stuff 10:20
snarkyboojum o/
Su-Shee how much better social control works compared to office control amazes me every day :)
mberends Su-Shee: fetchrow_array() tests out fine here too :-) 10:23
Su-Shee *pew* :)
Su-Shee broke a billion euro thing last week, I'm a little on edge with tests. ;) 10:24
snarkyboojum rakudo: my grammar A {} 10:28
p6eval rakudo 34542f: ( no output )
snarkyboojum alpha: my grammar A {}
p6eval alpha 30e0ed: OUTPUT«Malformed declaration at line 10, near "grammar A "␤in Main (file <unknown>, line <unknown>)␤»
snarkyboojum lexically scoped grammars are supported right?
Su-Shee mberends: is there anything else relatively simple to do? 10:31
mberends Su-Shee: I'm wondering about column names 10:32
the way these things develop starts with a proof of concept in zavolaj/examples 10:33
colomon we are passing 32,920 tests!!!!!
moritz_++ 10:34
10:34 pmurias left
snarkyboojum colomon: so close to the magic 33k :P 10:34
Su-Shee mberends: I've added yesterday mysql_fetch_fields and made it a Positional of Str to look what's actually in there. But I didn't go any further. 10:36
10:36 whiteknight joined
colomon btw, snarkyboojum (backlogging): for @list.kv -> $i, $item 10:36
snarkyboojum colomon: ah .. nicer! :) 10:37
colomon++
colomon not that Z isn't awesome, mind you...
snarkyboojum it seems like it'd be less efficient though :)
using kv should be faster?
10:38 TiMBuS joined
colomon rakudo: my @list = 'a' ... 'f'; for @list.kv -> $i, $item { say "$i ==> $item" } 10:38
p6eval rakudo 34542f: OUTPUT«0 ==> a␤1 ==> b␤2 ==> c␤3 ==> d␤4 ==> e␤5 ==> f␤»
snarkyboojum heh
rakudo: my @list = 1,2,3; for @list.kv -> $i, $item { say $item, " at ", $i } # just did that
p6eval rakudo 34542f: OUTPUT«1 at 0␤2 at 1␤3 at 2␤»
mberends Su-Shee: ok, I'll try columns from there. Another idea, there is a $sth.rows that says how many rows the last insert/update/delete affected (not select). Could you look into that?
colomon snarkyboojum: using Z for that is probably a bit less efficient, yes. 10:39
Su-Shee lemme look.
snarkyboojum colomon: cool - that was my only niggle using it :) 10:40
colomon just realized there was another entire round of patches since his test run that had 32,920 passes. 10:41
Su-Shee mberends: that would be a method on the sth object returning null or a number? or should this be an attribute? 10:43
mberends Su-Shee: there is a mysql_affected_rows() in the API to call after executing a query. Stash the result in a new attribute. A rows() method should retrieve the value of the attribute. 10:44
Su-Shee ok. 10:45
10:46 Ross left, meppl joined 10:47 Ross joined 10:54 JimmyZ joined
masak rakudo: / a+ +/ 10:59
p6eval rakudo 6eec67: OUTPUT«===SORRY!===␤Can't quantify zero-width atom at line 11, near "/"␤»
masak \o/
fwiw, I like STD's error message better, though.
std: / a+ +/
p6eval std 30985: OUTPUT«===SORRY!===␤quantifier quantifies nothing at /tmp/zM4ggqAbPb line 1:␤------> / a+ +⏏/␤Check failed␤FAILED 00:01 114m␤»
masak less technical.
mind if I change it? it's probably in nqp-rx, right? 11:00
colomon +1 11:01
arnsholt Agreed 11:04
Su-Shee rows: 1 11:06
mberends \o/ 11:07
11:07 molaf_ left
Su-Shee oh and non-ascii chars work as well. just to mention it. 11:09
masak ok, so the message is here: github.com/perl6/nqp-rx/blob/master...ons.pm#L79
I don't know about any of that stage0/stage1/stage2 stuff, but I'm assuming that if I make the change on that line, it will eventually find its way into Rakudo. 11:10
jnthn morning, #perl6
masak jnthn! \o/
jnthn masak! \o/
colomon o/
jnthn masak: Yes, change it in that file.
masak: make bootstrap-files if you want ot update the bootstrap 11:11
masak: But otherwise you can wait for the next time we have something bigger to roll in.
masak I'll give it a shot. I want to learn it anyway.
jnthn masak++
Bumping PARROT_REVISION is what all the cool kids are doing this weekend anyway. ;-) 11:12
masak hm, it didn't work so well. I think I have a stale independent Parrot install connected with my nqp-rx.
I'll just take the easy way out for now and push this.
jnthn Yeah, you need an up to date Parrot. 11:13
dalek p-rx: 45a6612 | masak++ | src/Regex/P6Regex/Actions.pm:
aligned error message with STD's
11:18 Ross^ joined 11:20 Ross left
mberends Su-Shee: (non-ascii:) oh! Also uncomment FakeDBI.pm6:77,86 with your next commit to update what works. Git pull before you edit/commit. 11:20
jnthn moritz_: Ooh, yay, you beat me to fixing the STDERR thingy. :-) 11:22
moritz_: Noted bug with module file names, thanks. 11:23
finanalyst jnthn: much nicer working with nicer backtracing. ++++ 11:25
masak ooh! &note is implemented! \o/
someone++
Su-Shee mberends: ah. ok. I see. will do. 11:26
jnthn finanalyst: :-)
masak it was moritz_++, it seems.
11:27 azert0x joined
Su-Shee food now. 11:27
mberends rakudo: my $x=42;say x # deliberate error
p6eval rakudo 6eec67: OUTPUT«Could not find sub &x␤in main program body at line 11:/tmp/MWzaw3MYDr␤»
mberends rakudo: my $x=42;say eval("x") # deliberate error vanishes 11:28
p6eval rakudo 6eec67: OUTPUT«␤»
11:28 azert0x left
jnthn rakudo: my $x=42; eval("x"); sy 11:29
p6eval rakudo 6eec67: OUTPUT«Could not find sub &sy␤in main program body at line 11:/tmp/14ZcyqkyRD␤»
jnthn ffff
rakudo: my $x=42; eval("x"); say $!
p6eval rakudo 6eec67: OUTPUT«Could not find sub &x␤»
jnthn mberends: There she is. :-)
mberends ah, thanks jnthn
11:29 azert0x joined, azert0x left 11:32 azert0x joined 11:33 azert0x left
dalek kudo: 5a8bd03 | masak++ | src/core/IO.pm:
[IO.pm] better params name in &note
11:33
pugssvn r30986 | colomon++ | [t/spec] Improve fudge message.
11:33 JimmyZ left
jnthn masak: WHAT'S A GOOD REASON? 11:36
masak :)
indicating that something unusual is happening, like BEGIN or $*ERR.
pugssvn r30987 | moritz++ | [t/spec] test for $/.chars (RT #74694) 11:37
jnthn 'tis a busy busy weekend in Perl 6 land. :-)
dalek kudo: 3d540b8 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get fix for RT #74694
11:39
11:39 BrowserUk left, jaldhar left, jaldhar joined 11:40 kel_ left, breinbaas left, breinbaas joined, frooh joined 11:41 kel_ joined 11:42 s1n joined, PacoLinux joined 11:44 azert0x joined
jnthn colomon: rt.perl.org/rt3/Ticket/Display.html?id=75246 may be one for you to glance at, if/when you have chance. 11:45
masak I think rt.perl.org/rt3/Ticket/Display.html?id=75440 is a manifestation of another bug whose ticket I can't find right now. the one about several gather blocks not interacting well. 11:46
rakudo: enum A::B <a b c>; say b
p6eval rakudo 6eec67: ( no output )
masak odd. it gives no output. 11:47
moritz_ rakudo: say ('a' ~~ /a/).orig.PARROT 11:48
p6eval rakudo 6eec67: OUTPUT«CodeString␤»
colomon jnthn: noted
moritz_ rakudo: say ('bcatt' ~~ /a/).orig.rindex('a', 1)
p6eval rakudo 6eec67: OUTPUT«Method 'rindex' not found for invocant of class 'CodeString'␤in main program body at line 11:/tmp/HSPoJeYb1q␤»
moritz_ .orig needs fixing 11:49
or maybe nqp-rx :-)
rakudo: class MyMatch does Associative { method postcircumfix:<[ 9> { "foo" } }; $/ = MyMatch.new; say $0
p6eval rakudo 6eec67: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'MyMatch'␤in main program body at line 1␤»
moritz_ rakudo: class MyMatch does Associative { method postcircumfix:<[ ]> { "foo" } }; $/ = MyMatch.new; say $0 11:50
p6eval rakudo 6eec67: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤in 'MyMatch::postcircumfix:<[ ]>' at line 11:/tmp/EkQvy1dQkH␤in main program body at line 11:/tmp/EkQvy1dQkH␤»
moritz_ rakudo: class MyMatch does Associative { method postcircumfix:<[ ]>($) { "foo" } }; $/ = MyMatch.new; say $0
p6eval rakudo 6eec67: OUTPUT«foo␤»
jnthn Typing fail :-) 11:54
oops
jnthn should comment on the current line, not one a screenful up:-)
in 'A::foo' at line 3:Foo.pm 11:55
in 'bar' at line 4:test.p6
woo
moritz_ rakudo: class A { has $foo; method b { say $.foo } }; A.b
p6eval rakudo 6eec67: OUTPUT«Method 'foo' not found for invocant of class ''␤in 'A::b' at line 11:/tmp/8h7m4KGiDf␤in main program body at line 11:/tmp/8h7m4KGiDf␤»
moritz_ rakudo: class A { has $foo; method b { say $foo } }; A.b
p6eval rakudo 6eec67: OUTPUT«Type objects are abstract and have no attributes, but you tried to access ␤in 'A::b' at line 11:/tmp/budHlgChUd␤in main program body at line 11:/tmp/budHlgChUd␤»
moritz_ that's missing the attribute name in the error message
rakudo: class A { has $!foo; method b { say $!foo } }; A.b
p6eval rakudo 6eec67: OUTPUT«Type objects are abstract and have no attributes, but you tried to access ␤in 'A::b' at line 11:/tmp/sPdey7Lkmt␤in main program body at line 11:/tmp/sPdey7Lkmt␤»
jnthn That's LTA. 11:56
Ah, think I see why.
moritz_ rakudo: '1 3' ~~ /(\d+) \s (\d+)/; say $0..$1 11:58
p6eval rakudo 6eec67: OUTPUT«Method 'succ' not found for invocant of class 'Match'␤in 'RangeIter::get' at line 4030:CORE.setting␤in 'say' at line 1␤in 'say' at line 4464:CORE.setting␤in main program body at line 11:/tmp/pjxGJoU7PA␤»
colomon jnthn: well, started to look at the hyper patch, but I'm nearly out of battery here and my power cord is in a room with my sleeping wife and child.
moritz_ Cool should have .succ
colomon the patch does look straightforward enough. 11:59
don't understand why $i ~~ Iterable wouldn't work....
moritz_ it uses statement-modifying loops because the normal form breaks rw-aliasing of $_ 12:00
(if we're talking about the same patch)
or was it 'if' instead of loops?
12:01 gbacon joined
colomon I'm talking about 75246.... 12:01
I don't see $_ involved.
12:02 colomon left
jnthn > class A { has $!foo; method b { say $!foo } }; A.b 12:05
Type objects are abstract and have no attributes, but you tried to access $!foo
\o/
masak \o/ 12:06
jnthn masak: When you get to play with Rakudo master, let me know how you get on with the new backtraces. 12:07
masak: I want to try and get them awesome. :-)
masak jnthn: compiling right now. will get back to you. :) 12:08
jnthn expects masak++ will be a reliable source of breakage and bugs.
masak becomes happy over this exchange: twitter.com/rentzsch/status/15005085024 twitter.com/cbarrett/status/15008109927
dalek kudo: ff31b59 | jonathan++ | src/Perl6/Module/Loader.pm:
Set $?FILES in module loader, so we end up with the correct filename annotation
kudo: 478ba48 | jonathan++ | src/pmc/p6opaque.pmc:
Correct busted format string to fix bad error message noticed by moritz++.
jnthn nice :-) 12:09
masak will we get backtraces in the REPL?
jnthn No 12:10
masak pity. they could have been useful there.
12:10 JimmyZ joined
jnthn I thought they'd be annoying there. :-) 12:10
masak the parts that pertains to Perl 6, I mean.
imagine that someone does 'use MyModule' and then calls something. 12:11
12:11 smash_ joined
masak backtraces would definitely help in finding where errors come from. 12:11
smash_ hello everyone
jnthn masak: The problem certainly isn't a technical one.
masak: I can make it that way if folks want it that wya.
*way
masak smash_: hi!
jnthn o/ smash_
12:11 colomon joined
jnthn masak: My gut just told me they wouldn't. 12:11
masak: fwiw, -e does have 'em. 12:12
masak almost typed 'sudo make way instain mother' instead of 'sudo make install' :P
jnthn :D
12:13 azert0x left
jnthn Everyone: thoughts on backtraces in repl welcome. Or I JFDI and we see how it feels. :-) 12:13
12:14 rv2733 joined
masak I'm testing them now. 12:14
snarkyboojum my thoughts are they're already brilliantly better than they were :)
masak jnthn: fist impression: VERY NICE! 12:15
jnthn
.oO( a fist impression sounds painful )
masak jnthn++
:D
*frist :P
snarkyboojum line numbers have been spot on for me this evening - very helpful indeed
masak jnthn: maybe indent the lines starting with 'in' with 2 or 4 spaces? would help to pick out the error message easier, I think. 12:16
jnthn masak: ooh, that could just work
masak: If you want to try it yourself, btw, see src/Perl6/BacktracePrinter.pm
(yes, *.pm* ;-))
masak \o/ 12:17
jnthn And just search for "in"
masak I can do it.
but I'm not done testing it yet, so in a bit.
jnthn Sure
But in general, feel free to tweak it a bit.
12:18 whiteknight left
masak I've found a case where a line number is one-off. shoudl I nopaste it? 12:19
masak can't spell today
I'm a bit worn out after yesterdays wedding party :)
jnthn masak: please 12:20
masak I don't think it's the fault of the new backtraces thing, to be honest.
jnthn I knew you'd find something :-)
masak more like a result of parsing or something. 12:21
jnthn Well, the other thing is that we don't have a lot of :node($/)s in Actions.pm as we maybe should.
*as many
masak gist.github.com/418990
jnthn So could very well be some wins to be had by some careful extra scattering of those.
masak: curious 12:23
masak: Does it get it right if you do pfft() ?
as in, add parens?
masak tries
jnthn had a test very much like that which got it right
masak no.
jnthn ok
12:24 M_o_C left
masak maybe it sees the statement as starting on line 1, or something? 12:24
jnthn That's very possible.
I just thought that it'd been getting it right.
(I had a very similar test case...)
jnthn plays spot the difference 12:25
masak & 12:26
jnthn masak: hmm, I agree it seems to be one off there.
12:28 pmurias joined
pugssvn r30988 | pmurias++ | [mildew] ported over the -Cgtk backends 12:28
r30988 | which displays the AST using a gtk viewer
r30989 | pmurias++ | [mildew] add INFERRED-TYPE-TEST to MildewCORE.pad 12:29
r30990 | pmurias++ | [mildew] added support for goto's and labels to mildew's m0ld frontend
moritz_ rakudo: regex foo { foo }; "foofoofoo" ~~ /<foo>+/; 12:31
bar($<foo>); sub bar(@foos) {}
p6eval rakudo 6eec67: OUTPUT«Useless declaration of has-scoped regex in a module; add our or my to install it in the lexpad or namespace␤Method 'foo' not found for invocant of class 'Cursor'␤in <anon> at line 11:/tmp/roxnZaSl4j␤in 'Cool::match' at line 2056:CORE.setting␤in 'Regex::ACCEPTS' at line
..4807:CORE.se…
moritz_ rakudo: my regex foo { foo }; "foofoofoo" ~~ /<foo=&foo>+/; bar($<foo>); sub bar(@foos) {}
p6eval rakudo 6eec67: ( no output )
masak submits rakudobug 12:35
moritz_ huh? why now? 12:36
masak for the one-off line number.
moritz_ waitwaitwait
masak sorry, wasn't too clear on that.
masak waits 12:37
moritz_ something p6evalish?
masak no.
moritz_ don't trust its line numbers
ok, good
masak right.
moritz_ then go ahead :-)
masak p6eval is 11 off :P
or maybe 10, more like.
dalek kudo: 1727ca5 | moritz++ | (2 files):
implement Cool.succ and .pred
moritz_ depends on whether you're used to 0-zero base line nubmers :-)
masak yuck, no! :P 12:38
moritz_ hey, our arrays are 0-based already :-)
masak as they should. 12:39
jnthn masak: Submitting that one you just gave me?
masak jnthn: aye.
jnthn masak: Think it may be a Parrot fix.
masak: Thing is, the annotations in the PIR look correct.
Trying my first guess at a patch now. 12:40
masak I'll include that in the Rakudobug. :)
smash_ what is the best practice for reporting errors to users ?
jnthn lol...if you make a syntax error in the ops...and then make bootstrap-ops...then it fails of course. So then you go and correct the error...apart from you broke the bootstrap and now can't build the ops builder to create the new ops to fix the problem. :-)
masak bootstrapping is fun that way. :) 12:41
jnthn I guess I'm just not allowed to make any mistakes. :)
masak smash_: can you be more specific?
smash_ masak: sure, give me a sec 12:42
pugssvn r30991 | moritz++ | [t/spec] unfudge tests for RT #67882, and add a few more (because I did not see the existing tests early enough) 12:45
smash_ gist.github.com/418999
masak looks 12:46
jnthn use fatal; probably would catch that.
moritz_ uhm
masak currently, &open in Rakudo dies as if 'use fatal' were on. 12:47
moritz_ shouldn't soft failures in sink context catch it too?
masak eventaully, yes.
jnthn moritz_: ah, possibly, yes
We don't sink yet though
moritz_ aye, but pmichaud++ has a plan :-)
masak smash_: I definitely think it should issue an error message.
jnthn Aye. :-)
masak smash_: as to what it should be, is it possible to find out *why* the socket couldn't be created? that feels like the interesting part. 12:48
12:48 azert0x joined, azert0x left, azert0x joined
jnthn Well, I guess .open would return the failure that we'd get unhappy about, and it has the best chance of knowing that. 12:49
12:49 azert0x left 12:50 azert0x joined
moritz_ rakudo: say (1|2|3) ~~ Junction 12:50
p6eval rakudo 478ba4: OUTPUT«1␤»
jnthn masak: OK, I got an improvement. 12:54
masak: There's two things at work here though.
12:54 gbacon left
masak only two? :) 12:54
jnthn 1) A place in Parrot there we probably should persist the PC in the context and didn't. I've fixed this. 12:55
2) Now I get the correct annotation reported, however putting a semicolon on the end of the line makes all the difference.
pugssvn r30992 | moritz++ | [t/spec] tests for RT #75368 and new spec wrt autothreading over negated operators
jnthn masak: That is, we now report the annotation that is emitted.
masak: But if the semi is missing, we omit the line afterwards, not the line before.
smash_ gist.github.com/418999 well, it's not very elegant, any suggestion ? 12:56
jnthn er, s/omit/emit/
moritz_ smash_: fail(message) would be better
smash_: which will automagically do the right thing (ie respect "use fatal", throw a soft exception) once it's implemented 12:57
masak smash_: what moritz_ said. but &note would have been more apt than &say, since it's an error condition. :) 12:58
moritz_ masak: you might get some mails for closed RT tickets without tests. Those actually have tests, but the commit message mailer takes a while to add that info to RT (just FYI)
12:58 Ross^ left
masak moritz_: thanks for the heads-up. 12:58
jnthn masak: Anyway, half fixed. :-)
I won't bump Parrot just for this - we'll get it next time somebody does. 12:59
masak nodnod
moritz_ rakudo: say [][].perl 13:00
p6eval rakudo 478ba4: OUTPUT«[]␤»
moritz_ more or less what I espected :-)
masak rakudo: say [][][][][][][][][][].perl
p6eval rakudo 478ba4: OUTPUT«[]␤»
masak :)
jnthn rakudo: say 1 [[[[[[[[[+]]]]]]]]] 41 13:01
p6eval rakudo 478ba4: OUTPUT«42␤»
13:01 azert0x left 13:02 azert0x joined
masak rakudo: say 1 [[[+] 41 13:02
p6eval rakudo 478ba4: OUTPUT«===SORRY!===␤Unable to parse infixish, couldn't find final ']' at line 11␤»
jnthn :-)
masak feels a bit infixish today
jnthn std: say 1 [[[+] 41
p6eval std 30992: OUTPUT«===SORRY!===␤Unable to parse bracketed infix at /tmp/CpzY4M1iRN line 1:␤------> say 1 [[⏏[+] 41␤Couldn't find final ']'; gave up at /tmp/CpzY4M1iRN line 1:␤------> say 1 [[[+]⏏ 41␤Parse failed␤FAILED 00:01 115m␤»
jnthn "gave up" :) 13:03
13:04 azert0x left, azert0x joined 13:05 dalek left
masak walk & 13:05
13:06 dalek joined
pugssvn r30993 | pmurias++ | [mildew] the m0ld frontend parses conditional branches 13:06
13:08 azert0x left, azert0x joined 13:13 snarkyboojum left, snarkyboojum joined 13:15 azert0x left, azert0x joined, azert0x left, azert0x joined 13:23 mtnviewmark joined
cognominal rakudo: say "hi"; ... 13:26
p6eval rakudo 478ba4: OUTPUT«hi␤»
cognominal should not that blow up on me? 13:27
13:27 [mark] left
cognominal rakudo: ... 13:27
p6eval rakudo 478ba4: ( no output )
13:28 JimmyZ left
mberends hears a muffled 'plop' 13:28
cognominal At least the mere ... blows up on the p6 shell
snarkyboojum cognominal: but not with -e 13:29
cognominal For once, I wanted a stack trace to see the work of jnthn++ and I fail to produce once. Ho, the irony. 13:31
13:31 JimmyZ joined 13:32 mtnviewmark left
snarkyboojum rakudo: foo() 13:33
p6eval rakudo 478ba4: OUTPUT«Could not find sub &foo␤in main program body at line 1:/tmp/O0MQkzePjj␤»
snarkyboojum rakudo: die 13:35
p6eval rakudo 478ba4: OUTPUT«Died␤␤in main program body at line 11:/tmp/pRv7XBf45l␤»
snarkyboojum rakudo: last 13:36
13:36 colomon left
p6eval rakudo 478ba4: OUTPUT«␤in main program body at line 1␤» 13:36
snarkyboojum rakudo: next
p6eval rakudo 478ba4: OUTPUT«␤in main program body at line 1␤»
snarkyboojum rakudo: warn 13:38
p6eval rakudo 478ba4: OUTPUT«Warning␤␤in main program body at line 1␤»
cognominal anyway I can say of Perl 6 and
rakudo: so Cool 13:39
p6eval rakudo 478ba4: ( no output )
snarkyboojum rakudo: does Cool 13:40
p6eval rakudo 478ba4: ( no output )
snarkyboojum std: Mu 13:41
p6eval std 30993: OUTPUT«ok 00:01 114m␤»
13:42 M_o_C joined 13:44 elmex left, elmex joined 13:47 azert0x left, azert0x joined
pugssvn r30994 | moritz++ | [t/spec] test for RT #73308, [][] 13:50
moritz_ std: / a+ +/ 13:51
p6eval std 30993: OUTPUT«===SORRY!===␤quantifier quantifies nothing at /tmp/OTa6oLVTTx line 1:␤------> / a+ +⏏/␤Check failed␤FAILED 00:01 111m␤»
pugssvn r30995 | moritz++ | [t/spec] tests for RT #74832 13:54
masak \o/
moritz_ \\o
masak oh, it was std, not rakudo. :)
moritz_ rakudo: /a+ +/ 13:55
p6eval rakudo 478ba4: OUTPUT«===SORRY!===␤Can't quantify zero-width atom at line 11, near "/"␤»
moritz_ down to 7 tickets that needs tests before closing 13:56
masak: you might find rt.perl.org/rt3/Ticket/Display.html?id=75434 curious :-) 13:57
btw it seems that JSON::Tiny is now unblocked
only requires a small measure of debugging to get running again
masak I did find it curious. moritz_++ on the nice bug report.
moritz_ well, with the small exception of escape sequences in char classes
masak master is getting into shape refreshingly quickly. I've spent the last couple of days in GGE actually *removing* RAKUDO comments. 13:58
that has never happened on this scale.
moritz_ yes, the last few days were exceedingly productive 13:59
masak right now, I'm making adjustments for the fact that Match is Cool.
smash_ any documentation on how to use Q:PIR{ ... } on perl 6 modules ? 14:00
14:00 oyse joined
snarkyboojum I wonder what is causing rakudo to blow up on the grammar stuff in day 21 of the advent calendar - as soon as Question::Grammar.parse($text) is called it's game over 14:00
masak smash_: there are plenty of examples in src/core 14:01
snarkyboojum: is there an error message?
smash_ masak: i'm looking for it there
snarkyboojum masak: 'Confused at line 31, near "my $match "'
jnthn moritz_++ # down to 630 tickets again! 14:02
snarkyboojum masak: the line in question being "my $match = Question::Grammar.parse($text);"
jnthn snarkyboojum: What comes on the line prior to that? 14:03
snarkyboojum jnthn: a multi-line quote Q { };
masak snarkyboojum: no idea what it might be. maybe try to golf the error?
jnthn OK, there's even a semi on it, so it couldn't be the block closer = end of statement bug, which I feared it may be. 14:04
cognominal masak++ # nice expression
snarkyboojum masak: what does "golf the error" mean? 14:05
oyse Has the Path role (perlcabal.org/syn/S32/IO.html) been implemented Rakudo yet? I tried to use it as specified in the Synopsis, but Rakudo complains about "Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax"
masak snarkyboojum: make it as small as possible, but no smaller.
snarkyboojum masak: ah 14:06
masak snarkyboojum: 'golf' is a time-honoured technique in the Perl world, usually applied to interesting algorithms, not errors.
snarkyboojum masak: know about golfing, but didn't get it for some reason :) 14:07
masak oyse: the error message seems unrelated to what you're asking for.
snarkyboojum masak: so cheers :)
masak oyse: you're doing something akin to 'my $a = new A' when it's really "my $a = A.new' in Perl 6.
oyse masak: ah ok. I just copied what it said in the synopsis. I will change it and try again 14:08
masak oyse: I doubt the synopses tell you to use that syntax. which line of IO.pod?
snarkyboojum masak: gist.github.com/419050 # golfed - I think :) 14:09
masak oyse: sorry, you're right! fixing.
14:09 colomon joined
masak snarkyboojum: the bug doesn't show if you rename to something shorter? :) 14:09
snarkyboojum masak: :P
masak snarkyboojum: is the 'use v6;' required? :) 14:10
snarkyboojum I'm golfing with "good style" :P
masak snarkyboojum: clearly you don't quite appreciate the meaning of 'golf' yet :P
'good style' in golfing is all about brevity.
are the variable assignments necessary. 14:11
s/\./?/
colomon dang, hyper.t is all messed up.
oyse masak; Changing the calling syntax took care of the error. Thanks.
masak oyse: thanks for unwittingly discovering the spec bug :)
fwiw, I think Path is overdesigned and shouldn't be in the spec. 14:12
pmichaud good morning, #perl6 14:14
pugssvn r30996 | masak++ | [S32/IO] changed a number of instances of C++-style constructor syntax
JimmyZ morning, pmichaud 14:15
masak morning, pmichaud
colomon o/
rakudo: my @a = 1..3; @a>>++; say @a;
p6eval rakudo 478ba4: OUTPUT«234␤»
smash_ masak: what is the difference between my $s = Q:PIR {...} and my $s = ~Q:PIR {...} ?
pmichaud: mornin'
masak smash_: prefix:<~> makes a thing into a Stringy.
usually a Str. 14:16
snarkyboojum masak: how's this gist.github.com/419058 :P
smash_ masak: got it, thks
masak hugme: hug jnthn # the new backtraces are wonderful!
hugme hugs jnthn
snarkyboojum interestinly I get a different error when I try and do grammar Q::G{} :)
*interestingly 14:17
masak snarkyboojum: then you've entered the 'but no smaller' part and should backtrack.
snarkyboojum: there are issues with things named 'Q' right now.
try two letters instead :)
snarkyboojum did - in the snippet below it 14:18
:)
masak snarkyboojum++ # getting golfier
snarkyboojum: just a hunch -- what happens if you rename the grammar into 'Yi'?
jnthn morning, pmichaud 14:19
masak: Happy you like these ones. :-)
masak jnthn: I'm *really* happy we got those before Rakudo Star. 14:20
snarkyboojum masak: something completely different :) "Method 'TOP' not found for invocant of class ''"
masak snarkyboojum: then you're a victim of rt.perl.org/rt3/Ticket/Display.html?id=74276
snarkyboojum: I haven't seen this variant before, but it's the same root cause.
snarkyboojum masak: which I already knew about ;) thank you!
14:20 dual left
jnthn masak: Yeah, I knew it needed to happen before then, but wasn't in a hurry to go digging in Parrot guts. :-) 14:20
snarkyboojum I think :P
masak: and renaming the grammar to grammar Yuestion::Grammar :P in the original (longer) example, gets rid of the parsing error, but still doesn't give me the right answer :) 14:23
masak++ # for clever hunches
masak hunches are the fun part of debugging :) 14:24
snarkyboojum aye :)
Su-Shee mberends: I think I'm done with rows; pastebinning. 14:26
oyse Has directory operations and similar been implemented for Rakudo yet? Can I do stuff similar to "mkdir $path" or is this still missing? 14:28
jnthn rakudo: mkdir lol
p6eval rakudo 478ba4: OUTPUT«Could not find sub &lol␤in main program body at line 1:/tmp/I6npOp0W5d␤»
jnthn rakudo: mkdir "lol"
p6eval rakudo 478ba4: OUTPUT«Could not find sub &mkdir␤in main program body at line 1:/tmp/jwBd2HuRMZ␤»
jnthn ...wish I knew Perl 6 syntax... :-)
oyse: Looks like not.
snarkyboojum masak: seeing how you're on a roll gist.github.com/419066 :P
masak huh. p6eval reports the line numbers right? :) 14:29
jnthn masak: Well, if the code is all on one line, it's not hard to get right. :-
snarkyboojum rakudo: die
p6eval rakudo 478ba4: OUTPUT«Died␤␤in main program body at line 11:/tmp/DXQZRmHgVo␤»
masak oh, ok. 14:30
snarkyboojum: what am I looking at in the paste?
oyse jnthn: Ok. Will have to fall back to Perl 5 then :)
snarkyboojum masak: the incorrect result - didn't parse properly
masak ah, right. 14:31
snarkyboojum should be a proper ast
Su-Shee mberends: pastebin.org/293404
masak to => -3
means it failed to match.
snarkyboojum masak: so perhaps regex problems in the grammar?
masak yes.
time to bring out the regex debugger!
snarkyboojum thought as much 14:32
:)
matches on alpha tho :|
masak interesting.
good luck. 14:33
snarkyboojum masak: ;)
masak remember that you can use say statements in the middle of rules too.
Su-Shee so, Mu is essentially the type for "somewhat empty and not really defined but here I am.." ? ;) 14:34
Wolfman2000 無 basically. Mu is mu. 14:36
snarkyboojum Su-Shee: "Or just think of it as a sound a cow makes, which simultaneously means everything and nothing."
14:36 oyse left
Su-Shee I know only japanese Mu in context of art and stuff. 14:37
mberends Su-Shee: that is part of the reason the name was chosen 14:39
Su-Shee "does the method return something?" "no, it's just your mind returning to the method."
snarkyboojum Su-Shee: yeah, literally named after en.wikipedia.org/wiki/Mu_(negative) 14:40
jnthn afk for a couple of hours 14:41
masak it's everything because it's at the root of the class hierarchy. it's nothing because it's the least specified object, and because it is undefined (just like other type objects).
Su-Shee masak: I'm just doing zen puns. ;)
snarkyboojum masak: nicely explanation 14:42
err.. *nice
Su-Shee also, I have a new slogan for perl 6:
"perl 6 - puns intended."
masak :) 14:43
let's hope we didn't miss any unintended ones, then.
Su-Shee let's call some edition "koan" ;)
cognominal I discovered recently that I was ignostic, may be I am indeed Mu-gnostic. en.wikipedia.org/wiki/Ignosticism 14:45
masak ignosticism. lovely concept. :) 14:47
cognominal At the same time, I discovered that many rabbi did not believe in god.
Wolfman2000 cognominal: I find that hard to believe 14:52
snarkyboojum masak: was pretty straightforward in the end.. rakudo wasn't matching the leading newline at the beginning of the quoted $text string 14:56
masak snarkyboojum: ah :) 14:57
snarkyboojum: but why does alpha match it?
rakudo: class A { our enum B <c d> }; say A::B::c
p6eval rakudo 1727ca: OUTPUT«Can not find sub A::B::c␤in main program body at line 1␤»
snarkyboojum masak: good question
JimmyZ I sent a email to RT half an hour ago, I can't find it :(
masak jnthn: should the above work? I think it should.
JimmyZ: I can't see it either. 14:58
maybe it didn't get through the GFW. 14:59
JimmyZ GFW only blocks some of websites.
something like doc.spython.org 15:00
*python
masak yeah, block that one :P
JimmyZ It doesn't block email
masak JimmyZ: I know. just kidding; sorry. :) 15:01
JimmyZ :)
Nothing
masak: I sent a the bug: { ; } shouldn't be a hash. 15:02
s/a// 15:03
masak 没有RT ticket
JimmyZ 是的
;)
15:03 tedv| joined
masak 我不只道它是在哪里 15:04
that was probably wrong, it was so long. :)
JimmyZ masak: s/是//
masak oh, ok.
of course. 15:05
been a while.
Wolfman2000 Right...I still need to try to learn Japanese. I really need a Skype partner to even attempt that though.
No one local is around.
masak 在 can verb on its own.
JimmyZ learning context is difficult in perl, and more difficult in naturl languages 15:06
masak rakudo: class A { package B { our sub c { say "OH HAI" } } }; A::B::c # jnthn: what about this one? 15:07
Wolfman2000 I meant learn Japanese in general.
p6eval rakudo 1727ca: OUTPUT«Can not find sub A::B::c␤in main program body at line 1␤»
JimmyZ *nature
masak JimmyZ: 'natural', in fact. it's the adjective form.
JimmyZ ops, wrong twice 15:08
my poor english
colomon my @r = (1, 2, 3); @r»++; say @r.perl
moritz_ rakudo: my @r = (1, 2, 3); @r»++; say @r.perl
p6eval rakudo 1727ca: OUTPUT«[2, 3, 4]␤»
colomon rakudo: my @r = (1, 2, 3); @r»++; say @r.perl
masak JimmyZ: your English is far above the average level of people's Chinese in here :)
p6eval rakudo 1727ca: OUTPUT«[2, 3, 4]␤»
aesop class and package do the same thing? 15:09
colomon rakudo: my @r = (1, 2, 3); @r»++; say ~@r
p6eval rakudo 1727ca: OUTPUT«2 3 4␤»
Wolfman2000 Huh...so ~@ prints out each element, huh? 15:10
rakudo: my @s = (2, 4, 6); say ~@s
moritz_ ~ stringifies
p6eval rakudo 1727ca: OUTPUT«2 4 6␤»
Wolfman2000 I forgot that
colomon Wolfman2000: ~@r turns @r into a string.
like moritz_++ said 15:11
masak aesop: a class can be seen as a package with 'a few' extra tricks up its sleeve. :)
aesop: including a metaclass that knows what to do with attributes and methods and the like.
colomon jnthn: hyper patch seems sensible, but seems to break my rakudo build.
> my @r = (1, 2, 3); @r>>++; say ~@r
1 2 3
smash_ moritz_: refresh gist.github.com/418999
colomon will try to investigate further when I get the chance, things are a bit crazy here at the moment.
moritz_ smash_: much better 15:12
aesop masak: will class do things similar to what moose does for perl 5? like creating accessors and such
masak rakudo: class A { has $.foo }; say A.new(:foo(42)).foo 15:13
p6eval rakudo 1727ca: OUTPUT«42␤»
masak aesop: that's an accessor being called right there.
aesop: no need for 'will'; it's implemented already :)
aesop ahhh
nice
masak aesop: the accessors are lvalue methods, so you can assign to them as well. in that sense, they're both getters and setters in one. 15:14
smash_ moritz_: but unless you 'use fatal;' it still dies silently if it can't create the socket
pugssvn r30997 | moritz++ | [t/spec] tests for RT #69596, aliasing $0 into custom match objects
aesop yea
i thought so
moritz_ smash_: but once we implement void context detection, it will fail loundly in void context
smash_ moritz_: excelent.. anything else to improve or can commit it ? 15:15
moritz_ smash_: go ahead
pmurias diakopter: hi 15:16
masak I still don't grok the exact difference between 'module' and 'package', besides differentiating Perl 5 code from Perl 6 code. 15:17
15:17 am0c joined
moritz_ masak: I kinda think the exporting magic is in modules, not packages 15:17
masak ooh!
moritz_ masak: but I don't know what you might need packages for
rakudo: subset A of Mu; my A $x = 23; 15:19
p6eval rakudo 1727ca: ( no output )
moritz_ huh. My eval_lives_ok fails 15:20
masak rakudo: subset A of Mu; my A $x = 23; say 'alive'
15:20 JimmyZ left
p6eval rakudo 1727ca: OUTPUT«alive␤» 15:20
moritz_ rakudo: use Test; plan 1; eval_lives_ok 'subset A of Mu; my A $x = 23;', 'subset A of Mu + type check and assignment works';
p6eval rakudo 1727ca: OUTPUT«1..1␤not ok 1 - subset A of Mu + type check and assignment works␤# Looks like you failed 1 tests of 1␤»
moritz_ rakudo: eval 'subset A of Mu; my A $x = 23;'; say $! 15:21
p6eval rakudo 1727ca: ( no output )
dalek kudo: 5fc925c | smashz++ | src/core/IO/Socket/INET.pm:
Fail if can't create socket.
snarkyboojum another issue I'm having with day21 gist.github.com/419101
works in alpha, but gives that error in rakudo
15:21 TiMBuS left
moritz_ snarkyboojum: please submit rakudobug 15:21
snarkyboojum moritz_: oh ok 15:22
moritz_ masak: am I missing something here? am I insane? or just rakudo?
15:22 tedv| left
masak rakudo: class A { class B { has A::B $.foo } } # golfed :) 15:22
p6eval rakudo 1727ca: OUTPUT«===SORRY!===␤In "has" declaration, typename A::B must be predeclared (or marked as declarative with :: prefix) at line 11, near " $.foo } }"␤»
masak moritz_: don't think you're missing something. I can't explain it either. 15:23
15:23 masonkramer joined
snarkyboojum masak++ # for golfing prowess :) 15:23
I've never logged a bug - send email to [email@hidden.address] as per README on github? 15:24
masak aye.
snarkyboojum okydoke
pugssvn r30998 | moritz++ | [t/spec] test for RT #74234 15:25
cognominal rakudo: class A { class B { has B $.foo } } 15:26
p6eval rakudo 1727ca: ( no output )
masak rakudo: package A { package A::B { our sub c { say "OH HAI" } } }; A::B::c # a-ha! 15:27
15:27 Limbic_Region joined
p6eval rakudo 1727ca: OUTPUT«OH HAI␤» 15:27
masak cognominal and I had two sides of the same insight :)
masak submits rakudobug 15:28
smash_ moritz_: also updated RT#69232 and i would vote for closing that one 15:29
masak as I understand it, package/module/class/role/subtype/enum names are relative in their declaration, but absolute in their use.
right now it seems that Rakudo thinks that the names in the declaration are absolute, too.
moritz_ smash_: do we have tests for it?
pmichaud masak: actually, the above looks correct to me
unless I'm not seeing something 15:30
masak pmichaud: I might have gotten used to something that alpha got wrong, then.
pmichaud what were you expecting?
masak pmichaud: you're saying that block nesting doesn't affect the name of a declared entity at all?
pmichaud no
masak oh, ok. 15:31
very well, then.
pmichaud I'm saying that in the above, package A::B would be the same as package B
masak no rakudobug. :)
15:31 dual joined
pmichaud it's the B package within the A package 15:31
masak oh.
cognominal pmichaud++ # for the clarification 15:32
pmichaud (I could be wrong about this... package names haven't been crystal clear to me either)
masak let's slow down a bit. I'm not sure which piece of code you're talking about.
pmichaud 15:27 <masak> rakudo: package A { package A::B { our sub c { say "OH HAI" } } }; A::B::c # a-ha!
masak probably cognominal's.
oh, ok.
pmichaud that one looks right.
masak which means names in declarations are absolute.
pmichaud no
it's because you (re-)used the A
not because the name is absolute
masak if they were relative, I'd expect to have a package A::A::B. 15:33
pmichaud 15:27 <masak> rakudo: package A { package C::B { our sub c { say "OH HAI" } } }; C::B::c
sorry
just a sec
smash_ moritz_: do you mean in the spec or in rakudo ?
cognominal masak, I am a better golfer than you for package naming :)
masak pmichaud: I never said that :)
pmichaud rakudo: package A { package C::B { our sub c { say "OH HAI" } } }; A::C::B::c
p6eval rakudo 1727ca: OUTPUT«Can not find sub A::C::B::c␤in main program body at line 1␤»
pmichaud that one is wrong (afaik) 15:34
masak cognominal: :)
pmichaud that should've printed "OH HAI"
masak submits rakudobug
pmichaud rakudo: package A { package C::B { our sub c { say "OH HAI" } } }; C::B::c
p6eval rakudo 1727ca: OUTPUT«OH HAI␤»
pmichaud afaik, that one is wrong.
masak pmichaud: I don't yet see why we don't agree on all points here, but glad we agree on those two. 15:35
pmichaud rakudo: package A { package A::B { our sub c { say "OH HAI" } } }; A::B::c
p6eval rakudo 1727ca: OUTPUT«OH HAI␤»
pmichaud as far as I know, that one is right.
masak o.O
that's, like, so inconsistent!
pmichaud the difference is that in the name A::B, we're re-using the A from the outer scope
masak :(
pmichaud look at it this way
rakudo: package A { package B { our sub c { say "OH HAI }}; A::B::c } 15:36
p6eval rakudo 1727ca: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 11␤»
pmichaud rakudo: package A { package B { our sub c { say "OH HAI } }; A::B::c; }
p6eval rakudo 1727ca: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 11␤»
pmichaud rakudo: package A { package B { our sub c { say "OH HAI" } }; A::B::c; }
p6eval rakudo 1727ca: OUTPUT«Can not find sub A::B::c␤in main program body at line 1␤»
pmichaud that's *wrong* 15:37
masak yes!
pmichaud we should be able to find A::B
masak which was what all this was about.
names in declarations are absolute.
pmichaud no.
masak and not only those which you claim should be. :)
in Rakudo, they are.
pmichaud I agree that Rakudo gets it wrong (at least according to my reading of the spec) 15:38
let's consider this one:
rakudo: module Foo { module Foo { ... } }
cognominal so, it worked for member variable declaration but not for a sub definition
p6eval rakudo 1727ca: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'Foo'␤»
pmichaud Rakudo is right there.
masak ok.
pmichaud because "Foo" always refers to the outer Foo that is in scope 15:39
it's not supposed to create Foo::Foo
rakudo: module Foo { module Bar { ... } }
p6eval rakudo 1727ca: ( no output )
pmichaud creates Foo and Foo::Bar
rakudo: module Foo { module Foo::Bar { ... } }
p6eval rakudo 1727ca: ( no output )
pmichaud also creates Foo and Foo::Bar 15:40
masak if you say so. :)
I haven't seen the spec say that, but I'm willing to find it in there.
cognominal rakudo: module Foo { my module Foo::Bar { ... } } # can it be private?
pmichaud it's the part that says there aren't any absolute module paths
p6eval rakudo 1727ca: ( no output )
masak :) 15:41
pmichaud they're always relative
and a X::Y name is always based on any X that is already defined
cognominal rakudo: module Foo { my module Foo::Bar { ... } }
p6eval rakudo 1727ca: ( no output )
cognominal ouch, xchat-- # tripped me again
masak I temporarily take back my accusations of inconsistency. I have to get used to this new way of thinking. 15:42
pmichaud masak: S10, "Package nesting"
masak oh, ok.
pmichaud first paragraph
masak I'm not sure I've ever read S10 :) that explains it.
cognominal module Foo { my module Foo::Bar { sub hi { say "hi" } } ; Foo::V 15:43
rakudo: module Foo { my module Foo::Bar { sub hi { say "hi" } } ; Foo::Bar::hi
p6eval rakudo 1727ca: OUTPUT«===SORRY!===␤Can't handle scope declarator my on modules yet␤»
cognominal ok
pmurias diakopter: hi
pmichaud more interesting is something like
masonkramer our sub / my package = mind blown 15:44
pmichaud module C { module A { module C::B { ... } } }
creates C, C::A, and C::B
masak aye.
pmichaud not C::A::B
cognominal makes sens to me
pmichaud or C::A::C::B
masonkramer why not C::A::C::B
pmichaud masak: because "C" refers to the outer C module
masak right. 15:45
pmichaud sorry, masonkramer
masak :)
pmichaud (tab completion fail)
moritz_ rakudo: say <A B C C>.pick(*).join('::')
p6eval rakudo 1727ca: OUTPUT«C::C::A::B␤»
masak masonkramer: our nicks have too long a common prefix :)
pmichaud another example
module C { module A { module UNIT::B { ... } } } 15:46
masonkramer masak: 3 letters, what are the odds?
pmichaud creates C, C::A, and B
colomon rakudo: my @a = (1, 2, 3); @a>>++; say @a
p6eval rakudo 1727ca: OUTPUT«234␤»
pmichaud (which are really UNIT::C, UNIT::C::A, and UNIT::B
it does not create C::A::UNIT::B 15:47
cognominal module C { module A { module UNIT::A { ... } } } # even more interesting
pmichaud creates UNIT::C, UNIT::C::A, and UNIT::A 15:48
cognominal indeed
faster typer than me
15:48 Ross^ joined
cognominal in every meaning of the term. 15:48
masak module A { module UNIT::A {} } # clash? 15:49
pmichaud likely, yes.
masonkramer >> is what? The new map?
pmichaud masonkramer: hyper operator 15:50
performs an operation on all elements (in parallel)
dalek kudo: 749fe91 | moritz++ | Test.pm:
[Test.pm] simplify eval_exception

need for nesting try { eval() } anymore.
cognominal pmichaud: so the real interest of embedding is here privacy when used with my (not implemented yet)?
pmichaud cognominal: iiuc, "my" simply means that the symbol is entered in a lexical table but not in the package symbol table 15:51
cognominal otherwise it makes things more complicated to understand.
pmichaud module A { my module B { ... } }; # no A::B defined 15:52
cognominal I understand it is the Perl way to implement privacy
masak reads S10
cognominal ho, so with my, the logic is different to derive the absolute name. 15:53
pmichaud with my, there is no absolute name
cognominal And who cares because no why will use it
pmichaud it's effectively anonymous outside of the scope in which it was declared 15:54
cognominal agreed.
pmichaud even inside of the scope, I suspect it may have to be only "B" and never "A::B"
(because package A won't have an entry for B)
in comments above, likely s/UNIT/GLOBAL/g (after reading more of S11) 15:55
15:59 am0c left
cognominal pmichaud, on a totally different subject, should a match object contain a member with the name of the rule that was used for the match? I could see the use to create a link on a beautifier/debugger web based. 16:00
or does this member already exist?
pmichaud cognominal: that idea has come up several times. It's always been rejected.
cognominal ok, why? 16:01
pmichaud I don't remember exactly (more)
cognominal nevermind
pmichaud one question is whether we used the name of the rule used for the match or the name of the alias under which the match was stored
*use
e.g. <xyz=.abc>
16:01 tedv| joined
pmichaud (does the match object get "abc" or "xyz"? 16:01
cognominal tricky indeed 16:02
16:02 rv2733 left
masak abc, in my view. 16:03
the 'xyz' is probably a key somewhere.
fwiw, I have written code which could have been simpler if such an attribute existed. 16:04
pmichaud masak: yes, that's why the question comes up frequently
masak so why is it always rejected? :)
pmichaud as I said, I don't recall exactly.
masak ok.
pmichaud (and I'm not the one doing accepting/rejecting) 16:05
masak it was the biggest discrepancy I noticed when translating a piece of code from Parse::RecDescent to Perl 6 grammars.
moritz_ mberends: do you have and data if commit 749fe91 sped up the spectest run? 16:07
s/and/any/
16:09 masonkramer left
moritz_ (I don't have high expectations) 16:10
rakudo: say today() + 426 # expected date of ipv4 address exhaustion 16:11
p6eval rakudo 1727ca: OUTPUT«Could not find sub &today␤in main program body at line 1:/tmp/UEhusMlxcw␤»
moritz_ rakudo: say Date.today() + 426 # expected date of ipv4 address exhaustion 16:12
p6eval rakudo 1727ca: OUTPUT«2011-07-30␤»
colomon can anyone out there explain to me how/why the our multi sub hyper(&op, @arg) version works, as currently implemented in Rakudo? 16:13
moritz_ colomon: anything specifically you want to know?
colomon in particular, how can you use it as @a>>++ and have @a be modifed.
*modified
moritz_ colomon: signature biding binds @arg to the caller's array 16:14
colomon: and the for-loop binds $_ to the array items in turn
colomon moritz_: isn't "@arg is rw" needed to modify it? 16:15
or is that only to modify the length?
moritz_ colomon: only for @arg = thing style modifications (that go through infix:<=>)
colomon: otoh @arg[0] = something is just a method call
colomon is bothered by this because any attempt he makes to modify this code seems to break the magic.
moritz_ that's why that patch by sahadev++ (hope I remember the name correctly) looks a bit weird 16:16
mberends moritz_: all the times for commit 34542f7 (early this morning) seem about 50% longer than 2 days ago 16:17
moritz_ :(
16:20 masonkramer joined
pmichaud I can run the spectest-update script -- it may let us know where things have slowed down 16:20
(and by how much)
moritz_ anybody got a working example of how to export a multi in current rakudo? 16:21
a multi sub from a module, that is
I've tried a proto with 'is export' that dispatches to the other multis 16:22
mberends moritz_: that was *before* 749fe91. Starting to re-build and re-measure..
moritz_ but nextsame gives an Null PMC access in clone()
rakudo: say ~3.2 16:29
p6eval rakudo 1727ca: OUTPUT«3.2␤»
16:30 kda joined, snarkyboojum left
moritz_ rakudo: '12' ~~ /../; say +$/ 16:32
p6eval rakudo 1727ca: OUTPUT«12␤»
moritz_ rakudo: '12' ~~ /(.)./; say +$/ 16:33
p6eval rakudo 1727ca: OUTPUT«12␤»
moritz_ somehow I have a case where ~$/ is '1' and +$/ is 0
pmichaud ?
seems odd.
moritz_ while debugging JSON::Tiny
will try to reduce 16:34
method value:sym<number>($/) { say "Number: $/"; say +$/; make +$/}
produces
Number: 1 16:35
0
16:35 M_o_C left
masak moritz_: it's hard to reproduce that, though, not having the surrounding context, and the actual Match object sent in. 16:37
pmichaud what do you get with say $/.Str ?
moritz_ 1
pmichaud and how about say +$/.Str ? 16:38
moritz_ oh
it has a trailing space
pmichaud aha
moritz_ rakudo: '1 ' ~~ /.*/; say +$/
p6eval rakudo 1727ca: OUTPUT«0␤»
pmichaud rakudo++
moritz_ is that actually correct?
masak waitwait.
I'd expect '1' from that.
moritz_ I don't believe it is
rakudo: say +'1 ' 16:39
p6eval rakudo 1727ca: OUTPUT«1␤»
masak submits rakudobug
pmichaud wait wait
masak moritz_++
pmichaud wait wait
masak :)
pmichaud seriously, wait
masak wiats
pmichaud your intuition doesn't match what TimToady++ told me once during a concall
masak grr, spelling today is hpoeless!
cognominal rakudo: say +"1 "
p6eval rakudo 1727ca: OUTPUT«1␤»
16:39 smash_ left
pmichaud we were going to change numification so that it had to match exactly (although trailing spaces might've been allowed) 16:40
rakudo: say +"1 abc"
p6eval rakudo 1727ca: OUTPUT«1␤»
pmichaud rakudo is wrong there
moritz_ pmichaud: and how would one numify while ignore trailing garbage?
masak I don't know that that update has even made it into the spec.
pmichaud moritz_: I don't know -- that was just what we discussed
moritz_ anyway, the current situation is incoherent in rakudo
masak yep. deserves a rakudobug. 16:41
moritz_ +1
masak resumes submitting procedure
pmichaud no, the update never made it into the spec, afaik
moritz_ rakudo: '1 ' ~~ /.+/; say +$/.Str
p6eval rakudo 1727ca: OUTPUT«0␤»
moritz_ so, how do I get that 1 out of $/ ?
pmichaud rakudo: '1 ' ~~ /.+/; say $/.Str.chars
p6eval rakudo 1727ca: OUTPUT«2␤»
moritz_ rakudo: '1 ' ~~ /.+/; say +"$/" 16:42
p6eval rakudo 1727ca: OUTPUT«0␤»
pmichaud I'm wanting to know what's different about that str
masak moritz_: match it against /^\d+/ :P
pmichaud rakudo: '1 ' ~~ /.+/; say PARROT($/.Str)
moritz_ rakudo: '1 ' ~~ /.+/; say $/.Str.PARROT
p6eval rakudo 1727ca: OUTPUT«String␤»
pmichaud okay, so it has Parrot string semantics
moritz_ rakudo: '1 ' ~~ /.+/; say "$/".Str.PARROT
p6eval rakudo 1727ca: OUTPUT«String␤»
moritz_ why doesn't interpolation into "" makes it a proper Perl 6 string? 16:43
pmichaud rakudo is smart enough to optimize "$a" to be just ~$a
moritz_ how do I constructr a proper Perl 6 string from a parrot string?
pmichaud it should be happening automagically, really
but even that doesn't entirely explain it. why is Parrot string numification not working? 16:44
rakudo: '1 ' ~~ /.+/; say PARROT(~$/.Str)
p6eval rakudo 1727ca: OUTPUT«Str␤»
pmichaud rakudo: '1 ' ~~ /.+/; say +~$/.Str 16:45
p6eval rakudo 1727ca: OUTPUT«1␤»
pmichaud rakudo: '1 ' ~~ /.+/; say +"$/ "
p6eval rakudo 1727ca: OUTPUT«1␤»
pmichaud moritz_: anyway, the simple answer is to make sure that Match.Str returns a rakudo string
moritz_ pmichaud: how? concatenate a '' ? 16:46
pmichaud or use prefix:~
or use substr directly
method Str () { substr($.orig, $.from, $.from-$.to) } 16:47
should do it.
moritz_ tests a fix
~self.Regex::Match::Str
masak rakudo: sub foo(%hash? is copy) {}; foo 16:49
p6eval rakudo 749fe9: OUTPUT«Null PMC access in invoke()␤in '!STORE' at line 4186:CORE.setting␤in '!STORE' at line 4203:CORE.setting␤in 'foo' at line 1:/tmp/pynp4mE69t␤in 'foo' at line 11:/tmp/pynp4mE69t␤in main program body at line 11:/tmp/pynp4mE69t␤»
dalek kudo: 8081285 | moritz++ | src/core/Match.pm:
make Match.Str return a Perl 6 Str
16:54
kudo: c227238 | moritz++ | Test.pm:
[Test.pm] return comparsion result from is_deeply
moritz_ I'm slowly recovering parts of JSON::Tiny 16:55
pmichaud I'll try not to break them again too much :) 16:57
(but possibly will in the next 24h :)
moritz_ you'd get a shower of tickets :-)
pmichaud fine with me
16:58 azert0x left 16:59 azert0x joined
moritz_ yu mean, tickets are easy to ignore? :-) 17:00
oh, another SPELING fail 17:01
rakudo: say Q<<[foo]>>
p6eval rakudo 749fe9: OUTPUT«[foo]␤»
moritz_ rakudo++
Wolfman2000 ...note to self. Don't run movies while compiling Perl 6. It LAGS 17:02
moritz_ oh, I'm doing that right now
I've just two different computers for that :-)
arnsholt Wolfman2000: That just means you need more cores =)
17:02 azert0x left
lue ohai! 17:02
Wolfman2000 arnsholt: Care to get me a new MBP?
17:02 azert0x joined
masak lue! \o/ 17:02
arnsholt Wolfman2000: No, it's mine and you can't have it =p 17:03
masak lue: I've finally ironed out all of the test failures in GGE, so GGE runs fine with Rakudo master now. \o/
lue
.oO(What I wouldn't do for a shiny multi-core notebook. Give up P6, for one.)
\o/
Wolfman2000 spoilsport
arnsholt Hehe. I spent a sizeable fraction of last summer's income on it, so I'm rather attached to it =) 17:04
moritz_ oh dammit, my JSON parser doesn't like negative numbers anymore
lue If it is better will it become the new grammar engine for rakudo?
masak lue: no :)
lue: it's definitely not better, and it's last year's technology. 17:05
a kind of "first generation" Perl 6 grammar engine, actually.
nqp-rx is "second-generation".
and I guess STD.pm6 is, too. 17:06
lue TGGE (Third Generation Grammar Engine)
moritz_ TGGE = Terribly Glacial Grammar Engine
masak lue: anyway, I'm at the point now where I'm actually rolling back RAKUDO-comment workarounds, and re-running the tests. that puts me in a heppy mood. :> 17:07
lue SEGFAULT = Speedy Engine of Grammar For All Underlying Language Tasks :)
If only rakudo could be pass all test :)
masak in all honesty, I have a few TODO tests. 17:08
but they are a strict subset of the ones for PGE. :)
moritz_ all but two parsing tests pass in JSON::Tiny 17:09
masak moritz_++
moritz_ turned out I changed a token to 'rule', which was quite fatal 17:10
masak 'package Foo;', with the semicolon instead of a block, is disallowed in Perl 6, according to S10. 17:11
that's another one of those "Perl 5 gotchas" things that will be turned off with a "Perl 6 without the Perl 5 gotchas" pragrma, once someone writes such a module :) 17:12
lue rakudo: package Foo; 17:13
p6eval rakudo 749fe9: ( no output )
masak lue: care to submit that one?
lue submits rakudobug 17:14
parsefail, it should be ?
masak rakudo: package Foo;␤say "alive"
p6eval rakudo 749fe9: OUTPUT«alive␤»
pmichaud why would that be a fail?
masak lue: yes, I suspect so.
std: package Foo;␤say "alive"
p6eval std 30998: OUTPUT«ok 00:01 114m␤»
masak pmichaud: because S10 says so.
pmichaud std: package Foo;
p6eval std 30998: OUTPUT«ok 00:01 111m␤»
moritz_ oooh I *hate* those:
masak STD.pm6 doesn't enforce it, though. probably should.
moritz_ not ok 1 - Correct data structure for «{ "a" : 1 }»
# got: {"a" => 1}
# expected: {"a" => 1}
that's is_deeply output 17:15
masak moritz_: type differences?
moritz_ masak: probably
masak moritz_: I'd count that as an is_deeply bug.
moritz_ masak: it's probably a .perl bug
masak could be.
moritz_ rakudo: say { a=> 1} eqv { a=>2 } 17:16
p6eval rakudo 749fe9: OUTPUT«0␤»
moritz_ rakudo: say { a=> 1} eqv { a=>1 }
p6eval rakudo 749fe9: OUTPUT«1␤»
masak maybe is_deeply should just use eqv nowadays.
moritz_ it does
masak oh! 17:17
someone++
pmichaud++, apparently. :)
moritz_ indeed pmichaud++ 17:18
now I've added $got.WHAT.perl() and $expected.WHAT.perl() output locally to Test.pm is_deeply 17:19
and it says
not ok 1 - Correct data structure for «{ "a" : 1 }»
# got: {"a" => 1} (type: Hash)
# expected: {"a" => 1} (type: Hash)
Wolfman2000 ...
moritz_ not ok 5 - Correct data structure for «[3]»
# got: [3] (type: Array)
# expected: [3] (type: Array)
Wolfman2000 Are there subtypes?
masak moritz_: maybe some number types output the same with .perl?
we have so many number types nowadays... :)
Wolfman2000 ...how many DO we have? 17:20
masak Int, Num, Rat, Complex...
moritz_ masak: interesting idea...
Wolfman2000 4 at least 17:21
lue masak: did you catch wind of the new backtrace?
masak lue: I love it! also, thanks for reminding me.
I promised jnthn++ to make a small adjustment.
that'll be the last thing I do today before going home to make $nom. 17:22
moritz_ masak++ # it's indeed Num() vs. Int()
masak \o/
17:22 M_o_C joined
Wolfman2000 rakudo: 3.perl() 17:22
p6eval rakudo 749fe9: ( no output )
Wolfman2000 err
rakudo: say 3.perl
moritz_ rakudo: say 3e0.perl
p6eval rakudo 749fe9: OUTPUT«3␤»
masak moritz_: it would all be solved if 1 was always an Int().
17:23 kda left
masak I'd very much prefer that. 17:23
moritz_ masak: that would be the first half of the solution
lue I'm also making [not core of course] Quaternions :)
masak lue++ 17:24
lue: put them on github!
17:25 araujo joined
lue when it's done. Should I put it in the pugs examples? 17:25
Su-Shee why does noone ever write "I'm also making Net::SSL.."? ;)
moritz_ Su-Shee: because encryption is hard, especially without bigints
masak lue: you'd get better visibility if you put them on github. 17:26
lue then in my own personal spot on github?
plobsing Su-Shee: they would. but you haven't handshaked with them yet.
lue rakudo: my $a = 0xFFFFFFFF; say $a.WHAT
p6eval rakudo 749fe9: OUTPUT«Int()␤»
Su-Shee moritz_: I'm being ironic in the face of having to look up what quaternions are. ;)
moritz_ lue: you can also put them in perl6-examples on github
masak lue: yes. and proto will point to the project so that people can install it. 17:27
lue ponders CPAN6
moritz_ have fun pondering :-)
lue rakudo: my $a = 3+4i; say $a.Complex 17:28
p6eval rakudo 749fe9: OUTPUT«3 + 4i␤»
masak it's too early for CPAN6. and too late for proto. :P
Su-Shee too early? why? 17:29
Wolfman2000 Then what time is it?
lue Now why is the Complex class Cool?
masak Wolfman2000: zeppelin time.
dalek kudo: fe19e82 | masak++ | src/Perl6/BacktracePrinter.pm:
[BacktracePrinter.pm] indented backtrace a bit

error message will be easier to spot.
lue [no puns]
masak lue: because most value classes in Perl 6 are.
lue will go look up what Cool is [no puns! :)] 17:30
Su-Shee mberends: the idea of 10-mysql.t is that I search for the p5 version of a test I should then add in 6-ish?
masak Su-Shee: I think it's too early because I've only seen blue-sky speculations for it, and no real need.
considering that we have ~40 projects, it's still on a manageable level without a CPAN-alike.
Su-Shee masak: on the other hand we suffer scattered-ness badly. it's really difficult to keep an eye on everything going on. 17:31
masak also, the best proposal for a CPAN6 that I've hear so far, is CPAN.
*heard
lue
.oO(cpan6.cpan.org)
If that happened, then CPAN and CPAN6 should try to _not_ mix with each other, for the sake of organization. 17:32
masak Su-Shee: it is scattered. it sort of reflects the scatteredness of Perl 6 culture. some sub-efforts fizzle out and stop moving, others evolve and mutate. the result is a lot of bones and fossils littering the whole place.
lue
.oO(Perl 6 is constantly evolving DNA)
17:33
masak lue: last i heard, the PAUSE people were discussing creating a separate sub-directory for Perl 6 modules.
Su-Shee masak: "oh really?" I've never realized in 10 years.. :) it's annoying and makes us difficult to find.
masak Su-Shee: yes. 17:34
Su-Shee: perl6.org and proto.perl6.org probably help some.
other ideas for *.perl6.org could probably help even more.
also, more people need to do like moritz_++, and disseminate the perl6.org link in footers on perlmonks and similar sites :) 17:35
Su-Shee I personally prefer one site for "that's the site", one for "the source and download", one for "community" and one for "cpan".
masak heads home to create nom 17:36
Su-Shee cpan/gems/modules/foobars.. we could call perl 6 modules "puns" from now on. ;)
17:36 masak left
lue there's an idea. perl6.org is the center of all Perl6! cpan.perl6.org! (or, for minimal confusion, cpan6.perl6.org) 17:36
moritz_ rakudo: say (^5).perl 17:39
p6eval rakudo 749fe9: OUTPUT«0..^5␤»
mberends Su-Shee: yes. All the P5 tests are already in 10-mysql.t and translation is complete to about line 530 out of 3100. The tests below that should be in test script name order but you can see how the contents are inaccurate.
17:39 tedv| left
moritz_ rakudo: say (^5).max.WHAT 17:40
p6eval rakudo 749fe9: OUTPUT«Num()␤»
moritz_ why?
why not Int?
rakudo: say (+5).perl
p6eval rakudo 749fe9: OUTPUT«5␤»
moritz_ rakudo: say (+5).WHAT
p6eval rakudo 749fe9: OUTPUT«Num()␤»
Su-Shee mberends: I'll look for my rows. ;) 17:41
moritz_ rakudo: say (5.Numeric).WHAT
p6eval rakudo 749fe9: OUTPUT«Int()␤»
mberends Su-Shee: it's ok if we leave testing of .rows() until translation arrives at that part in the normal sequence.
moritz_ rakudo: 5 ~~ Mu 17:42
p6eval rakudo 749fe9: ( no output )
moritz_ rakudo: say 5 ~~ Mu
p6eval rakudo 749fe9: OUTPUT«1␤»
moritz_ colomon: do you understand why (+5).WHAT gives Num, not Int?
mberends Su-Shee: test translation stopped at line 466 (P5) to 529 (P6) because SQL_INTEGER() was NYI. 17:43
Su-Shee: actually that may be easy to implement as "our sub SQL_INTEGER { 4 }" in FakeDBI.pm6 about line 38 17:44
17:45 BrowserUk joined
Su-Shee mberends: that's all?! :) 17:45
moritz_ why does that remind me of sub rand { 4; # determined by fair dice roll } ? :-)
mberends dunno, maybe ;
that's how P5 did it 17:46
Su-Shee ok, I leave it without test for now. 17:47
lue moritz_: I loved that comic
17:55 envi^home left
Su-Shee mberends: pushed. 17:56
mberends :-) pulled 17:59
Su-Shee
.oO(I can't really write /me pushed as a women somehow.. ;)
18:00
moritz_ women can push too. That much is sure :-) 18:01
mberends sounds like giving birth
Su-Shee exactly. just feels.. wrong. :)
lue as a parameter, was does it mean when you see $x: ? 18:03
moritz_ invocant marker 18:04
18:05 Trashlord left 18:07 Trashlord joined
lue rakudo: say roots(27, 3) 18:08
p6eval rakudo 749fe9: OUTPUT«3 + 0i-1.5 + 2.59807621135332i-1.5 + -2.59807621135332i␤»
lue not what I thought would happen....
18:09 ejs joined 18:14 ejs left 18:15 ejs joined
pmurias moritz_: have you seen todays xkcd? 18:18
18:19 Ross^ left
pugssvn r30999 | pmurias++ | [mildew] fix some bitrot cause by STD changes 18:21
lue what's it about?
pmurias lue: it? 18:22
18:22 saaki joined
lue XKCD. I think it's still Friday's, but I forgot it :) 18:24
rakudo: my $a = 2+4i; my $b = $a ** 2; say $b
p6eval rakudo 749fe9: OUTPUT«-12 + 16i␤»
pmurias °
lue how did that happen? ō.o 18:25
moritz_ pmurias: yes :-) 18:29
18:31 BrowserUk left
moritz_ github.com/moritz/json/commit/508ff...297630e78b what an ugly workaround :/ 18:32
sorear jnthn: backtrackes in the REPL would be awesome. Doubly so if you made them stop at (the bottommost occurrence of) HLL::Compiler::eval. 18:34
18:38 am0c joined
lue can someone tell me why this is defined how it is in Complex? : 18:40
sub exp() {Complex.new($.re.Num.exp * $.im.Num.cos, $.re.Num.exp * $.im.Num.sin);}
s/sub/multi method/
mainly, why does trigonometry get into this? 18:41
moritz_ exp( i x) = cos(x) + i sin(x)
18:41 am0c__ joined
mberends jnthn: while you're adding backtraces to the REPL, could you please add time travel as well? KTHXBAI 18:43
lue Why'd you want it to time travel? That's a debugger's job :)
mberends moritz_: 749fe91 exactly reverses the 50% slowdown reported earlier 18:46
lue I'm assuming that exp() method uses e as the default base? 18:52
18:55 Patterner left
sorear pmichaud: The match trees generated by STD.pm6 contain a _reduced field with the name of the rule used to generate each match 18:58
19:01 plobsing left 19:02 ejs1 joined, Trashlord left 19:03 M_o_C left, ejs left
sorear phenny: tell masak : there is no 'package' statement in Perl 6. "package Foo;" is interpreted as meaning "use v5; package Foo;" to allow pure-Perl-5 modules to be used unaltered. STD implements this (partially) 19:03
phenny sorear: I'll pass that on when masak is around.
19:05 ingy left 19:06 ingy joined 19:08 Trashlord joined 19:13 Ross joined, Ross left, Ross joined 19:21 ejs1 left 19:30 kensanata joined
moritz_ would prefer less suprising magic 19:33
19:36 am0c__ left, am0c left
pugssvn r31000 | moritz++ | [t/spec] test that both parse time and run time error message contain line numbers 19:37
pmichaud sorear: (_reduced field) Oh, I didn't know that was there. I'd be glad to see it make it into a spec -- perhaps something like $/.reduced 19:38
lue rakudo: say 3(4) 19:39
p6eval rakudo fe19e8: OUTPUT«invoke() not implemented in class 'Integer'␤ in main program body at line 11:/tmp/lQmqsWONW7␤»
lue rakudo: say 3*(1,2,3,4) 19:40
p6eval rakudo fe19e8: OUTPUT«12␤»
lue rakudo: say 3«*»(1,2,3,4)
p6eval rakudo fe19e8: OUTPUT«36912␤»
moritz_ down to 4 tickets that need tests (and could otherwise be closed) 19:41
lue \o/ 19:43
dalek kudo: dd0e5dd | moritz++ | t/spectest.data:
run test file for line numbers in error messages
19:44
19:47 masonkramer left
lue afk 19:56
20:06 molaf joined 20:10 finanalyst left, aindilis left
pugssvn r31001 | moritz++ | [t/spec] test for RT #72840 and RT #69170 20:16
20:16 colomon left
moritz_ en.wikipedia.org/wiki/Swampland_(physics) very nice article :-) 20:16
20:19 Psyche^ joined, Psyche^ is now known as Patterner
jnthn back from church&pub 20:25
moritz_ rakudo: my Rat $a; $a += 0.1 for ^10
p6eval rakudo fe19e8: ( no output )
moritz_ rakudo: my Rat $a; $a += 0.1 for ^10; say $a
p6eval rakudo fe19e8: OUTPUT«1␤»
20:26 molaf left 20:27 synth joined
pugssvn r31002 | moritz++ | [t/spec] test for RT #74626 20:27
r31003 | moritz++ | [t/spec] test for RT #74344, call slurpy params by name 20:31
moritz_ rakudo: my @a = 1,2,3; my (@c) = @a; say @c.perl 20:32
p6eval rakudo fe19e8: OUTPUT«[[1, 2, 3]]␤»
moritz_ rakudo: my @a = 1,2,3; my (@c) = @a; .say for @c 20:36
p6eval rakudo fe19e8: OUTPUT«123␤»
moritz_ rakudo: my @a = 1,2,3; my (@c) = @a; my $i = 0; $i++ for @c 20:37
p6eval rakudo fe19e8: ( no output )
moritz_ rakudo: my @a = 1,2,3; my (@c) = @a; my $i = 0; $i++ for @c; say $i
p6eval rakudo fe19e8: OUTPUT«1␤»
20:37 kda joined
TimToady looks like the right side isn't flattening 20:38
moritz_ I'm just wondering why the test (with is $i, 3) passes locally here
ah, because I iterate over @a :-) 20:39
TimToady that would do it :)
20:39 atomicstack left
pugssvn r31004 | moritz++ | [t/spec] test for RT #74336 20:40
20:42 plobsing joined
moritz_ rakudo: my Hash $x; $x[1] 20:43
p6eval rakudo fe19e8: OUTPUT«No applicable candidates found to dispatch to for '_block23422'. Available candidates are:␤:()␤␤ in main program body at line 1␤»
moritz_ bkeeler: if you're looking for something to do, rt.perl.org/rt3/Ticket/Display.html?id=73172 might be an interesting task :) 20:44
rakudo: (return *)() 20:45
p6eval rakudo dd0e5d: ( no output )
20:46 Su-Shee left
moritz_ rakudo: say my ::say (say $z) 20:46
p6eval rakudo dd0e5d: OUTPUT«Null PMC access in type()␤ in main program body at line 11:/tmp/AdiMqFq9dp␤»
moritz_ going through RT 20:47
rakudo: my @a=1,2,3; say ( ^@a ).perl 20:49
p6eval rakudo dd0e5d: OUTPUT«0..^3␤»
moritz_ perl6: my @v=2,5; say ( map {; $^b => $^a }, @v ).perl 20:52
p6eval elf 31004: OUTPUT«Undefined subroutine &GLOBAL::map called at (eval 124) line 4.␤ at ./elf_h line 5881␤»
..rakudo dd0e5d: OUTPUT«Lexical '$b' not found␤ in main program body at line 11:/tmp/S2oRKEAoTj␤»
..pugs: OUTPUT«((\5 => \2),)␤»
moritz_ perl6: my @v=2,5; say ( map {1; $^b => $^a }, @v ).perl
p6eval rakudo dd0e5d: OUTPUT«(5 => 2)␤»
..elf 31004: OUTPUT«Undefined subroutine &GLOBAL::map called at (eval 124) line 4.␤ at ./elf_h line 5881␤»
..pugs: OUTPUT«((\5 => \2),)␤»
20:56 colomon joined
moritz_ rakudo: enum X <a b c>; say a ~~ Int; say True ~~ Int # buglet 20:58
p6eval rakudo dd0e5d: OUTPUT«1␤0␤»
pugssvn r31005 | lwall++ | [STD] fix minor inconsistencies
arnsholt Does any of the nqp-rx wizard in here know of a good way to handle something that can be interpreted as both an operator and a term?
sorear Just declare it as both 20:59
moritz_ arnsholt: like, predictive parsing?
sorear see e.g. term:sym<...> and infix:sym<...> in rakudo src/Perl6/Grammar.pm
TimToady for example, term:sym<*> vs infix:sym<*> 21:00
arnsholt Mmm. Good points
sorear or better yet, yeah *
rakudo: say (* * *)(2,2) 21:01
p6eval rakudo dd0e5d: OUTPUT«4␤»
moritz_ or / 21:02
saaki gonna try to grab it and see if you can see them 21:03
mt =o
arnsholt Hmm. Looks like it's just a matter declaring both 21:04
That's encouraging at least 21:05
Then I just have to figure out the best way to implement the other restrictions on such weirdness in Prolog =D 21:06
sorear great. someone changed STD.pm6
TimToady ~. 21:08
sorear ~. ?
someone window-errored /usr/bin/mail and irc? 21:09
moritz_ rakudo: say :(3).perl 21:12
p6eval rakudo dd0e5d: OUTPUT«:(Int where (3))␤»
sorear What exactly happens wen a qr// value is interpolated into a regex? 21:13
moritz_ in Perl 6? 21:14
TimToady std: qr//
p6eval std 31004: OUTPUT«===SORRY!===␤Bogus term at /tmp/Sqgperl5OZ line 1 (EOF):␤------> qr//⏏<EOL>␤Undeclared routine:␤ 'qr' used at line 1␤Parse failed␤FAILED 00:01 115m␤»
moritz_ it's basically inlined, but doesn't capture anything 21:15
TimToady hmm, I thougt that had a better message
pmichaud Perl 6 doesn't have a qr. It's rx.
TimToady but hey, if I change STD.pm6 again, I'll be in trouble :)
pmichaud yeah, don't do that!
arnsholt We're done? =D 21:18
sorear TimToady: better error messages are fine, I'd just appreciate better summaries 21:22
hmm.
I wonder if there's a good way to ask svn "give me the last 10 changesets, with diffs"
wolverian git log -p 21:23
moritz_ right; use a git-svn clone
why do we have both Code and Callable? 21:25
are regexes !~~ Code? 21:26
sorear moritz_: the qr question was relative to Perl 5
21:27 Patterner left
sorear in the context of Cursor.pmc 21:27
jnthn moritz_: I'd figure regexes are ~~ Routine
sorear regexes are actually methods according to S05 21:29
21:29 Guest67735 left, Limbic_Region left
pugssvn r31006 | moritz++ | [t/spec] fudge whatever.t for Rakudo 21:30
moritz_ so, why both Callable and Code?
TimToady why both Associative and Hash? 21:31
jnthn moritz_: Code, from where I am, serves little purpose.
moritz_ TimToady: because 'my %h' needs a default type. That's Hash. 21:32
jnthn TimToady: Yes, but we actualy never create anything of type Code
21:32 Psyche^ joined, Psyche^ is now known as Patterner
moritz_ TimToady: my &c; doesn't have such a default 21:32
jnthn TimToady: Block inherits from Code, Routine inherits from Block and a bunch of stuff inherits from Routine.
TimToady: So all the stuff we currently have in Code could go in Block.
And Callable is left for "could I invoke this" 21:33
I guess the question is if we expect people create create callable things that should have some implementation commonalities with blocks but not be blocks.
*to create 21:34
TimToady are Thunks callable
jnthn I'd hope so. :-)
TimToady thunks are not blocks
not in the lexical sense
they are parasites on someone else's lexical scope
jnthn What would a Thunk and a Block share? 21:35
cognominal paste.lisp.org/display/110983 # how come the perl6 channel is no more supported?
jnthn That is, what would you expect to be in Code?
moritz_ are thunks user-exposed?
cognominal the pasted patch removes need_ext fossils in pmcs
TimToady they share the fact that they're callable, but that's a role 21:36
but a thunk is presumably an object
21:36 PacoLinux left
cognominal could a kind soul apply the patch? 21:37
21:43 Ross left
mathw rakudo: say ("[[]]" ~~ /'['+ ']'+/) 21:46
p6eval rakudo dd0e5d: OUTPUT«[[]]␤»
21:49 mariano left
mathw argh 21:50
I accidentally added a file with git add
how do I take it back out before I commit?
cognominal git rm? 21:51
mathw and why do no simple git guides tell you useful things like how to fix mistakes
arnsholt mathw: It is my thesis that git is not intended for humans to use =) 21:52
Exactly how this fits in with git being quite nice on the whole, I don't know 21:53
mathw it's just... not quite done
arnsholt It's also documented and implemented from the inside out
mathw the only thing the user manual lists is git rm
which removes it from the filesystem! 21:54
I just don't want it in my commit
Eevee git reset HEAD file
plobsing IIRC, git status tells you how to remove it from staging
mathw oh yes 21:55
aaaaaaaaaaaaargh
must be time for bed
21:57 dju_ left
mathw phenny: tell masak I pushed some changes to Form which make it build on my system, but the tests fail. The first failure is in the parsing tests with some fields not parsing, so maybe Form::Grammar is now out of date. 21:58
phenny mathw: I'll pass that on when masak is around.
mathw &
cognominal good night 22:01
22:21 mariano joined 22:28 mariano left 22:29 mariano joined 22:31 bluescreen joined, mariano left, bluescreen left, bluescreen joined 22:32 bluescreen is now known as Guest86832 22:38 pmurias left 22:43 kel_ left 22:47 kensanata left 22:48 hercynium joined
pugssvn r31007 | sorear++ | [viv] Improve tracking of cut status, especially through quantifiers 22:52
23:01 Spreadsheet_ joined
Spreadsheet_ Has anyone been working on an interactive Perl 6 REPL? 23:01
wolverian rakudo has one. 23:02
it's actually what is run when you run just "perl6"
what would a non-interactive REPL be like, by the way? 23:03
m6locks i sure hope it allows redefining stuff
it was a pain in the ass a while ago
when not allowing redefinitions
wolverian it doesn't seem to save state across lines... I guess that's a bit WIP then :) 23:04
m6locks i does
well, at least it did a while ago
wolverian it doesn't see my sub definition, but does see a class definition.
m6locks not sure if they have disabled it
well then it might be a bug and worth submitting
masak usually handles this type of stuff.... 23:05
sorear TimToady: What's going on at STD.pm6 line 1107? :r inside a token 23:15
23:29 snarkyboojum joined 23:37 tedv| joined
sorear TimToady: How do I read cursor_xact log lines? 23:38
23:46 hercynium left 23:48 cognominal left