»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
BenGoldberg p: printf '%d,%dX', $_ % 16, $_ / 16 for (0..255).pick(20) 00:01
camelia pugs: OUTPUT«(timeout)» 00:02
BenGoldberg p: printf '%d,%dX', $_ % 16, $_ / 16 for (0..255).pick(1)
00:02 sizz left
camelia pugs: OUTPUT«(timeout)» 00:02
BenGoldberg p: .say for (0..255).pick(1)
camelia pugs: OUTPUT«66␤»
00:02 sizz joined
BenGoldberg p: print '', $_ % 16, ',', $_ / 16, 'X' for (0..255).pick(1) 00:02
camelia pugs: OUTPUT«3,13.1875X» 00:03
colomon oO
BenGoldberg rpn: print 5/16
camelia rakudo d3c8d5, niecza v24-95-ga6d4c5f, pugs: OUTPUT«0.3125»
BenGoldberg rpn: printf '%d', 5/16
camelia pugs: OUTPUT«(timeout)» 00:04
..rakudo d3c8d5, niecza v24-95-ga6d4c5f: OUTPUT«0»
BenGoldberg p: print '', $_ % 16, ',', $_ +>> 4, 'X' for (0..255).pick(1)
camelia pugs: OUTPUT«*** ␤ Unexpected ">>"␤ at /tmp/FwIMT6bKyR line 1, column 30␤»
00:04 Guest6057 joined
BenGoldberg p: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(1) 00:05
camelia pugs: OUTPUT«15,12X»
BenGoldberg rpn: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(1)
camelia pugs: OUTPUT«10,0X»
..niecza v24-95-ga6d4c5f: OUTPUT«7,13X»
..rakudo d3c8d5: OUTPUT«13,8X»
BenGoldberg rpn: print '', $_ % 16, ',', $_ +> 4, 'X' for (0..255).pick(20)
camelia niecza v24-95-ga6d4c5f: OUTPUT«7,9X12,2X9,10X11,7X7,2X4,5X12,14X9,7X1,5X13,10X8,15X11,0X3,7X5,11X5,9X14,7X10,10X14,5X10,14X5,7X»
..pugs: OUTPUT«3,2X4,10X15,11X9,0X14,13X2,7X13,0X3,12X9,1X6,9X3,7X1,9X13,7X9,10X2,8X15,13X9,8X6,15X15,8X3,4X»
..rakudo d3c8d5: OUTPUT«9,12X10,13X8,1X14,4X15,0X8,10X7,3X9,0X11,10X7,4X6,5X3,11X10,15X10,10X4,7X7,1X1,10X1,11X0,13X1,4X»
BenGoldberg rpn: printf '%d,%dX', $_ % 16, $_ +> 4 for (0..255).pick(*) 00:06
camelia pugs: OUTPUT«(timeout)»
..niecza v24-95-ga6d4c5f: OUTPUT«3,6X6,6X10,1X7,0X7,6X4,6X11,3X6,11X5,4X11,2X2,10X6,9X15,14X14,6X7,13X9,11X3,12X15,5X13,11X6,14X9,0X8,9X11,9X11,14X7,4X11,6X9,13X9,1X11,8X1,0X9,14X14,4X8,0X9,9X11,0X10,3X0,13X6,4X2,0X15,13X10,6X2,11X13,6X13,15…»
..rakudo d3c8d5: OUTPUT«1,14X4,13X6,11X13,9X7,4X7,9X15,13X13,10X3,14X4,2X11,7X5,6X4,6X13,12X10,15X2,11X8,0X13,14X7,11X13,1X12,9X5,4X0,8X1,9X4,10X14,3X3,4X3,11X14,7X7,13X3,7X12,7X4,9X11,15X4,0X8,1X3,12X10,6X13,2X3,0X15,5X2,8X12,14X11,5X9,9X…»
BenGoldberg pugs's printf is borken?
00:12 Psyche^_ joined 00:16 Psyche^ left 00:17 berekuk joined 00:23 BinGOs_ joined 00:37 logie joined 00:41 berekuk left
sjohnson *rainbows* 00:45
00:46 stevan_ joined
lue BenGoldberg: it might be the 256 card draws. 00:56
01:01 btyler joined
Mouq rnp: anon anon 01:07
camelia niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Malformed anon at /tmp/kHO3hNbtYT line 1:␤------> anon⏏ anon␤␤Parse failed␤␤»
..pugs: OUTPUT«*** No such subroutine: "&anon"␤ at /tmp/nSM0ibaS_m line 1, column 1 - line 2, column 1␤»
..rakudo d3c8d5: OUTPUT«===SORRY!===␤Type 'anon' is not declared␤at /tmp/AvLuXOo2E2:1␤------> anon anon⏏<EOL>␤Malformed anon␤at /tmp/AvLuXOo2E2:1␤------> anon ⏏anon␤ expecting any of:␤ scoped declarator␤␤…»
Mouq oop 01:08
01:16 Ben_Goldberg joined, BenGoldberg left
lue day 1, slide 51: shouldn't that be <section>*, instead of <section>+ ? 01:25
TimToady r: say 300000 / 6473 01:40
camelia rakudo d3c8d5: OUTPUT«46.346362␤»
01:43 berekuk joined, stevan_ left 01:44 stevan_ joined, berekuk left 01:45 stevan_ left 01:46 stevan_ joined 01:54 btyler left 01:56 FROGGS left 02:07 btyler joined 02:09 daniel-s_ joined, FROGGS joined 02:10 daniel-s_ is now known as Dr_Nick, Dr_Nick is now known as daniel-s_
[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
TimToady spectest, I said 02:35
[Coke] yes, sorry, that was a miskey. 02:37
TimToady++
TimToady young people these days...
[Coke] Miss Key? 02:38
TimToady Francis Scott's daughter, apparently
02:46 mberends joined
[Coke] tries a run locally with test_summary. 02:56
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:02
03:09 preflex left 03:10 preflex joined, ChanServ sets mode: +v preflex
TimToady is tired of the irclogs taking long spaceless output lines as an excuse to install a horizontal scrollbar 03:10
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:28 SamuraiJack_ joined, odoacre_ joined 03:29 SamuraiJack left, c1sung joined
lue
.oO(It should be solvable with some CSS, at least the pretty HTML pages)
03:37
04:42 cognominal left 04:56 btyler left 05:20 dayangkun joined 05:23 yoleaux joined, ChanServ sets mode: +v yoleaux 05:26 REPLeffect joined 05:30 daniel-s_ left 05:34 FROGGS left 05:48 araujo joined 06:06 Ben_Goldberg left 06:15 hummeleB1 joined 06:16 SamuraiJack_ left
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)
moritz
.oO( now it's op's problem; too bad I'm op too )
06:27
and I just found that the backups of irclog.perlgeek.de didn't work 06:34
06:52 darutoko joined 06:56 ivanshmakov left 06:58 ivanshmakov joined 06:59 FROGGS joined 07:10 dmol joined
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.
FROGGS .tell timotimo the env test for example
yoleaux FROGGS: I'll pass your message to timotimo.
07:22 japhb_ left, kaare_ joined 07:27 [Sno] left, [Sno] joined
dalek p: 100bab2 | (Tobias Leich)++ | src/vm/parrot/ops/nqp.ops:
fix typo, BenGoldberg++
07:29
07:30 cognominal joined
dalek kudo/nom: 6a56000 | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp revision
07:30
07:32 aindilis` joined 07:33 sqirrel joined 07:50 dmol left
FROGGS Mouq: ping 07:54
08:00 krokite joined 08:05 Rotwang joined
moritz diakopter: turns out the fix is not trivial; the basic case is already covered, and the one you observed is now documented here: github.com/moritz/ilbot/issues/26 08:12
... and as soon as I wrote that, I had an idea for a fix :-) 08:17
08:22 aindilis` left 08:23 xenoterracide_ left
diakopter moritz: why not make a mode where irc colors are converted to css colors 08:23
diakopter is annoyed tonight's SNL hasn't appeared online yet 08:24
08:25 spider-mario joined
moritz diakopter: I didn't have any motivation left for that after trying to deal with the ANSI colors :-) 08:27
08:35 odoacre_ left 08:45 odoacre_ joined 08:57 BinGOs_ is now known as BinGOs 08:58 BinGOs left, BinGOs joined 09:01 odoacre_ is now known as odoacre 09:05 grondilu joined 09:06 berekuk joined 09:25 berekuk left 09:37 ivanshmakov left 09:40 ivanshmakov joined 09:47 GlitchMr left 09:50 berekuk joined 09:51 GlitchMr joined 09:55 sqirrel left 09:57 denisboyun joined 10:09 denisboyun left, iSlug joined
masak good noon, #perl6 10:14
moritz \o masak 10:15
10:39 berekuk left 10:43 berekuk joined
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:44
I'm suspicious that the USB drivers are shit 10:45
and everything you might want to use to mount external swap is on USB
10:49 berekuk left 10:51 berekuk joined 10:52 iSlug left 10:53 berekuk left
masak nwc10++ # building Rakudo on things 10:54
nwc10: did you ever successfully build Rakudo/Parrot on the pi? 10:55
11:13 hummeleB1 left 11:14 denis_boyun joined 11:15 iSlug joined 11:27 denysonique left
nwc10 masak: yes, some time back. Not tried recently 11:30
masak cool. 11:33
dalek ast: e778706 | (Elizabeth Mattijsen)++ | S (9 files):
Part 2 of 2 of eradication of .exists from spectests
12:06
12:09 iSlug left, PacoAir joined 12:12 sqirrel joined
dalek ecs: 069bda8 | (Elizabeth Mattijsen)++ | S02-bits.pod:
Clarification on usefulness of %h<a>:!exists

After having been caught by this a few times while adapting the test-suite.
12:13
masak ooh, I've never triggered that, but I can see how it could be an issue. 12:24
lizmat++
my personal rule for negation is something like "as close to the action as possible". so I naturally reach for :!exists 12:25
and my last resort is always 'if not'
lizmat glad to hear that :!exists feels natural 12:26
12:26 grondilu_ joined
lizmat I seem to remember the days a few months ago where the variability of :advers was limited to just True :-) 12:27
:adverbs
12:28 grondilu left 12:30 grondilu_ is now known as grondilu, grondilu is now known as Guest11220 12:32 Guest11220 is now known as grondilu, grondilu left, grondilu joined 12:35 denis_boyun left
masak hehe :) 12:36
as far as I recall, I suggested that :!exist have the semantics it does today.
12:43 denis_boyun joined
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␤␤»
masak r: my %h; if not %h<foo> :exists { say "righty-o" } 12:44
camelia rakudo 6a5600: OUTPUT«righty-o␤»
masak seems I've internalized enough of Perl 6's parsing logic that the above feels completely natural to me.
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:45
in the case of '%h<foo>', that's postcircumfix:<{ }>. in the case of '!%h<foo>', that's prefix:<!>. 12:46
Ulti I'm just playing with delegation and was wondering if someone could point me in the right direction? gist.github.com/MattOates/dd32fb60f5d1e9e2eb64 12:49
I have a cat and I want it to meow :/
but it just prints Nil all the time as if I'm not getting the vocab into the object that is being delegated to
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␤»
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␤»
masak Ulti: oh, I see your problem.
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
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.
Ulti: making it @.vocab instead should fix it for you. 12:56
Ulti np I'm playing to learn what Perl6 is like
I dont have a serious need for a Cat.meow program >:3
the delegation stuff is cool though
masak yes, and it works, as above. 12:57
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:00
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:02
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
I just found the p6l thread in question. it's "Encapsulating the contents of container types", from 2011.
Ulti is it reflecting on the accessor methods rather than the attributes? 13:04
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
like a constructor shouldnt have magic access like that
heh by chance my Perl6 cat roared a lot more than it meowed nice :) 13:07
13:07 SamuraiJack_ joined
dalek kudo/nom: 3f984f4 | (Elizabeth Mattijsen)++ | src/core/ (7 files):
Mark all .delete methods as DEPRECATED, add delete_key|pos methods as needed
13:09
masak Ulti: the rule is that if you declare the attribute with a dot, it can be initialized with .new 13:10
Ulti: declaring it with a bang and then manually providing an accessor doesn't work.
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
I think that's the right kind of behaviour for safety
masak yeah. maybe.
it's garnered a fair amount of criticism over the past year or so, mainly for breaking people's expectations. 13:13
moritz and the other way around garnered a fair amount of criticism for giving the public WRITE ACCESS to private attributes :-) 13:14
it seems you can't do it right for everybody
nwc10 masak: well, this attempt hasn't gone boom yet: 13:15
2631 nick 20 0 1769m 150m 1464 S 14.2 65.0 42:49.63 java
moritz maybe we just need a trigil that controls initialization semantics </troll>
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...'
nwc10 it only seems to be burning 60% of CPU swapping - ie it's actually about 30% progress, not 0.3%
masak moritz: hehehehe
13:24 sqirrel left
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:24
13:27 denysonique joined
dalek kudo/nom: ccf9c47 | (Elizabeth Mattijsen)++ | src/core/ (5 files):
Change all calls to '.delete' to .delete_key|pos
13:28
masak Ulti: there are two opposing forces at play here. 13:30
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.
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
(and, Perl 6 being what it is, if the language can do something, usually the user can, too)
the long-term effects on me from that discussion is to conclude that "private attribute" is a rather antiquated, 20th-century notion. 13:35
the only interesting thing is who can access what, and in what capacity. 13:36
13:36 iSlug joined 13:41 dayangkun left
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:41
and that's harder if .new (and .clone) allow setting private attrs willy-nilly. 13:42
I still agree with that viewpoint.
Ulti yup me too, especially if someone used clone just to do it :< 13:43
masak in fact, I now think about objects a lot *more* in terms of upholding invariants than I did three years ago. 13:44
while it's a gnarly and multi-faceted problem, it's also a very good focus to have, IMO.
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.
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:46
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.
Ulti use newbwarn 13:48
Ulti wanders off to buy an espresso 13:50
13:50 ajr joined 13:51 ajr is now known as Guest97008
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 14:00 sqirrel joined 14:03 SamuraiJack_ left
dalek nqp: f19118f | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: 14:05
nqp: Prepare QAST -> JVM compiler for closure changes.
nqp:
nqp: We'll experiment with this on MoarVM first; this just does enough to
nqp: have QAST -> JVM not choke on some small changes to NQP.
14:05 dalek joined, ChanServ sets mode: +v dalek
JimmyZ oh my dalek! 14:05
FROGGS Ja dalek'st me am Oarsch! 14:06
dalek ast: 6f3f981 | (Elizabeth Mattijsen)++ | S (9 files):
Replace use of .delete by :delete or .delete_key as appropriate
14:07
lizmat FROGGS: Du naughty boy!
FROGGS *g* 14:09
14:10 REPLeffect left
masak .oO( dalek is so eager to report lots of commits to us, that sometimes it gets kicked ) 14:12
14:18 REPLeffect joined 14:23 btyler joined
dalek p: a7e81fb | jimmy++ | 3rdparty/dyncall/Makefile.embedded:
Fixed mingw32 build
14:39
14:40 Rotwang left 14:48 spider-mario left
dalek p: c6320d3 | jimmy++ | Configure.pl:
fixed Configure.pl fails if ./install is not existed
14:48
14:53 SamuraiJack joined 14:55 Rotwang joined 14:57 krokite left
masak the days of me wearing a towel as headgear on Github are over: github.com/masak 15:01
woolfy++ and/or lizmat++ for that picture. 15:02
timotimo i kind of really liked that old picture, though :P
yoleaux 07:17Z <FROGGS> timotimo: on rakudo/parrot these tests fail too: Unexpected named parameter 'exists' passed
07:17Z <FROGGS> timotimo: the env test for example
masak timotimo: me too, that's why I kept it for so long :)
timotimo :)
15:03 denis_boyun left 15:05 sqirrel left 15:11 mtk left
colomon masak: new picture is great! 15:13
masak \o/
15:16 mtk joined, rindolf joined 15:17 sqirrel joined 15:22 denis_boyun joined
colomon wishes Grammar::Debugger was working. :( 15:22
masak it isn't? :/ 15:23
15:28 Rotwang left
colomon masak: nope, completely broken 15:30
well, you can get help from it
but any attempt to step forward breaks. 15:32
15:32 cognominal left 15:33 cognominal joined
colomon gist.github.com/colomon/6753503 15:36
masak: ^^ Grammar::Debugger blowing up
15:38 BenGoldberg joined
masak colomon: line 77 of lib/Grammar/Debugger.pm is github.com/jnthn/grammar-debugger/...ger.pm#L77 15:42
colomon masak: yes, I've looked at the code.
I don't have any notion why it isn't working, looks straightforward enough.
www.spacex.com/webcast/# # T minus 19 minutes till launch
er, 17:30
masak yes, failing on that line feels... wrong.
colomon very very wrng 15:43
timotimo r: continue = False;
camelia rakudo ccf9c4: OUTPUT«===SORRY!=== Error while compiling /tmp/6q3NbOJy44␤Preceding context expects a term, but found infix = instead␤at /tmp/6q3NbOJy44:1␤------> continue =⏏ False;␤»
15:46 daniel-s_ joined
masak is now fully absorbed in the webcast 15:47
timotimo what casts webs?
colomon SpaceX launch in 13 minutes 15:48
(is the webcast)
masak www.spacex.com/webcast/
oh wow oh wow oh wow
timotimo oh cool
masak they're launching. a rocket. and I'm watching it on screen.
timotimo now if they had a binocular camera in it you could experience the launch with occulus rift ;) 15:49
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?
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
colomon I'm assuming they will talk about it on the webcast if they do it.
15:52 KroKite joined 15:54 japhb_ joined
japhb_ Good *, all! 15:55
masak is biting his nails 15:56
japhb_: www.spacex.com/webcast/ !!!
tadzik oh, a rocket :) 15:57
timotimo plays "surfing on a rocket" by air 15:58
tadzik why is there water pouring?
grondilu I don't think it's water. Rather LO2 voluntary leaking for pressure control or something 15:59
japhb_ masak, ooh, thanks! 16:00
tadzik a coolant, maybe
grondilu go in #space to ask for these stuff
masak WOOOOOOOW
holy crap
timotimo that thing got power 16:01
tadzik warp 5, engage
masak .oO( this... is my BOOM-STICK )
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
is that earth curvature at the upper right?
or was, really
tadzik brokens :(
timotimo aaw
no more radio talk? :(
the fire plume looks amazingly beautiful
like a starfish
masak yeah, it's dropping out here too. "Awaiting vehicle downlink" 16:03
timotimo (not any more)
masak wow, the Earth.
masak cries
colomon it's awesome 16:04
masak it was on the ground just moments ago.
timotimo now i wonder what the etimology of "rocket" is
masak stuck on the surface of a sphere.
timotimo: [Italian rocchetta, diminutive of rocca, spindle, distaff, of Germanic origin.] 16:05
colomon timotimo: rockets were weapons "in the old days"
timotimo somebody must be real proud of those animated dots
Mouq timotimo: en.wiktionary.org/wiki/rocket
colomon like "rocket's red glare" in the star-spangled banner (written in 1812 or 1813)
[Coke] this was really cool untBUFFFERING
the buffering is just a trick so we won't see when they change the set pieces. 16:06
timotimo yeah
colomon getting high def video from space has some buffering, not the end of the world
timotimo sound stage on mars and all that
that is high def?
colomon well, maybe not.
but you know what I mean.
tadzik well, actually, it is beyond the end of the world :)
masak colomon: the rocket seems to be glowing red :)
timotimo what's the gray circles looking picture that always shows up before they show the "awaiting downlink" thing? 16:07
almost always*
tadzik glitch?
[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.
tadzik haha
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."
gfldex where are they going to? 16:09
timotimo gfldex: first manned mission to mars, of course
tadzik I like how the thing is boiling hot, and the space itself is the coolant :)
timotimo space isn't a very good coolant
gfldex the coolant is liquid hydrogen
timotimo all you have there is the heat radiation going out
tadzik that... that's xclock, isn't it? 16:10
timotimo :D
tadzik it looks too familiar
masak tadzik: be glad it isn't Windows. :P
tadzik I'd rather see Kernel Picnic than BSOD now :) 16:11
16:11 daniel-s_ left
timotimo guru meditation? 16:11
geekosaur imagines a shot of the launch site with xeyes overlaid apparently tracking the rocket
timotimo m)
tadzik :D
timotimo THERES PEOPLE IN SPACE!
look at these happy people!
gfldex did they just show all the ppl that go to mars?
timotimo yeah, they have a huge module in the rocket where there's simulated sunlight and gravity 16:12
also, television
gfldex ofc they need TV! How else should they know that they didnt dieded?
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: venturebeat.com/2013/09/27/spacex-l...is-sunday/
timotimo i've been promised landing
colomon tadzik: no people, they're just delivering a satellite to orbit and testing their new engines. 16:14
tadzik oh, awesome :)
timotimo hahaha occupy mars
tadzik lol
timotimo that was a short comment
masak wants an "occupy mars" tee 16:16
tadzik sign me up 16:17
grondilu is not rich enough to consider going to mars. He doubts anyone is.
timotimo going to mars also means giving up everything you know 16:18
masak yeah, but it would be *going to Mars*.
timotimo true
grondilu that's silly if you ask me.
masak everyone staying on the same planet is silly, if you ask me. 16:19
what if we get hit by something?
grondilu wrote quite a few pages on forum.nasaspaceflight.com to defend the idea that manned spaceflight is not a good idea, nowadays.
timotimo some people just need their own planet
tadzik let's wait until computers give us teleporters 16:20
I can give up some of my internal computing power for that
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?
masak japhb_++ # oddly on-topic 16:22
timotimo rockets and teleporters are missing
we need those to go to stars with rakudo
japhb_ Awww dang
jnthn huh, wtf is Perl 6? :)
[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
japhb_: I may throw in some tuits there too
japhb_: Other than that I think we need some work on the Star distro itself.
japhb_: So it supports doing a JVM-based build too
japhb_ Oh, makes sense.
jnthn I'm hoping somebody/some folks may step up to do that second bit 16:24
I'll also try to take on getting the debugger to run on JVM in time for it too.
japhb_ Oh, that would be quite valuable. 16:25
tadzik I think some of p6eval's colours broke my irc client 16:27
16:27 tadzik left, tadzik joined 16:32 sqirrel left 16:37 KroKite left
jnthn std: /^\s*[\#<HERE>|$]/ 16:39
camelia std 7c17586: OUTPUT«===SORRY!===␤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:␤------> /^\s*[\⏏#<HERE>|$]/␤Parse fail…»
Mouq r: if not "abracadabra" ~~ m:ov/ a (.*) a / {$/.say;} 16:55
camelia rakudo ccf9c4: OUTPUT«「abra」␤ 0 => 「br」␤␤»
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␤»
Mouq :ov is matching correctly, but for one: it's returning False; and as well, you can't access these matches 16:57
Other than with side-effects
Same thing here: 16:58
('abcdefg' ~~ m:g /. {$/.say}/).say; #why is this False? 16:59
r: ('abcdefg' ~~ m:g /. {$/.say}/).say; #why is this False?
camelia rakudo ccf9c4: OUTPUT«「a」␤␤「b」␤␤「c」␤␤「d」␤␤「e」␤␤「f」␤␤「g」␤␤False␤»
16:59 xinming_ is now known as xinming
Mouq Huh 17:00
r: 'abcdefg'.match(:g,/./).say
camelia rakudo ccf9c4: OUTPUT«「a」␤ 「b」␤ 「c」␤ 「d」␤ 「e」␤ 「f」␤ 「g」␤␤»
jnthn r: 'abcdefg'.match(:g,/./).WHAT.say 17:02
camelia rakudo ccf9c4: OUTPUT«(List)␤»
jnthn That's why
I think it's meant to fake up an outer Match object or something
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:04
'k, so then how do you access the list? Spec says `slice @()` S05:565 17:07
synopsebot Link: perlcabal.org/syn/S05.html#line_565
17:11 sqirrel joined
colomon jnthn: any notions what is going wrong with Grammar::Debugger? 17:15
17:15 benabik left 17:17 benabik joined
colomon jnthn: gist.github.com/colomon/6753503 17:17
17:25 xenoterracide_ joined, SamuraiJack left
lue hello world o/ 17:44
timotimo hellue 17:45
jnthn colomon: Not right away, no... 17:47
17:48 sqirrel left
masak lue! \o/ 17:49
lue: you missed the rocket launch!
lue I saw something about xeyes and rockets above. 17:50
17:50 Guest97008 left
lue A real life rocket launch? 17:50
17:50 ajr joined, slavik joined 17:51 ajr is now known as Guest54826
tadzik yep 17:52
lue aww :( 17:53
tadzik that'd better be "aww yiss" :)
diakopter masak: did the aliens depart the Hague finally?
17:55 dmol joined 17:56 xinming left, Guest54826 left 17:57 dmol left 17:58 xinming joined 17:59 dmol joined
masak diakopter: EMISSINGREFERENCE 17:59
diakopter the rocket launch?
18:02 sqirrel joined 18:09 rindolf left
masak oh, that part I got. 18:12
18:26 xinming left 18:28 xinming joined 18:34 FROGGS left
moritz .o( what's next after the rockstar programmer? the rocket launch programmer! ) 18:35
masak well, it's hardly rocket surgery. 18:37
diakopter haha 18:38
18:38 darutoko left
arnsholt Or rock star astrophysicist =) 18:38
18:38 zakharyas left
diakopter
.oO( a good comedian can make mokes in any non-language )
18:38
er, jokes, too. 18:39
nwc10 dear Rakudo folks, would it be possible to also have a timestamp in output such as "Stage parse : 15478.310 18:41
18:41 FROGGS joined
nwc10 or "Stage optimize : 3500.913" 18:41
diakopter hopefully those units will be in microseconds soon
nwc10 unless the working set drops below about 224Mb, I think that for that hardware they won't get that good. 18:42
but I am being peverse by trying it on something pretty low powered
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
on the assumption that it will crash
so, so far, it is't
of course, it will now go wrong because I've had to cede the HDMI input on the TV to the satellite box 18:50
18:50 dmol left 18:51 iSlug left 18:53 ksh joined 18:58 berekuk joined 19:06 ajr joined, ajr is now known as Guest67629 19:07 Guest67629 is now known as ajr_ 19:09 sqirrel left
nwc10 w.r.t. the off-topic, twitter.com/elonmusk/status/384392...44/photo/1 -- Launch was good. All satellites deployed at the targeted orbit insertion vectors. 19:15
but they don't seem to be saying anything yet about the first stage fun 19:16
19:21 ksh left 19:25 colomon joined
masak what first stage fun? 19:27
19:27 kivutar joined
moritz now I'm curious too :-) 19:28
jnthn src/stage1/ ?
:P
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:30 colomon left 19:31 BenGoldberg left 19:35 japhb_ left 19:36 colomon joined, Rotwang joined 19:44 kivutar left
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:45
colomon Maybe so you understand what it is that rule is doing? # has not had time to read the slides / do the exercises. :( 19:48
masak lue: if the :s is not at the beginning, it's different from using a rule. 19:49
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, btyler left
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?
masak not deprecated. 19:51
whitespace significance starts at the point :s is located.
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
Thus the workaround with :s
lue I remember a couple days ago talk that the slide should say :s'INSERT' instead of 'INSERT' :s like it does.
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:54
(and how is :s'INSERT' functionally different from 'INSERT' :s ? Or is just a matter of style?) 19:56
jnthn They'd be the same with current nQP semantics. 19:57
But the former is future safe
19:58 btyler joined
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 :) ? 19:59
TimToady S05:334 20:03
synopsebot Link: perlcabal.org/syn/S05.html#line_334
TimToady that explains the new semantics
basically, sigspace is matched only when you've matched something else 20:04
and :s isn't a matcher, so the space after it isn't significant
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
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
nwc10 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
jnthn lue: It's to get LTM right. 20:07
lue and in the future, you'd be able to use rule instead of needing :s, correct? 20:08
jnthn aye
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. ;)
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:11
.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.
jnthn
.oO( sigspace sounds wirth having in that case... )
20:13
colomon :p
jnthn colomon: BTW, for grammar debugging did you consider trying the normal perl6-debug? It does know about grammars...
colomon jnthn: said huge set of rules is why I was hoping to use Grammar::Debugger.
jnthn Ah
colomon …. I have not gotten perl6-debug working … ever? But I guess I can try it.
jnthn colomon: Is Grammar::Tracer also busted, or it works too? 20:14
s/too/
colomon Grammar::Tracer worked perfectly, so far as I could tell
lue needs to try Grammar::Tracer, ::Debugger, and perl6-debug again, he's forgotten what worked and what didn't.
colomon but it's less than useful when there are so darned many rules
can panda install perl6-debug? 20:15
lue colomon: IIRC it's called Rakudo::Debugger in panda's eyes.
colomon good name 20:16
lue hm. For some reason I can't seem to delete rows from SlowDB, using the modify-in-place trick that INSERT uses. 20:32
here it is for reference: gist.github.com/lue/6756293 20:34
(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:37
20:43 Rotwang left
colomon seems like panda isn't work with the latest rakudo? 20:43
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.
colomon (on a Hash, I mean)
timotimo lue: did you splice the database or replace it with a filtered one?
lue I push rows that *don't* match the conditions set to a new database, and then @old := @new at the end. 20:48
timotimo er ... 20:52
masak pmichaud++ # 'Something is "ready" when it is capable of solving the promlem(s) to which it is being put."
er, s/"$/'/
timotimo that doesn't sound like it would work the way you want it to
colomon tadzik: github.com/tadzik/panda/issues/57 20:53
20:55 ajr_ left, kivutar joined 20:57 btyler left
lue timotimo: why not? INSERT does similar in-place modification 20:58
21:04 kaare_ left
timotimo oh 21:12
i interpreted it the wrong way, sorry
dalek p/cursless: c87f86e | jnthn++ | src/ (2 files):
Some simple, uncommentable Cursor tracking.
21:16
p/cursless: 91744f2 | jnthn++ | src/QRegex/Cursor.nqp:
Create a per-grammar fail Cursor.

This is used in various places to make failure allocate less. Attached to ParseShared to still get type correct.
The places it's used so far takes NQP.nqp from creating 284742 Cursor objects in its parse to 229535, though needs more testing.
p/cursless: 0b5feb6 | jnthn++ | src/ (2 files):
Used shared fail Curosr in some HLL::Grammar rules

Shaves another 15,000 Cursor creations off when compiling NQP.nqp. Together with the previous change, that's 25% of Cursor allocations vanished for this case.
colomon jnthn++ 21:17
lue
.oO(Must resist comment on last commit message)
jnthn From 284742 to 214401. Note too bad. 21:18
*Not
diakopter "not badful" 21:19
lue [ it was just noticing how you fail Curosr spelling sometimes :) ]
jnthn d'oh
diakopter play d'oh
jnthn: ok so why does CAPS* get called a trillion times? :) 21:20
er, CAPHASH
jnthn diakopter: 'cus it's called for every MATCH object we construct? :)
diakopter eww 21:21
jnthn Well, it's the thing that does most of the work towards creating a Match...
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:22
jnthn lue: You're binding to a lexical @old in your scope, not the original thing passed in, at a guess 21:23
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: gist.github.com/lue/6756293)
lue investigates nqp::splice
jnthn Over that 215000 or so, about 31000 are from ws 21:25
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 colomon left
timotimo k 21:28
21:28 cjwelborn joined
lue ooh, never knew about splice. That seems very useful. 21:31
21:32 cjwelborn left
timotimo yeah 21:34
tadzik hmm hmm
timotimo except the signatures differ strongly and annoyingly between perl6 and nqp ;)
tadzik Hash.delete is deprecated since the last compiler release, or something?
21:34 PacoAir left
jnthn r: say 214401 - 205297 21:38
camelia rakudo ccf9c4: OUTPUT«9104␤»
lue Yep, splice works :) . Later I'll try to find why what I was doing didn't work as expected. 21:39
timotimo over 9000! 21:45
jnthn yeah, but I broke something there :)
tadzik details, detail 21:46
jnthn r: say 214401 - 213253 21:52
camelia rakudo ccf9c4: OUTPUT«1148␤»
jnthn That one's safe at least.
21:54 kay_ left 21:55 kay_ joined 21:56 kay_ left
jnthn r: say 213253 - 198385 # please pass test, please pass test... 21:58
camelia rakudo ccf9c4: OUTPUT«14868␤»
timotimo oh wow, how did that happen 21:59
that's not quite 50%, but still
more like 7% perhaps? 22:01
r: say 198385 / 2132.53
camelia rakudo ccf9c4: OUTPUT«93.0279996␤»
timotimo wow, that was a pretty solid guess
tadzik subconscious calculator
timotimo must be
i would be interested to know what the maximum depth of that stack of cursors will be 22:02
22:02 benabik left
timotimo because that's the hard lower bound on how many cursors you have to instantiate 22:02
dalek p/cursless: 28ffe45 | jnthn++ | src/NQP/Grammar.nqp:
Turn some <?before ...> into simpler constructs.

In NQP::Grammar; saves 1000 Cursor allocations in NQP.nqp parse.
22:03
p/cursless: 7c9689a | jnthn++ | src/HLL/Grammar.nqp:
Only hit quote_escape:sym<misc> if there's a \\.

This means the LTM analysis can eliminate 15,000 calls to this rule while parsing NQP.nqp.
timotimo ooooh pretty nice
jnthn timotimo: You're forgetting that cursors get stored in other cursors if captured or need to be backtracked into
tadzik does pass tests? :)
jnthn Those commits pass the NQP test suite still, yes
diakopter jnthn: he was assuming eventual failed match :D
tadzik \o/ 22:04
jnthn r: say 284742 - 198385
camelia rakudo ccf9c4: OUTPUT«86357␤»
jnthn r: say 86357 / 284742
timotimo oh, about 4 x 7
camelia rakudo ccf9c4: OUTPUT«0.3032816␤»
jnthn That's how many Cursor allocations I've got rid of so far when parsing NQP.nqp.
timotimo especially that bit of LTM for the quoting should be worth something 22:05
masak 'night, #perl6
timotimo 'night masak
22:07 grondilu left, benabik joined 22:08 kay_ joined
timotimo jnthn: it seems like you shaved off 6 out of 120 seconds for the core setting parse 22:13
well, closer to 5 actually 22:14
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.
jnthn r: say 198385 - 189975 22:16
camelia rakudo ccf9c4: OUTPUT«8410␤»
diakopter best snl season premiere so far
dalek p/cursless: 52a81c0 | jnthn++ | src/QRegex/P6Regex/Grammar.nqp:
Some <before...> simplification in P6Regex grammar

There's a few other places we could in theory do it, but they break tests, it seems. This one is the big win, anyway.
22:17
jnthn r: say 189975 / 284742 22:19
camelia rakudo ccf9c4: OUTPUT«0.667183␤»
jnthn OK, only creating two thirds of the Cursor objects we were :)
22:20 [Sno] left
jnthn This is analysing NQP, btw. 22:20
timotimo the LTM engine knows about lookaheads, right?
22:20 [Sno] joined
jnthn Yeah, <?before ...> is considered, but is then fate 22:21
timotimo ah, so <?before ...>abc will not be the same as just abc?
jnthn No
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?
jnthn It has to be that way
timotimo OK
jnthn There's no conjunction in an NFA.
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
timotimo i'll let you back to work now :) 22:24
jnthn Well, just applied the analysis to CORE.setting parsing. 22:25
I didn't get a before number. I seem to remember somebody gave a > 2 million one.
timotimo does it show you hot spots as in: what rules give off how many instantiations?
jnthn Currently allocates 1,854,030 cursors to parse CORE.setting
Yeah
I get output like:
8 TOP
58 metachar:sym<'>
3622 term:sym<value>
timotimo ah, that's nice 22:26
22:26 kivutar left
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
So basically I go looking for weirdly high numbers 22:27
For example:
10845 statement_control:sym<default>
timotimo ah, of course
jnthn Why oh why do we look for default 10,000 times?
Then I go look at Grammar.nqp and see:
token statement_control:sym<when> {
<sym> <.end_keyword> :s <xblock>
}
rule statement_control:sym<default> {
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?
jnthn <sym><.end_keyword> <block>
}
:)
A rule that has a high number should justify having it 22:28
12640 terminator:sym<;>
That sounds sane. I mean, I can imagine we have 12,000 ;s in CORE.setting
But trying to parse a default block 10,000+ times sounds wrong.
timotimo indeed
how do i turn on the magic analysis when i've checked out that branch?
is it just output to a file? 22:29
benabik Is there a difference between <!before <foo>> and <!foo> ?
jnthn No
Ohter than the latter doesn't call before :)
*Other
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
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
lue jnthn: would a !cursor_start_cur cannot restart a cursor be invoked during the grammar or the actions, in nqp?
jnthn lue: Taht should never happen 22:31
lue: It's a sanity check
lue Oh. That's not good. (I'm just sitting here, trying to factor out the WHERE clause...) 22:33
22:33 denis_boyun left
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
22:34 BenGoldberg joined
lue If that should not happen, I'll pull the latest NQP and try with that. 22:35
dalek kudo/cursless: a9e7f66 | jnthn++ | src/Perl6/Grammar.nqp:
s/rule/token/ for LTM's sake.
22:39
timotimo parse time went up to 120 again, so my report above may very well be noise :( 22:40
benabik Rules don't LTM? 22:44
timotimo hm, does sigspace make LTM sad? 22:45
jnthn benabik: By spec, now, yes. By the spec at the time Rakudo implemented it, no 'cus the initial <.ws> is non-declarative. 22:46
timotimo ah, but initial .ws now requires the programmer to explicitly state "gimme initial ws now"? 22:47
jnthn yeah
I suspect we can simplify various <?before ...> things in Rakudo's Grammar
Feel free to try that in the cursless branch...
jnthn has probably done enough for today :) 22:48
timotimo thank you :)
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
jnthn glances through the list for any other obvious oddnesses
timotimo can you gist the list?
BenGoldberg sub obvious_oddness { so $_ % 2 } 22:50
timotimo doesn't seem to improve parse speed yet, though 22:51
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
otherwise it would be impressive that it's only like a second slower ;) 22:53
jnthn timotimo: gist.github.com/jnthn/6757321 22:56
timotimo thank you :) 22:57
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
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
:p
jnthn timotimo: 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!
jnthn yes, includes \n
timotimo ok, in that case that may happen 19960 times 23:01
i think that's about how many lines that file has
it seems like unspace gets tried very often, but unspace is really a bit more, right? 23:06
oh, does :dba cause LTM to bail out by any chance? 23:07
jnthn It's called explicitly in a lot of places
No
LTM-er is fine with :dba
timotimo good
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.
jnthn yes, probably very helpful in this case
Bet that saves 40,000-ish 23:09
timotimo oh wow
jnthn 20,000ish for before, 20,000ish for the thunk'd thing before invokes
timotimo why is it that <?stuff> is better than <?before stuff>? they have the same meaning but doesn't do a subrule call?
jnthn No subrule call, and no thunking of the thing on the inside in order to pass it to before 23:10
timotimo cool
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
dalek kudo/cursless: 444d519 | jnthn++ | src/Perl6/Grammar.nqp:
attach_docs can happily be a method.
jnthn There's 5,000
timotimo before only gets called 130.000 times, so 40000 less due to unsp would already bring it below 100.000
jnthn "only" :) 23:12
no, 20,000 less to being
*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.)
jnthn And 20,000 out of the anonymous category
The anonymous are positional captures or thunks
23:13 btyler left
jnthn
.oO( CursorKiller, the new hack-em-up game brought to you by a 15-line patch to NQP... )
23:14
timotimo what is MARKER good for? 23:16
it creates quite a lot of cursors
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? gist.github.com/lue/6757420
jnthn like "we saw whitespace here so don't do the hunt again"
timotimo ah, remembering stuff seems like it's pretty important
jnthn yeah, but we should try and do it with less cursors, maybe... :)
timotimo perhaps it can just become a method ;)
jnthn I mighta just found 20,000 more 23:18
It is a method but it still creates a cursor object
But yeah, we may be able to improve it further
I'm probably too stupid to do that tonight though :)
timotimo interesting. :my $stub := self.'!set_highexpect'($old_highexpect); - is there a benefit to doing it like this instead of an inline closure? 23:19
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?
jnthn Yeah...it doesn't have to invoke the closure
No, it's an optimization :)
timotimo good to know
BenGoldberg rpn: say #`(asdf) "foo" 23:21
camelia pugs: OUTPUT«␤»
..rakudo ccf9c4, niecza v24-95-ga6d4c5f: OUTPUT«foo␤»
dalek kudo/cursless: 44929e7 | jnthn++ | src/Perl6/Grammar.nqp:
heredoc rarely need create a Cursor.

Saves 20,000 or so Cursor allocations in CORE.setting.
23:22
jnthn r: 1854030 - 1785550
camelia ( no output )
jnthn r: say 1854030 - 1785550
camelia rakudo ccf9c4: OUTPUT«68480␤»
jnthn Just the few patches I've done to Rakudo so far shaved off those.
Plus already won some from NQP earlier 23:23
timotimo do heredocs even appear in the setting?
jnthn no 23:24
:)
timotimo nice.
ah, heredoc would always start a cursor even if the herestub queue is empty 23:25
does heredoc run after every line or something? :)
lue
.oO( q:to/END/; Making sure it counts for something END )
timotimo seems like every invocation of ws has a good chance of running heredoc, too. good eye on that
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
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
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)
did you get the cursor allocation count stats there? 23:28
jnthn Well, they're included
I was seeing them when looking at NQP.nqp
'cus it's got a load of grammars in it
timotimo ah, that's good
you're doing all this on moarvm? i don't know of a NQP.nqp otherwise
jnthn It's nice to speed up setting parsing 'cus it also makes every other program parse faster 23:29
23:29 dwarring joined
jnthn NQP.nqp is a generated file on other backends :) 23:29
from src/NQP/*
timotimo that's true of course; though not all programs look like the setting with its endless declarations of infixes, postfixes, prefixes ;)
oh, i could be doing this on the jvm backend to get better compile times! 23:30
jnthn aye :)
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
:)
timotimo yes, that's the hope 23:32
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
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.
oh wow 23:34
I knew the NFA builder didn't know all the built-in rules 23:35
I didn't realize that it doesn't know about ident.
That's getting fixed tomorrow, then, I think :) 23:36
Mouq std: infix:<<+>> # STD bug perlcabal.org/syn/S02.html#Extended_identifiers 23:37
camelia std 7c17586: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'infix:<<+>>' used at line 1␤Check failed␤FAILED 00:00 41m␤»
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?
Mouq: don't you mean &infix:<<+>>? 23:38
std: &infix:<<+>>
camelia std 7c17586: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'infix:<<+>>' used at line 1␤Check failed␤FAILED 00:00 44m␤»
timotimo ah
jnthn timotimo: yeah, thought it was already done...
Mouq std: infix:<+>
camelia std 7c17586: OUTPUT«ok 00:00 41m␤»
jnthn anyway, enough for today, I'm meant to $dayjob tomorrow before I think about Perl 6 things... :) 23:39
'night
BenGoldberg rn: try { say $_ } for 1..2
camelia niecza v24-95-ga6d4c5f: OUTPUT«1␤2␤»
..rakudo ccf9c4: OUTPUT«Nil␤Nil␤»
Mouq I was looking into getting extended identifiers into rakudo, but STD doesn't even have them yet
jnthn++ night
timotimo it still amazes me by what margin the jvm beats parrot for parsing the setting 23:41
it takes almost 1/3rd of the time
diakopter okay, but has anyone timed the new cursless branches of nqp+rakudo 23:42
timotimo no huge change so far 23:43
i mean, we have almost 2 million cursor invocations total
even 100_000 less is not terribly much yet
lue std: infix:«+» 23:44
camelia std 7c17586: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'infix:«+»' used at line 1␤Check failed␤FAILED 00:00 41m␤»
dwarring ...I've been progress the rubyish example from edument a little... jnthn++ masak++ 23:48
*progressing
timotimo nqp: say(" " ~~ /<? \s|'#' > \s/)
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)␤»
timotimo not quite sure what ...
dwarring I don't know Ruby that well, but have already hit a case where parsing doesn't seem to be context free...
see gist.github.com/dwarring/6757601 23:49
dwarring thinks it's time for a coffee
timotimo in any case we've got rid of a whole lot of "before" cursor instantiations 23:50
BenGoldberg so $! ~~ /EINSUFFICIENTCAFFIENE/ 23:51
timotimo for some reason, <? \s|'#'> doesn't seem to want to work :( 23:52
curiously says "unrecognized metacharacter <"
huh. i wonder how >> at the end of <?...> works 23:53
dwarring nqp internals stuff is great btw
timotimo it is! (i was there to experience, although i was tired every day >_< )
dwarring I think that just put the 'ish' into 'rubyish' 23:55
23:57 btyler joined
timotimo i find it a bit hard to make more <?before stuff> -> <? stuff> replacements, i don't think i understand that properly. 23:59
i know that i can turn <?before <.subrule>> into <?subrule> because that's simple