Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-09-29

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:01 BenGoldberg p: printf '%d,%dX', $_ % 16, $_ / 16 for (0..255).pick(20)
00:02 camelia pugs: OUTPUT«(timeout)»
00:02 BenGoldberg p: printf '%d,%dX', $_ % 16, $_ / 16 for (0..255).pick(1)
00:02 camelia pugs: OUTPUT«(timeout)»
00:02 BenGoldberg p: .say for (0..255).pick(1)
00:02 camelia pugs: OUTPUT«66␤»
00:02 sizz joined #perl6
00:02 BenGoldberg p: print '', $_ % 16, ',', $_ / 16, 'X' for (0..255).pick(1)
00:02 camelia pugs: OUTPUT«3,13.1875X»
00:03 colomon oO
00:03 BenGoldberg rpn: print 5/16
00:03 camelia rakudo d3c8d5, niecza v24-95-ga6d4c5f, pugs: OUTPUT«0.3125»
00:03 BenGoldberg rpn: printf '%d', 5/16
00:04 camelia pugs: OUTPUT«(timeout)»
00:04 camelia ..rakudo d3c8d5, niecza v24-95-ga6d4c5f: OUTPUT«0»
00:04 BenGoldberg p: print '', $_ % 16, ',', $_ +>> 4, 'X' for (0..255).pick(1)
00:04 camelia pugs: OUTPUT«*** ␤    Unexpected ">>"␤    at /tmp/FwIMT6bKyR line 1, column 30␤»
00:04 Guest6057 joined #perl6
00:05 BenGoldberg p: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(1)
00:05 camelia pugs: OUTPUT«,12X»
00:05 BenGoldberg rpn: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(1)
00:05 camelia pugs: OUTPUT«,0X»
00:05 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«7,13X»
00:05 camelia ..rakudo d3c8d5: OUTPUT«,8X»
00:05 BenGoldberg rpn: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(20)
00:05 camelia niecza v24-95-ga6d4c5f: OUTPUT«7,9X,2X9,10X,7X7,2X4,5X,14X9,7X1,5X,10X8,15X,0X3,7X5,11X5,9X,7X,10X,5X,14X5,7X»
00:05 camelia ..pugs: OUTPUT«3,2X4,10X,11X9,0X,13X2,7X,0X3,12X9,1X6,9X3,7X1,9X,7X9,10X2,8X,13X9,8X6,15X,8X3,4X»
00:05 camelia ..rakudo d3c8d5: OUTPUT«9,12X,13X8,1X,4X,0X8,10X7,3X9,0X,10X7,4X6,5X3,11X,15X,10X4,7X7,1X1,10X1,11X0,13X1,4X»
00:06 BenGoldberg rpn: printf '%d,%dX', $_ % 16, $_ +> 4 for (0..255).pick(*)
00:06 camelia pugs: OUTPUT«(timeout)»
00:06 camelia ..niecza v24-95-ga6d4c5f: OUTPUT«3,6X6,6X,1X7,0X7,6X4,6X,3X6,11X5,4X,2X2,10X6,9X,14X,6X7,13X9,11X3,12X,5X,11X6,14X9,0X8,9X,9X,14X7,4X,6X9,13X9,1X,8X1,0X9,14X,4X8,0X9,9X,0X,3X0,13X6,4X2,0X,13X,6X2,11X,6X,15…»
00:06 camelia ..rakudo d3c8d5: OUTPUT«1,14X4,13X6,11X,9X7,4X7,9X,13X,10X3,14X4,2X,7X5,6X4,6X,12X,15X2,11X8,0X,14X7,11X,1X,9X5,4X0,8X1,9X4,10X,3X3,4X3,11X,7X7,13X3,7X,7X4,9X,15X4,0X8,1X3,12X,6X,2X3,0X,5X2,8X,14X,5X9,9X…»
00:06 BenGoldberg pugs's printf is borken?
00:12 Psyche^_ joined #perl6
00:17 berekuk joined #perl6
00:23 BinGOs_ joined #perl6
00:37 logie joined #perl6
00:45 sjohnson *rainbows*
00:46 stevan_ joined #perl6
00:56 lue BenGoldberg: it might be the 256 card draws.
01:01 btyler joined #perl6
01:07 Mouq rnp: anon anon
01:07 camelia niecza v24-95-ga6d4c5f: OUTPUT«[31m===[0mSORRY![31m===[0m��Malformed anon at /tmp/kHO3hNbtYT line 1:�------> [32manon[33m�[31m anon[0m��Parse failed��»
01:07 camelia ..pugs: OUTPUT«*** No such subroutine: "&anon"␤    at /tmp/nSM0ibaS_m line 1, column 1 - line 2, column 1␤»
01:07 camelia ..rakudo d3c8d5: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Type 'anon' is not declaredâ�¤at /tmp/AvLuXOo2E2:1â�¤------> [32manon anon[33mâ��[31m<EOL>[0mâ�¤Malformed anonâ�¤at /tmp/AvLuXOo2E2:1â�¤------> [32manon [33mâ��[31manon[0mâ�¤    expecting any of:â�¤        scoped declaratorâ�¤â�¤â€¦Â»
01:08 Mouq oop
01:16 Ben_Goldberg joined #perl6
01:24 lue day 1, slide 51: shouldn't that be <section>*, instead of <section>+ ?
01:40 TimToady r: say 300000 / 6473
01:40 camelia rakudo d3c8d5: OUTPUT«46.346362␤»
01:43 berekuk joined #perl6
01:44 stevan_ joined #perl6
01:46 stevan_ joined #perl6
02:07 btyler joined #perl6
02:09 daniel-s_ joined #perl6
02:09 FROGGS joined #perl6
02:34 [Coke] TimToady: r/j - are you using "make spectest" or t/spec/test_summary ?f
02:34 yoleaux 28 Sep 2013 16:48Z <diakopter> [Coke]: looks like too many open files is killing my irssi
02:35 TimToady spectest, I said
02:36 [Coke] yes, sorry, that was a miskey.
02:37 [Coke] TimToady++
02:37 TimToady young people these days...
02:38 [Coke] Miss Key?
02:38 TimToady Francis Scott's daughter, apparently
02:46 mberends joined #perl6
02:56 * [Coke] tries a run locally with test_summary.
03:02 lue Does anyone else see that the provided IRC log for Exercise 2 of jnthn's slides has some annoying mojibake? I'm not sure how to go about fixing it...
03:10 preflex joined #perl6
03:10 * TimToady is tired of the irclogs taking long spaceless output lines as an excuse to install a horizontal scrollbar
03:12 diakopter .ask moritz inject breaking zero width spaces at punctuation? (see this place in the cloggers)
03:12 yoleaux diakopter: I'll pass your message to moritz.
03:27 SamuraiJack_ joined #perl6
03:28 odoacre_ joined #perl6
03:29 c1sung joined #perl6
03:37 lue .oO(It should be solvable with some CSS, at least the pretty HTML pages)
05:20 dayangkun joined #perl6
05:23 yoleaux joined #perl6
05:26 REPLeffect joined #perl6
05:48 araujo joined #perl6
06:15 hummeleB1 joined #perl6
06:26 moritz diakopter: weird, works in dev
06:26 yoleaux 03:12Z <diakopter> moritz: inject breaking zero width spaces at punctuation? (see this place in the cloggers)
06:27 moritz .oO( now it's op's problem; too bad I'm op too )
06:34 moritz and I just found that the backups of irclog.perlgeek.de didn't work
06:52 darutoko joined #perl6
06:58 ivanshmakov joined #perl6
06:59 FROGGS joined #perl6
07:09 dmol joined #perl6
07:17 FROGGS .tell timotimo on rakudo/parrot these tests fail too: Unexpected named parameter 'exists' passed
07:17 yoleaux FROGGS: I'll pass your message to timotimo.
07:17 FROGGS .tell timotimo the env test for example
07:17 yoleaux FROGGS: I'll pass your message to timotimo.
07:22 kaare_ joined #perl6
07:27 [Sno] joined #perl6
07:29 dalek nqp: 100bab2 | (Tobias Leich)++ | src/vm/parrot/ops/nqp.ops:
07:29 dalek nqp: fix typo, BenGoldberg++
07:29 dalek nqp: review: https://github.com/perl6/nqp/commit/100bab2e06
07:29 cognominal joined #perl6
07:30 dalek rakudo/nom: 6a56000 | (Tobias Leich)++ | tools/build/NQP_REVISION:
07:30 dalek rakudo/nom: bump nqp revision
07:30 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6a56000ddf
07:32 aindilis` joined #perl6
07:33 sqirrel joined #perl6
07:54 FROGGS Mouq: ping
08:00 krokite joined #perl6
08:05 Rotwang joined #perl6
08:12 moritz diakopter: turns out the fix is not trivial; the basic case is already covered, and the one you observed is now documented here: https://github.com/moritz/ilbot/issues/26
08:17 moritz ... and as soon as I wrote that, I had an idea for a fix :-)
08:23 diakopter moritz: why not make a mode where irc colors are converted to css colors
08:24 * diakopter is annoyed tonight's SNL hasn't appeared online yet
08:25 spider-mario joined #perl6
08:27 moritz diakopter: I didn't have any motivation left for that after trying to deal with the ANSI colors :-)
08:45 odoacre_ joined #perl6
08:58 BinGOs joined #perl6
09:05 grondilu joined #perl6
09:06 berekuk joined #perl6
09:40 ivanshmakov joined #perl6
09:50 berekuk joined #perl6
09:51 GlitchMr joined #perl6
09:57 denisboyun joined #perl6
10:09 iSlug joined #perl6
10:14 masak good noon, #perl6
10:15 moritz \o masak
10:43 berekuk joined #perl6
10:44 nwc10 OK, so trying to build Rakudo on the JVM on a Raspberry Pi seems to be able to SEGV the JVM, or kernel panic the machine
10:45 nwc10 I'm suspicious that the USB drivers are shit
10:45 nwc10 and everything you might want to use to mount external swap is on USB
10:51 berekuk joined #perl6
10:54 masak nwc10++ # building Rakudo on things
10:55 masak nwc10: did you ever successfully build Rakudo/Parrot on the pi?
11:14 denis_boyun joined #perl6
11:15 iSlug joined #perl6
11:30 nwc10 masak: yes, some time back. Not tried recently
11:33 masak cool.
12:06 dalek roast: e778706 | (Elizabeth Mattijsen)++ | S (9 files):
12:06 dalek roast: Part 2 of 2 of eradication of .exists from spectests
12:06 dalek roast: review: https://github.com/perl6/roast/commit/e77870612a
12:09 PacoAir joined #perl6
12:12 sqirrel joined #perl6
12:13 dalek specs: 069bda8 | (Elizabeth Mattijsen)++ | S02-bits.pod:
12:13 dalek specs: Clarification on usefulness of %h<a>:!exists
12:13 dalek specs:
12:13 dalek specs: After having been caught by this a few times while adapting the test-suite.
12:13 dalek specs: review: https://github.com/perl6/specs/commit/069bda8c34
12:24 masak ooh, I've never triggered that, but I can see how it could be an issue.
12:24 masak lizmat++
12:25 masak my personal rule for negation is something like "as close to the action as possible". so I naturally reach for :!exists
12:25 masak and my last resort is always 'if not'
12:26 lizmat glad to hear that :!exists feels natural
12:26 grondilu_ joined #perl6
12:27 lizmat I seem to remember the days a few months ago where the variability of :advers was limited to just True  :-)
12:27 lizmat :adverbs
12:32 grondilu joined #perl6
12:36 masak hehe :)
12:36 masak as far as I recall, I suggested that :!exist have the semantics it does today.
12:43 denis_boyun joined #perl6
12:43 masak r: my %h; if ! %h<foo> :exists { say "righty-o" }
12:43 camelia rakudo 6a5600: OUTPUT«Unexpected named parameter 'exists' passed␤  in sub prefix:<!> at src/gen/CORE.setting:3611␤  in block  at /tmp/utqFI3UiTP:1␤␤»
12:43 masak r: my %h; if not %h<foo> :exists { say "righty-o" }
12:44 camelia rakudo 6a5600: OUTPUT«righty-o␤»
12:44 masak seems I've internalized enough of Perl 6's parsing logic that the above feels completely natural to me.
12:45 masak the thing to know about operator adverbs is that they look back and find, not the closest term textually, but the top operator in the AST.
12:46 masak in the case of '%h<foo>', that's postcircumfix:<{ }>. in the case of '!%h<foo>', that's prefix:<!>.
12:49 Ulti I'm just playing with delegation and was wondering if someone could point me in the right direction? https://gist.github.com/MattOates/dd32fb60f5d1e9e2eb64
12:49 Ulti I have a cat and I want it to meow :/
12:49 Ulti but it just prints Nil all the time as if I'm not getting the vocab into the object that is being delegated to
12:53 masak r: class Mouth { method speak { say "meow" } }; class Cat { has $!mouth handles "speak" = Mouth.new }; Cat.new.speak
12:53 camelia rakudo 6a5600: OUTPUT«meow␤»
12:54 masak r: class Mouth { method speak { say "meow" } }; class Cat { has $!mouth handles :meow<speak> = Mouth.new }; Cat.new.meow
12:54 camelia rakudo 6a5600: OUTPUT«meow␤»
12:54 masak Ulti: oh, I see your problem.
12:55 masak Ulti: @!vocab is '!'-private, so it can't be initialized by the default .new like you do.
12:55 Ulti I tried having my own new and I got the same thing, but might have just been the same problem.. thanks I'll play a bit
12:55 masak Ulti: this is such a surprising aspect of Perl 6 that we're thinking of fixing that, but we haven't gotten around to it. I'm partly responsible for it ending up that way -- sorry.
12:56 masak Ulti: making it @.vocab instead should fix it for you.
12:56 Ulti np I'm playing to learn what Perl6 is like
12:56 Ulti I dont have a serious need for a Cat.meow program >:3
12:56 Ulti the delegation stuff is cool though
12:57 masak yes, and it works, as above.
13:00 Ulti that works, but when I create my own new method new (*@vocab) {return self.bless(:@vocab);} I get the Nil even with @.vocab...
13:02 Ulti I take it the problem with the default new is that its from a parent class that doesn't have access to this classes private variables?
13:03 masak no, it's just that if an attribute doesn't have an accessor, you cannot initialize it by passing a named to the default .new
13:03 masak I just found the p6l thread in question. it's "Encapsulating the contents of container types", from 2011.
13:04 Ulti is it reflecting on the accessor methods rather than the attributes?
13:05 Ulti I'm not that sure the current way it works is that bad, its just I wasn't really thinking about what I was doing, I want vocab to be public anyway... and it sort of should be given how its being fiddled with from outside
13:05 Ulti like a constructor shouldnt have magic access like that
13:07 Ulti heh by chance my Perl6 cat roared a lot more than it meowed nice :)
13:07 SamuraiJack_ joined #perl6
13:09 dalek rakudo/nom: 3f984f4 | (Elizabeth Mattijsen)++ | src/core/ (7 files):
13:09 dalek rakudo/nom: Mark all .delete methods as DEPRECATED, add delete_key|pos methods as needed
13:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3f984f44f5
13:10 masak Ulti: the rule is that if you declare the attribute with a dot, it can be initialized with .new
13:10 masak Ulti: declaring it with a bang and then manually providing an accessor doesn't work.
13:12 Ulti sure but then you have the accessor, which presumably might do something more than just set a value it might be doing any magic around what you pass in
13:12 Ulti I think that's the right kind of behaviour for safety
13:12 masak yeah. maybe.
13:13 masak it's garnered a fair amount of criticism over the past year or so, mainly for breaking people's expectations.
13:14 moritz and the other way around garnered a fair amount of criticism for giving the public WRITE ACCESS to private attributes :-)
13:14 moritz it seems you can't do it right for everybody
13:15 nwc10 masak: well, this attempt hasn't gone boom yet:
13:15 nwc10 2631 nick      20   0 1769m 150m 1464 S  14.2 65.0  42:49.63 java
13:15 moritz maybe we just need a trigil that controls initialization semantics </troll>
13:16 nwc10 compiling the setting
13:16 masak oops, sorry -- the p6l thread was actually '[perl6/specs] 58fe2d: [S12] spec setting and getting values of attribute...'
13:16 nwc10 it only seems to be burning 60% of CPU swapping - ie it's actually about 30% progress, not 0.3%
13:16 masak moritz: hehehehe
13:24 Ulti nah I think private stuff being set explicitly after you construct is perfectly fine it draws attention to doing something a bit norty, though I guess it means people might go public first rather than private first on their attributes :S
13:27 denysonique joined #perl6
13:28 dalek rakudo/nom: ccf9c47 | (Elizabeth Mattijsen)++ | src/core/ (5 files):
13:28 dalek rakudo/nom: Change all calls to '.delete' to .delete_key|pos
13:28 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ccf9c4780a
13:30 masak Ulti: there are two opposing forces at play here.
13:30 masak Ulti: (A) "private" should mean you can't tell from the outside of the class what the private attributes are. this is for greater refactorability, one of the big advantages of OOP.
13:32 masak Ulti: (B) there will always be (temporal) boundaries of an object, places where it's constructed or deconstructed: initialization, serialization, deserialization, MOP behind-the-scenes stuff, userland MOP usage, debugging. if nothing else, the *language* needs a way to get and set private attributes.
13:32 masak (and, Perl 6 being what it is, if the language can do something, usually the user can, too)
13:35 masak the long-term effects on me from that discussion is to conclude that "private attribute" is a rather antiquated, 20th-century notion.
13:36 masak the only interesting thing is who can access what, and in what capacity.
13:36 iSlug joined #perl6
13:41 masak I see now that what I argued for in that thread was that the language should make it easy for an object to maintain its invariants.
13:42 masak and that's harder if .new (and .clone) allow setting private attrs willy-nilly.
13:42 masak I still agree with that viewpoint.
13:43 Ulti yup me too, especially if someone used clone just to do it :<
13:44 masak in fact, I now think about objects a lot *more* in terms of upholding invariants than I did three years ago.
13:44 masak while it's a gnarly and multi-faceted problem, it's also a very good focus to have, IMO.
13:45 jnthn Invariants are much more clearly important when objects are non-anemic :)
13:45 masak in the "outsiders can mess things up" department, we have not just the problem of temporal boundaries, like above. we also have the problem of reference leakage, like in the email thread I accidentally linked to.
13:46 masak but there's also a "how widely do the invariants apply" problem, where invariants start to span multiple objects, and your object boundaries break down in various ways, and you start thinking about aggregates instead.
13:47 Ulti might be worth raising some kind of warning when code is attempting to do this though
13:47 masak yes, maybe. though I can easily see how that would be annoying.
13:48 Ulti use newbwarn
13:50 * Ulti wanders off to buy an espresso
13:50 ajr joined #perl6
13:55 * masak me read that and thought "why does Ulti want to use a new barn"?
13:55 Ulti because the old one is filled with zombies
13:57 zakharyas joined #perl6
14:00 sqirrel joined #perl6
14:05 dalek nqp: f19118f | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
14:05 dalek nqp: Prepare QAST -> JVM compiler for closure changes.
14:05 dalek nqp:
14:05 dalek nqp: We'll experiment with this on MoarVM first; this just does enough to
14:05 dalek nqp: have QAST -> JVM not choke on some small changes to NQP.
14:05 dalek joined #perl6
14:05 JimmyZ oh my dalek!
14:06 FROGGS Ja dalek'st me am Oarsch!
14:07 dalek roast: 6f3f981 | (Elizabeth Mattijsen)++ | S (9 files):
14:07 dalek roast: Replace use of .delete by :delete or .delete_key as appropriate
14:07 dalek roast: review: https://github.com/perl6/roast/commit/6f3f981a1e
14:07 lizmat FROGGS:  Du naughty boy!
14:09 FROGGS *g*
14:12 * masak .oO( dalek is so eager to report lots of commits to us, that sometimes it gets kicked )
14:18 REPLeffect joined #perl6
14:23 btyler joined #perl6
14:39 dalek nqp: a7e81fb | jimmy++ | 3rdparty/dyncall/Makefile.embedded:
14:39 dalek nqp: Fixed mingw32 build
14:39 dalek nqp: review: https://github.com/perl6/nqp/commit/a7e81fb87f
14:48 dalek nqp: c6320d3 | jimmy++ | Configure.pl:
14:48 dalek nqp: fixed Configure.pl fails if ./install is not existed
14:48 dalek nqp: review: https://github.com/perl6/nqp/commit/c6320d3f32
14:53 SamuraiJack joined #perl6
14:55 Rotwang joined #perl6
15:01 masak the days of me wearing a towel as headgear on Github are over: https://github.com/masak
15:02 masak woolfy++ and/or lizmat++ for that picture.
15:02 timotimo i kind of really liked that old picture, though :P
15:02 yoleaux 07:17Z <FROGGS> timotimo: on rakudo/parrot these tests fail too: Unexpected named parameter 'exists' passed
15:02 yoleaux 07:17Z <FROGGS> timotimo: the env test for example
15:02 masak timotimo: me too, that's why I kept it for so long :)
15:02 timotimo :)
15:13 colomon masak: new picture is great!
15:13 masak \o/
15:16 mtk joined #perl6
15:16 rindolf joined #perl6
15:17 sqirrel joined #perl6
15:21 denis_boyun joined #perl6
15:22 * colomon wishes Grammar::Debugger was working.  :(
15:23 masak it isn't? :/
15:30 colomon masak: nope, completely broken
15:30 colomon well, you can get help from it
15:32 colomon but any attempt to step forward breaks.
15:33 cognominal joined #perl6
15:36 colomon https://gist.github.com/colomon/6753503
15:36 colomon masak: ^^ Grammar::Debugger blowing up
15:38 BenGoldberg joined #perl6
15:42 masak colomon: line 77 of lib/Grammar/Debugger.pm is https://github.com/jnthn/grammar-debugger/blob/master/lib/Grammar/Debugger.pm#L77
15:42 colomon masak: yes, I've looked at the code.
15:42 colomon I don't have any notion why it isn't working, looks straightforward enough.
15:42 colomon http://www.spacex.com/webcast/#  # T minus 19 minutes till launch
15:42 colomon er, 17:30
15:42 masak yes, failing on that line feels... wrong.
15:43 colomon very very wrng
15:43 timotimo r: continue = False;
15:43 camelia rakudo ccf9c4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/6q3NbOJy44�Preceding context expects a term, but found infix = instead�at /tmp/6q3NbOJy44:1�------> [32mcontinue =[33m�[31m False;[0m�»
15:46 daniel-s_ joined #perl6
15:47 * masak is now fully absorbed in the webcast
15:47 timotimo what casts webs?
15:48 colomon SpaceX launch in 13 minutes
15:48 colomon (is the webcast)
15:48 masak http://www.spacex.com/webcast/
15:48 masak oh wow oh wow oh wow
15:48 timotimo oh cool
15:48 masak they're launching. a rocket. and I'm watching it on screen.
15:49 timotimo now if they had a binocular camera in it you could experience the launch with occulus rift ;)
15:50 colomon if I understood comments on HN correctly, they're planning on testing the functionality to bring the first stage down softly, but over water so nobody gets hurt if it doesn't work.
15:50 timotimo is that with a rocket stage that tries to land it? like the test they made with starting a rocket, moving it sideways and bringing it right back to where it started?
15:51 colomon yes, but on a much bigger scale.  (though I'm not sure how far I trust the HN information.)
15:51 timotimo well, we'll see soon enough
15:51 colomon I'm assuming they will talk about it on the webcast if they do it.
15:52 KroKite joined #perl6
15:54 japhb_ joined #perl6
15:55 japhb_ Good *, all!
15:56 * masak is biting his nails
15:56 masak japhb_: http://www.spacex.com/webcast/ !!!
15:57 tadzik oh, a rocket :)
15:57 * timotimo plays "surfing on a rocket" by air
15:58 tadzik why is there water pouring?
15:59 grondilu I don't think it's water.  Rather LO2 voluntary leaking for pressure control or something
16:00 japhb_ masak, ooh, thanks!
16:00 tadzik a coolant, maybe
16:00 grondilu go in #space to ask for these stuff
16:00 masak WOOOOOOOW
16:00 masak holy crap
16:00 timotimo that thing got power
16:01 tadzik warp 5, engage
16:01 * masak .oO( this... is my BOOM-STICK )
16:01 colomon I got buffer at T minus ten seconds, but Jen got it up on her computer just in time.
16:02 timotimo i love how eerily quiet it becomes
16:02 timotimo is that earth curvature at the upper right?
16:02 timotimo or was, really
16:02 tadzik brokens :(
16:02 timotimo aaw
16:02 timotimo no more radio talk? :(
16:02 timotimo the fire plume looks amazingly beautiful
16:02 timotimo like a starfish
16:02 masak yeah, it's dropping out here too. "Awaiting vehicle downlink"
16:03 timotimo (not any more)
16:03 masak wow, the Earth.
16:03 * masak cries
16:03 colomon it's awesome
16:04 masak it was on the ground just moments ago.
16:04 timotimo now i wonder what the etimology of "rocket" is
16:04 masak stuck on the surface of a sphere.
16:05 masak timotimo: [Italian rocchetta, diminutive of rocca, spindle, distaff, of Germanic origin.]
16:05 colomon timotimo: rockets were weapons "in the old days"
16:05 timotimo somebody must be real proud of those animated dots
16:05 Mouq timotimo: https://en.wiktionary.org/wiki/rocket
16:05 colomon like "rocket's red glare" in the star-spangled banner (written in 1812 or 1813)
16:05 [Coke] this was really cool untBUFFFERING
16:06 [Coke] the buffering is just a trick so we won't see when they change the set pieces.
16:06 timotimo yeah
16:06 colomon getting high def video from space has some buffering, not the end of the world
16:06 timotimo sound stage on mars and all that
16:06 timotimo that is high def?
16:06 colomon well, maybe not.
16:06 colomon but you know what I mean.
16:06 tadzik well, actually, it is beyond the end of the world :)
16:06 masak colomon: the rocket seems to be glowing red :)
16:07 timotimo what's the gray circles looking picture that always shows up before they show the "awaiting downlink" thing?
16:07 timotimo almost always*
16:07 tadzik glitch?
16:07 [Coke] I like living in the future, where we can launch rockets into space, but all I do is complain about the quality of the video feed.
16:07 tadzik haha
16:08 colomon the video feed FROM SPACE which you are watching on your home computer.  :)
16:08 masak "on Mars. connectivity sucks. had to press 'Send' three times on my last tweet."
16:09 gfldex where are they going to?
16:09 timotimo gfldex: first manned mission to mars, of course
16:09 tadzik I like how the thing is boiling hot, and the space itself is the coolant :)
16:09 timotimo space isn't a very good coolant
16:09 gfldex the coolant is liquid hydrogen
16:09 timotimo all you have there is the heat radiation going out
16:10 tadzik that... that's xclock, isn't it?
16:10 timotimo :D
16:10 tadzik it looks too familiar
16:10 masak tadzik: be glad it isn't Windows. :P
16:11 tadzik I'd rather see Kernel Picnic than BSOD now :)
16:11 timotimo guru meditation?
16:11 * geekosaur imagines a shot of the launch site with xeyes overlaid apparently tracking the rocket
16:11 timotimo m)
16:11 tadzik :D
16:11 timotimo THERES PEOPLE IN SPACE!
16:11 timotimo look at these happy people!
16:11 gfldex did they just show all the ppl that go to mars?
16:12 timotimo yeah, they have a huge module in the rocket where there's simulated sunlight and gravity
16:12 timotimo also, television
16:12 gfldex ofc they need TV! How else should they know that they didnt dieded?
16:12 tadzik ok, so I just looked on the channel in time to see the rocket flying. Where can I read where they're going, and why? :)
16:13 [Coke] tadzik: http://venturebeat.com/2013/09/27/spacex-launching-canadas-cassiope-satellite-into-space-this-sunday/
16:13 timotimo i've been promised landing
16:14 colomon tadzik: no people, they're just delivering a satellite to orbit and testing their new engines.
16:14 tadzik oh, awesome :)
16:14 timotimo hahaha occupy mars
16:14 tadzik lol
16:14 timotimo that was a short comment
16:16 * masak wants an "occupy mars" tee
16:17 tadzik sign me up
16:17 * grondilu is not rich enough to consider going to mars.  He doubts anyone is.
16:18 timotimo going to mars also means giving up everything you know
16:18 masak yeah, but it would be *going to Mars*.
16:18 timotimo true
16:18 grondilu that's silly if you ask me.
16:19 masak everyone staying on the same planet is silly, if you ask me.
16:19 masak what if we get hit by something?
16:19 * grondilu wrote quite a few pages on forum.nasaspaceflight.com to defend the idea that manned spaceflight is not a good idea, nowadays.
16:19 timotimo some people just need their own planet
16:20 tadzik let's wait until computers give us teleporters
16:20 tadzik I can give up some of my internal computing power for that
16:21 grondilu I'd rathr wait until computers and virtual reality allow me to visit mars from the comfort of my living room.
16:21 japhb_ So, forgive me for the injection of Perl 6 here, but ... The Rakudo* release note says that the JVM backend is not included because "many bits are still missing, most prominently the native call interface."  What actually *is* missing at this point, besides NCI?
16:22 masak japhb_++ # oddly on-topic
16:22 timotimo rockets and teleporters are missing
16:22 timotimo we need those to go to stars with rakudo
16:22 japhb_ Awww dang
16:22 jnthn huh, wtf is Perl 6? :)
16:23 [Coke] it's the language they used to program that video feed, apparently.
16:23 jnthn japhb_: I think NativeCall is a big part of it, arnsholt++ knows the status best I guess
16:23 jnthn japhb_: I may throw in some tuits there too
16:23 jnthn japhb_: Other than that I think we need some work on the Star distro itself.
16:23 jnthn japhb_: So it supports doing a JVM-based build too
16:23 japhb_ Oh, makes sense.
16:24 jnthn I'm hoping somebody/some folks may step up to do that second bit
16:24 jnthn I'll also try to take on getting the debugger to run on JVM in time for it too.
16:25 japhb_ Oh, that would be quite valuable.
16:27 tadzik I think some of p6eval's colours broke my irc client
16:27 tadzik joined #perl6
16:39 jnthn std: /^\s*[\#<HERE>|$]/
16:39 camelia std 7c17586: OUTPUT«[31m===[0mSORRY![31m===[0m�No unspace allowed in regex; if you meant to match the literal character, please enclose in single quotes ('#') or use a backslashed form like \x23 at /tmp/afwjiJ89El line 1:�------> [32m/^\s*[\[33m�[31m#<HERE>|$]/[0m�Parse fail…»
16:55 Mouq r: if not "abracadabra" ~~ m:ov/ a (.*) a / {$/.say;}
16:55 camelia rakudo ccf9c4: OUTPUT«「abra」␤ 0 => 「br」␤␤»
16:56 Mouq r: if not "abracadabra" ~~ m:ov/ a (.*) a {$/.say} / { .say }
16:56 camelia rakudo ccf9c4: OUTPUT«「abracadabra」␤ 0 => 「bracadabr」␤␤「acadabra」␤ 0 => 「cadabr」␤␤「adabra」␤ 0 => 「dabr」␤␤「abra」␤ 0 => 「br」␤␤Nil␤»
16:57 Mouq :ov is matching correctly, but for one: it's returning False; and as well, you can't access these matches
16:57 Mouq Other than with side-effects
16:58 Mouq Same thing here:
16:59 Mouq ('abcdefg' ~~ m:g /. {$/.say}/).say; #why is this False?
16:59 Mouq r: ('abcdefg' ~~ m:g /. {$/.say}/).say; #why is this False?
16:59 camelia rakudo ccf9c4: OUTPUT«「a」␤␤「b」␤␤「c」␤␤「d」␤␤「e」␤␤「f」␤␤「g」␤␤False␤»
17:00 Mouq Huh
17:00 Mouq r: 'abcdefg'.match(:g,/./).say
17:00 camelia rakudo ccf9c4: OUTPUT«「a」␤ 「b」␤ 「c」␤ 「d」␤ 「e」␤ 「f」␤ 「g」␤␤»
17:02 jnthn r: 'abcdefg'.match(:g,/./).WHAT.say
17:02 camelia rakudo ccf9c4: OUTPUT«(List)␤»
17:02 jnthn That's why
17:02 jnthn I think it's meant to fake up an outer Match object or something
17:04 Mouq … Actions.nqp:5429 "# if this match returns a list of matches instead of a single␤# match, don't assing to $/ (which imposes item context)"
17:06 Mouq 'k, so then how do you access the list? Spec says `slice @()` S05:565
17:06 synopsebot Link: http://perlcabal.org/syn/S05.html#line_565
17:11 sqirrel joined #perl6
17:15 colomon jnthn: any notions what is going wrong with Grammar::Debugger?
17:17 benabik joined #perl6
17:17 colomon jnthn: https://gist.github.com/colomon/6753503
17:24 xenoterracide_ joined #perl6
17:44 lue hello world o/
17:45 timotimo hellue
17:47 jnthn colomon: Not right away, no...
17:49 masak lue! \o/
17:49 masak lue: you missed the rocket launch!
17:50 lue I saw something about xeyes and rockets above.
17:50 lue A real life rocket launch?
17:50 ajr joined #perl6
17:50 slavik joined #perl6
17:52 tadzik yep
17:53 lue aww :(
17:53 tadzik that'd better be "aww yiss" :)
17:53 diakopter masak: did the aliens depart the Hague finally?
17:55 dmol joined #perl6
17:58 xinming joined #perl6
17:58 dmol joined #perl6
17:59 masak diakopter: EMISSINGREFERENCE
17:59 diakopter the rocket launch?
18:02 sqirrel joined #perl6
18:12 masak oh, that part I got.
18:28 xinming joined #perl6
18:35 moritz .o( what's next after the rockstar programmer?  the rocket launch programmer! )
18:37 masak well, it's hardly rocket surgery.
18:38 diakopter haha
18:38 arnsholt Or rock star astrophysicist =)
18:38 diakopter .oO( a good comedian can make mokes in any non-language )
18:38 diakopter er, jokes, too.
18:41 nwc10 dear Rakudo folks, would it be possible to also have a timestamp in output such as "Stage parse      : 15478.310
18:41 FROGGS joined #perl6
18:41 nwc10 or "Stage optimize   : 3500.913"
18:41 diakopter hopefully those units will be in microseconds soon
18:42 nwc10 unless the working set drops below about 224Mb, I think that for that hardware they won't get that good.
18:42 nwc10 but I am being peverse by trying it on something pretty low powered
18:44 diakopter three year old blueberry cake?
18:44 nwc10 I think it's only still working because I'm sitting with an open tab listing the package I want to use apt-get to install
18:44 nwc10 on the assumption that it will crash
18:44 nwc10 so, so far, it is't
18:50 nwc10 of course, it will now go wrong because I've had to cede the HDMI input on the TV to the satellite box
18:53 ksh joined #perl6
18:58 berekuk joined #perl6
19:06 ajr joined #perl6
19:15 nwc10 w.r.t. the off-topic, https://twitter.com/elonmusk/status/384392608350367744/photo/1 -- Launch was good. All satellites deployed at the targeted orbit insertion vectors.
19:16 nwc10 but they don't seem to be saying anything yet about the first stage fun
19:25 colomon joined #perl6
19:27 masak what first stage fun?
19:27 kivutar joined #perl6
19:28 moritz now I'm curious too :-)
19:28 jnthn src/stage1/ ?
19:28 jnthn :P
19:29 nwc10 the attempt to "land" it on the sea
19:29 moritz somehow I always think of the fun happening either in stage2 or stage0 :-)
19:36 colomon joined #perl6
19:36 Rotwang joined #perl6
19:45 lue at the SlowDB exercise, and I'm wondering why you would use the :s instead of just make it a rule. Or does the :s only apply to the first bit of whitespace (and revert to meaningless spaces after that)?
19:48 colomon Maybe so you understand what it is that rule is doing?  # has not had time to read the slides / do the exercises.  :(
19:49 masak lue: if the :s is not at the beginning, it's different from using a rule.
19:50 lue the slides have already used rule before. I would understand just introducing what :s means, but that's not mentioned if so.
19:50 masak lue: also, a rule is a token plus the :s stuff, not a regex plus the :s stuff.
19:50 japhb_ joined #perl6
19:50 FROGGS I believe it uses :s at the beginning followed by space
19:50 lue Wasn't 'INSERT' :s "deprecated" in favor of :s'INSERT', or did I gloss over that discussion in the wrong way?
19:51 masak not deprecated.
19:51 masak whitespace significance starts at the point :s is located.
19:52 masak what did change was the way 'rule' declarations handle the first bit of whitespcae before the first "thing" in the rule.
19:52 jnthn Apart from it didn't change in Rakudo/NQP yet
19:52 jnthn Thus the workaround with :s
19:52 lue I remember a couple days ago talk that the slide should say :s'INSERT' instead of 'INSERT' :s like it does.
19:54 lue So how is :s'INSERT' at the start of a token different from rule ? (Or is the rule change that space before first "thing" *does* count now?)
19:56 lue (and how is :s'INSERT' functionally different from 'INSERT' :s ? Or is just a matter of style?)
19:57 jnthn They'd be the same with current nQP semantics.
19:57 jnthn But the former is future safe
19:58 btyler joined #perl6
19:59 lue Does S05 tell me what the new changes to rule and :s are, or does someone here have to spell it out for me :) ?
20:02 TimToady S05:334
20:02 synopsebot Link: http://perlcabal.org/syn/S05.html#line_334
20:03 TimToady that explains the new semantics
20:04 TimToady basically, sigspace is matched only when you've matched something else
20:04 TimToady and :s isn't a matcher, so the space after it isn't significant
20:05 lue So that's why "'INSERT' :s " won't work in the future. OK.
20:05 TimToady with the new semantics, you'd just write a rule, and it would automatically turn on after the INSERT
20:06 lue jnthn: so is using the :s just to introduce the :s during the talk, or is there some current difference between rule and token-with-initial-:s ?
20:06 TimToady but it allows 'INSERT' to participate in LTM, whereas with the old rules it couldn't
20:06 nwc10 https://twitter.com/elonmusk/status/384407846349062144 -- Rocket booster relit twice (supersonic retro & landing), but spun up due to aero torque, so fuel centrifuged & we flamed out
20:07 jnthn lue: It's to get LTM right.
20:08 lue and in the future, you'd be able to use rule instead of needing :s, correct?
20:08 jnthn aye
20:09 lue Good, I think I got it now. [I think, though, I'll just continue to never use sigspace beyond these slides :) .]
20:09 * colomon just started using sigspace this week.  ;)
20:11 lue Now that I actually know how it works, I feel confident using it. I just prefer being very explicit about what I'm trying to match.
20:12 lue .oO(I don't quite know specifically how LTM gets messed up by the current rules, but that's something I need not concern myself with at the moment.)
20:12 colomon lue: I was adopting a huge batch of Wirth syntax notation rules that mostly seemed to assume sigspace.
20:12 jnthn .oO( sigspace sounds wirth having in that case... )
20:13 colomon :p
20:13 jnthn colomon: BTW, for grammar debugging did you consider trying the normal perl6-debug? It does know about grammars...
20:13 colomon jnthn: said huge set of rules is why I was hoping to use Grammar::Debugger.
20:13 jnthn Ah
20:13 colomon …. I have not gotten perl6-debug working … ever?  But I guess I can try it.
20:14 jnthn colomon: Is Grammar::Tracer also busted, or it works too?
20:14 jnthn s/too/
20:14 colomon Grammar::Tracer worked perfectly, so far as I could tell
20:14 * lue needs to try Grammar::Tracer, ::Debugger, and perl6-debug again, he's forgotten what worked and what didn't.
20:14 colomon but it's less than useful when there are so darned many rules
20:15 colomon can panda install perl6-debug?
20:15 lue colomon: IIRC it's called Rakudo::Debugger in panda's eyes.
20:16 colomon good name
20:32 lue hm. For some reason I can't seem to delete rows from SlowDB, using the modify-in-place trick that INSERT uses.
20:34 lue here it is for reference: https://gist.github.com/lue/6756293
20:37 lue (it does correctly identify and not include rows that should be deleted, but then running a SELECT on a deleted row afterwards brings it up as though it weren't.)
20:43 colomon seems like panda isn't work with the latest rakudo?
20:47 colomon does using .delete actually throw an exception now?
20:47 lue I have 2013.09-68-gd3c8d57, let me see if it works for me.
20:47 colomon (on a Hash, I mean)
20:47 timotimo lue: did you splice the database or replace it with a filtered one?
20:47 lue I push rows that *don't* match the conditions set to a new database, and then @old := @new at the end.
20:52 timotimo er ...
20:52 masak pmichaud++ # 'Something is "ready" when it is capable of solving the promlem(s) to which it is being put."
20:52 masak er, s/"$/'/
20:52 timotimo that doesn't sound like it would work the way you want it to
20:53 colomon tadzik: https://github.com/tadzik/panda/issues/57
20:55 kivutar joined #perl6
20:57 lue timotimo: why not? INSERT does similar in-place modification
21:12 timotimo oh
21:12 timotimo i interpreted it the wrong way, sorry
21:16 dalek nqp/cursless: c87f86e | jnthn++ | src/ (2 files):
21:16 dalek nqp/cursless: Some simple, uncommentable Cursor tracking.
21:16 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/c87f86ebbb
21:16 dalek nqp/cursless: 91744f2 | jnthn++ | src/QRegex/Cursor.nqp:
21:16 dalek nqp/cursless: Create a per-grammar fail Cursor.
21:16 dalek nqp/cursless:
21:16 dalek nqp/cursless: This is used in various places to make failure allocate less. Attached
21:16 dalek nqp/cursless: to ParseShared to still get type correct.
21:16 dalek nqp/cursless:
21:16 dalek nqp/cursless: The places it's used so far takes NQP.nqp from creating 284742 Cursor
21:16 dalek nqp/cursless: objects in its parse to 229535, though needs more testing.
21:16 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/91744f25ee
21:16 dalek nqp/cursless: 0b5feb6 | jnthn++ | src/ (2 files):
21:16 dalek nqp/cursless: Used shared fail Curosr in some HLL::Grammar rules
21:16 dalek nqp/cursless:
21:16 dalek nqp/cursless: Shaves another 15,000 Cursor creations off when compiling NQP.nqp.
21:16 dalek nqp/cursless: Together with the previous change, that's 25% of Cursor allocations
21:16 dalek nqp/cursless: vanished for this case.
21:16 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/0b5feb64b6
21:17 colomon jnthn++
21:17 lue .oO(Must resist comment on last commit message)
21:18 jnthn From 284742 to 214401. Note too bad.
21:18 jnthn *Not
21:19 diakopter "not badful"
21:19 lue [ it was just noticing how you fail Curosr spelling sometimes :) ]
21:19 jnthn d'oh
21:19 diakopter play d'oh
21:20 diakopter jnthn: ok so why does CAPS* get called a trillion times? :)
21:20 diakopter er, CAPHASH
21:20 jnthn diakopter: 'cus it's called for every MATCH object we construct? :)
21:21 diakopter eww
21:21 jnthn Well, it's the thing that does most of the work towards creating a Match...
21:22 lue jnthn: is there a problem with trying to do, effectively, -> @old { ...snip... @old := @new } for the DELETE instruction is SlowDB? It doesn't seem to affect the original @db like INSERT does.
21:23 jnthn lue: You're binding to a lexical @old in your scope, not the original thing passed in, at a guess
21:23 jnthn I think the best solution involves nqp::splice or just using some magic empty thing to indicate deleted
21:24 lue (code here by the way: https://gist.github.com/lue/6756293)
21:24 * lue investigates nqp::splice
21:25 jnthn Over that 215000 or so, about 31000 are from ws
21:27 timotimo do you notice any speed improvements in parsing with the cursless?
21:27 jnthn Didn't measure yet, still got it spewing out lots of info :)
21:28 timotimo k
21:28 cjwelborn joined #perl6
21:31 lue ooh, never knew about splice. That seems very useful.
21:34 timotimo yeah
21:34 tadzik hmm hmm
21:34 timotimo except the signatures differ strongly and annoyingly between perl6 and nqp ;)
21:34 tadzik Hash.delete is deprecated since the last compiler release, or something?
21:38 jnthn r: say 214401 - 205297
21:38 camelia rakudo ccf9c4: OUTPUT«9104␤»
21:39 lue Yep, splice works :) . Later I'll try to find why what I was doing didn't work as expected.
21:45 timotimo over 9000!
21:45 jnthn yeah, but I broke something there :)
21:46 tadzik details, detail
21:52 jnthn r: say 214401 - 213253
21:52 camelia rakudo ccf9c4: OUTPUT«1148␤»
21:52 jnthn That one's safe at least.
21:55 kay_ joined #perl6
21:58 jnthn r: say 213253 - 198385 # please pass test, please pass test...
21:58 camelia rakudo ccf9c4: OUTPUT«14868␤»
21:59 timotimo oh wow, how did that happen
21:59 timotimo that's not quite 50%, but still
22:01 timotimo more like 7% perhaps?
22:01 timotimo r: say 198385 / 2132.53
22:01 camelia rakudo ccf9c4: OUTPUT«93.0279996␤»
22:01 timotimo wow, that was a pretty solid guess
22:01 tadzik subconscious calculator
22:01 timotimo must be
22:02 timotimo i would be interested to know what the maximum depth of that stack of cursors will be
22:02 timotimo because that's the hard lower bound on how many cursors you have to instantiate
22:03 dalek nqp/cursless: 28ffe45 | jnthn++ | src/NQP/Grammar.nqp:
22:03 dalek nqp/cursless: Turn some <?before ...> into simpler constructs.
22:03 dalek nqp/cursless:
22:03 dalek nqp/cursless: In NQP::Grammar; saves 1000 Cursor allocations in NQP.nqp parse.
22:03 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/28ffe459cf
22:03 dalek nqp/cursless: 7c9689a | jnthn++ | src/HLL/Grammar.nqp:
22:03 dalek nqp/cursless: Only hit quote_escape:sym<misc> if there's a \\.
22:03 dalek nqp/cursless:
22:03 dalek nqp/cursless: This means the LTM analysis can eliminate 15,000 calls to this rule
22:03 dalek nqp/cursless: while parsing NQP.nqp.
22:03 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/7c9689a644
22:03 timotimo ooooh pretty nice
22:03 jnthn timotimo: You're forgetting that cursors get stored in other cursors if captured or need to be backtracked into
22:03 tadzik does pass tests? :)
22:03 jnthn Those commits pass the NQP test suite still, yes
22:03 diakopter jnthn: he was assuming eventual failed match :D
22:03 tadzik \o/
22:04 jnthn r: say 284742 - 198385
22:04 camelia rakudo ccf9c4: OUTPUT«86357␤»
22:04 jnthn r: say 86357 / 284742
22:04 timotimo oh, about 4 x 7
22:04 camelia rakudo ccf9c4: OUTPUT«0.3032816␤»
22:04 jnthn That's how many Cursor allocations I've got rid of so far when parsing NQP.nqp.
22:04 timotimo especially that bit of LTM for the quoting should be worth something
22:05 masak 'night, #perl6
22:05 timotimo 'night masak
22:07 benabik joined #perl6
22:08 kay_ joined #perl6
22:13 timotimo jnthn: it seems like you shaved off 6 out of 120 seconds for the core setting parse
22:14 timotimo well, closer to 5 actually
22:15 jnthn .tell TimToady why does quantifier:sym<{N,M}> start with an LTM-busting {} ooc? It prevents the LTM-er from seeing "no quantifier here" and so results in that rule being called everywhere there could be a quantifier...
22:15 yoleaux jnthn: I'll pass your message to TimToady.
22:16 jnthn r: say 198385 - 189975
22:16 camelia rakudo ccf9c4: OUTPUT«8410␤»
22:16 diakopter best snl season premiere so far
22:17 dalek nqp/cursless: 52a81c0 | jnthn++ | src/QRegex/P6Regex/Grammar.nqp:
22:17 dalek nqp/cursless: Some <before...> simplification in P6Regex grammar
22:17 dalek nqp/cursless:
22:17 dalek nqp/cursless: There's a few other places we could in theory do it, but they break
22:17 dalek nqp/cursless: tests, it seems. This one is the big win, anyway.
22:17 dalek nqp/cursless: review: https://github.com/perl6/nqp/commit/52a81c0bd6
22:19 jnthn r: say 189975 / 284742
22:19 camelia rakudo ccf9c4: OUTPUT«0.667183␤»
22:19 jnthn OK, only creating two thirds of the Cursor objects we were :)
22:20 jnthn This is analysing NQP, btw.
22:20 timotimo the LTM engine knows about lookaheads, right?
22:20 [Sno] joined #perl6
22:20 jnthn Yeah, <?before ...> is considered, but is then fate
22:21 timotimo ah, so <?before ...>abc will not be the same as just abc?
22:21 jnthn No
22:22 jnthn The LTM analysis will just consider the stuff inside the before.
22:22 timotimo and then stop ... is that wanted? would that help at all?
22:22 jnthn It has to be that way
22:22 timotimo OK
22:22 jnthn There's no conjunction in an NFA.
22:22 timotimo i guess that makes sense
22:23 jnthn Anyway, it means if you write <?before foo> and there ain't a foo then you'll never enter the rule
22:24 timotimo i'll let you back to work now :)
22:25 jnthn Well, just applied the analysis to CORE.setting parsing.
22:25 jnthn I didn't get a before number. I seem to remember somebody gave a > 2 million one.
22:25 timotimo does it show you hot spots as in: what rules give off how many instantiations?
22:25 jnthn Currently allocates 1,854,030 cursors to parse CORE.setting
22:25 jnthn Yeah
22:25 jnthn I get output like:
22:25 jnthn 8       TOP
22:25 jnthn 58      metachar:sym<'>
22:25 jnthn 3622    term:sym<value>
22:25 timotimo ah, that's nice
22:26 timotimo seems like TOP has been very well optimized!
22:26 jnthn Well, it's number of times we enter a rule with that name
22:27 jnthn So basically I go looking for weirdly high numbers
22:27 jnthn For example:
22:27 jnthn 10845   statement_control:sym<default>
22:27 timotimo ah, of course
22:27 jnthn Why oh why do we look for default 10,000 times?
22:27 jnthn Then I go look at Grammar.nqp and see:
22:27 jnthn token statement_control:sym<when> {
22:27 jnthn <sym> <.end_keyword> :s <xblock>
22:27 jnthn }
22:27 jnthn rule statement_control:sym<default> {
22:27 timotimo like, a rule that happens often, but has a high number is okay; a rule that happens only a few times should not have a very high number?
22:27 jnthn <sym><.end_keyword> <block>
22:27 jnthn }
22:27 jnthn :)
22:28 jnthn A rule that has a high number should justify having it
22:28 jnthn 12640   terminator:sym<;>
22:28 jnthn That sounds sane. I mean, I can imagine we have 12,000 ;s in CORE.setting
22:28 jnthn But trying to parse a default block 10,000+ times sounds wrong.
22:28 timotimo indeed
22:28 timotimo how do i turn on the magic analysis when i've checked out that branch?
22:29 timotimo is it just output to a file?
22:29 benabik Is there a difference between <!before <foo>> and <!foo> ?
22:29 jnthn No
22:29 jnthn Ohter than the latter doesn't call before :)
22:29 jnthn *Other
22:30 jnthn timotimo: See the first commit in the branch; it has some commented out lines
22:30 timotimo ah, i just have to comment those in
22:30 jnthn timotimo: You uncomment those, then also for the setting you need one more line in src/main.nqp in Rakudo, like the one in Compiler.nqp in NQP. Plus a "use QRegex" to get the ParseShared symbol
22:30 lue jnthn: would a !cursor_start_cur cannot restart a cursor be invoked during the grammar or the actions, in nqp?
22:31 jnthn lue: Taht should never happen
22:31 jnthn lue: It's a sanity check
22:32 lue Oh. That's not good. (I'm just sitting here, trying to factor out the WHERE clause...)
22:34 lue I did define the whereclause to be a rule, instead of a token-plus-:s . Don't think that would make a difference though.
22:34 BenGoldberg joined #perl6
22:35 lue If that should not happen, I'll pull the latest NQP and try with that.
22:39 dalek rakudo/cursless: a9e7f66 | jnthn++ | src/Perl6/Grammar.nqp:
22:39 dalek rakudo/cursless: s/rule/token/ for LTM's sake.
22:39 dalek rakudo/cursless: review: https://github.com/rakudo/rakudo/commit/a9e7f669ae
22:39 timotimo parse time went up to 120 again, so my report above may very well be noise :(
22:44 benabik Rules don't LTM?
22:45 timotimo hm, does sigspace make LTM sad?
22:46 jnthn benabik: By spec, now, yes. By the spec at the time Rakudo implemented it, no 'cus the initial <.ws> is non-declarative.
22:47 timotimo ah, but initial .ws now requires the programmer to explicitly state "gimme initial ws now"?
22:47 jnthn yeah
22:47 jnthn I suspect we can simplify various <?before ...> things in Rakudo's Grammar
22:47 jnthn Feel free to try that in the cursless branch...
22:48 * jnthn has probably done enough for today :)
22:48 timotimo thank you :)
22:49 lue jnthn: If the latest NQP still fails on me, I'll try to golf it as best I can and file an issue.
22:49 jnthn lue: OK, thanks
22:49 * jnthn glances through the list for any other obvious oddnesses
22:49 timotimo can you gist the list?
22:50 BenGoldberg sub obvious_oddness { so $_ % 2 }
22:51 timotimo doesn't seem to improve parse speed yet, though
22:52 jnthn If you're doing it with the profiling patches it then you're paying for the profiling too
22:52 timotimo i'm doing it without
22:52 timotimo otherwise it would be impressive that it's only like a second slower ;)
22:56 jnthn timotimo: https://gist.github.com/jnthn/6757321
22:57 timotimo thank you :)
22:58 Mouq Is there a way to output the parse tree rakudo makes?
22:58 timotimo i think --target=parse will do something
22:58 btyler joined #perl6
22:59 timotimo is vws vertical whitespace? that covers \n, right?
22:59 Mouq It does "===SORRY!===␤Could not locate compile-time value for symbol Block" apparently
22:59 Mouq :p
23:00 jnthn timotimo: https://gist.github.com/jnthn/6757330 is the patch to apply to Rakudo to get that output btw, so if you change stuff you can understand the impact
23:00 timotimo thanks!
23:00 jnthn yes, includes \n
23:00 timotimo ok, in that case that may happen 19960 times
23:01 timotimo i think that's about how many lines that file has
23:06 timotimo it seems like unspace gets tried very often, but unspace is really a bit more, right?
23:07 timotimo oh, does :dba cause LTM to bail out by any chance?
23:07 jnthn It's called explicitly in a lot of places
23:07 jnthn No
23:07 jnthn LTM-er is fine with :dba
23:07 timotimo good
23:08 timotimo unspace has a <?before [\s|'#']>, you replaced something very similar with <?[\s#]> in another commit, is that generally helpful?
23:08 lue Hm. I get a different error using the built-in tracer.
23:08 jnthn yes, probably very helpful in this case
23:09 jnthn Bet that saves 40,000-ish
23:09 timotimo oh wow
23:09 jnthn 20,000ish for before, 20,000ish for the thunk'd thing before invokes
23:09 timotimo why is it that <?stuff> is better than <?before stuff>? they have the same meaning but doesn't do a subrule call?
23:10 jnthn No subrule call, and no thunking of the thing on the inside in order to pass it to before
23:10 timotimo cool
23:11 BenGoldberg Outside of tests for it, how much is unspace actually used?  What would happen if you removed it from the grammar, and only added it back in on request (like perl5's use feature)
23:11 timotimo unps only happens 20.000 times, so it would spare us 2 per invocation? that's pretty darn good
23:11 dalek rakudo/cursless: 444d519 | jnthn++ | src/Perl6/Grammar.nqp:
23:11 dalek rakudo/cursless: attach_docs can happily be a method.
23:11 dalek rakudo/cursless: review: https://github.com/rakudo/rakudo/commit/444d51926b
23:11 jnthn There's 5,000
23:11 timotimo before only gets called 130.000 times, so 40000 less due to unsp would already bring it below 100.000
23:12 jnthn "only" :)
23:12 jnthn no, 20,000 less to being
23:13 jnthn *no, 20,000 less to before
23:13 lue .oO(This is getting weird. The errors only occur once there are rows the WHERE clause could be checked against.)
23:13 jnthn And 20,000 out of the anonymous category
23:13 jnthn The anonymous are positional captures or thunks
23:13 jnthn .oO( CursorKiller, the new hack-em-up game brought to you by a 15-line patch to NQP... )
23:16 timotimo what is MARKER good for?
23:16 timotimo it creates quite a lot of cursors
23:17 jnthn Remembering stuff
23:17 lue Any hints as to how this can blow up the grammar once the number of DB rows is non-zero? https://gist.github.com/lue/6757420
23:17 jnthn like "we saw whitespace here so don't do the hunt again"
23:17 timotimo ah, remembering stuff seems like it's pretty important
23:17 jnthn yeah, but we should try and do it with less cursors, maybe... :)
23:17 timotimo perhaps it can just become a method ;)
23:18 jnthn I mighta just found 20,000 more
23:18 jnthn It is a method but it still creates a cursor object
23:18 jnthn But yeah, we may be able to improve it further
23:18 jnthn I'm probably too stupid to do that tonight though :)
23:19 timotimo interesting. :my $stub := self.'!set_highexpect'($old_highexpect);  -  is there a benefit to doing it like this instead of an inline closure?
23:20 jnthn oh, the unspace one may not be such a saving now I see it...
23:20 timotimo or perhaps it's an old workaround that can now be removed to gain incredible speedups?
23:20 jnthn Yeah...it doesn't have to invoke the closure
23:20 jnthn No, it's an optimization :)
23:20 timotimo good to know
23:21 BenGoldberg rpn: say #`(asdf) "foo"
23:21 camelia pugs: OUTPUT«␤»
23:21 camelia ..rakudo ccf9c4, niecza v24-95-ga6d4c5f: OUTPUT«foo␤»
23:22 dalek rakudo/cursless: 44929e7 | jnthn++ | src/Perl6/Grammar.nqp:
23:22 dalek rakudo/cursless: heredoc rarely need create a Cursor.
23:22 dalek rakudo/cursless:
23:22 dalek rakudo/cursless: Saves 20,000 or so Cursor allocations in CORE.setting.
23:22 dalek rakudo/cursless: review: https://github.com/rakudo/rakudo/commit/44929e768a
23:22 jnthn r: 1854030 - 1785550
23:22 camelia rakudo ccf9c4: ( no output )
23:22 jnthn r: say 1854030 - 1785550
23:22 camelia rakudo ccf9c4: OUTPUT«68480␤»
23:22 jnthn Just the few patches I've done to Rakudo so far shaved off those.
23:23 jnthn Plus already won some from NQP earlier
23:23 timotimo do heredocs even appear in the setting?
23:24 jnthn no
23:24 jnthn :)
23:24 timotimo nice.
23:25 timotimo ah, heredoc would always start a cursor even if the herestub queue is empty
23:25 timotimo does heredoc run after every line or something? :)
23:25 lue .oO( q:to/END/; Making sure it counts for something END )
23:25 timotimo seems like every invocation of ws has a good chance of running heredoc, too. good eye on that
23:26 timotimo i'll see how my change in unsp or where it was affects things after i get a new count based off of jnthns newest commit
23:26 jnthn timotimo: yeah, after every vws, I guess
23:27 timotimo jnthn: have you per chance looked at the qregex grammar in the same light? do you think there's something to be gained there as well?
23:27 jnthn I did a patch to P6Regex::Grammar earlier, if that's what you mean
23:27 timotimo i suppose it wouldn't speed up parsing the setting much, which is one of the things that steals the most developer time (seems to me)
23:28 timotimo did you get the cursor allocation count stats there?
23:28 jnthn Well, they're included
23:28 jnthn I was seeing them when looking at NQP.nqp
23:28 jnthn 'cus it's got a load of grammars in it
23:28 timotimo ah, that's good
23:28 timotimo you're doing all this on moarvm? i don't know of a NQP.nqp otherwise
23:28 jnthn It's nice to speed up setting parsing 'cus it also makes every other program parse faster
23:29 dwarring joined #perl6
23:29 jnthn NQP.nqp is a generated file on other backends :)
23:29 jnthn from src/NQP/*
23:29 timotimo that's true of course; though not all programs look like the setting with its endless declarations of infixes, postfixes, prefixes ;)
23:30 timotimo oh, i could be doing this on the jvm backend to get better compile times!
23:30 jnthn aye :)
23:31 BenGoldberg Switching to jvm gives better overall compile times, yes?  But... reducing allocation of cursors will still produce better relative compile times no matter what vm is used.
23:31 BenGoldberg :)
23:32 timotimo yes, that's the hope
23:33 jnthn It'll also reduce GC churn
23:33 timotimo the reduction of cursor allocations will hopefully also correspond to things like smarter LTM matcher decisions and stuff
23:33 jnthn Which is important for folks like nwc10++ trying to build on small machines, which don't have much memory and so are GCing oftener, I suspect.
23:34 jnthn oh wow
23:35 jnthn I knew the NFA builder didn't know all the built-in rules
23:35 jnthn I didn't realize that it doesn't know about ident.
23:36 jnthn That's getting fixed tomorrow, then, I think :)
23:37 Mouq std: infix:<<+>> # STD bug http://perlcabal.org/syn/S02.html#Extended_identifiers
23:37 camelia std 7c17586: OUTPUT«[31m===[0mSORRY![31m===[0m�Undeclared routine:� 'infix:<<+>>' used at line 1�Check failed�FAILED 00:00 41m�»
23:37 timotimo jnthn: so you're going to specialcase "ident" from nqp in the NFA generator because it's so simple and doesn't need analysis or something like that?
23:38 timotimo Mouq: don't you mean &infix:<<+>>?
23:38 timotimo std: &infix:<<+>>
23:38 camelia std 7c17586: OUTPUT«[31m===[0mSORRY![31m===[0m�Undeclared routine:� 'infix:<<+>>' used at line 1�Check failed�FAILED 00:00 44m�»
23:38 timotimo ah
23:38 jnthn timotimo: yeah, thought it was already done...
23:38 Mouq std: infix:<+>
23:38 camelia std 7c17586: OUTPUT«ok 00:00 41m␤»
23:38 jnthn anyway, enough for today, I'm meant to $dayjob tomorrow before I think about Perl 6 things... :)
23:39 jnthn 'night
23:39 BenGoldberg rn: try { say $_ } for 1..2
23:39 camelia niecza v24-95-ga6d4c5f: OUTPUT«1␤2␤»
23:39 camelia ..rakudo ccf9c4: OUTPUT«Nil␤Nil␤»
23:39 Mouq I was looking into getting extended identifiers into rakudo, but STD doesn't even have them yet
23:39 Mouq jnthn++ night
23:41 timotimo it still amazes me by what margin the jvm beats parrot for parsing the setting
23:41 timotimo it takes almost 1/3rd of the time
23:42 diakopter okay, but has anyone timed the new cursless branches of nqp+rakudo
23:43 timotimo no huge change so far
23:43 timotimo i mean, we have almost 2 million cursor invocations total
23:43 timotimo even 100_000 less is not terribly much yet
23:44 lue std: infix:«+»
23:44 camelia std 7c17586: OUTPUT«[31m===[0mSORRY![31m===[0m�Undeclared routine:� 'infix:«+»' used at line 1�Check failed�FAILED 00:00 41m�»
23:48 dwarring ...I've been progress the rubyish example from edument a little... jnthn++ masak++
23:48 dwarring *progressing
23:48 timotimo nqp: say(" " ~~ /<? \s|'#' > \s/)
23:48 camelia nqp: OUTPUT«Null regex not allowed at line 2, near "<? \\s|'#' "␤current instr.: 'panic' pc 14693 (src/stage2/gen/NQPHLL.pir:5223) (src/stage2/gen/NQPHLL.nqp:279)␤»
23:48 timotimo not quite sure what ...
23:48 dwarring I don't know Ruby that well, but have already hit a case where parsing doesn't seem to be context free...
23:49 dwarring see https://gist.github.com/dwarring/6757601
23:49 * dwarring thinks it's time for a coffee
23:50 timotimo in any case we've got rid of a whole lot of "before" cursor instantiations
23:51 BenGoldberg so $! ~~ /EINSUFFICIENTCAFFIENE/
23:52 timotimo for some reason, <? \s|'#'> doesn't seem to want to work :(
23:52 timotimo curiously says "unrecognized metacharacter <"
23:53 timotimo huh. i wonder how >> at the end of <?...> works
23:53 dwarring nqp internals stuff is great btw
23:53 timotimo it is! (i was there to experience, although i was tired every day >_< )
23:55 dwarring I think that just put the 'ish' into 'rubyish'
23:57 btyler joined #perl6
23:59 timotimo i find it a bit hard to make more <?before stuff> -> <? stuff> replacements, i don't think i understand that properly.
23:59 timotimo i know that i can turn <?before <.subrule>> into <?subrule> because that's simple

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

Perl 6 | Reference Documentation | Rakudo