»ö« 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⏏ anonParse 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 declaredat /tmp/AvLuXOo2E2:1------> anon anon⏏<EOL>Malformed anonat /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/6q3NbOJy44Preceding context expects a term, but found infix = insteadat /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 1Check failedFAILED 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 1Check failedFAILED 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«12» | ||
..rakudo ccf9c4: OUTPUT«NilNil» | |||
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 1Check failedFAILED 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 |