Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-10-30

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:05 dalek book: ae1080b | duff++ | wip/ (3 files):
00:05 dalek book: Add a simple hangman game
00:05 dalek book: review: http://github.com/perl6/book/commit/ae​1080be1951488e6b7e6a7bcafb225dd2bf2fa6
00:07 justatheory joined #perl6
00:10 TimToady pmichaud: empty range, probably rating a warning
00:10 TimToady .. never autoreverses
00:10 TimToady (though ... does)
00:10 TimToady bbl &
00:12 s1n left #perl6
00:21 Exodist joined #perl6
00:24 cognominal rakudo: token { <a-b> }
00:24 p6eval rakudo 432047: OUTPUT«Confused at line 2, near "a-b> }"␤in Main (file <unknown>, line <unknown>)␤»
00:25 cognominal rakudo: token { <ab> }
00:25 p6eval rakudo 432047:  ( no output )
00:25 cognominal pmichaud,  is there a reason for rulenames not including dashes unlinke other identifiers?
00:26 cognominal *unlike
00:27 jnthn std: token { <a-b> }
00:27 p6eval std 28954: OUTPUT«ok 00:02 104m␤»
00:28 jnthn cognominal: I think Rakudo is just lagging.
00:28 jnthn nqp: token { <a-b> }
00:28 p6eval nqp: OUTPUT«Confused at line 1, near "token { <a"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
00:28 jnthn pmichaud: ^^ bug, or NQP won't have that definition of identifiers?
00:31 cognominal rakudo: token a-b { ... }
00:31 p6eval rakudo 432047:  ( no output )
00:31 cognominal nqp: token a-b { ... }
00:31 p6eval nqp: OUTPUT«Confused at line 1, near "token a-b "␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
00:33 orafu joined #perl6
00:33 carlin moritz_: for now, quuxx follows yours, masak's and jnthn's blog (and doesn't know (or see, for that matter) any commands).
00:34 quuxx joined #perl6
00:34 jnthn heh, at least nqp is consistently confused :-)
00:35 cognominal indeed
00:37 jnthn carlin++ : Is it written in Perl 6?
00:40 xenoterracide joined #perl6
00:48 quietfanatic rakudo: sub x (:@args) { say @args.perl }; x :args(3, 4)
00:48 p6eval rakudo 432047: OUTPUT«Nominal type check failed for parameter '@args'; expected Positional but got Int instead␤in Main (file src/gen_setting.pm, line 324)␤»
00:48 quietfanatic rakudo: sub x (:@args) { say @args.perl }; x :args((3, 4))
00:49 p6eval rakudo 432047: OUTPUT«[3, 4]␤»
00:49 quietfanatic This isn't supposed to work that way is it?
00:50 jnthn quietfanatic: That looks a tad dubious...
00:50 quietfanatic a comma is an operator that produces a list.  The parens shouldn't be what does it...
00:50 jnthn Aye.
00:50 jnthn Looks like a fail.
00:50 quietfanatic s/does/do/ ?
01:01 SmokeMachine joined #perl6
01:03 s1n joined #perl6
01:03 s1n pmichaud: we still doing the hackathon on sat.?
01:03 diakopter std: macro term:<.> { '$_' }; .,.,.,.
01:03 p6eval std 28954: OUTPUT«ok 00:03 120m␤»
01:06 nnunley joined #perl6
01:14 carlin jnthn: Yes
01:14 carlin .oO( IF you could call that mess perl 6 ... )
01:14 jnthn carlin: Wow!!
01:15 jnthn carlin: I'm impressed. :-)
01:15 carlin jnthn: You won't be if you see the code
01:16 carlin It's very "proof of concepty"
01:17 brunov joined #perl6
01:18 jnthn It seems to be proving the concept. :-)
01:25 diakopter quuxx: quuxx
01:26 carlin It can't see :-) It only gets the first 512 bytes after it connects and then its blind
01:26 jnthn quuux: quuux me # ;-)
01:26 diakopter std: :
01:26 p6eval std 28954: OUTPUT«[31m===[0mSORRY![31m===[0m␤Illegal use of colon as invocant marker at /tmp/8UnFXf5Yf0 line 1:␤------> [32m:[33m⏏[31m<EOL>[0m␤FAILED 00:02 102m␤»
01:26 carlin Couldn't figure out how to make it poll RSS feeds and keep up with the channel without blocking
01:26 carlin Needs threads ;-)
01:27 jnthn nah, just non-blocking IO. :-)
01:27 carlin Or that
01:27 jnthn I think Tene++ was working on select support.
01:27 diakopter dalek does it without threads, iirc
01:27 carlin I do have an idea for the rewrite this weekend
01:28 eternaleye joined #perl6
01:32 diakopter std: ::
01:32 p6eval std 28954: OUTPUT«ok 00:01 102m␤»
01:32 diakopter std: :: ::
01:32 p6eval std 28954: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/yrI6Vj40ha line 1:␤------> [32m:: [33m⏏[31m::[0m␤    expecting any of:␤  bracketed infix␤  infix stopper␤    standard stopper␤ statement modifier loop␤  terminator␤FAILED 00:01 104m␤»
01:32 diakopter std: ::::
01:32 p6eval std 28954: OUTPUT«ok 00:01 102m␤»
01:32 diakopter O_O
01:33 jnthn ...wow.
01:33 jnthn How do you find these? :-)
01:33 diakopter just call me (and masak) the human fuzzer.
01:34 diakopter std: ::::::::::::::::::::::::::::::::::::::::::::::::​::::::::::::::::::::::::::::::::::::::::::::::::
01:34 p6eval std 28954: OUTPUT«ok 00:01 102m␤»
01:34 jnthn std: :::
01:34 p6eval std 28954: OUTPUT«[31m===[0mSORRY![31m===[0m␤Illegal use of colon as invocant marker at /tmp/Mczyqi0aHt line 1:␤------> [32m:::[33m⏏[31m<EOL>[0m␤    expecting signature␤FAILED 00:01 102m␤»
01:34 jnthn Has to be even. ;-)
01:34 diakopter yah
01:35 carlin http://github.com/carlins/rssbot # for anyone who is morbidly curious
01:35 * jnthn doesn't feel like dying, but looks anyway.
01:39 diakopter rakudo: say (\{1}.WHAT.new)(); # jnthn pmichaud  here's a fun one
01:40 p6eval rakudo 432047: OUTPUT«src/call/context.c:653: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_PMC) > idx'␤Backtrace - Obtained 14 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.1.7.0 [0x2b490fbe6873]␤/home/p6eval//p1/lib/l​ibparrot.so.1.7.0(Parrot_confess+0x87)
01:40 p6eval ..[0x2…
01:40 diakopter jnthn: your bedtime???
01:41 jnthn diakopter: oooh...that's a good point akshually.
01:41 diakopter see the error above to give you nice dreams tonight
01:41 jnthn OH NOES
01:42 jnthn Now I'll have a nightmare involving assertion failures!
01:42 diakopter :)
01:45 diakopter rakudo: (Block.new)()
01:45 p6eval rakudo 432047: OUTPUT«src/call/context.c:653: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_PMC) > idx'␤Backtrace - Obtained 14 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.1.7.0 [0x2b95de246873]␤/home/p6eval//p1/lib/l​ibparrot.so.1.7.0(Parrot_confess+0x87)
01:45 p6eval ..[0x2…
01:46 diakopter nqp: (Block.new)()
01:46 p6eval nqp: OUTPUT«Confused at line 1, near "(Block.new"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
01:46 jnthn rakudo: (Whatever.new)()
01:46 p6eval rakudo 432047:  ( no output )
01:46 jnthn meh
01:51 Juerd joined #perl6
01:53 diakopter rakudo: &say&say &say&say &say
01:53 p6eval rakudo 432047: OUTPUT«say␤all({ ... }, Bool::True)␤»
01:54 diakopter rakudo: say 6&=&say
01:54 p6eval rakudo 432047: OUTPUT«No applicable methods.␤in Main (file <unknown>, line <unknown>)␤»
01:55 jnthn wtf?!
01:55 jnthn Ah well
01:55 diakopter for another day :D
01:55 jnthn garbage in, garbage out
01:55 jnthn You deserve what you got. :-P
01:55 diakopter :)
01:55 jnthn OK, sleep
01:55 jnthn night!
01:56 diakopter rakudo: liminal
01:56 p6eval rakudo 432047: OUTPUT«Could not find non-existent sub liminal␤in Main (file src/gen_setting.pm, line 324)␤»
01:56 * TimToady 's kick finger starts itching again
01:57 diakopter you know what they say about itchy fingers
01:57 am0c jnthn: good night
02:00 diakopter rakudo: mission
02:00 p6eval rakudo 432047: OUTPUT«Could not find non-existent sub mission␤in Main (file src/gen_setting.pm, line 324)␤»
02:05 nnunley joined #perl6
02:37 nnunley joined #perl6
02:39 perl6lover joined #perl6
02:43 dalek book: 3e737d1 | duff++ | wip/rpm.p6:
02:43 dalek book: [wip] Added rpn calculator
02:43 dalek book: review: http://github.com/perl6/book/commit/3e​737d148bf534b8c9a3af0d1ab5518ba7b82dad
03:01 ShaneC joined #perl6
03:07 xp_prg joined #perl6
03:09 justatheory joined #perl6
03:20 Schwern joined #perl6
03:21 justatheory_ joined #perl6
03:32 rafl_ joined #perl6
03:33 d4l3k_ joined #perl6
03:36 constant joined #perl6
03:36 daemon joined #perl6
03:36 jantore joined #perl6
04:04 jaldhar joined #perl6
04:09 huf joined #perl6
04:22 dalek nqp-rx: 4119f01 | pmichaud++ | src/NQP/ (2 files):
04:22 dalek nqp-rx: [nqp]:  Refactor handling of lexicals and packages.
04:22 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​119f01306f55c67315a123c864ca424180f27ed
04:53 yath_ joined #perl6
04:53 Aisling_ joined #perl6
04:54 avar joined #perl6
04:54 xinming joined #perl6
05:00 astrojp left #perl6
05:07 quietfanatic joined #perl6
05:10 Tene jnthn, carlin: Yes, I'm working on Select support, theoretically.  I'm pretty busy this week, but should be free to work on it much more next week.  I plan to have select() working from Perl 6 next week.
05:11 Eevee joined #perl6
05:21 carlin Tene++ # \o/
05:25 Tene carlin: please feel free to harass me for status updates.
05:26 dalek nqp-rx: 0fdf10b | pmichaud++ | src/NQP/ (2 files):
05:26 dalek nqp-rx: [nqp]:  Initial implementation of 'has' scope declarator.
05:26 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/0​fdf10bf88966442a61476c4221610bd892aca14
05:30 envi^office joined #perl6
05:56 constant joined #perl6
05:56 daemon joined #perl6
05:56 jantore joined #perl6
06:06 am0c joined #perl6
06:08 quuxx joined #perl6
06:08 carlin Bah, segfaulted :/
06:12 quietfanatic Oh yeah, speaking of which, I got a segfault when I tried to do this:
06:12 quietfanatic rakudo: multi infix:<~~> (Any $a, Pair $b) {$a ~~ $b.key}; say "a" ~~ :a
06:12 p6eval rakudo 432047:  ( no output )
06:14 quietfanatic Any overloading of infix:<~~> seems to do this.
06:15 dalek book: f8734db | duff++ | src/regexes.pod:
06:15 dalek book: [RX] Grammar/typo fixes and attempts to make text clearer
06:15 dalek book: review: http://github.com/perl6/book/commit/f8​734dbbcd1c3e7e71ae72b4ed8b40253661662d
06:16 desertm4x joined #perl6
06:21 [particle] joined #perl6
06:31 patspam joined #perl6
06:37 TiMBuS joined #perl6
06:39 Juerd joined #perl6
06:40 c1sung joined #perl6
06:40 avar joined #perl6
06:40 moritz_ joined #perl6
06:40 obra_ joined #perl6
06:41 jantore joined #perl6
06:41 SmokeMachine joined #perl6
06:43 ilogger2 joined #perl6
06:43 PacoLinux joined #perl6
06:43 gbacon joined #perl6
06:44 daemon joined #perl6
06:45 IRSeekBot joined #perl6
06:46 Trey joined #perl6
06:46 xinming joined #perl6
06:51 constant joined #perl6
06:55 justatheory joined #perl6
07:19 desertm4x_ joined #perl6
07:26 agentzh joined #perl6
07:27 Bzek joined #perl6
07:36 ssm joined #perl6
07:36 quuxx joined #perl6
07:46 iblechbot joined #perl6
07:58 mariuz joined #perl6
08:00 ssm joined #perl6
08:01 xabbu42 joined #perl6
08:14 literal joined #perl6
08:39 ihrd joined #perl6
08:42 ihrd left #perl6
08:43 xenoterracide joined #perl6
08:57 zamolxes joined #perl6
09:05 Su-Shee joined #perl6
09:11 zamolxes mewonders if Perl6 is a good way to express gameplay logic :) like http://en.wikipedia.org/wiki​/Game_Oriented_Assembly_Lisp
09:25 lambdabot joined #perl6
09:35 riffraff joined #perl6
09:35 charsbar joined #perl6
09:50 eternaleye joined #perl6
09:50 am0c joined #perl6
09:59 ShaneC joined #perl6
10:00 Su-Shee joined #perl6
10:18 charsbar joined #perl6
10:23 mathw Good morning
10:45 diakopter hi
10:47 pmurias joined #perl6
10:48 pmurias diakopter: hi
10:48 diakopter pmurias: yo
10:52 diakopter pmurias: uni uses lots of your time?
10:59 masak joined #perl6
10:59 masak hola, #perl6
10:59 colomon \o
11:02 jnthn oh morning
11:02 jnthn oh noes...masak beat me here by all of 3 mins!
11:02 * masak laughs meanly
11:03 masak and I didn't even try very hard. :)
11:03 jnthn Ooh, not much backlogging to do today.
11:03 masak for once.
11:04 jnthn Makes a change, yeah.
11:04 jnthn I guess ETOOEARLY for pmichaud++
11:04 * jnthn is has a Rakudo day
11:05 masak \o/
11:08 colomon woah, pmichaud didn't post anything last night.  no wonder the channel seemed so quiet....
11:09 colomon s/post/commit/
11:12 jnthn Today we start moving Rakudo onto nqp-rx :-)
11:13 colomon \o/
11:13 colomon I hope pmichaud got a good night's sleep, then!
11:18 pnu joined #perl6
11:23 xabbu42 joined #perl6
11:23 pmurias joined #perl6
11:33 Chillance joined #perl6
11:38 pmurias diakopter: not that much, it's more a distraction
11:39 moritz_ I'm curious if I recognize rakudo after being offline for the weekend
11:41 jnthn We'll do our best to make it unrecognizably beautiful compared to before. :-)
11:42 moritz_ please also make it unrecognizably fast :-)
11:43 dalek rakudo: d154eb9 | jonathan++ |  (2 files):
11:43 dalek rakudo: Add an s1_setting.pir file, where we can put things that we'd like to be in the stage 1 compiler, but not in the final Rakudo. For now just has print and say. Should make things a little easier while we rebuild Rakudo on the new grammar engine.
11:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​154eb94cd2c56182f6ba26ace91ee8d2bbe7881
11:44 jnthn (easier mostly because we can actually use print and say in the s1!)
11:48 fax joined #perl6
11:48 mathw jnthn: That could be handy
11:49 jnthn Indeedy.
11:50 * jnthn is installing nqp-rx
11:50 jnthn Figure that'll be useful to have too ;-)
11:53 IllvilJa joined #perl6
11:55 rgrau joined #perl6
12:02 IllvilJa Hello! I have a suggestion for the next fragment to add to the work-in-progress Perl 6 book: How to write modules :-).
12:02 IllvilJa That way we clueless perl 6 wannabies understand how to proceed with infecting CPAN with Perl 6 modules!
12:03 jnthn hmm
12:03 jnthn make test on nqp-rx gives me
12:03 jnthn prove -r --exec .\nqp.exe t\nqp
12:03 jnthn Unknown option: exec
12:03 pnate2 joined #perl6
12:06 takadonet joined #perl6
12:06 takadonet morning all
12:07 jnthn Ah, my test harness was super old
12:07 jnthn Anyway, all pass. \o/
12:08 takadonet gj jnthn!
12:09 moritz_ IllvilJa: I'm afraid we don't really know that yet ourselves :/
12:11 jnthn hi takadonet :-)
12:11 takadonet hey jnthn
12:12 Su-Shee a chapter how to write bindings of lib xy for perl 6 would be very helpfull and probably speed up having nice future modules.
12:12 moritz_ Su-Shee: you're very welcome to contribute that :-)
12:13 jnthn The spec on that is still a tad hazy, no?
12:13 Su-Shee moritz_: prepared a bunch of experiments, wrote down some stuff on notes and then the new job kicked in :/
12:13 Su-Shee work really doesn't help with perl 6. ;)
12:14 moritz_ work--
12:14 moritz_ @karma work
12:14 lambdabot work has a karma of -1
12:17 pnate joined #perl6
12:17 jnthn hugme: add jnthn to nqp-rx
12:17 hugme jnthn: You need to register with freenode first
12:17 jnthn aww.
12:18 moritz_ hugme: add jnthn to nqp-rx
12:18 * hugme hugs jnthn. Welcome to nqp-rx!
12:18 jnthn \o/
12:19 IllvilJa moritz_: Ok
12:21 envi^home joined #perl6
12:22 * jnthn finally gets around to registering his nick with freenode anyway :-)
12:25 dalek nqp-rx: c489620 | jonathan++ | build/Makefile.in:
12:25 dalek nqp-rx: Add an install target to the nqp-rx makefile - just followed the precedent set in the Rakudo Makefile.
12:25 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/c​489620bea734864347ce92d5cc4a4d558ca8abe
12:28 pmurias joined #perl6
12:31 jnthn phenny: tell pmichaud I've created the branch usenqprx in the Rakudo repo to begin The Big Switchover. :-)
12:31 phenny jnthn: I'll pass that on when pmichaud is around.
12:31 pnate2 joined #perl6
12:34 takadonet jnthn: so better get my version of rakudo now before it's broken?
12:34 moritz_ takadonet: the 'master' branch won't break easily
12:34 moritz_ (which is the default)
12:34 takadonet hopefully :)
12:35 masak IllvilJa: helo.
12:35 masak IllvilJa: I kinda like your suggestion about modules.
12:35 takadonet just rebuilding my rakudo now to see if my code from a few weeks ago still work
12:36 masak IllvilJa: but I'm suffering from knowing too much about it myself: what is it that you'd like to know to get started?
12:37 IllvilJa masak: well, I'm tempted to try port Term::ANSI to Perl6.  It's tiny enough to fit into the short attention span I have on Perl 6 projects but still provides rather immediate visual effect on Perl 6 programs.
12:37 Su-Shee masak: "a perl 6 module does not need 1; at the end of the file. that's good news, isn't it? to create a perl 6 module, do foo, bar, baz. add x, y, z and upload here."
12:37 moritz_ that *is* a rather good idea
12:38 pmurias IllvilJa: you mean Term::ANSIColor?
12:38 IllvilJa pmurias: Yes, that's the one.  My misspelling...
12:38 masak IllvilJa: creating a module goes something like this: in order to make 'use X::Y' work, create a file Y.pm in a dir X/, and put X/ where Rakudo will look.
12:38 pmurias that's a very good module
12:39 masak nod. please port that one to Perl 6. :)
12:39 moritz_ and most Perl 6 modules are organized just like perl 5 modules
12:39 moritz_ .pm files in lib/, tests in t/
12:39 moritz_ README in README (ORLY? :-)
12:39 Su-Shee isn't that called IGNOREME now?
12:40 jnthn Only if you don't want it read.
12:40 jnthn If you want people to actually read it, what Su-Shee said.
12:40 jnthn :-)
12:40 IllvilJa Ok.  A good way to do this is to peek at an already existing Perl 6 module ;-).  Any Perl 6 module at CPAN people could recommend as a "good example" of how to write such modules?
12:41 astrojp joined #perl6
12:41 masak no idea. :P
12:41 moritz_ there's no CPAN for Perl 6 (yet)
12:42 moritz_ http://github.com/moritz/json is a module that works :-)
12:42 IllvilJa Ah, thanks!
12:42 pmurias jnthn: IGNOREME looks like an autogenerated file that needs rm'ing ;)
12:42 moritz_ just like the files you create so that stupid content trackers don't ignore empty directories
12:42 jnthn pmurias: That's *still* more attention than the typical README gets. ;-)
12:43 pnate2 joined #perl6
12:45 IllvilJa README's are usually read once you get lost.  E.g when a build fails, or when there (for some reason) is no Makefile.PL around or when the good old ./configure is missing in some OOS package out there when you try to build.
12:45 pmurias OOS = ?
12:45 IllvilJa Classical example: when building the Perl language itself, you don't have any ./configure and immediately you look for a README.
12:46 IllvilJa pmurias: it's me having too little coffee... It should be OSS, Open Source Software.
12:46 Su-Shee I actually read READMEs and I exspect to find a detailed explanation in there how to install X and NOT a url like "to see how to install x, click here"
12:46 IllvilJa But when everything is setup "as usual", README's are very low priority.
12:46 pmichaud good morning, #perl6
12:46 phenny pmichaud: 12:31Z <jnthn> tell pmichaud I've created the branch usenqprx in the Rakudo repo to begin The Big Switchover. :-)
12:48 jnthn morning, pmichaud
12:48 pmichaud I would've probably picked a shorter branch name.  :)
12:48 jnthn "foo"? ;-)
12:49 jnthn Or just "x" :-)
12:49 jnthn Heh, we can rename. :-)
12:49 pmichaud probably "rx"
12:49 masak morning, pmichaud
12:49 masak 'the-branch' :)
12:49 pmichaud last night and this morning I've been wondering about how we want to make nqp-rx available for rakudo building
12:50 jnthn pmichaud: heh. So I thought "ah, I'll write an install target into the nqp-rx Makefile.in" :-)
12:50 huf joined #perl6
12:50 pmichaud right
12:50 pmichaud but I'm not sure that's the best approach
12:50 jnthn pmichaud: I then realized that, erm...the naive approach blows away the original nqp.pbc ;-)
12:51 pmichaud well, we can call it nqprx when it's in the parrot repo
12:51 jnthn True.
12:51 diakopter README_ITS_SHORT_I_SWEAR
12:51 pmichaud but stepping back from that a bit further, I wonder if we want to be rebuilding the nqprx code at all
12:51 pmichaud and I also think the same for Rakudo
12:51 pmichaud (bear with me a bit -- this takes a bit of explaining)
12:52 pmichaud currently when someone gets a copy of the rakudo repo, we compile the sources to produce the .pir files to produce the rakudo executables
12:52 pmichaud ...why not just have the .pir already generated in the repo, and compile that?
12:52 pmichaud for developers we'll still have a make target that regenerates the .pir, but for someone who just wants to download and play with rakudo, we could have .pir already generated
12:53 jnthn True, it'd make the build a bit faster.
12:53 jnthn OTOH, every time we check something in, the diff is full of generated crap.
12:54 pmichaud oh, that's true.
12:54 lichtkind joined #perl6
12:55 jnthn Yeah, that irked me a little reading some of the nqp-rx diffs.
12:55 masak me too.
12:55 pmichaud well, I've tried to keep the generated checkins separate from the others
12:55 jnthn The bulk of it was - sub_name_with_old_timestamp, + sub_name_with_new_timestamp
12:55 jnthn pmichaud: Yes, but we'd ahve to do it every check-in here.
12:55 jnthn Or near enough.
12:55 masak I filtered out the generated files when viewing the diffs.
12:55 pmichaud agreed
12:56 pmichaud so, let's not do that
12:56 pmichaud we might do that for releases
12:56 jnthn Yes, I was about to say that.
12:56 pmichaud so, we need to update rakudo's build system to be able to download + install nqp-rx
12:56 jnthn Keep the repo optimized for development, and the releases optimized for end users.
12:56 jnthn pmichaud: --gen-nqprx ? :-)
12:57 pmichaud I'm thinking we might also need a NQPRX_REVISION
12:57 jnthn oh gee.
12:57 jnthn But yes, probably.
12:57 jnthn The other fun is that nqp-rx and Rakudo may have different ideas on required Parrot version.
12:57 pmichaud Rakudo will have to keep track.
12:58 jnthn True.
12:58 jnthn Well, hopefully nqp-rx won't change too often.
12:58 masak lolmoritzblogged!
12:58 pmichaud essentially Rakudo will have to make sure its PARROT_REVISION is always >= the one needed by nqprx
12:58 jnthn Yes.
12:58 pmichaud but after we get past this conversion I suspect nqp-rx won't change significantly
12:59 pmichaud I'd prefer not to have separate --gen-nqprx and --gen-parrot targets
12:59 pmichaud feels like it ought to be   --gen-dependencies
12:59 pmichaud (but a better name)
12:59 jnthn --gen-reqs
12:59 jnthn --dwim
13:00 pmichaud --gen-prereqs, maybe
13:00 pmichaud we could just use --gen-parrot as a surrogate, but it does both.
13:00 jnthn True
13:00 jnthn That way people don't have to get used to a change.
13:01 jnthn Let's do that for now.
13:01 jnthn People don't like change. :-)
13:01 jnthn And nobody will read the docs to find out the new way even if we bother to update them. ;-)
13:03 pmichaud okay, so I'm guessing we update the build/gen_parrot.pl script
13:03 * pmichaud goes to look at the install target
13:04 jnthn pmichaud: It's wrong. ;-)
13:05 pmichaud yes, it's not copying the other .pbc files :-|
13:05 pmichaud need 4 pbcs
13:05 pmichaud Regex.pbc, P6Regex.pbc, HLL.pbc, and NQP.pbc
13:05 pugs_svn r28955 | pmurias++ | [mildew-js] molds in js/molds are compiled to js
13:05 jnthn oh, all four?
13:05 jnthn sheesh.
13:06 * jnthn adds
13:06 pmichaud Regex.pbc -- the regex library.  It basically is the replacement for PGE.pbc
13:06 jnthn pmichaud: I'd already discovered that.
13:06 jnthn pmichaud: Well, one by one ;-)
13:06 pmichaud HLL.pbc -- the HLL library (HLL grammar and HLL compiler).  It's basically the replacement for PCT::HLLCompiler and PCT::Grammar
13:06 pmichaud P6Regex.pbc -- the p6 regular expression compiler.  It replaces the p6 regex part of PGE.pbc
13:07 jnthn pmichaud: tweaking make install...
13:07 jnthn Going to check it actually, like, works, this time. ;-)
13:08 pmichaud the expectation is that most HLL compilers will use Regex.pbc and HLL.pbc
13:08 pmichaud if the compiler wants to compile its own Perl 6 regular expressions, it also uses P6Regex.pbc
13:08 jnthn Ah, OK.
13:08 jnthn P6Regex has the Perl 6 specific bits?
13:08 pmichaud for compiling p6 regexes, yes.
13:09 jnthn kk
13:09 jnthn So overall, what's our plan?
13:09 pmichaud I don't know yet, I'm working that out now :)
13:09 dalek book: f7088f8 | duff++ | wip/rp (2 files):
13:09 dalek book: [wip] pick a better name for the rpn calculator
13:09 dalek book: review: http://github.com/perl6/book/commit/f7​088f81d79d8d34971d4cf3920a7855332f1d44
13:09 pmichaud need to figure out where to stash thing
13:10 pmichaud *things
13:10 jnthn .oO( git stash )
13:10 pmichaud perhaps we should move to #parrot for a bit
13:10 jnthn Sure, if it's better there.
13:10 pmichaud since this affects parrot more than rakudo at themoment
13:10 jnthn True.
13:10 jnthn ok, let's go there.
13:10 jnthn It's fairly quiet at the moment anyway. :-)
13:16 PerlJam joined #perl6
13:18 dalek nqp-rx: 62d1e7b | jonathan++ | build/Makefile.in:
13:18 dalek nqp-rx: Fix make install up a bit. We avoid blowing away the original nqp.pbc and install nqprx.pbc instead.
13:18 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/6​2d1e7bf9a19550131012dc5534e33003f3f9b70
13:18 masak TimToady: re 'a closure in a [string|regex] establishes its own lexical scope' -- I always thought that fell out automatically from the nature of closures. put another way, in what way could the spec be misinterpreted were those added sentences absent?
13:18 lisppaste3 joined #perl6
13:18 moritz_ masak: pmichaud asked for clarification
13:18 masak then maybe pmichaud can answer, too. :)
13:19 pmichaud in looking at the grammar for STD.pm, it appeared that closures in regexes were not being parsed as normal blocks
13:19 pmichaud instead, they were being parsed as statementlists surrounded by curlies
13:20 masak oh.
13:20 masak that sounds counter-spec-ish.
13:20 pmichaud which could imply that they're "inline" instead of separate closures.
13:20 masak I thought curlies always implied closure (and thus lexical scope)
13:20 pmichaud they do
13:20 pmichaud I was asking for confirmation in this case
13:20 pmichaud because STD.pm could be interpreted otherwise
13:21 masak right.
13:21 maja joined #perl6
13:21 masak so the spec is the same as before, only (possibly) clearer?
13:21 pmichaud yes.
13:21 Juerd Is there a "this regex" scope?
13:21 pmichaud regexes have a scope, yes.  They're just methods.
13:22 moritz_ and inside that (...) and [...] introduce some kind of pseudo-scope, no?
13:22 pmichaud if you're asking if there's a way to embed stuff in the current scope, it can be done using :my
13:22 Juerd I mean: is there a way to get a variable in the first block in /{ ... } { ... }/ that still exists in the second block, but no longer when the match is done?
13:22 Juerd Oh, :my in the regex itself?
13:22 pmichaud Juerd: :my
13:22 pmichaud yes.
13:23 Juerd Wow. I hadn't noticed that change. Neat.
13:23 pmichaud regex xyz { :my $value;   <subrule>  { $value = 3 }  <submatch2>  { say $value } }
13:23 * Juerd still thinks </subrule></submatch2> :(
13:24 Juerd I've had way too much HTML.
13:24 Juerd pmichaud: Clear example; thanks.
13:25 xinming joined #perl6
13:28 [particle] juerd: you can create a </...> op that complains wildly that you're using Perl, not HTML :)
13:28 Juerd Hee :)
13:28 jnthn pmichaud: just nqp.exe now.
13:28 Juerd my @irc-commands = </me /join /part /subject ...>;  # nahh ;)
13:29 dalek nqp-rx: ee72079 | jonathan++ | build/Makefile.in:
13:29 dalek nqp-rx: Install as nqp.exe, not nqprx.exe.
13:29 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​e720794a16cf637c4e493070957af20b04e28cd
13:30 PerlJam one of the things that I find utterly cool but am still having mild difficulty  believing is how you can intermingle grammar/class/role/sub/rule
13:30 pmichaud jnthn: doesn't the nqp.exe need to be rebuilt using the --install flag ?
13:30 jnthn pmichaud: heh, no idea.
13:30 jnthn pmichaud: It seems to work...
13:31 jnthn (from Rakudo source tree)
13:31 pmichaud oh, I guess it's okay
13:31 jnthn oh, maybe because my source tree is still there?
13:31 pmichaud because we're using the install copy of parrot to build nqp
13:31 jnthn Ah
13:31 jnthn OK, cool
13:31 jnthn pmichaud: My first step was trying and compile signature.pm (which I don't expect to change much) under nqp-rx ;-)
13:31 PerlJam role R { rule x { "x" } }; grammar Foo does R { rule TOP { ^ <x> $ } }; say Foo.parse("x") ?? "yes" !! "no";   # is just awesome IMNSHO
13:31 jnthn pmichaud: Sadly, it was a fail. ;-)
13:32 jnthn PerlJam: Just think of a regex/rule/token as being like a sub, just with the contents inside in a different language.
13:32 jnthn well, s/sub/method/ I guess, but still.
13:33 PerlJam jnthn: yeah, I have no problem with understanding it, it's just that my mind sometimes has a hard time believing that something so wonderful can exist  :)
13:33 jnthn :-)
13:33 pmichaud jnthn: my first step was going to be to replace rakudo's base grammar
13:34 pmichaud is the current signature.pm written for nqp?
13:34 jnthn pmichaud: Yes.
13:34 * pmichaud looks
13:34 jnthn pmichaud: And it's fairly small, and we'll need it.
13:34 jnthn pmichaud: It can get neater with with nqp-rx :-)
13:34 jnthn pmichaud: Since we now has $!attrs.
13:34 pmichaud I don't know if those work yet... I only put the preliminary code in last night.
13:34 pmichaud hasn't been fully tested.
13:34 jnthn ah, ok
13:34 jnthn Well, I was working aroudn them anyway.
13:35 jnthn I agree that we should just replace the base grammer too.
13:35 jnthn I was kinda hoping you'd do that. ;-)
13:35 pmichaud I will, as soon as I can get the other preliminaries out of the way.
13:35 jnthn OK, great.
13:35 pmichaud also I have a change to the nqp grammar to make
13:36 jnthn OK.
13:36 jnthn I'll try and work out why signature.pm doesn't compile under the new nqp.
13:37 pmichaud where is it defined?
13:37 jnthn src/parser/signature.pm
13:37 jnthn It's the compile time signature object (Perl6::Compiler::Signature)
13:37 pmichaud we might need tests in nqp for slurpy hashes
13:37 nihiliad joined #perl6
13:38 pmichaud does it compile and fail, or fail to compile ?
13:38 jnthn Fail to compile
13:38 jnthn Unable to parse blockoid, couldn't find final '}' at line 134
13:38 jnthn pmichaud: Leave it to me, I'll hunt the issue down.
13:38 pmichaud oh
13:38 jnthn pmichaud: And let you know what I find.
13:38 pmichaud nqp doesn't implement @(...) yet.
13:38 jnthn Ah
13:39 pmichaud feel free to add it :)
13:39 jnthn That'd do it.
13:39 jnthn OK. :-)
13:39 dalek book: 3939893 | moritz++ | src/regexes.pod:
13:39 dalek book: [RX] s/alternative/branch/ in some of PerlJam++'s awesome changes
13:39 dalek book: review: http://github.com/perl6/book/commit/39​3989377255277b5b9c3adedd825a92677aa026
13:39 pmichaud I even have a test written already
13:39 jnthn I'll do the tests for slurpy hashes too.
13:39 jnthn Feel free to commit the test.
13:39 jnthn @(...) is just calling .list on the ... yes?
13:39 lambdabot Unknown command, try @list
13:39 jnthn lambdabot: jump off a cliffe
13:40 pmichaud yes
13:40 jnthn kk, I'll do it. :-)
13:41 masak rakudo: sub postfix:<%>($x) { $x * 100 }; say 57%
13:41 p6eval rakudo d154eb: OUTPUT«Confused at line 2, near "%"␤in Main (file <unknown>, line <unknown>)␤»
13:41 jnthn aww
13:41 moritz_ masak: don't you want to *divide* by 100? ;-)
13:41 dalek nqp-rx: 646acb7 | pmichaud++ | src/NQP/ (2 files):
13:41 dalek nqp-rx: As promised, the operator precedence table is now defined in the
13:41 dalek nqp-rx: grammar instead of the actions.
13:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/6​46acb7f7b64d163d7dc374206d8020179e570dd
13:41 dalek nqp-rx: 0772654 | pmichaud++ | t/nqp/35-prefix-sigil.t:
13:41 dalek nqp-rx: Add 35-prefix-sigil to test @(...) .
13:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/0​772654b77bbb3d7183040cb36be74ee9b9ded5d
13:41 jnthn std: Unable to parse blockoid, couldn't find final '}' at line 134sub postfix:<%>($x) { $x * 100 }; say 57%
13:41 p6eval std 28955: OUTPUT«[31m===[0mSORRY![31m===[0m␤Confused at /tmp/c70IsVJY6q line 1:␤------> [32mparse blockoid, couldn't find final '}' [33m⏏[31mat line 134sub postfix:<%>($x) { $x * 10[0m␤    expecting any of:␤ bracketed infix␤  infix stopper␤    standard stopper␤ statement modifier loop␤
13:41 p6eval ..terminat…
13:41 masak moritz_: not if I want to print the number.
13:41 jnthn oh wtf
13:41 diakopter heh
13:41 jnthn std: sub postfix:<%>($x) { $x * 100 }; say 57%
13:42 p6eval std 28955: OUTPUT«ok 00:03 123m␤»
13:42 jnthn Meh, looks like we need a new and improved grammar engine.
13:42 masak but who'd have the time to write it?
13:42 masak it's a huge project.
13:43 jnthn masak: We need to send it to somewhere where everything is huge.
13:43 jnthn masak: How about Texas?
13:43 masak jnthn: I like your thinking.
13:43 [particle] <<grammar-engine>>
13:44 pmichaud currently NQP's error messages are very LTA
13:44 pmichaud "Unable to parse blockoid"  generally means "some sort of error inside the block".
13:44 pmichaud we can clean those up as we go, also.
13:46 pmurias diakopter: why did you choose v8 for sprixel?
13:46 pmichaud oooh, signature.pm should be a lot nicer now that we have object attributes :)
13:46 jnthn pmichaud: tell me about it.
13:46 pmichaud and pir::opcode
13:47 jnthn *nod*
13:47 jnthn heh, you've not looked at it before now? ;-)
13:47 pmichaud I've been too busy writing nqp-rx
13:47 jnthn mwahaha
13:47 jnthn My diffs are the unread!
13:47 jnthn ;-)
13:47 pmichaud oh
13:47 pmichaud $var<sigil>  := $sigil;
13:47 pmichaud $var<twigil> := $_<twigil>;
13:47 pmichaud $var<itype>  := Perl6::Grammar::Actions::container_itype($sigil);
13:47 pmichaud $var<type>   := $_<nom_type>;
13:47 pmichaud those are going to have to go away
13:48 jnthn nod
13:48 pmichaud ....which means that getting signature.pm to work at the outset might not be the best approach
13:48 jnthn pmichaud: That's fine.
13:48 jnthn pmichaud: I was more going for, "does it compile under the new nqp and produce something usable?"
13:48 pmichaud okay
13:48 pmichaud that's a useful datapoint, yes
13:48 jnthn e.g. I'd compile just that one file with nqp-rx
13:49 pmichaud I'll be curious if actions.pm compiles under nqp-rx also
13:49 jnthn In theory, it should Just Work. It'll give us an idea of how drop-in nqprx is.
13:49 pmichaud (but definitely start with something small)
13:49 jnthn Yes, actions.pm was not really something I considered a starting point. ;-)
13:49 pmichaud it'll also give us some idea of where we need to awesomenize the error messages
13:50 pmichaud (awesomize?)
13:50 jnthn I've been using awesomize :-)
13:52 KatrinaTheLamia joined #perl6
13:52 pmichaud okay, I guess I now get to figure out how to pull projects from git repositories instead of svn
13:52 moritz_ git clone $url
13:52 pmichaud sure
13:52 pmichaud but how to get to a specific revision
13:52 moritz_ and then git checkout $sha1
13:52 pmichaud and to see if we already have it
13:53 pmichaud and don't roll-back if we're at a valid later version
13:53 pmichaud I'm guessing git rev-parse is in there somewhere
13:54 moritz_ pmichaud: if git log $sha1..HEAD is non-empty, we're ahead of that version
13:55 pmichaud moritz_: git rev-parse $sha1   gives me what I need
13:55 pmichaud if $sha1 isn't present, git rev-parse returns an error
13:55 pmichaud but more generally...
13:55 pmichaud with parrot, I can check config['revision']  to see what version of Parrot I'm running
13:55 moritz_ note that $sha1 can be present in the index, but the checkout is older
13:56 pmichaud how can I do similar with nqp?  or rakudo?  hmmmm....
13:56 * mathw ponders the relative merits of 'awesomeise' and 'awesomify', as his brain can't handle code this afternoon
13:56 payload joined #perl6
13:56 mathw In semi-related non-awesome error messages, I just got this one: "Windows cannot copy AllServers.sln as it is in use by another program"
13:57 mathw I'm *copying* it, not moving it!
13:57 moritz_ very exclusive locking? ;-)
13:58 masak very conservative locking. :)
13:59 mathw masak: possibly necessary, I wouldn't put it past Visual Studio to keep the solution file in a dodgy state on disc to be honest
13:59 pmichaud I wonder if nqp-rx (and other similar projects) want to be maintaining their own revision numbers
14:00 pmichaud instead of relying on the vcs to do it
14:00 mathw what's wrong with the vcs's numbers?
14:00 pmichaud (or as another tracker parallel to the vcs)
14:00 pmichaud for git, they're not sequential
14:00 masak pmichaud: I thought nqp-rx would eventually get incorporated into mothership Parrot.
14:00 meppl joined #perl6
14:00 pmichaud masak: I'm not sure that will happen.
14:00 mathw well git doesn't really do revision 'numbers'
14:00 masak pmichaud: oh, interesting.
14:00 moritz_ pmichaud: git-describe can give some sequentiality back
14:00 pmichaud masak: and I continue to cross my fingers that parrot will move to git, which means we'll have to resolve the issue anyway :)
14:01 moritz_ no, it's spelled differently...
14:01 moritz_ git describe HEAD
14:01 moritz_ 2009-10-31-gd154eb9
14:01 moritz_ that's the last tag name
14:01 alester joined #perl6
14:01 moritz_ followed by the number of commits since then
14:01 moritz_ and a short SHA1
14:01 masak just 'git describe' works here.
14:02 pmichaud the tricky part is coming up with a number that can be easily embedded in executables
14:02 pmichaud and then can be tested to say "do you have a sufficiently advanced version"
14:02 moritz_ masak: somehow the git-$foo form of my commands stopped working
14:02 moritz_ now I need spaces
14:02 masak moritz_: aye, that's from git 1.5 or so.
14:03 pmurias pmichaud: requiring the exact version might be best till nqp-rx gets stable enough
14:03 pmichaud pmurias: that becomes a big pain for devels, though
14:03 diakopter pmurias: b/c it's the fastest js engine, it's embeddable into perl, and it's MIT-ish licensed
14:03 pmichaud because it means whenever I make a change to nqp-rx locally I have to go bump my revisions to get it to compile
14:04 pmichaud otherwise my build scripts end up inadvertently rolling back to a prior commit
14:04 mathw hmm okay that is tricky
14:04 pmichaud number of commits since tag is interesting
14:05 pmichaud assuming that we do monthly releases as 0, 1, 2, 3, 4, etc.  (same as rakudo)
14:05 mathw if your tags increase in a sortable manner, that would provide a comparable chunk of information
14:05 jnthn pmichaud: Any idea why adding this caused a "Confused at ..." error?
14:05 jnthn token circumfix:sigil { <sigil> '(' ~ ')' <EXPR> }
14:05 pmurias diakopter: good, i used for mildew-js v8 because it was what sprixel did, but now i have a solid reason ;)
14:05 jnthn nqp: token circumfix:sigil { <sigil> '(' ~ ')' <EXPR> }
14:05 p6eval nqp: OUTPUT«Confused at line 1, near "token circ"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
14:06 pmichaud then internal releases could be 0.1, 0.2, 0.3, ... 0.n    where "n" is the number of commits since the monthly release
14:06 pmichaud jnthn:   token circumfix:sym<sigil>  { ... }
14:06 mathw pmichaud: actually at my work we do a similar sort of thing, only we count how many nightly builds. We end up with big numbers, but we can tell exactly where something's from.
14:07 pmichaud nqp doesn't understand the circumfix:sigil sugared form yet
14:07 jnthn pmichaud: oh. is that ENQPNOTPERL6 or ESTDISWRONG? :-)
14:07 jnthn ah, ok
14:07 moritz_ does it have to be 'sym'?
14:07 pmichaud moritz_: yes.
14:07 * mathw has to brush up on grammars again
14:07 jnthn mathw: Same!
14:07 pmichaud moritz_: at least, I haven't seen anything that indicates otherwise.
14:08 moritz_ pmichaud: I haven't seen any indication that it must be called :sym
14:08 jnthn pmichaud: yes, that did it.
14:08 moritz_ pmichaud: actually :sym never appears anywhere in the spec
14:08 pmichaud moritz_: it's in STD.pm
14:08 moritz_ so I thought one can add arbitrary colonpairs to the long name of a token
14:09 pmichaud you can have arbitrary colonpairs in the longname, but only :sym is recognized for <sym>   iiuc
14:09 moritz_ wfm, as long as we have spec
14:09 pmichaud STD.pm:63
14:09 pmichaud and    category:name   is syntactic sugar for   category:sym<name>
14:10 pmichaud which further indicates that :sym<...>  is "special"
14:10 moritz_ ok
14:10 PerlJam moritz_: just change the spec however you like ;)
14:11 * mathw doesn't understand what these things are for
14:11 frettled mathw: great, that makes two of us.  :)
14:12 jnthn pmichaud: STD has circumfix:sigil as a token, but the test you committed expects to be able to write @( ... ) as well as @(...)
14:12 moritz_ I've tried to explain that in http://perlgeek.de/en/articl​e/mutable-grammar-for-perl-6
14:12 mathw frettled: I seem to think it's got something to do with protoregexes, but I don't grok those either, so...
14:12 pmichaud jnthn:  checking
14:12 pmichaud std:   @( 3 + 4 )
14:12 p6eval std 28955: OUTPUT«ok 00:01 108m␤»
14:12 jnthn oh
14:12 moritz_ mathw, frettled: they are needed to add branches to an alternative
14:12 pmichaud I think STD presumes that <EXPR> will eat ws
14:12 jnthn I know why
14:13 jnthn well now
14:13 moritz_ without rewriting the alternative
14:13 jnthn std has <semilist>
14:13 moritz_ (through subclassing)
14:13 pmichaud right
14:13 jnthn But we don't ahve <semilist> in NQP.
14:13 pmichaud we can add it
14:13 jnthn I'd just gone with EXPR
14:13 jnthn OK
14:13 pmichaud or just put <.ws>  in front of <EXPR>
14:13 pmichaud latter might be simpler for the moment
14:13 pmichaud NQP is unlikely to support semilists
14:14 pmichaud or, perhaps best is to define
14:14 pmichaud rule semilist { <EXPR> }
14:14 jnthn ah, I like that option
14:14 pmichaud and then use <semilist> in the appropriate places
14:14 jnthn I'll do that.
14:14 pmichaud oh
14:14 pmichaud even better
14:15 frettled moritz_: Yes, that web page was actually clarifying.
14:15 moritz_ great
14:15 pmichaud rule semilist { [ <statement><.eat_terminator> ]? }
14:15 pmichaud or still better
14:15 mathw moritz_: I've read that before, but forgot it. Now I know it again, for the next few days at least.
14:15 pmichaud rule semilist { <statement>? }
14:15 moritz_ mathw: and when you ask again in a week, I'll point you to that page again ;-)
14:16 pmichaud that last one is likely to be most std-like
14:16 jnthn pmichaud: I'll shoot for that one.
14:16 moritz_ mathw: that way I feel I've written something useful ;-)
14:16 frettled moritz_: \o/
14:16 alester What is Lewis' nick?
14:16 [particle] quietfanatic
14:16 alester is he quietfanatic?
14:16 alester I had no idea.
14:17 moritz_ thought so to
14:17 moritz_ o
14:17 [particle] not-so-quiet anymore
14:17 pmichaud jnthn: if you want to just do   rule semilist { <statement> }   for now, that might also be best
14:17 alester well http://rt.perl.org/rt3/Tic​ket/Display.html?id=70119 would suggest it :-)
14:17 alester I just thought it was cool that he's working on this.
14:18 mathw moritz_: You have indeed written something very useful.
14:19 jnthn pmichaud: OK. I have it as <EXPR> and it passes the tests. Will change to <statement> now, re-test and commit.
14:20 masak Lewis/quietfanatic also identifies himself as 緑 on Twitter. means 'green'.
14:20 masak we're all green wrt Perl 6, I guess.
14:21 masak except for that TimToady guy. he has almost 10 years of experience. :P
14:21 * moritz_ is technicoloured wrt Perl 6
14:21 [particle] i feel plaid
14:21 * jnthn sometimes looks green when he reads the spec of things he needs to implement
14:21 masak jnthn: then the torment is working. :P
14:22 jnthn pmichaud: omg is teh win, committing. :-)
14:23 pmurias who is Lewis/quietfanatic?
14:23 moritz_ just another perl hacker ;-)
14:24 masak pmurias: he's the one who wrote GameBase! \o/
14:24 frettled moritz_: what, you're green in Technicolor?
14:24 jnthn pmichaud: Whee. It parses/compiles signature.pm now.
14:25 masak also, if Perl succession is dynastic, I guess quietfanatic will be around when we start drafting Perl 7...
14:25 dalek nqp-rx: 0bee741 | jonathan++ | src/NQP/ (2 files):
14:25 dalek nqp-rx: Support contextualizers; passes 35-prefix-sigil.t.
14:25 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/0​bee741040c07df3b5b48c5691d94548665c91a4
14:25 frettled heh
14:25 masak mwhahaha, whoz op? :>
14:25 frettled whoops
14:26 * masak waves op wand around like Mickey Mouse did once
14:27 jnthn masak: Line 35 of bind.c was just for you. :-)
14:27 masak checking...
14:28 masak *lol*
14:30 jnthn pmichaud: signature.pm compiled under nqp-rx passes all sanity tests and benchmarks. Nice work!
14:30 pmichaud whoa
14:30 pmichaud really?
14:30 jnthn ya rly
14:30 pmichaud that's.... amazing.
14:31 jnthn Yup, just needed the contextualizers patch.
14:31 pmichaud yes.... yet another 12-line patch :)
14:31 jnthn :-)
14:32 jnthn I'll commit the change to the makefile in the branch to compile that file under nqp-rx.
14:32 jnthn :-)
14:32 pmichaud okay
14:33 pmichaud so, are you managing nqp builds manually at the moment, or ... ?
14:33 jnthn pmichaud: Yeah
14:33 jnthn pmichaud: All I did was: http://github.com/rakudo/rakudo/commit/9​8df6bd5d008e52f9fe52c056f7caeae7461c8fd
14:33 jnthn And relied on having nqp make install'd.
14:34 jnthn OTOH, at least you know that this + make install'd nqp-rx work together.
14:34 jnthn So "just" need the --gen-parrot to do the work to install it if it's missing.
14:34 pmichaud yes
14:34 jnthn ok, just for fun...
14:34 pmichaud I'm thinking I like the   release.commits  numbering scheme
14:35 huf joined #perl6
14:36 PerlJam pmichaud: just use a timestamp  :)
14:36 jnthn It sounds like it'll work fine.
14:36 envi^home joined #perl6
14:36 pmichaud oh, timestamp isn't bad, either
14:36 NorwayGeek_ joined #perl6
14:36 jnthn pmichaud: Just out of curiosity, I tried to compile the current actions.pm with nqp-rx. We make it to line 11.
14:37 jnthn Confused at line 11, near "%?CLASSMAP"
14:37 pmichaud nqp-rx doesn't understand the '?' sigil yet
14:37 pmichaud er, twigil
14:37 pmichaud that's a one-char fix, if you want to fix it :)
14:37 jnthn heh, why not
14:38 jnthn This almost feels like karma whoring.
14:38 pmichaud PerlJam: perhaps "time-of-last-commit" ?
14:38 jnthn :-)
14:38 PerlJam pmichaud: yes.
14:39 PerlJam (I'm biased a bit towards time-based release these days)
14:39 pmichaud I'm hugely biased towards it these days
14:39 pmichaud I've also been thinking that our linux users group needs monthly release managers, where "release" == "meeting"
14:39 mathw time is good
14:39 mathw time increases monotonically, and it's easy to relate it to... well. Times.
14:40 jnthn Plus everyone already understands it. Kinda. :-)
14:40 PerlJam mathw: except near a black hole  ;)
14:40 mathw PerlJam: no it still increases there, just more slowly
14:40 jnthn Meh, yeah, but it sucks there.
14:40 PerlJam mathw: right, no longer monotonically
14:40 mathw PerlJam: and I doubt people that close to a black hole are worried about our release schedule
14:40 PerlJam jnthn++
14:40 mathw PerlJam: monotonic doesn't require a constant rate
14:41 pmichaud I have it on good authority that black holes do not suck.  :)
14:41 PerlJam mathw: Are you absolutely sure that time moves in the same direction all the time near a black hole?
14:41 pmichaud but I agree that they tend to put things under a lot of pressure :)
14:41 mathw PerlJam: I believe that's what's thought to happen
14:42 mathw PerlJam: however, I may be mistaken.
14:42 PerlJam mathw: does it really matter wrt perl6?  :)
14:42 mathw No, probably not
14:42 mathw Perl 6 is not yet of interstellar interest
14:42 dalek nqp-rx: 217bb06 | jonathan++ | src/NQP/Grammar.pm:
14:42 dalek nqp-rx: Support ? twigil.
14:42 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/2​17bb061b45db7787c6d15500125f52b5defbfc7
14:42 pmichaud anyway, we'll assume that time is monotonically increasing for now, but I'm sure a future spec revision will change that.
14:43 PerlJam I bet when we meet aliens though, perl 6 programmers will have an advantage in communicating with them.
14:43 jnthn pmichaud: In that case, we need to make NQP's error messages less black-hole-ish. :-)
14:43 jnthn erm, more black-hole-ish
14:43 jnthn erm, less suckful. whatever.
14:43 mathw jnthn: I think let's stick with awesomeness as a measure for error messages
14:43 PerlJam mathw++ indeed
14:44 jnthn Unable to parse blockoid, couldn't find final '}' at line 447 # well, better than failing at line 11 ;-)
14:44 justatheory joined #perl6
14:45 PerlJam "blockoid"?
14:45 jnthn nqp: my $sub;
14:45 p6eval nqp:  ( no output )
14:45 jnthn nqp: my $sub; $sub()
14:45 p6eval nqp: OUTPUT«Confused at line 1, near "$sub()"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
14:45 masak PerlJam: welcome to the world of Perl 6 parsing terms.
14:45 jnthn pmichaud: ^^ that one
14:46 pmichaud jnthn: I'm not sure that postcircumfix:<( )> is implemented.
14:46 jnthn pmichaud: oh
14:46 jnthn that'd do it
14:46 jnthn pmichaud: Should it be?
14:46 pmichaud yes.
14:46 jnthn kk
14:46 PerlJam jnthn: are you just going to keep implementing stuff until it compiles?
14:46 jnthn Heh, actions.pm is providing a nice test case. ;-)
14:46 jnthn PerlJam: Well, that or pmichaud tells me to do something else. :-)
14:46 * mathw thinks 'keep implementing stuff until it compiles' is a great plan
14:47 pmichaud jnthn: we'll want tests for that also
14:47 jnthn pmichaud: Got any up your sleave this time?
14:47 pmichaud jnthn: nope
14:47 jnthn Aww noes. I'll have to write tests!
14:47 pmichaud my $sub = { ok(1, "works"); }
14:47 pmichaud $sub()
14:48 pmichaud er, s/=/:=/
14:48 jnthn phew, I don't have to write tests
14:48 jnthn :-)
14:48 pmichaud I have no idea if that will actually work.  :-)
14:48 jnthn nqp: my $sub = { ok(1, "works"); } # well, does this bit...
14:48 p6eval nqp: OUTPUT«Confused at line 1, near "my $sub = "␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
14:48 jnthn fail
14:48 jnthn oh
14:48 pmichaud :=
14:48 jnthn nqp: my $sub := { ok(1, "works"); } # well, does this bit...
14:48 p6eval nqp:  ( no output )
14:48 jnthn Yes, I copy-pasted and ignored the correction. :-/
14:49 pmichaud nqp:  my $sub := { ok(1, 'works'); };  say $sub;
14:49 jnthn ok, that works, should be eays.
14:49 p6eval nqp: OUTPUT«Confused at line 1, near "say $sub;"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
14:49 pmichaud nqp:  my $sub := { ok(1, 'works'); };  say($sub);
14:49 p6eval nqp: OUTPUT«_block14␤»
14:49 jnthn \o/
14:49 pmichaud I absolutely need to implement listops in nqp
14:49 pmichaud not hard, just haven't done it yet.
14:50 mathw If you don't there are going to be a lot of confused NQPs around
14:51 mathw while anybody working on it tries to retrain their fingers to write say()
14:51 pmichaud well, at the time we originally created nqp, parsing listops was painful
14:51 pmichaud it's much less painful now, so I'm okay with adding it
14:53 mathw \o/
14:53 mathw I think that just shows how far you've come with NQP-rx
14:54 gfldex joined #perl6
14:56 tylerni7 joined #perl6
14:57 pmichaud partially that, but also the grammar details are much improved now
14:57 pmichaud (for p6 syntax)
14:58 pmichaud PerlJam: so, just a unix timestamp, perhaps?
14:58 pmichaud or should we make it human-readable?
14:58 PerlJam human readable for sure
14:59 PerlJam humans find comfort in recognizing patterns :)
15:00 jnthn pmichaud: Whee. Now we get a lot further through actions.pm :-)
15:00 jnthn pmichaud: Guess what the error is? ;-)
15:00 jnthn oh noes, github has epic fail
15:02 pmichaud what's the error?
15:03 jnthn pmichaud: You have to ask? :-)
15:03 jnthn Unable to parse blockoid, couldn't find final '}' at line 2416
15:03 pmichaud oh.
15:03 * jnthn hasn't actually seen nqp give another erorr other than being unable to parse a blockoid... :-/
15:03 jnthn Oh no, I got Confused once. :-)
15:04 pmichaud the PIR q<...>;  form is no longer supported
15:04 jnthn oh
15:04 pmichaud it's now Q:PIR {
15:04 jnthn good catch
15:05 pmichaud (easy catch, I just looked at line 2416 and said "what's wrong with this...?" )
15:05 jnthn :-)
15:07 jnthn nqp: if 42 { say("lol") } else{ say("wtf") }
15:07 p6eval nqp: OUTPUT«Confused at line 1, near "if 42 { sa"␤current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)␤»
15:07 iblechbot joined #perl6
15:07 jnthn nqp: if 42 { say("lol") } else { say("wtf") }
15:07 p6eval nqp: OUTPUT«lol␤»
15:07 Psyche^ joined #perl6
15:07 jnthn pmichaud: nqp is correct here?
15:08 pmichaud in terms of the space required after 'else' ?
15:08 jnthn pmichaud: ye
15:08 moritz_ std: if 42 { say("lol") } else{ say("wtf") }
15:08 jnthn s
15:08 pmichaud what moritz++ wrote
15:08 p6eval std 28955: OUTPUT«[31m===[0mSORRY![31m===[0m␤Missing semicolon or comma after block at /tmp/RPFVgsmI0e line 1:␤------> [32mif 42 { say("lol") } [33m⏏[31melse{ say("wtf") }[0m␤    expecting any of:␤    infix stopper␤    statement␤Undeclared routine:␤      else used at line 1␤FAILED 00:02
15:08 p6eval ..108m␤»
15:08 jnthn OK, good, then actions.pm bug.
15:08 * jnthn adds a space and...nqp-rx accepts and compiles actions.pm.
15:09 pmichaud whoa
15:09 jnthn We don't know the output was good yet. ;-)
15:09 pmichaud I'm... doubly-shocked
15:09 pmichaud thus far my experience with nqp-rx has been one of
15:09 pmichaud (1)  try something a bit ambitious, it Just Works
15:10 pmichaud (2)  try something a bit ambitious, fix a minor bug or two and it Just Works
15:10 pmichaud (3) ...there is no #3
15:10 jnthn pmichaud: Bad news. The producing gen_setting.pir is bad.
15:10 jnthn error:imcc:undefined identifier 'outerlex'
15:10 jnthn in file 'src/gen_setting.pir' line 718
15:10 pmichaud ...gen_setting?
15:11 jnthn pmichaud: The gen_setting.pir produced by running Rakudo with actions.pm compiled under nqp-rx.
15:11 pmichaud I'd be very shocked if it works.
15:11 jnthn I'm just impressed it not only parsed actions.pm and produced valid code, but that it made it far enough to produce PIR output for the entire setting.
15:12 pmichaud oh
15:12 jnthn Even if that PIR appears to have some issues.
15:12 pmichaud one thing to keep in mind (might not make a difference) is that   subs in NQP default to 'my' scope instead of 'our'
15:12 masq joined #perl6
15:12 masq Hey.
15:13 jnthn I'll spend a moment to see if it's anything obvious.
15:13 pmichaud okay
15:13 pmichaud I think I may back-burner the "automatically download and compile NQP" for a bit so I can work on other cool things
15:13 jnthn wfm
15:14 jnthn oh, well, this looks wrong
15:14 mathw jnthn: that is awesome
15:14 jnthn new $P890, 'String'
15:14 jnthn set $P890, "    .local pmc outerlex"
15:14 jnthn $P890("    getinterp $P0", "    set outerlex, $P0[\"outer\";\"lexpad\";1]")
15:14 mathw jnthn++
15:14 mathw pmichaud++
15:14 mathw (my job today is encouragement and cheerleading, it seems)
15:14 pmichaud looks like something didn't inline properly, perhaps?
15:14 jnthn yeah
15:14 jnthn the code in question is:
15:15 jnthn $block[0].push( PAST::Op.new(
15:15 jnthn :inline('    .local pmc outerlex',
15:15 jnthn '    getinterp $P0',
15:15 jnthn '    set outerlex, $P0["outer";"lexpad";1]')));
15:15 jnthn Something with colonparis and lists within them?
15:15 pmichaud yes
15:15 pmichaud definitely
15:15 pmichaud parsing of colonpairs changed
15:16 jnthn ah
15:16 jnthn Do we need to write our code differently in actions.pm, or fix NQP?
15:16 jnthn e.g. which is wrong?
15:16 pmichaud I think it's just a minor bug somewhere
15:16 jnthn ah, ok
15:16 pmichaud actions.pm is right
15:16 jnthn OK, cool.
15:16 pmichaud i.e., that should continue to work
15:16 jnthn Well, that's one more thing we know to fix. :-)
15:17 * pmichaud tests
15:17 jnthn nqp: sub foo(:@x) { for @x { $_.say() } }; foo(:x(1,2,3))
15:17 p6eval nqp: OUTPUT«too many positional arguments: 3 passed, 3 expected␤current instr.: 'foo' pc 30 (EVAL_1:0)␤»
15:18 pmichaud here's the problem
15:18 jnthn error fail!
15:18 pmichaud (nopasting)
15:19 mathw Wow
15:19 mathw That's quite an error message
15:19 jnthn Ah, foo(:x(1,2,3)) ends up becoming  $P13 = "foo"(1, 2, 3)
15:19 pmichaud http://nopaste.snit.ch/18507  # colonpair fail
15:20 NorwayGeek joined #perl6
15:20 jnthn pmichaud: yup, hmm.
15:20 pmichaud might look at the actions for colonpair and arglist in nqprx
15:21 jnthn aye, looking :-)
15:21 pmichaud bbiab
15:22 jnthn ah
15:22 jnthn if $expr.name eq 'infix:<,>' {
15:22 jnthn for $expr.list { $past.push($_); }
15:22 jnthn }
15:22 jnthn else { $past.push($expr); }
15:24 jnthn And of course, circumfix with a comma list in it produces infix:<,>
15:28 jnthn Of course, changing it to "if $expr.name eq 'infix:<,>' && !$expr.named {" fixes it.
15:28 jnthn But I've a feeling that it's, well, wrong...
15:33 payload joined #perl6
15:35 jnthn ah well, it makes gen_setting.pir be something that compiles. ;-)
15:38 mathw jnthn: I would have thought that if it finds a comma list inside a circumfix it could give you a context in which to play with it which is, well, inside the circumfix
15:38 * moritz_ heads off for the weekend
15:39 moritz_ TTFN guys
15:39 moritz_ and gals
15:39 mathw moritz_: bye! have fun!
15:39 PerlJam moritz_: have a great weekend!
15:39 moritz_ thanks
15:39 pmichaud back
15:39 TimToady now that moritz_ is leaving, I can come back too :)
15:40 pmichaud the !$expr.named is fine for now
15:40 PerlJam TimToady: is there something like a TimToady exclusion principle?
15:41 mathw PerlJam: TimToady has kidnapped moritz_ and is impersonating him, thus we can only ever see one of them at once
15:41 PerlJam TimToady: no two perl6ians may occupy the same #perl6 simultaneously
15:41 TimToady .oO(I don't know if Heisenberg was here, but Pauli wasn't with him.)
15:41 pmichaud jnthn: out of curiosity, which is faster at compiling actions.pm?  (It won't surprise me if it's slower... there are still some big optimizations to be done)
15:41 pmichaud (nqp-parrot versus nqp-rx)
15:42 jnthn pmichaud: I didn't time them.
15:42 KyleHa joined #perl6
15:43 jnthn pmichaud: I think it may well be faster in the branch.
15:43 pmichaud that would be awesome if true
15:43 jnthn pmichaud: Well, it makes it through the compile now, so we can time it.
15:43 jnthn pmichaud: Actually, Rakudo fully builds now. Has a fail on startup, but compiles.
15:43 pmichaud I thought it was already making it through actions.pm ?
15:43 pmichaud ah.
15:44 jnthn pmichaud: no, no, it makes ir all the way through the compile
15:44 jnthn We get a perl6.exe
15:44 jnthn With latest tweaks (all pushed).
15:44 jnthn It's just when we run that, it fails.
15:44 jnthn Actually I think I know what's wrong.
15:44 jnthn our %?CLASSMAP;
15:44 jnthn %?CLASSMAP<Object>  := 'Perl6Object';
15:44 jnthn %?CLASSMAP<Array>   := 'Perl6Array';
15:44 jnthn %?CLASSMAP<Hash>    := 'Perl6Hash';
15:44 jnthn %?CLASSMAP<Pair>    := 'Perl6Pair';
15:45 jnthn I think this isn't getting run, or set up properly.
15:45 pmichaud oh, yes
15:45 pmichaud that's correct
15:45 pmichaud mainline isn't automatically :load :init any longer
15:45 pmichaud easy fix:
15:45 pmichaud INIT {
15:45 pmichaud %?CLASSMAP<Object>  := 'Perl6Object';
15:45 pmichaud ...
15:45 pmichaud }
15:46 jnthn trying
15:46 jnthn the our inside there too, yes?
15:46 pmichaud you need it on the outside as well
15:46 pmichaud look at the beginning of src/NQP/Actions.pm for an example
15:46 jnthn kk
15:46 pmichaud actually, the Actions.pm in NQP may still have the old  sub INIT() { ... } form, which won't work
15:47 pmichaud you should be able to have just one our on the outside
15:47 tylerni7 joined #perl6
15:47 pmichaud but best bet is to put one both outside and inside
15:47 jnthn Yeah, it does sub INIT() {
15:47 jnthn Anyway, just did INIT.
15:47 jnthn Compiling...
15:49 jnthn still compiling (the setting...)
15:49 jnthn plz say this gets faster ;-)
15:49 * pmichaud starts a file on "differences between old and new NQP"
15:49 jnthn Good plan.
15:49 jnthn heh, now we make it through startup.
15:50 jnthn Sadly, nothing works, but we can start up.
15:50 IllvilJa joined #perl6
15:50 pmichaud I'm amazed we get even as far as startup.
15:50 renormalist joined #perl6
15:51 jnthn Making it through startup is a big deal.
15:51 jnthn Startup is super hard.
15:52 jnthn Given that all the trait applications give multi-dispatch and a bunch of OO stuff quite a working out.
15:52 pmichaud if you don't mind, I think I'll start a new branch for the conversion, though.  "ng"
15:52 jnthn ng?
15:52 pmichaud "next generation"
15:52 pmichaud "new grammar"
15:52 mberends joined #perl6
15:52 pmichaud something like that :)
15:52 jnthn "need gin"
15:52 pmichaud that too
15:53 pmichaud first step will be to rip up the makefile :)
15:53 jnthn pmichaud: OK, we can probably toss mine.
15:53 pmichaud keep it around
15:53 jnthn pmichaud: Sure sure. I didn't do much in it.
15:53 pmichaud it'll take me a bit to get the makefile and new grammar in place
15:53 pmichaud made even more difficult by github being down :-(
15:53 pmichaud oh, it's up again!
15:54 jnthn it's up for at least git push
15:54 jnthn pmichaud: OK, I think it's best if I leave you to that.
15:55 jnthn since (a) you know what to do and (b) it doesn't really parallelize.
15:55 jnthn Plus I can run an errand to...oh shi...it's closed.
15:56 jnthn Ah well, I'll stay here and hack on something then. :-)
15:57 Tene ... I just remembered why I was waiting for contextuals in Rakudo.
15:57 Tene my html-generation library currently uses a global variable.  I wanted to move it to use a contextual instead.
15:57 pmichaud Rakudo now has contextuals.
15:58 pmichaud NQP has contextuals also, although they only look up the dynamic scope and not a global scope.
15:58 Tene I like the feeling of projects queueing up for me again. :)
15:58 Exodist_ joined #perl6
16:02 jnthn pmichaud: Added a couple of tests for pos/named slurpies in nqp-rx.
16:03 jnthn Gotta love the Twitter status page.
16:03 jnthn erm, github status on twitter
16:03 mathw Rakudo compiles all the way through with nqp-rx???
16:03 jnthn "We are now experiencing problems with our backends...."
16:03 * mathw falls over
16:03 jnthn mathw: Yes. Enough for perl6.exe to start up even.
16:03 mathw That is FAST
16:03 jnthn mathw: However, nothing works beyond that.
16:04 mathw Yeah but
16:04 mathw As you said, startup's a big deal
16:04 jnthn But still.
16:04 jnthn Yes
16:04 jnthn I'm surprised, and impressed.
16:04 jnthn pmichaud++
16:04 mathw I'm enormously impressed
16:05 mathw Not only does pmichaud demonstrate the awesomeness of Parrot and his giant brain by writing nqp-rx in the time he did, you then go and demonstrate the awesomeness of Rakudo and your giant brain by swapping Rakudo over to it with far less initial pain than I would have expected.
16:05 mathw this whole Parrot + PCT toolchain business is really fantastic technology
16:06 mathw if I was talking about this at work, someone would probably use the word 'leverage' at this point
16:06 mathw And I just know that I have to write a compiler
16:13 masak pmichaud++ jnthn++
16:15 cdarroch joined #perl6
16:17 jnthn pmichaud: Benchmakred 'em for ya.
16:17 jnthn pmichaud: Not much between them.
16:17 pmichaud okay, that's good
16:17 jnthn Old: 31 seconds
16:17 jnthn New: 34 seconds
16:17 pmichaud that's *really* good
16:17 jnthn Which to say PGE got optimizations, and this is shiny and new and unoptimized...
16:17 pmichaud the new regex engine is still doing a few number of method calls that can be inlined
16:19 pmichaud I'll be eager to sic the profiler on the engine :)
16:19 pmichaud actually, if you wanted to profile compiling actions.pm, something might pop out quickly
16:19 jnthn pmichaud: That may...take a while... ;-)
16:19 pmichaud it might
16:19 jnthn pmichaud: Maybe I can do signature.pm though?
16:19 pmichaud could profile.... right
16:20 pmichaud at least we know that the new engine isn't significantly slower than the previous one
16:21 pmichaud which, considering that it's now going through PAST+POST to generate code (instead of just straight to PIR as PGE was doing), is saying a fair bit also
16:23 jnthn Yes, quite.
16:24 jnthn I've run the profiler, but it produced 240 MB of output, so pprof2cg.pl may take a little while. :-)
16:24 * jnthn makes a cuppa
16:32 jan_ joined #perl6
16:32 jnthn pmichaud: You're not going to believe this.
16:33 jnthn pmichaud: The reason we were crashing when I tried anything in the repl was...
16:33 jnthn my $?FILE := Q:PIR { %r = find_caller_lex '$?FILES' };
16:33 jnthn $main.unshift(PAST::Op.new(:inline(".annotate 'file', '" ~ $?FILE ~ "'")));
16:33 jnthn In the new NQP, this came back with a null PMC in $?FILE somehow - before it musta somehow auto-vivified or otherwise coped with the null string in the concat.
16:34 jnthn pmichaud: Anyway, with those commented out, it works.
16:34 jnthn pmichaud: Further, we pass *all* of the sanity tests.
16:34 pmichaud wow
16:34 alester Dial up the sanity!
16:34 alester "You must be this sane to ride this project."
16:34 jnthn alester: oh crap, I best go off it...
16:35 jnthn *get
16:35 jnthn pmichaud: In other news, pprof2cg.pl is still working on the profiling output <grin>
16:35 TimToady "...this sane and no saner..."
16:35 nihiliad joined #perl6
16:40 TopoMorto joined #perl6
16:40 chappar joined #perl6
16:43 dalek joined #perl6
16:43 jnthn Just for kicks, I'm running the spectests with actions.pm compiled with nqp-rx
16:44 pmichaud that should be interesting :)
16:44 jnthn oh, profiler postprocessor finally gave me something
16:44 pmichaud jnthn: in the nqp-rx install, do you just install the .pbc files?  not the exec?
16:45 pmichaud no, I see the exe
16:45 pmichaud hmmm
16:45 pmichaud oops!
16:45 pmichaud Makefile-spaces-are-not-tabs-fail
16:45 [particle] gah
16:47 jnthn pmichaud: oops
16:47 jnthn pmichaud: Yes, this is why I shouldn't be allowed near makefiles ever.
16:48 lichtkind_ joined #perl6
16:48 Tene So... parrot implementation of Make that all HLLs and other parrot-reliant projects can use on all parrot-supported platforms?
16:49 Tene or a make-alike build/install tool?
16:50 pmichaud my experience is that any tool-that-is-not-make isn't used unless it also supports all of make's features
16:50 jnthn pmichaud: I'm probably reading the profile wrong, but it somehow looks here like we spend a lot of time in package_declarator.
16:50 pmichaud in package_declarator itself, or in things that it calls also?
16:50 jnthn Well, that's what I'm wondering
16:50 jnthn But here's what's odd
16:50 pmichaud because nearly the entire compilation will be done in package_declarator
16:50 chappar left #perl6
16:50 jnthn Yes
16:51 jnthn But if the Called column is "how many times did we call this"
16:51 jnthn Then we call Cursor;!protoregex 3,863 times.
16:51 pmichaud sure
16:51 jnthn And Gramar;term:sym<package_declarator> 940 times.
16:51 pmichaud that's expected
16:51 payload joined #perl6
16:51 jnthn Is that second one expected too?
16:52 jnthn Given there's only one instances of "module" in the file?
16:52 colomon I hate to interrupt the awesomeness going on here, but can someone quickly tell me what the p5 equivalent of <a b c> is?
16:52 pmichaud that one is less expected
16:52 jnthn qw(a b c) I think.
16:52 pmichaud colomon: qw(a b c)
16:52 colomon jnthn++, pmichaud++ # Thanks!  (Stupid maintenance of old code.)
16:52 pmichaud well, term:sym<package_declarator>  will be called every time there's a term that might be a package declarator
16:52 jnthn Anyway, Cursor;!protoregex seems to be where we spend most time.
16:53 jnthn pmichaud: Oh? I thought protoregexes avoided that...
16:53 pmichaud !protoregex gets called anytime we're in a protoregex
16:53 * diakopter adds p5eval as a wife for jseval in sprixel's bed
16:53 pmichaud they do avoid that, if the prefixes are set up properly
16:53 jnthn Ah.
16:54 am0c joined #perl6
16:54 pmichaud but if a regex ends up with a null prefix, it gets called for every possible string
16:54 pmichaud so the question becomes, is there an issue with package_declarator
16:54 pmichaud looking
16:55 diakopter mberends: ^^ p5eval, oh boy
16:55 jnthn The thing we call most - which is probably no surprise either - is Cursor;!cursor_start (just short of 15,000 times)
16:55 mberends diakopter: ???
16:55 pmichaud right
16:55 jnthn However it doesn't appear to be the biggest use of time.
16:55 pmichaud we call cursor_start every time we enter a new regex
16:55 jnthn nod
16:56 diakopter mberends: just like invocations of jseval (in the .pm setting, or in Perl 6 input source), except evaluated by perl
16:56 jnthn pmichaud: I don't think this can be inclusive of things called by the way. Otherwise surely Compiler;main would be right at the top.
16:56 jnthn And it's not - it's way down.
16:57 jnthn So if I'm reading this right, not only are we calling package_declarator a lot of times, but it's also really ratehr pricey when we do.
16:57 pmichaud well, it makes sense that package_declarator is getting called a lot if we're getting into term:<package_declarator>
16:57 pmichaud looking
16:58 mberends diakopter: ah, missed the 'wife' remark
16:59 pmichaud something must be happening with the package_declarator prefixes
16:59 jnthn pmichaud: token package_declarator:sym<class>  { $<sym>=[class|grammar] <package_def> }
17:00 pmichaud pmichaud@orange:~/rakudo/nqp-rx$ ./nqp
17:00 pmichaud > NQP::Grammar.DUMP_TOKRX('package_declarator')
17:00 pmichaud "package_declarator" => Hash { "class" => PMC 'Sub' { ... }, "grammar" => \package_declarator["class"], "module" => PMC 'Sub' { ... }
17:00 lambdabot <no location info>:
17:00 lambdabot lexical error in string/character literal at chara...
17:00 pmichaud }
17:00 pmichaud >
17:00 lambdabot not an expression: `'
17:00 jnthn Maybe those whould be broken out into two?
17:00 dalek nqp-rx: db50144 | pmichaud++ | build/Makefile.in:
17:00 dalek nqp-rx: Update the Makefile a bit, eliminate spaces-instead-of-tab.
17:00 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/d​b50144815214bc8a756fbc941a27dee5a543b9e
17:00 jnthn one for class, one for grammar?
17:00 pmichaud jnthn: shouldn't matter.  The DUMP_TOKRX is correctly determining that the valid prefixes are "class", "grammar", and "module"
17:00 jnthn oh, so it is
17:01 jnthn I mis-read it.
17:01 pmichaud is your branch pushed to github?
17:02 pmichaud well, actually, what I'm thinking of won't help much in this case
17:02 jnthn pmichaud: Everything I have is pushed.
17:03 pmichaud I kinda want an option to be able to turn on tracing from the command line
17:03 pmichaud hmmm
17:03 pmichaud btw, to see the protoregex tables, it's just
17:03 pmichaud > NQP::Grammar.DUMP_TOKRX('name-of-protoregex')
17:03 lambdabot <no location info>:
17:03 lambdabot lexical error in string/character literal at chara...
17:03 pmichaud (from the nqp REPL)
17:04 jnthn Tests that fail when running Rakudo with actions.pm and signature.pm compiled with nqp-rx rather than nqp: http://gist.github.com/222529
17:04 pmichaud if you do  NQP::Grammar.DUMP_TOKRX('term')  you'll see that module/class/grammar are transitively promoted to <term> also
17:04 jnthn pmichaud: Thanks, that's nice to know.
17:04 pmichaud 6 tests fail?
17:04 jnthn Yes, seriously.
17:05 diakopter rakudo: (*())(&_)
17:05 p6eval rakudo d154eb: OUTPUT«Method 'postcircumfix:( )' not found for invocant of class 'Failure'␤in Main (file src/gen_setting.pm, line 324)␤»
17:05 pmichaud jnthn: okay, you're freaking me out a bit here :)
17:05 jnthn Plesae can somebody else replicate this so we know I'm not insane? ;-)
17:07 ejs joined #perl6
17:07 colomon jnthn: what would need to be done to replicate it on a fresh clone?
17:07 [particle] joined #perl6
17:07 * colomon is trying to fix his $work build process, and that's sooooo slow....
17:08 jnthn colomon: Switch to branch usenqprx
17:08 jnthn colomon: Also clone nqp-rx
17:09 jnthn Do --gen-parrot
17:09 jnthn After that, but before make, configure, make and make install nqp-rx
17:09 fax joined #perl6
17:09 colomon jnthn: clone nqp-rx where?
17:09 KyleHa git clone git://github.com/perl6/nqp-rx.git
17:10 jnthn Doesn't matter where you put it when you clone it. But you'll need to give it's Configure.pl the --parrot-config=... with ... being path to the parrot_confg your --gen-parrot in Rakudo installed.
17:10 pmichaud (need to pass the --parrot-config option to the nqp-rx build)
17:10 jnthn colomon: make install in nqp-rx will then put the right things in the right place, hopefully.
17:11 am0c joined #perl6
17:12 colomon okay, started with a fresh clone of rakudo, then used KyleHa++'s git clone.  Now doing --gen-parrot.
17:12 diakopter mberends: interestingly, Perl 5 source sent to p5eval can also invoke js code.... o_o
17:13 mberends diakopter: that's curious...
17:13 diakopter yeah, since at that point, V8 thinks it's waiting for some external function to return...
17:14 KyleHa If I --gen-parrot in ~/p6/rakudo, do I then --parrot-config=~/p6/rakudo/parrot_install in nqp-rx ?
17:14 pmichaud need full path to parrot_config binary
17:14 pmichaud =~/p6/rakudo/parrot_install/bin/parrot_config
17:14 KyleHa Thanks!
17:16 pmichaud (I'm definitely going to implement part of S19 this weekend.)
17:17 KyleHa OK, I did 'make' and 'make install' for nqp-rx.  'make' in rakudo bombs.
17:17 pmichaud oh, there's still an issue with the makefile, I believe.
17:17 pmichaud just a sec
17:18 jnthn oh, wait, did I...
17:18 pmichaud my latest change probably broke something
17:18 pmichaud just a sec
17:18 jnthn Oh, you mean the spaces in the nqp-rx one?
17:18 KyleHa It says [src/gen_actions.pir]
17:19 KyleHa It says also, "Parent isn't a Class".
17:19 pmichaud right
17:19 * jnthn didn't see that one :)
17:19 pmichaud in nqp-rx, do "git pull"  and rebuild nqp-rx
17:19 pmichaud I made a boo-boo in my makefile fix.
17:19 jnthn ah, no worries.
17:20 colomon blast, forgot to switch to usenqprx.  which doesn't seem to have been pulled?
17:20 stephenlb joined #perl6
17:20 jnthn git checkout usenqprx
17:20 pmichaud (it's pulled automatically when you clone the branch)
17:21 KyleHa git checkout origin/usenqprx     # on mine, anyway
17:21 jnthn ah, yes
17:21 pmichaud KyleHa++
17:21 colomon jnthn++
17:22 colomon oh weird, git checkout usenqprx seems to have worked for me.  (at least, PARROT_REVISION was where it should be)
17:22 colomon (I did accidentally do   git branch usenqprx first, maybe that helped?)
17:23 KyleHa Oh.  That may have created a new local branch called usenqprx unrelated to the remote origin/usenqprx
17:23 jnthn aye
17:23 dalek nqp-rx: ed6362d | pmichaud++ | build/Makefile.in:
17:23 dalek nqp-rx: Fix bug in "make install".
17:23 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​d6362d7cfd87e0ff42778498833857cb651813f
17:25 colomon Hmmm... when I switched to it, I had the right PARROT_REVISION, as I said.  But just to be safe I'll start over...
17:26 jnthn colomon: PARROT_REVISION in the branch is higher than in master.
17:26 cottoo joined #perl6
17:26 colomon right, that's how I knew I had it wrong at first, and then why I thought I had it right.
17:26 pmichaud ETOOMANYWINDOWSONMYDESKTOP
17:26 colomon this time I'll smartly do it on my faster computer, anyway.
17:26 jnthn pmichaud: I just looked at switching Perl6::Compiler::Signature to use has $!foo syntax
17:27 jnthn pmichaud: However, I need to be able to init the attributes somehow.
17:27 jnthn What's the Right Way to do that with NQP?
17:27 pmichaud there's no auto-init
17:27 pmichaud you have to create your own accessors to do it
17:27 jnthn Ah. But if I do if $!entries and it's null, I'll go explode.
17:28 pmichaud I think that it assumes Undef for null
17:28 jnthn oh, they get vivid.
17:28 jnthn ok
17:28 pmichaud well,  null entries are returned as Undef (but not vivified)
17:28 pmichaud I'm still thinking about that one a bit.
17:29 KyleHa Rakudo built.  What's the test?
17:30 pmichaud "make test"  -- see if sanity tests pass
17:30 pmichaud "make spectest"  -- see how many spectests fail
17:30 pmichaud jnthn had 6 failures w/"make spectest"
17:30 KyleHa Sanity passed.
17:30 pmichaud 17:04 <jnthn> Tests that fail when running Rakudo with actions.pm and signature.pm compiled with nqp-rx rather than nqp: http://gist.github.com/222529
17:32 pmichaud jnthn: NQP now has a --parsetrace option.... using --parsetrace lets you see which regexes are being invoked and whether they pass/fail
17:32 pmichaud could try --parsetrace on actions.pm and see where package_declarator is being called so often
17:32 KyleHa I see a pattern.
17:33 KyleHa jnthn's test failures appear to be ones using my horrific is_run() concoction.
17:33 KyleHa They work on my machine.
17:34 pmichaud jnthn: when I run --parsetrace on NQP's Actions.pm, I only see one package_declarator call.  So.... I'm not sure.
17:34 jnthn pmichaud: OK, once I've tried to get Signature.pm switched over the $!foo's and has's...
17:34 jnthn pmichaud: Oh, hmm
17:34 KyleHa I'll let the spectest suite run here, but I suspect it will all pass.
17:34 pmichaud I'll give the branch a try.
17:34 jnthn pmichaud: Wonder if the profiler output was funked up.
17:35 pmichaud I suppose that's possible.
17:35 pmichaud I'll try it here and see what I get.
17:35 jnthn pmichaud: Wow.
17:35 jnthn I just managed to crash POST::Compiler.
17:35 jnthn Method 'iterator' not found for invocant of class 'String'
17:35 jnthn current instr.: 'parrot;POST;Compiler;pir_children' pc 10093
17:35 dalek nqp-rx: 2cd14a3 | pmichaud++ | src/ (3 files):
17:35 dalek nqp-rx: [nqp]:  Add --parsetrace option to nqp.
17:35 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/2​cd14a327163c7c337c2f5ea47ab8eb70232ffc8
17:35 pmichaud jnthn: that typically means that a "make" is missing somewhere.
17:36 pmichaud or a .ast
17:36 pmichaud those will be cleaned up shortly -- the meaning of .ast changed in S05 a couple of days ago so we can get something much more intelligent out
17:39 pmichaud .oO( I wonder if there's a way to tell git to not record/report diffs for the auto-generated files)
17:39 jnthn nqp: has $!foo; method bar($bar) { $!foo := $bar };
17:40 p6eval nqp: OUTPUT«Method 'iterator' not found for invocant of class 'String'␤current instr.: 'parrot;POST;Compiler;pir_children' pc 10093 (src/POST/Compiler.pir:70)␤»
17:40 jnthn pmichaud: There you go.
17:40 KyleHa jnthn: I'd be curious to know whether pugs/t/03-test-util/is_run.t   works for you, since those are the tests I wrote for is_run() itself.
17:40 pmichaud "has" has to be in a class definition to be any good.
17:40 diakopter to what did .ast change
17:40 jnthn pmichaud: mine is.
17:40 pmichaud .ast now returns undef/false if no ast object has been set
17:40 jnthn nqp: class Wibble; has $!foo; method bar($bar) { $!foo := $bar };
17:40 p6eval nqp: OUTPUT«Method 'iterator' not found for invocant of class 'String'␤current instr.: 'parrot;POST;Compiler;pir_children' pc 10093 (src/POST/Compiler.pir:70)␤»
17:41 pmichaud preivously it returned the matched string
17:41 pmichaud jnthn: that looks very familiar, but I don't recall why
17:41 jnthn nqp: class Wibble; has $!foo; method bar($bar) {  };
17:41 p6eval nqp:  ( no output )
17:41 jnthn nqp: class Wibble; has $!foo; method bar($bar) { $!foo };
17:41 p6eval nqp:  ( no output )
17:41 jnthn nqp: class Wibble; has $!foo; method bar($bar) { my $x; $x := $bar };
17:41 p6eval nqp:  ( no output )
17:41 jnthn ah, just attr ass.
17:42 pmichaud oh!!!
17:42 pmichaud I know the problem.
17:42 pmichaud silly me.
17:42 jnthn \o/
17:42 pmichaud PAST bug.
17:42 jnthn OK, I would start pouring over the PAST and POST trees then. :-)
17:42 pmichaud I fixed it locally but didn't commit.
17:43 pmichaud (this is what I get for working past the point when I really should've gone to bed)
17:43 jnthn ;-)
17:43 pmichaud need to bump to r42174
17:43 jnthn dakujem :-)
17:47 dalek nqp-rx: 8976132 | pmichaud++ | build/PARROT_REVISION:
17:47 dalek nqp-rx: Bump to Parrot r42174 to get fix for PAST::Val attributes.
17:47 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8​97613279d00322afc097f852028e37440354380
17:47 KyleHa So is this Rakudo+nqp spectest I'm running obsolete now?
17:47 jnthn KyleHa: No
17:48 jnthn Well, no more than it once was. :-)
17:48 jnthn *ever was
17:48 pugs_svn r28956 | lwall++ | [pm.txt] more answers
17:48 KyleHa OK, it just finished.
17:48 pmichaud KyleHa: it may be a week or two before we have the new version up to speed
17:48 jnthn Yay
17:48 jnthn KyleHa: This is jsut running current Rakudo on stuff compiled using nqp-rx.
17:48 KyleHa It all passed except for the two usual suspects.  As I predicted.
17:48 jnthn ...all passed?
17:49 KyleHa Yes.  The is_run()-based stuff that failed for you passes for me.  Did you try that t/03-test-util/is_run.t   test?
17:50 pmichaud ...what is "is_run()", ooc ?
17:51 jnthn KyleHa: Where is that test?
17:51 KyleHa jnthn: pugs repo.
17:51 jnthn ah, I don't think I have that checked out other than the spectest parts.
17:51 diakopter ? t/03-test-util/is_run.t
17:51 KyleHa pmichaud: See t/spec/pacages/Test/Util.pm   It spawns a separate Rakudo and checks its output.
17:52 jnthn KyleHa: When were they added? It's entirely possible these tests fail for me in master too...
17:53 KyleHa jnthn: Looks like about three weeks ago.
17:53 jnthn oh, OK
17:53 jnthn I didn't see thsoe fail in master of late, iirc.
17:54 jnthn KyleHa: I doubt I'll spend much time looking into it, given usenqprx branch is a throw-away for the most part.
17:54 jnthn Though the Signature.pm changes I'm doing in there now will likely get copied over to the ng branch.
17:55 KyleHa Okeydoke.  Well, that's where those failures seem to stem, if you decide to chase them down.
17:55 jnthn OK, good to know - thanks. :-)
17:55 pmichaud ...I'm glad I don't have much planned for the weekend, it's going to be really busy with nqp-rx related stuff :)
17:56 jnthn :-)
17:56 pugs_svn r28957 | lwall++ | [S05]
17:56 pugs_svn r28957 | document reversed character range compilation failure
17:56 pugs_svn r28957 | clarify what happens if an indirect rule fails to compile
17:56 jnthn .oO( should i do two consecutive Rakudo days? )
17:57 colomon Is there any way to tell that you're on the NQP-RX branch?  I mean, that it built correctly and that's what you're using?
17:57 jnthn git branch -a
17:57 pmichaud "git branch"
17:57 jnthn See which one is *'d.
17:57 colomon *(no branch), actually
17:57 PerlJam git status also tells you which branch you're on
17:57 jnthn oh wtf
17:58 TimToady pmichaud: one side effect of combining <noun> with <term> is that my terms now don't have a well-formed .caps; probably needs a fix in gimme5 to 'sub term'
17:58 PerlJam colomon: did you do "git checkout <SHA>" at some point?
17:58 TimToady std: 42, rand ~ ''
17:58 p6eval std 28956: OUTPUT«Can't use an undefined value as an ARRAY reference at Cursor.pm line 97.␤FAILED 00:02 108m␤»
17:58 colomon git checkout origin/usenqprx
17:58 PerlJam oh.  that doesn't do what you think it does :)
17:58 colomon nqp-rx built and installed okay.  (I didn't try a make test there?)
17:59 pmichaud TimToady: since I'm not doing .caps yet, shouldn't be an issue for me
17:59 jnthn pmichaud: Just committed a signature.pm that uses has $!x syntax
17:59 pmichaud (will be when I get there :-)
17:59 jnthn pmichaud: Got rid of some inline PIR. :-)
17:59 pmichaud jnthn: awesome
17:59 pmichaud jnthn: and passes tests?
17:59 jnthn sanity
17:59 Bzek_ joined #perl6
17:59 pmichaud even more awesome
17:59 TimToady turns out it's confusing the list associative reducer, which wants .caps to be there, is where the message comes from
17:59 jnthn didn't re-test with spectests yet, but if it gets that much right.
18:00 jnthn We can steal that straight into the new branch when it comes, anyway.
18:00 pmichaud jnthn: I was thinking "does it pass the signature.pm tests".  "passes sanity" is even more awesome.
18:01 jnthn pmichaud: I put in earlier today something to let us have some built-ins just in the stage 1 compiler rather than the setting.
18:01 pmichaud I can go ahead and push what I have in the ng branch, although I think it's Epic Fail at the moment.
18:01 jnthn pmichaud: I figured that'd help us debug things a bit more.
18:01 pmichaud I'm doing about three-too-many tasks at once at the moment.
18:01 jnthn :-)
18:01 pmichaud well, my first step in ng is quite literally to switch to the NQP grammar and actions.
18:01 jnthn Sure
18:01 pmichaud then we'll see how much of sanity we pass, and start from there.
18:02 jnthn I'm just mentioning it. You don't need to do anything with it. :-)
18:02 jnthn Well, our problem is this: we ain't going to parse all the setting.
18:02 pmichaud oh, I figure setting is a ways off yet
18:02 pmichaud our bigger problem is that we don't even parse Test.pm yet
18:02 jnthn Right, but given things like, infix:<+> and even say live in the setting these days... ;-)
18:02 pmichaud I'm being quite literal and serious when I say that we'll be building up from scratch again
18:03 PerlJam poor scratch
18:03 jnthn We're going to have a hard time running the sanity tests without having some "fake" stuff in place for a while.
18:03 pmichaud right
18:03 pmichaud I think we can use pirops to fake a lot of the math ops
18:03 jnthn Indeed.
18:03 pmichaud our biggest focus will (once again) be on getting Test.pm to compile
18:03 jnthn :-)
18:03 pmichaud unfortunately it's no longer as simple as it once was
18:04 jnthn Aye.
18:04 pmichaud anyway, it'll be the same process as before -- get the basic operators to work, then lexicals, then positional+associative, then exceptions, then Test.pm
18:05 * jnthn is curious how many of the Rakudo sanity tests the nqp grammar as it is today parses/runs.
18:05 pmichaud but in the process we'll also deal with things like the 'rw' property and the like
18:05 jnthn *nod*
18:05 pmichaud since we now know what the operations are supposed to look like, that should be much easier
18:05 pmichaud but I figure compiling settings may be a week or more away
18:06 pmichaud (might be quicker, I'm being very surprised this week at how quickly things are coming together)
18:06 jnthn Sure, agree.
18:06 jnthn Well, we may find we can start bringing it back bit by bit.
18:06 pmichaud right
18:06 pmichaud we might also want to rename it to CORE anyway
18:06 jnthn :-)
18:06 pmichaud I really have gutted big parts of the Makefile
18:07 pmichaud so if we move setting to CORE we can figure pieces out as we go
18:07 pmichaud (i.e., move files across one-at-a-time)
18:07 jnthn Plesae say you didn't gut the dynops and dynpmcs? :-)
18:07 pmichaud no, they're still there, of course.
18:07 jnthn phew :-)
18:07 pmichaud I don't think those change at all.
18:07 jnthn No
18:07 jnthn I shouldn't expect so.
18:07 jnthn The other question I had.
18:07 jnthn Should we try and start this all of with a merged loadinit?
18:08 jnthn Rather than one for every routine?
18:08 jnthn Or easier to keep it per routine for now?
18:08 pmichaud I've decided it has to be per-routine for the most part
18:08 jnthn OK.
18:08 jnthn For now or in the long-run?
18:08 pmichaud for some things, in the long-run
18:08 pmichaud however, we can be smarter on the actions.pm side
18:08 jnthn OK.
18:09 pmichaud i.e., we can put some things in   $?PACKAGE.loadinit   instead of @?BLOCK[0].loadinit
18:09 jnthn Ah, true. That's easier now.
18:09 pmichaud but I've come across a number of cases where I've realized that PAST cannot automatically combine :loadinits for us.
18:09 jnthn Ah
18:10 pmichaud so it's up to the hll to decide when to do it
18:10 jnthn OK.
18:10 pmichaud (but as just noted, that's not all that hard now)
18:10 jnthn contextuals++
18:10 pmichaud ...my usenqprx branch doesn't seem to have the actions.pm updates in it
18:11 pmichaud specifially, the  PIR q<...>  ->  Q:PIR   changes
18:11 pmichaud I must have not pulled the branch properly?
18:12 pmichaud ah, I didn't switch to the branch
18:12 * pmichaud tries profiling on actions.pm
18:12 Su-Shee left #perl6
18:13 jnthn hehe
18:13 jnthn :-)
18:14 jnthn pmichaud: That'll take a little while. ;-)
18:14 pmichaud it's okay, I have plenty else to keep me busy.
18:14 pmichaud And I should get lunch.
18:14 jnthn yeah
18:14 pmichaud omg it's 13h14 already
18:14 jnthn I need to go buy some nom.
18:14 pmichaud where did the morning go?
18:14 jnthn nqp-rx...rakudo...
18:14 jnthn ;-)
18:15 pmichaud this should be a very interesting weekend :)
18:15 pmichaud btw, as soon as we start putting rakudo on the new grammar I think I can claim M1 on my Hague grant :)
18:15 Su-Shee joined #perl6
18:15 PerlJam twice now in recent memory I've told people how you went home for a weekend and the following monday you came back with pmwiki.   See if you can get that same vibe going ;)
18:16 jnthn pmichaud: yay!
18:17 pmichaud PerlJam: depends on what else happens IRL here :)
18:17 pmichaud PerlJam: and how tired I get (or don't get)
18:18 PerlJam pmichaud: make sure you have plenty of food and Dr Pepper and a not-so-cozy-you-can't-get-out-of-bed place to sleep
18:18 jnthn OK, food break all around. :-)
18:19 pmichaud PerlJam: actually, sleeping comfortably would likely improve my overall productivity :)
18:20 PerlJam pmichaud: why aren't you sleeping comfortably now?
18:20 pmichaud PerlJam: don't know.  been a little too busy to worry about it or care, though :)
18:21 PerlJam perhaps you need an in-door hammock
18:21 PerlJam (I presume it's a little too cold outside for hammocking)
18:22 pmichaud was 48degF here this morning
18:24 pmichaud afk, lunch
18:30 pmichaud (ng branch pushed to github)
18:39 diakopter rakudo: say(5 ! 3)
18:39 nihiliad joined #perl6
18:39 p6eval rakudo d154eb: OUTPUT«say requires an argument at line 2, near "(5 ! 3)"␤in Main (file src/gen_setting.pm, line 2593)␤»
18:39 * diakopter thinks a bit
18:40 diakopter std: say(5 ! 3)
18:40 p6eval std 28957: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unable to parse argument list; couldn't find final ')' at /tmp/CgjodzFNZh line 1:␤------> [32msay(5 ![33m⏏[31m 3)[0m␤    expecting any of:␤ bracketed infix␤  infix stopper␤    standard stopper␤ terminator␤FAILED 00:01 107m␤»
18:40 * diakopter wonders how rakudo parsed that
18:41 TimToady it probably didn't, which is maybe why it thought there was no argument
18:41 TimToady rakudo: 5 ! 3
18:41 p6eval rakudo d154eb: OUTPUT«Confused at line 2, near "! 3"␤in Main (file <unknown>, line <unknown>)␤»
18:42 TimToady it just backtracked out and ignored it
18:42 TimToady (presumably)
18:42 diakopter rakudo: die(5 ! 3)
18:42 p6eval rakudo d154eb: OUTPUT«Confused at line 2, near "(5 ! 3)"␤in Main (file <unknown>, line <unknown>)␤»
18:42 diakopter oh
18:44 Su-Shee_ joined #perl6
18:45 TimToady std is probably missing a panic in the ! metaop
18:48 diakopter std: !\   \  \  \ \   \ \ \   \ \  \ \ \  \  \ 0--
18:48 buubot diakopter: Error: DBD::SQLite::db do failed: called with 3 bind variables when 4 are needed at plugins/karma_modify.pm line 61.
18:48 p6eval std 28957: OUTPUT«ok 00:01 106m␤»
18:48 diakopter buubot: erm
18:48 buubot diakopter: Couldn't match input.
18:49 diakopter buu: ^^ say wha?
18:50 TimToady it was trying to change the karma of 0, I guess
18:50 diakopter 0++
18:50 buubot diakopter: Error: DBD::SQLite::db do failed: called with 3 bind variables when 4 are needed at plugins/karma_modify.pm line 61.
18:50 diakopter null--
18:51 diakopter ''--
18:51 diakopter ' '--
18:51 diakopter 1--
18:51 diakopter ah well.
18:52 PerlJam undef++  :)
18:52 diakopter buubot: ?
18:52 buubot diakopter: Couldn't match input.
18:52 diakopter buubot: help
18:52 buubot diakopter: Provides help text for a specific command. Try 'help echo'. See also the command 'plugins' to list all of the currently loaded plugins.
18:52 * diakopter gets a room
18:53 mberends "tormenting the implementations"?
18:55 diakopter std: [\ ++\/o__o\/++ /]
18:55 p6eval std 28957: OUTPUT«ok 00:01 110m␤»
18:55 diakopter diakopter: I see what you did there...
18:56 TimToady some people like to torment themselves...
19:08 jnthn I'm still lost on what that parsed as...
19:08 diakopter std: 3 | | | | | | 4
19:08 p6eval std 28957: OUTPUT«ok 00:02 107m␤»
19:08 jnthn ...and that...
19:09 diakopter the first is whence the wild things peer
19:10 TimToady you just have to keep your terms/infixes/postfixes straight
19:11 sjohnson rakudo: say [1, 2, 3].WHAT;
19:11 p6eval rakudo d154eb: OUTPUT«Array()␤»
19:12 diakopter rakudo: say [\ ++\/o__o\/++ /].WHAT
19:12 p6eval rakudo d154eb: OUTPUT«Method 'succ' not found for invocant of class 'Regex'␤in Main (file src/gen_setting.pm, line 324)␤»
19:12 sjohnson diakopter: :)
19:12 jnthn Well, doesn't that succ.
19:12 sjohnson Q:  in p6 parlance, if i assign any array to a $ scalar, will it make a reference for me?  or need I use the & technology
19:13 jnthn In p6 parlance, reference is now like swearing.
19:13 jnthn Really, there's not much going on under the hood over than storing an array object in a scalar container.
19:13 jnthn The difference is the context it enforces on the RHS.
19:15 TimToady sjohnson: to the first approximation, everything is already a reference, so there's no point in mentioning it
19:15 diakopter rakudo: (/./)(/./)
19:15 p6eval rakudo d154eb: OUTPUT«set_pmc() not implemented in class 'Regex'␤in Main (file <unknown>, line <unknown>)␤»
19:15 sjohnson kinda like... $ref = <1 2 3>
19:16 TimToady so at some point we went through the specs and did s:g/reference/object/
19:16 sjohnson heh
19:16 sjohnson %s/bad parts/better parts/g
19:17 sjohnson yesterday my brother finally conceded that perl was a big deal after he was forced to write a server upgrade check point script
19:18 * sjohnson chalks up another point for perl
19:21 diakopter rakudo: say $(*)
19:21 p6eval rakudo d154eb: OUTPUT«!whatever_dispatch_helper␤»
19:22 sjohnson rakudo: say  ( `ー´).WHAT;
19:22 p6eval rakudo d154eb: OUTPUT«say requires an argument at line 2, near "  \uff08\u3000\uff40\u30fc\x{b4}\uff09.W"␤in Main (file src/gen_setting.pm, line 2593)␤»
19:23 diakopter rakudo: say $(1&\ &3&4) # jnthn: <---
19:23 p6eval rakudo d154eb: OUTPUT«all(1, undef, 4)␤»
19:26 pugs_svn r28958 | lwall++ | [Cursor] don't die on malformed caps
19:26 pugs_svn r28958 | [STD] EXPR now produces .caps without omitting the keys
19:26 pugs_svn r28958 | [STD] catch diakopter++'s :::::::::::::::::::::::::::::::: names
19:26 pugs_svn r28958 | [STD] refrain from producing LTA error messages on ! and !!
19:26 pugs_svn r28958 | [STD] put in better recursion protection in panic
19:26 pugs_svn r28958 | [STD] Regex must define its own infixstopper or s!foo!! doesn't like !!
19:26 pugs_svn r28958 | [STD] remove old crufty comments
19:26 pugs_svn r28958 | [viv] some code to detect accidental gaps
19:28 jnthn diakopter: Rakudo is probably fine on that one.
19:28 jnthn oh, maybe other than that &3 maybe isn't a valid identifier...
19:29 diakopter I think it thinks it's thinking it's a contextualizer
19:29 jnthn perhaps
19:29 jnthn Dunno
19:29 jnthn I don't really care.
19:30 TimToady std: &3
19:30 p6eval std 28957: OUTPUT«ok 00:02 126m␤»
19:30 jnthn I just wish we could detect these cases and be like "wtf are you doing" :-)
19:30 * PerlJam doesn't really grok what &3 should mean
19:30 PerlJam (in that context)
19:31 PerlJam std: |3
19:31 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:31 PerlJam crazy
19:31 sjohnson dereference of an int object?
19:31 PerlJam sjohnson: definitely not
19:31 TimToady just inlines it as a valid argument, which it already was
19:31 sjohnson PerlJam: i thought in P6, there are no wrong answers :)
19:32 jnthn TimToady: Is &3 actually a sub-ref?
19:32 * jnthn isn't sure what it's parsing as...
19:33 TimToady well, it thinks it's the name of a sub, but in general the parser doesn't check numeric names for existence
19:33 jnthn :-)
19:33 PerlJam std: ^3
19:33 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:33 TimToady presumably it's claiming that $/[3] is of type Code or some such
19:33 diakopter std: 0()
19:33 p6eval std 28957: OUTPUT«ok 00:01 102m␤»
19:33 PerlJam std: %3
19:34 p6eval std 28957: OUTPUT«ok 00:01 103m␤»
19:34 PerlJam std: *3
19:34 p6eval std 28957: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/oAQmtfo2IH line 1:␤------> [32m*[33m⏏[31m3[0m␤    expecting any of:␤     POST␤   bracketed infix␤    infix stopper␤    postfix␤        postfix_prefix_meta_operator␤       standard stopper␤       statement modifier loop␤
19:34 p6eval ..   terminator␤     whitespace␤FAILED 0…
19:34 PerlJam finally!  :)
19:34 sjohnson jnthn: perhaps we need a wtf: &3; bot
19:34 PerlJam std: ^3
19:34 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:35 diakopter rakudo: say $(1&\ &(say 99)&4)
19:35 PerlJam std: %3 + 2
19:35 p6eval rakudo d154eb: OUTPUT«Use of contextualizer & not implemented. at line 2, near "&4)"␤in Main (file src/gen_setting.pm, line 3073)␤»
19:35 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:36 TimToady maybe we need a new pragma
19:36 TimToady use mjd;
19:37 TimToady "You can't just make shit up and expect Perl to understand it at foo line 42"
19:37 jnthn There will be modules. :)
19:37 TimToady it would also change SORRY! to IDIOT!
19:38 PerlJam TimToady++  RETARDO!
19:38 PerlJam That line still cracks me up whenever I see it.
19:38 PerlJam It would be good easter egg to put in perl6 :)
19:38 TimToady actually, use abusive would be a good test of the error message internationalization mechanism
19:40 diakopter std: sub wtf(@^_, %^_) { die 'Worse Than Failure: '~@_ };
19:40 Juerd I'm actually against internationalizing error messages. It makes finding help using a search engine way too hard for seldom seen messages.
19:40 p6eval std 28957: OUTPUT«[31m===[0mSORRY![31m===[0m␤Placeholder variable @_ cannot override existing signature (@^_, %^_) at /tmp/zWAJHJXTQ0 line 1:␤------> [32m^_, %^_) { die 'Worse Than Failure: '~@_[33m⏏[31m };[0m␤    expecting any of:␤ POST␤   postfix␤  postfix_prefix_meta_operator␤
19:40 p6eval ..standard stopp…
19:40 TimToady or I guess that would actually be localization, where the locale in question is NYC
19:40 dukeleto Juerd: that is a good point
19:40 Juerd It keeps biting me hard in Windows.
19:41 diakopter hence error numbers/codes + messages
19:41 TimToady what you want is alternating lines of English and New Yorker
19:41 Juerd Also, it will pose the question "do we or do we not translate jargon" for every language.
19:42 TimToady I think it all goes into the the html file that the error message refers to :)
19:42 Juerd I've seen a Dutch translation of some Perl book that used "lijst" as the translation for both array and list. It's correct but incredibly unhelpful.
19:43 TimToady "Here you must be careful to distinguish lists from lists..."
19:43 sjohnson TimToady++ for:  use abusive;
19:43 TimToady abuse warnings;
19:43 diakopter std: sub (@*_, %*_, $*_) { };
19:43 p6eval std 28957: OUTPUT«ok 00:01 107m␤»
19:44 diakopter obtuse warnings;
19:44 Juerd Just only throw errors in the form of URLs
19:44 sjohnson i suppose use sugarcoating;  would be its opposit
19:44 jnthn abuse *;
19:45 sjohnson use Grammer::Nazi;
19:45 diakopter use punitive; # downloads/runs viruses/trojans on errors
19:45 Juerd diakopter: You have an evil mind.
19:45 TimToady std: sub (@*x, %*x, $*x) { }
19:45 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:45 lichtkind sjohnson: there is no such module :(
19:46 TimToady std: sub (@^x) { }
19:46 jnthn TimToady: Does that update the contextual currently in scope with that name?
19:46 p6eval std 28957: OUTPUT«Potential difficulties:␤  Illegal to use ^ twigil in signature at /tmp/hsUD3ZAkhN line 1:␤------> [32msub ([33m⏏[31m@^x) { }[0m␤ok 00:01 105m␤»
19:46 TimToady no, makes a new one
19:46 jnthn TimToady: Or just put it in a lexical that is context?
19:46 jnthn OK.
19:46 TimToady just like my $*x
19:46 jnthn OK.
19:46 jnthn Makes sense, just wanted to check.
19:47 diakopter std: sub (*&) { }
19:47 TimToady temp $*x also makes a new one these days, but inits it with the outer one
19:47 p6eval std 28957: OUTPUT«ok 00:01 105m␤»
19:47 PerlJam rakudo: my $x = 5; { temp $x = 7;  say $x }; say $x
19:47 p6eval rakudo d154eb: OUTPUT«Could not find non-existent sub temp␤in Main (file src/gen_setting.pm, line 324)␤»
19:47 PerlJam ah, rakudo doesn't do temp yet
19:48 TimToady temp on contextuals is a different animal though
19:48 TimToady just desugars to my $*X = CALLER::<$*X> or some such
19:49 jnthn What's the use-case for temp now that we have contextuals?
19:49 diakopter rakudo: (sub (*&) { say $ })(888)
19:49 p6eval rakudo d154eb: OUTPUT«Cannot take substr outside string␤in Main (file <unknown>, line <unknown>)␤»
19:49 PerlJam jnthn++ good question
19:50 diakopter Cannot take substr outside string?
19:50 diakopter (and what happened to src/gen_setting.pm, etc)
19:50 jnthn heh, that's an...interesting...one
19:51 diakopter rakudo: (sub (*$) { say $ })(888)
19:51 p6eval rakudo d154eb: OUTPUT«␤»
19:51 jnthn rakudo: sub foo($) { say $ }; foo(42)
19:51 p6eval rakudo d154eb: OUTPUT«␤»
19:52 jnthn heh
19:52 diakopter rakudo: (sub (*$) { say $.WHAT })(888)
19:52 p6eval rakudo d154eb: OUTPUT«Lexical 'self' not found␤in Main (file src/gen_setting.pm, line 324)␤»
19:52 TimToady temp would still let you temporize anything that wasn't expecting to be temporized, and restore it at the end of scope, provided its name was visible to you
19:52 TimToady and don't forget the 'let' form
19:52 TimToady presumably, if we have temp $*x then we also have let $*x
19:53 TimToady which would copy into its parent $*x when successful
19:53 jnthn Ooh
19:53 jnthn Transaction-y semantics.
19:54 TimToady yes, that's what let is intended for, on some level
19:54 diakopter rakudo: (sub (*@_) { say $_.WHAT })(888)
19:54 p6eval rakudo d154eb: OUTPUT«Failure()␤»
19:54 TimToady though I think of it more as hypotheticality
19:55 TimToady but rather than keeping a hidden global stack like p5's local, I think temp probably desugars to saving a temporary in the current pad
19:56 TimToady maybe even with an accessible contextual name
19:57 TimToady temp $x would mean something like my $*x_SAVE = $x; LEAVE { $x = $*x_SAVE }
19:58 TimToady though that would be buggy in the face of multiple 'temp $x' in the same scope
19:59 TimToady and let $x would just use UNDO instead of LEAVE
19:59 jnthn Heh, doing multiple in the same scope actually hadn't occured to me...
20:00 takadonet left #perl6
20:00 tylerni7 joined #perl6
20:04 pugs_svn r28959 | lwall++ | [STD_P5] also needs its own infixstopper
20:06 TimToady std: 1 ?? say 1,2,3 !! 'oops'
20:06 p6eval std 28958: OUTPUT«[31m===[0mSORRY![31m===[0m␤Ternary !! seems to be missing its ?? at /tmp/YpcvJwlYs7 line 1:␤------> [32m1 ?? say 1,2,3 [33m⏏[31m!! 'oops'[0m␤    expecting any of:␤    infix stopper␤    standard stopper␤ terminator␤FAILED 00:01 111m␤»
20:06 TimToady std: '1 | 2'
20:06 p6eval std 28958: OUTPUT«ok 00:01 102m␤»
20:06 TimToady std: '1 ! 2'
20:06 p6eval std 28958: OUTPUT«ok 00:02 102m␤»
20:07 pmichaud I haven't figured out how to implement temp, fwiw
20:07 TimToady er
20:07 TimToady std: 1 ! 2
20:07 pmichaud (in Rakudo/Parrot)
20:07 p6eval std 28958: OUTPUT«[31m===[0mSORRY![31m===[0m␤Negation metaoperator not followed by valid infix at /tmp/uRT72ShQYj line 1:␤------> [32m1 ![33m⏏[31m 2[0m␤    expecting any of:␤   bracketed infix␤  infix stopper␤    standard stopper␤ terminator␤FAILED 00:01 107m␤»
20:07 pmichaud we don't have LEAVE yet
20:07 jnthn pmichaud: 'cus we lack exit handlers?
20:07 pmichaud jnthn: right
20:08 TimToady well just watch for the reference counts to go to zero and then...oh wait...
20:08 TimToady std: :::::::::::::::::::::::::::::::​:::::::::::::::::::::::::::::::
20:08 p6eval std 28958: OUTPUT«[31m===[0mSORRY![31m===[0m␤Name component may not be null at /tmp/WgnEnTQoqy line 1:␤------> [32m::[33m⏏[31m:::::::::::::::​:::::::::::::::::::::::::[0m␤    expecting morename␤FAILED 00:01 102m␤»
20:08 pmichaud I'm hoping I can fake temp somehow until Parrot gives us exit handlers.
20:08 pmichaud I'm really not wanting to trap exceptions in every block.
20:09 TimToady well, P5 doesn't try to
20:10 TimToady it just knows how many things to peel back from the stack when it does catch the exception
20:10 TimToady for rakudo it could be part of unwinding, which doesn't happen till after the exception is handled anyway
20:11 jnthn pmichaud: Heh, I can think of a way. ;-)
20:11 pmichaud except we don't really have an "unwind" in Parrot
20:11 TimToady you will :)
20:11 pmichaud sure
20:11 diakopter rakudo: my $a = 3; say $a.WHAT; $a=[4,5]; say $a[0]; my %a := $a; say %a.WHAT
20:11 pmichaud 20:08 <pmichaud> I'm hoping I can fake temp somehow until Parrot gives us exit handlers.
20:11 p6eval rakudo d154eb: OUTPUT«Int()␤4␤Array()␤»
20:11 jnthn pmichaud: What always gets invoked when we leave a Parrot sub?
20:11 jnthn pmichaud: So we just subclass RetCont. ;-)
20:12 pmichaud jnthn: except we don't always leave a sub via a RetCont
20:12 jnthn .oO( no, I didn't just say that. )
20:12 ruoso joined #perl6
20:12 jnthn pmichaud: Ah, exceptions?
20:12 jnthn Meh.
20:12 diakopter (see above): my %a := $a  # is that valid?
20:12 pmichaud we might be able to hack something together with pushaction
20:12 pmichaud diakopter: it is if $a does Associative
20:13 pmichaud (in the example above, I would've expected a type error)
20:13 pmichaud Rakudo doesn't really implement type checking on binding yet
20:13 jnthn pmichaud: Perhaps. Or we maybe should figure out what we need from Parrot to do it properly.
20:14 pmichaud jnthn: Perhaps.  The discussion always gets bogged down in exceptions and inferior run loops, though, with people thinking that their generalizations somehow "fix" a problem (when in fact the proposed generalization is exactly equivalent to what we have now)
20:15 xp_prg joined #perl6
20:15 diakopter std: ~say ::= 1
20:15 p6eval std 28958: OUTPUT«ok 00:01 107m␤»
20:16 diakopter rakudo: ~say ::= 1
20:16 p6eval rakudo d154eb: OUTPUT«ResizablePMCArray: Can't pop from an empty array!␤in Main (file <unknown>, line <unknown>)␤»
20:17 * diakopter pretends not to look quizically
20:17 jnthn diakopter: You quite possibly just exploded the parser
20:17 pmichaud we don't have ::= yet, either
20:17 jnthn nqp: ~say ::= 1
20:17 p6eval nqp:  ( no output )
20:17 jnthn um.
20:17 pmichaud however, := and ::= will be two of the first operators implemented in rakudo-ng
20:18 pmichaud why the ~ ?
20:18 diakopter red herring
20:18 jnthn pmichaud: We're going to do binding properly?
20:18 pmichaud jnthn: sure, why not?
20:18 pmichaud it's easy now
20:18 jnthn pmichaud: OK, cool. :-)
20:18 pmichaud the only reason I haven't done it in Rakudo yet was because it would require lots of icky deep changes
20:18 jnthn No reason why not, if you know how it's going to look.
20:19 pmichaud I do.
20:19 pmichaud It ends up looking a lot like a signature bind.  :-)
20:20 jnthn OK. :-)
20:20 jnthn Hey, I know a little bit about signature binding. ;-)
20:20 diakopter rakudo: ::= #jnthn: yeah, maybe
20:20 p6eval rakudo d154eb: OUTPUT«ResizablePMCArray: Can't pop from an empty array!␤in Main (file <unknown>, line <unknown>)␤»
20:21 pmichaud it doesn't even require special help from the parser/compiler -- it's just  &infix:<:=>   and &infix:<::=>
20:21 diakopter even for chaining?
20:21 pmichaud even for chaining
20:22 diakopter std: 5 := 4 := 3
20:22 p6eval std 28959: OUTPUT«ok 00:01 104m␤»
20:23 diakopter rakudo: 8=8=8
20:23 p6eval rakudo d154eb: OUTPUT«Unable to set lvalue on PAST::Val node␤in Main (file <unknown>, line <unknown>)␤»
20:25 jnthn If I'm going to hack on a branch in git, should I somehow make it a "local branch" or soemthing too?
20:26 pmichaud i'd look at github guides and see what they suggest
20:26 mtnviewmark joined #perl6
20:27 jnthn "GitHub is Temporarily Offline."
20:27 jnthn joy.
20:28 pmichaud time to pick up kid from school
20:28 * pmichaud is Temporarily Offline.
20:33 PerlJam jnthn: hack on a remote branch you mean?
20:33 jnthn PerlJam: Yeah, but I figured it.
20:34 jnthn Apparently git checkout -b origin/ng
20:34 jnthn Should do it.
20:35 diakopter rakudo: .=($_={.()})
20:35 p6eval rakudo d154eb: OUTPUT«Could not find non-existent sub !.=␤in Main (file src/gen_setting.pm, line 324)␤»
20:35 PerlJam jnthn: um ... probably not.  (unless you're running a newer, smarter version of git)
20:35 diakopter rakudo: ($_={.()})()
20:35 p6eval rakudo d154eb: OUTPUT«maximum recursion depth exceeded␤in Main (file <unknown>, line <unknown>)␤»
20:36 PerlJam jnthn: what does "git br" say?  Do you have a branch called "origin/ng" now?
20:36 jnthn In the list is
20:36 jnthn * origin/ng
20:36 PerlJam jnthn: if so, that branch is the name of your local branch based off of master (or whatever branch you happened to be in when you made it)
20:36 jnthn Oh, before it I'd done git checkout origin/ng
20:36 PerlJam and it has nothing to do with the remote origin/ng branch
20:36 PerlJam oh.
20:36 PerlJam hmm
20:37 jnthn At which point git was all like "oh hai this is remote branch, you may want to do git checkout -b origin/ng"
20:37 PerlJam normally I just do  "git checkout -t origin/ng"
20:38 PerlJam it'll make a local branch called ng which is setup to track the remote branch
20:39 PerlJam anywho, you're good :)
20:39 jnthn Good to know the -t way, thanks.
20:40 PerlJam jnthn: btw, do you have aliases configured?  I find "git co", "git br", "git st", etc. so much more convienent  :)
20:40 jnthn no, I didn't
20:40 jnthn configure any.
20:41 PerlJam if you want, "git config --global alias.ci commit" etc.
20:41 PerlJam (that'll make an alias for commit called "ci")
20:42 Exodist joined #perl6
20:43 jnthn wow
20:43 jnthn git config --global alias.up pull
20:43 jnthn ;-)
20:44 PerlJam the push/pull dichotomy is well entrenched in my brain.  I'd just confuse myself if I made an up alias  :)
20:44 pmichaud pmichaud@orange:~/ng$ git checkout -t origin/ng
20:44 pmichaud fatal: git checkout: --track and --no-track require -b
20:45 PerlJam pmichaud: you've got an older git I bet
20:45 pmichaud git version 1.6.0.4
20:45 PerlJam yeah, that one is months old ;)
20:46 jnthn You need to git a newer version.
20:47 jnthn pmichaud: Wow. Rakudo now feels just like it was about 2 years ago when I started hacking on it. ;-)
20:47 PerlJam jnthn: that's some rakudo regression! :)
20:47 jnthn Clearly my first job is to do an epicly mis-guided implementation of Junctions!
20:48 tylerni7 joined #perl6
20:48 PerlJam as long as rakudo *acts* like it did yesterday, I'm fine if it feels like it did 2 years ago  ;)
20:49 PerlJam (it's still pretty amazing the progress that's been made in such a relatively short time.   I don't care what the perl 6 naysayers say)
20:49 jnthn pmichaud: Anyway, good news is that, uh, it builds. :-)
20:49 pmichaud from github/guides:
20:49 pmichaud Create a local branch that tracks one of the remote branches and then use that local branch:
20:49 pmichaud git checkout --track -b name_of_local_branch origin/name_of_remote_branch
20:50 PerlJam pmichaud: you should still upgrade your git :)
20:51 jnthn Heh. How do I know if I ahve something that actually is doing the right thing... :-/
20:51 pmichaud kubuntu 9.10 came out yesterday, I plan to test it out over the weekend
20:51 jnthn C:\Consulting\rakudo>git pull
20:51 pmichaud I suspect it has a newer git
20:51 jnthn You asked me to pull without telling me which branch you
20:51 jnthn Yes, I did the wrong thing. :-)
20:51 * jnthn tries pmichaud++'s suggestion
20:52 pmichaud github guides often knows the answers, when it's online :)
20:52 diakopter rakudo: my $a = sub ($b) { $a = Block.new($b) }; $a.=$a; $a.=$a # the first $a.=$a doesn't crash parrot
20:52 p6eval rakudo d154eb: OUTPUT«src/call/context.c:653: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_PMC) > idx'␤Backtrace - Obtained 14 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.1.7.0 [0x2b1709b38873]␤/home/p6eval//p1/lib/l​ibparrot.so.1.7.0(Parrot_confess+0x87)
20:52 p6eval ..[0x2…
20:52 jnthn oh screw
20:52 jnthn warning: refname 'origin/ng' is ambiguous.
20:52 jnthn warning: refname 'origin/ng' is ambiguous.
20:52 jnthn fatal: Ambiguous object name: 'origin/ng'.
20:52 pmichaud weird.
20:52 pmichaud it worked for me
20:52 pmichaud but I started from a fresh clone
20:52 PerlJam it should work for jnthn too, no matter how new his git is.
20:52 pmichaud if you already have an origin/ng branch lying about somewhere in your repo, it might fail
20:52 jnthn yes, I probably do. :-/
20:53 jnthn eww
20:53 pmichaud I tend to do fresh clones frequently, since it only takes a couple of seconds :)
20:53 PerlJam git++
20:53 jnthn aha
20:53 jnthn fixed
20:53 jnthn I think.
20:54 jnthn pmichaud: OK, so Perl6 directory contains the New Stuff?
20:54 jnthn And "parser" is not un-used?
20:54 jnthn (apart from Signature....)
20:54 pmichaud currently only src/Perl6 is used
20:54 diakopter rakudo: my $a = sub ($a) { Sub($a) }; $a.=$a; $a.=$a; say $a.perl
20:54 p6eval rakudo d154eb: OUTPUT«Class P6protoobject already registered!␤in Main (file <unknown>, line <unknown>)␤»
20:55 jnthn .oO( must not /kick ... )
20:55 jnthn pmichaud: OK.
20:55 diakopter :P
20:55 jnthn pmichaud: So...what now? :-)
20:56 pmichaud I'm having to rebuild my ng copy at the moment
20:56 pmichaud just a sec
20:57 PerlJam diakopter: ...
20:57 PerlJam rakudo: Sub().say
20:57 p6eval rakudo d154eb: OUTPUT«Class P6protoobject already registered!␤in Main (file <unknown>, line <unknown>)␤»
20:57 diakopter TimToady: re "yet another nail in the coffin" .... but does the nail have a hammer?  ;)
20:58 diakopter PerlJam: i c
20:58 PerlJam rakudo: Sub();
20:58 p6eval rakudo d154eb: OUTPUT«Class P6protoobject already registered!␤in Main (file <unknown>, line <unknown>)␤»
20:58 pmichaud jnthn: okay, I pushed print/say to ng
20:59 pmichaud now let's see how far we get with things
20:59 jnthn pmichaud: OK, nice.
20:59 pmichaud there's a directory called src/cheats for where we put our cheats
20:59 jnthn pmichaud: OK. How much are we going to cheat, and how much are we doing to try and not do so?
20:59 pmichaud cheat as little as we can, I'd guess
20:59 pmichaud but as long as we keep our cheats inside of src/cheats, we at least know where we're cheating
20:59 pmichaud I used that approach for nqp-rx and it worked really well
21:00 jnthn pmichaud: OK. So does this mean for example that we try and switch to using Perl 6 signatures in this branch early?
21:00 pmichaud as early as we reasonably can
21:00 jnthn I ask because Test.pm needs multi-dispatch (at least arity based).
21:01 jnthn And Perl6MultiSub needs Perl 6 Signatures.
21:01 pmichaud we can always fall back to parrot's multi-dispatch for Test.pm
21:01 pmichaud and I don't mind if we have cheats/test.pir either
21:01 jnthn I sorta can't be bothered... :-)
21:01 pmichaud but we really can't even do Test.pm until we have lexicals and assignment
21:01 sjohnson rakudo:  my @animals; @animals.push<piggy chicken cow>; say @animals.perl;
21:02 p6eval rakudo d154eb: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Perl6Array'␤in Main (file src/gen_setting.pm, line 324)␤»
21:02 jnthn I don't see it being excessively crazily hard to put enough in place to have enough of signatures and multi-dispatch to do what test.pm needs
21:02 pmichaud I don't either, necessarily
21:02 pmichaud but I'm still thinking "fix assignment and lexicals" before I begin to think about signatures
21:03 pmichaud if you want to start on signatures, no problem, I'm not saying we shouldn't do them early
21:03 jnthn Is there a way that those two are not parallelizable?
21:03 pmichaud afaict, they're parallelizable
21:03 jnthn That is, you take on assignment and lexicals, and I'll get basic sig stuff and basic multi-dispatch in place?
21:03 pmichaud sure
21:03 pmichaud just keep in mind that I'm likely to redo FETCH and STORE and the like
21:04 pmichaud and that I'm not sure how ObjectRefs will play out
21:04 jnthn That's fine.
21:04 pmichaud if you can get signatures w/o those, go ahead :)
21:04 jnthn Well, enough of them to get us started.
21:04 pmichaud right
21:04 pmichaud also when we pull in the base types I want to fix their names
21:04 jnthn The other thing is, how early do you plan to get us able to parse operator decls?
21:04 pmichaud i.e., no more Perl6Array
21:05 pmichaud parsing operator decls shouldn't be too hard
21:05 pmichaud so, is Object really CORE::Object ?
21:05 jnthn OK. 'cus if we get that in we can write all our ops in CORE.
21:05 sjohnson rakudo:  my @animals; @animals.push(<piggy chicken cow>); say @animals.perl;
21:05 p6eval rakudo d154eb: OUTPUT«["piggy", "chicken", "cow"]␤»
21:05 jnthn pmichaud: And then we import it?
21:05 pmichaud is there _anything_ that doesn't appear in CORE ?
21:05 diakopter kitchen_sink
21:05 diakopter o wait
21:06 pmichaud iirc, GLOBALS is really CORE::GLOBALS
21:06 pmichaud etc.
21:06 pmichaud is CORE just a fancy way of saying "root" ?
21:06 pmurias joined #perl6
21:06 TimToady no, GLOBALS is UNIT::GLOBALS now
21:06 pmichaud is that really CORE::UNIT::GLOBALS ?
21:06 TimToady nothing mutable appears in CORE
21:07 pmichaud (apologies that I haven't brushed up on this yet)
21:07 pmichaud okay, so our "top-level" namespaces are CORE, UNIT, and ... ?
21:07 jnthn pmichaud: S02 lists CORE as a pseudo-package.
21:07 TimToady no, CORE, UNIT, SETTING are all top-level pseudo package names
21:07 jnthn UNIT        # Symbols in the outermost lexical scope of compilation unit
21:07 TimToady I mean, yes.  :)
21:08 jnthn pmichaud: S02
21:08 pmichaud jnthn: yes, I know
21:09 pmichaud so, the builtin types all appear in CORE
21:09 pmichaud and are imported into UNIT ?
21:09 pmichaud no, wait.
21:10 TimToady there is no need to import from an outer lexical scope
21:10 pmichaud CORE is the outermost lexical scope... right
21:10 pmichaud GLOBAL is immutable?
21:10 TimToady no
21:10 pmichaud because it's really CORE::GLOBAL
21:11 TimToady GLOBAL now lives in UNIT
21:11 diakopter rakudo: delete ::CORE
21:11 p6eval rakudo d154eb: OUTPUT«Null PMC access in does_pmc()␤in Main (file <unknown>, line <unknown>)␤»
21:11 pmichaud ah, S02 is fossiled there, then
21:11 TimToady see r28880
21:11 pmichaud GLOBAL      # Interpreter-wide package symbols, really CORE::GLOBAL
21:12 pmichaud so UNIT is lexically nested within CORE
21:13 pmichaud and we start up in UNIT::GLOBAL
21:14 pugs_svn r28960 | lwall++ | [S02] remove fossil found by pmichaud++
21:14 TimToady yes, so our $foo in the main program is really in both UNIT and GLOBAL
21:14 TimToady (unless they switch to a different package)
21:15 pmichaud and UNIT/CORE/etc are really pseudo-package names, there aren't really namespace objects with those names (could be different per-implementation)
21:15 avar joined #perl6
21:15 pmichaud anyway, good enough for me
21:15 TimToady I just kicked PROCESS to being standalone; we could do that for GLOBAL too, I suppose
21:15 pmichaud jnthn: so, returning to signatures -- keep in mind that I hope to be updating Array/Hash in the process as well
21:15 TimToady it would prevent people from overriding the GLOBAL:: name in an inner lexical scope
21:16 jnthn pmichaud: Updating in what sense?
21:16 jnthn pmichaud: Are we actually going to do "has an RPA" rather than "is an RPA" at last?
21:16 pmichaud fixing some of their methods, and trying to prepare for dealing with flattening/non-flattening behavior
21:16 pmichaud we'll still have "isa RPA", but that'll probably be Array instead of List
21:17 jnthn That will probably have to go away eventually though, I guess?
21:17 pmichaud maybe
21:17 pmichaud or perhaps it'll just be the case that RPA pretends it's an Array
21:17 jnthn Array needs to become a (parametric) role really.
21:17 pmichaud perhaps all of our built-in classes need to become roles.
21:17 sjohnson rakudo:  my @animals; @animals.push('piggy', 'chicken', 'cow'); say @animals.perl;
21:17 p6eval rakudo d154eb: OUTPUT«["piggy", "chicken", "cow"]␤»
21:17 jnthn I'm not sure about *all* of them.
21:17 pmichaud well, Int, Str, etc.
21:18 jnthn Yeah
21:18 jnthn Quite possibly.
21:18 __ash__ joined #perl6
21:18 pmichaud anyway, rather than me worrying about nth-level details, let's just start and I'll carp when I don't like something :)
21:19 jnthn OK, catch you after my next commit. ;-)
21:19 pmichaud in general I'd like to not do wholesale copying of say, all the builtins or the entire setting in one fell swoop
21:19 jnthn Me either.
21:20 jnthn Oh hmm. I wonder how many multis we actually have in the perl6 HLL namespace at this point?
21:25 Whiteknight joined #perl6
21:29 cognominal joined #perl6
21:30 pmurias joined #perl6
21:30 diakopter std: our &package; package( package package { &package(package::) } );
21:30 p6eval std 28960: OUTPUT«ok 00:02 128m␤»
21:31 pmurias std:sub sub {}
21:31 diakopter std: sub sub {}
21:31 p6eval std 28960: OUTPUT«ok 00:01 102m␤»
21:31 pmurias p6 has no keywords?
21:32 pmurias reserved words
21:33 pmichaud jnthn: in answer to your earlier question -- parsing operator decls should be really easy overall.  custom operators will require slightly more work (because we have to modify the parser as we go)
21:33 diakopter std: class role does role { }
21:33 p6eval std 28960: OUTPUT«ok 00:02 102m␤»
21:33 pmichaud but for the builtin operators, that should occur very soon.
21:34 jnthn pmichaud: OK. I guess we can just shoot for writing them all in CORE right off then.
21:34 pmichaud maybe :-)
21:34 pmichaud but yes, sooner rather than later
21:34 jnthn pmichaud: I'm just studying STD at the moment to get a feel for signature stuff.
21:34 diakopter std: role does does does { }
21:34 p6eval std 28960: OUTPUT«ok 00:01 102m␤»
21:34 pmichaud good idea :-)
21:35 pmichaud I'm about to get started on 01-literals.t
21:35 pmichaud just added listops
21:35 jnthn pmichaud: Ah, nice.
21:35 diakopter std: role does does does does does does does does does { }
21:35 p6eval std 28960: OUTPUT«ok 00:01 102m␤»
21:38 jnthn pmichaud: STD talks about a $*CURPAD.<$?SIGNATURE>
21:38 jnthn I'm trying to work out exactly what it's for though.
21:38 pmichaud STD keeps track of lexicals while parsing
21:38 diakopter std: role is is is does is is also is does is also does also { }
21:38 p6eval std 28960: OUTPUT«ok 00:02 102m␤»
21:38 pmichaud whereas Rakudo would do it in the PAST structure
21:38 jnthn Ah, OK.
21:39 jnthn So in that aspect, I shouldn't be trying to follow STD too literally if it feels way unnatural?
21:39 pmichaud I wouldn't follow STD too literally yet, no.
21:39 jnthn OK, that's good to know.
21:39 pmichaud in general we probably want to use very similar rules
21:39 pmichaud (i.e., the overall parse structure)
21:40 pmichaud but I'm not worried about having all of the syntactic checks in place yet
21:40 jnthn OK.
21:40 pmichaud also keep in mind that we don't have :temp
21:40 jnthn *nod
21:40 pmichaud we can emulate :temp for contextuals to a good approximation, when we need it
21:41 quietfanatic joined #perl6
21:42 pugs_svn r28961 | pmurias++ | [mildew-js] initial implementation of PrototypeHOW and p6opaque,
21:42 pugs_svn r28961 | t/knowhow.t passes
21:43 Schwern joined #perl6
21:43 diakopter rakudo: say ::quietfanatic
21:43 p6eval rakudo d154eb: OUTPUT«Null PMC access in type()␤in Main (file <unknown>, line <unknown>)␤»
21:43 pmurias moritz_: how often is mildew recompiled?
21:43 quietfanatic I am not a class.
21:43 diakopter we'll see about that
21:45 jnthn pmichaud: Should I expect e.g. ":my $*IN_DECL = 'sig';" to fail?
21:46 pmichaud :=
21:46 jnthn oh
21:46 pmichaud I need to add the "can't use assignment" warning
21:47 pmichaud trivial to add in nqp-rx, if anyone wants to do that :-)
21:47 jnthn :-)
21:47 pmichaud oh, I'll add it now
21:50 jnthn heh, I also just tripped up on <.panic: "Malformed parameter"> :-)
21:50 jnthn <.panic: 'Malformed parameter'> # works fine though :-)
21:50 pmichaud right
21:50 pmichaud I can now fix double quotes to work too
21:50 pmichaud (too many loose ends)
21:50 jnthn Don't worry, it's not a big deal.
21:50 jnthn Unless you want to do it.
21:50 jnthn :-)
21:51 pmichaud oh, it needs to be done at some point
21:51 pmichaud they're all trivial fixes, just so many of them to do
21:51 sjohnson diakopter->mutateInto('roflcopter');
21:52 pmichaud pmichaud@orange:~/ng/nqp-rx$ ./nqp
21:52 pmichaud > my $a = 4;
21:52 pmichaud Assignment ("=") not supported in NQP, use ":=" instead at line 1, near " 4;\n"
21:52 pmichaud >
21:52 lambdabot not an expression: `'
21:52 lambdabot <no location info>: parse error on input `='
21:52 dalek nqp-rx: 8c4c7d0 | pmichaud++ | src/NQP/Grammar.pm:
21:52 dalek nqp-rx: Issue an error if someone attempts to use assignment instead of binding.
21:52 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8​c4c7d0a7b280019384a05b747b498d8f02c43c0
21:58 pmurias mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo;
21:58 p6eval mildew-js: OUTPUT«execute(): execute error: ReferenceError: default_method_signature_BIND_mold is not defined at mildew line 344.␤»
21:59 pmurias diakopter: did you set up a make to be periodicly run in re-mildew?
22:01 patspam joined #perl6
22:07 diakopter pmurias: no
22:08 diakopter does it need its own build separate from mildew's?
22:10 pmurias diakopter: you mean re-mildew?
22:10 pmurias mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo;yo
22:10 pmurias mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo;
22:10 p6eval mildew-js: OUTPUT«execute(): execute error: ReferenceError: default_method_signature_BIND_mold is not defined at mildew line 344.␤»
22:10 p6eval mildew-js: OUTPUT«execute(): execute error: ReferenceError: default_method_signature_BIND_mold is not defined at mildew line 344.␤»
22:10 pmurias diakopter: mildew-js needs a make in re-mildew
22:11 pugs_svn r28962 | pmurias++ | [mildew-js] add passing tests to TESTS-js
22:11 Su-Shee left #perl6
22:11 nihiliad joined #perl6
22:11 * diakopter looks
22:16 rafl_ joined #perl6
22:16 diakopter mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo;
22:16 p6eval mildew-js: OUTPUT«methods work?␤»
22:17 diakopter pmurias: ok I set it to run at 29 after the hour
22:18 diakopter I think
22:18 diakopter :)
22:19 pmurias thanks
22:20 brunov joined #perl6
22:23 jnthn mmm...this sig code is shaping up *so* cleaner than what we had before. :-)
22:36 pmichaud good
22:36 pmichaud it should
22:37 pmichaud for some reason I can't get my .hll attribute on the block :-(
22:38 jnthn Oddness. :-/
22:38 * pmichaud summons Data::Dumper
22:40 pmichaud doh!
22:42 pmichaud do we really need to test \c inside of 01-literals.t ?
22:42 pmichaud I don't think so.
22:42 pmichaud (begone, foul test!)
22:43 jnthn No, we don't.
22:43 jnthn Unless Test.pm uses it. ;-)
22:43 jnthn (which would surprise me)
22:43 pmichaud if it does, then Test.pm can be fixed also :)
22:44 pmichaud 01-literals.t now passes :)
22:44 pmichaud only 520 more test files to go!
22:46 pmichaud ...I suppose dalek only watches the master branch of the rakudo repository...
22:48 jnthn Yes.
22:48 jnthn No karma for us for 2 weeks! :'(
22:49 pmichaud unless someone can reconfigure dalek to watch ng also :)
22:49 jnthn pmichaud++ # for 01-literals.t passing ;-)
22:51 diakopter what does ng denote
22:51 pmichaud "next generation"
22:51 pmichaud "new grammar"
22:52 pmichaud afk, dinner
22:53 jnthn "nauseatingly gnarley"
23:00 diakopter "
23:01 jnthn syntax error: closing " not found
23:09 diakopter pmichaud: (or anyone else who has edit access) if you add the ng branch to http://www.parrot.org/languages  let me know and I'll SIGHUP to dalekbot and it should grab it ottomajiklee
23:09 envi^home joined #perl6
23:12 pmichaud diakopter: ummm, how does one add a branch to that page?
23:13 diakopter I think the script is smart enough to get the url correct
23:13 * diakopter checks to be certain
23:13 pmichaud but the url would be essentially the same as the rakudo url
23:13 diakopter http://github.com/rakudo/rakudo/tree/ng
23:13 pmichaud okay
23:13 * diakopter checks again
23:14 jnthn pmichaud: Can I add somewhere a cheat to create Object?
23:14 pmichaud you can import src/classes/Object.pir if you wish
23:14 jnthn pmichaud: OK, thanks.
23:14 pmichaud s/import/re-enable/
23:14 diakopter hm, maybe those just get sent to #parrot
23:15 jnthn pmichaud: It's just that the signature binder cries if it doesn't have *some* nominal type for parameters. ;-)
23:15 pmichaud right
23:15 pmichaud I expect to have the official versions of Object and Any tonight
23:15 jnthn OK, excellent.
23:15 jnthn Where should I stick it for now?
23:15 jnthn Just as an include in compiler.pir?
23:15 pmichaud that's fine
23:15 pmichaud I'll have the gen_* scripts up soon also
23:16 jnthn OK, cool.
23:16 diakopter pmichaud: nm; I found the right place to add it..
23:16 pmichaud diakopter++  # thanks!
23:19 dalek left #perl6
23:19 dalek joined #perl6
23:20 diakopter someone push to ng?
23:23 jnthn aww...merge conflicts.
23:25 pmichaud jnthn: we're likely to have a few of those as we get the core pieces in place
23:25 jnthn diakopter: just about to push, after I make sure I didn't hash up the merge.
23:25 jnthn pmichaud: yes, I think I've got it resolved now :-)
23:25 pmichaud jnthn: once we're a bit past the core, conflicts should be less frequent
23:25 pmichaud I think I undid one of your changes earlier because I didn't want to fix up the Makefile :0|
23:25 jnthn heh
23:26 jnthn Please don't undo this latest one. It was a couple of hours of effort. :-P
23:26 pmichaud oh, I won't.
23:26 pmichaud unless it's wrong, of course 1/2 :-)
23:30 pmichaud uh oh, EXPR fail
23:31 jnthn Is that like EPIC fail, but different?
23:31 pmichaud yeah
23:32 jnthn lolipushed
23:32 jnthn OK, we're using the Rakudo signature binder now.
23:33 pmichaud scary
23:33 pmichaud I think I'm going to need a mental break (not "breakdown"!) soon
23:33 jnthn lol
23:33 jnthn Yes, it's half past midnight here and I think that push is about the last I'll manage tonight.
23:34 pmichaud well, I'll take a break for an hour or two, then probably get another nearly-full-day's work in overnight
23:34 jnthn OK, awesome.
23:34 jnthn I may just do another Rakudo Day tomorrow.
23:34 pmichaud so hopefully have things stable and far enough along for you to do more hacking over the weekend whenever you want
23:34 pmichaud (I expect to be working on this most of the weekend)
23:34 jnthn We've got some momentum on this now...would be nice to keep it going. :-)
23:34 pmichaud agreed
23:35 pmichaud I'm pleased with how easily things seem to be coming together, overall
23:35 jnthn Yeah.
23:35 pmichaud we'll see if it lasts :)
23:35 jnthn I like the new signature code a lot more than what it replaced.
23:35 pmichaud I'll look at it and let you know if I feel the same :-)
23:35 pmichaud (likely yes)
23:35 jnthn We don't screw around building a bunch of PAST nodes to hold information that we then toss away.
23:35 pmichaud right
23:35 pmichaud we get it right the first time, and have the contextual information we need available
23:35 jnthn I added a compile-time Parameter class, to go with Signature.
23:36 jnthn It's now nice and clean.
23:36 pmichaud okay, I'll look it over
23:36 jnthn $*PARAMETER.pos_slurpy( $quant eq '*' && $*PARAMETER.sigil eq '@' );
23:36 jnthn :-)
23:36 jnthn And such.
23:36 pmichaud right now there seems to be a bug with prefix ops in the expression parser
23:36 jnthn Ah
23:37 jnthn Present in NQP too?
23:37 pmichaud don't know yet
23:37 jnthn OK
23:38 pmichaud ah, no, bug in my adding of the new precedence level
23:38 pmichaud (whew!)
23:42 jnthn lol...incredibly, we also support a feature that Rakudo master never got around to supporting (because I couldn't face the refactoring it'd take to do it...)
23:45 pmichaud we'll have a lot of that soon
23:46 pmichaud being able to do lexical initialization correctly will be a huge benefit
23:46 jnthn Yes
23:46 pmichaud as well as having proper rw properties
23:46 jnthn In this case it's just named params of the :foo(:bar(:$baz)) form.
23:46 pmichaud oooh, nice
23:47 jnthn Which the sig binder and even Signature class have supported since I implemented them.
23:47 jnthn But in the old actions file was a bit of a nuisance to do.
23:48 jnthn (so I was lazy ;-))
23:48 pmichaud less of a nuisance today :)
23:48 jnthn Yes
23:48 jnthn named_param's action method is 2 lines long.
23:48 pmichaud there's a fair bit of that.
23:49 s1n anyone know if there are svg's of the "onion" TPF logo available somewhere?
23:51 jnthn oh eek, we didn't put Perl6Hash back yet so the signature binder has a huge sad about named params.
23:51 pmichaud you can add that one back also if you wish
23:51 jnthn pmichaud: Nah, we need to rename it anyway.
23:51 jnthn pmichaud: I'll just have the sig binder make a normal Hash for the time being.
23:51 pmichaud better.
23:52 jnthn pmichaud: or I guess we could leave it for now, since Test.pm I think doesn't need named params anyway.
23:52 pmichaud that's fine with me also
23:52 pmichaud 02-op-math.t passes.
23:53 pmichaud (pushed)
23:55 jnthn meh, I just added a couple of #define's at the top of bind.c and switched it to Hash, but it'll be easy to change back later.
23:56 diakopter (pushed) # hrm
23:56 jnthn heh win
23:56 jnthn > sub foo(:z(:y(:$x))) { say($x) }
23:56 jnthn > foo(:x(1)); foo(:y(2)); foo(:z(3));
23:56 jnthn 1
23:56 jnthn 2
23:56 jnthn 3
23:56 lambdabot <no location info>: parse error on input `('
23:56 lambdabot <no location info>: parse error on input `;'
23:57 pmichaud I has a WIN.
23:57 pmichaud *haz
23:57 pmichaud LOLFAIL
23:58 pmichaud it's scary how easy it is to add this stuff back in
23:58 jnthn Yes
23:58 jnthn Though one thing I didn't think of an easy answer for yet...
23:59 jnthn Lexical multis.
23:59 pmichaud have you looked at how nqp does lexical subs?
23:59 jnthn yeah
23:59 jnthn Just makes a lexical entry in the lexpad of the thingy holding it
23:59 pmichaud my guess is that we have !add_multi   which takes an existing multi, adds other multis to it, and returns the result

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo