seatek | timotimo: HTTP::UserAgent is the one I settled on after poking around for a while | 00:00 | |
timotimo | good | ||
MasterDuke | TimToady: thanks. i know i've wanted to interpolate into char classes before, but i don't know why it isn't allowed? | ||
timotimo | you can just interpolate an array instead, if that array is an array of characters | ||
(it'll be slow.) | 00:01 | ||
MasterDuke | cool, that'll work if what i want to interpolate comes from outside the regex | 00:02 | |
timotimo | that's usually what interpolating is for :) | 00:03 | |
MasterDuke | well yeah, but while TimToady's solution works because i'm only capturing a single character, it wouldn't if i was capturing more, but wanted what i captured to be contents of a char class | 00:05 | |
i don't anticipate wanting to do that every other day or anything, just wondering about the reasoning | 00:06 | ||
dalek | ast: 5cfffd4 | usev6++ | / (2 files): Fudge failing test for rakudo-j |
06:52 | |
ast: d2b9d23 | usev6++ | S09-typed-arrays/native-int.t: Unfudge test for antipairs + native arrays on JVM |
|||
kudo/nom: 37d0e46 | lizmat++ | src/core/Slip.pm: Make slip(@a) quite a bit faster. But generally, you are better off using .Slip anyway, because it avoids the overhead of the expensive argument parsing with a +args signature. |
07:20 | ||
nine | Damn.... camelia fails to build rakudo-j again: java.lang.RuntimeException: Missing or wrong version of dependency 'gen/jvm/stage2/QRegex.nqp' | 09:50 | |
MasterDuke | m: grammar G { regex TOP {^^ "#" \s* "line" \s+ $<line>=(\d+) \s* [ \s (<['"]>?) $<filename>=(<-['"]>+) $0 ]? \s* $$} }; say G.parse("#line 2 foo.bar") | 12:17 | |
camelia | rakudo-moar 37d0e4: OUTPUTĀ«ļ½¢#line 2 foo.barļ½£ā¤ line => ļ½¢2ļ½£ā¤ 0 => ļ½¢ļ½£ā¤ filename => ļ½¢foo.barļ½£ā¤Ā» | ||
MasterDuke | the above is a direct translation of the Perl 5 regex to parse line directives show in the docs: /^\# \s* line \s+ (\d+) \s* (?:\s("?)([^"]+)\g2)? \s* $/x | 12:18 | |
however, when i stick that in NQP's src/HLL/Grammar (minus the TOP obviously), the line directives in m-CORE.setting don't get parsed | 12:19 | ||
timotimo | could be it doesn't even get considered from rakudo's grammar? | 12:20 | |
i.e. overwritten by other stuff | |||
MasterDuke | no, if i use something a little less flexible it works | ||
timotimo | hm, ok | 12:21 | |
could be newline-related trouble | |||
MasterDuke | this is what i've been testing with: ^^ '#' \s* 'line' \s+ $<line>=(\d+) [ \s+ $<filename>=(\S+) ]? $$ | ||
timotimo | that's the one that works? | ||
MasterDuke | yep | ||
as a token, not regex | 12:22 | ||
timotimo | well, there's your problem | ||
rakudo has a more complicated rule ws, i think | |||
wait, is token sigspace? | |||
no, only rule is sigspace. never mind, then | 12:23 | ||
well, what if you change the more complicated one to regex instead of token? maybe you're relying on backtracing without knowing it? | |||
MasterDuke | m: grammar G { token TOP {^^ "#" \s* "line" \s+ $<line>=(\d+) \s* [ \s (<['"]>?) $<filename>=(<-['"]>+) $0 ]? \s* $$} }; say G.parse("#line 2 foo.bar") | 12:24 | |
camelia | rakudo-moar 37d0e4: OUTPUTĀ«Nilā¤Ā» | ||
MasterDuke | i did, after seeing it didn't work as a token ^^^ | ||
timotimo | um | 12:25 | |
is that $0 correct? because i don't think it is. | |||
m: grammar G { token TOP {^^ "#" \s* "line" \s+ $<line>=(\d+) \s* [ \s (<['"]>?) $<filename>=(<-['"]>+) $1 ]? \s* $$} }; say G.parse("#line 2 foo.bar") | 12:26 | ||
camelia | rakudo-moar 37d0e4: OUTPUTĀ«Nilā¤Ā» | ||
MasterDuke | it is. the first capture is named, so itn't also $0 | ||
timotimo | it is also $0, because you have () instead of [] on the RHS of the = | ||
MasterDuke | m: grammar G { regex TOP {^^ "#" \s* "line" \s+ $<line>=(\d+) \s* [ \s (<['"]>?) $<filename>=(<-['"]>+) $0 ]? \s* $$} }; say G.parse("#line 2 'foo.bar'") | ||
camelia | rakudo-moar 37d0e4: OUTPUTĀ«ļ½¢#line 2 'foo.bar'ļ½£ā¤ line => ļ½¢2ļ½£ā¤ 0 => ļ½¢'ļ½£ā¤ filename => ļ½¢foo.barļ½£ā¤Ā» | ||
timotimo | m: say ("heyo" ~~ / $<lol>=(.) /).perl; | ||
camelia | rakudo-moar 37d0e4: OUTPUTĀ«Match.new(ast => Any, list => (), hash => Map.new((:lol(Match.new(ast => Any, list => (), hash => Map.new(()), orig => "heyo", to => 1, from => 0)))), orig => "heyo", to => 1, from => 0)ā¤Ā» | ||
timotimo | ok, i'm wrong, carry on. | 12:27 | |
MasterDuke | ha no worries. i've now been testing so many variations of the code it's all running together, so it's good for fresh eyes to check some assumptions | 12:28 | |
timotimo | have you tried running it through perl6-debug-m yet? | ||
MasterDuke | huh, that gives me Nil for the regex example that works with perl6-m | 12:31 | |
it matched up through the 'foo.bar', but then backs off back to the space and gives Nil | 12:32 | ||
assuming i'm reading it correctly, i've never used it before | |||
timotimo | i'm not sure what exact code you're currently trying it with | 12:34 | |
MasterDuke | m: grammar G { regex TOP {^^ "#" \s* "line" \s+ $<line>=(\d+) \s* [ \s (<['"]>?) $<filename>=(<-['"]>+) $0 ]? \s* $$} }; say G.parse("#line 2 'foo.bar'") | ||
camelia | rakudo-moar 37d0e4: OUTPUTĀ«ļ½¢#line 2 'foo.bar'ļ½£ā¤ line => ļ½¢2ļ½£ā¤ 0 => ļ½¢'ļ½£ā¤ filename => ļ½¢foo.barļ½£ā¤Ā» | ||
MasterDuke | ^^^ that | ||
timotimo | m: say "bab" ~~ / (X?).$0 / | 12:35 | |
camelia | rakudo-moar 37d0e4: OUTPUTĀ«ļ½¢bļ½£ā¤ 0 => ļ½¢ļ½£ā¤Ā» | ||
timotimo | m: say "bab" ~~ / (.?).$0 / | ||
camelia | rakudo-moar 37d0e4: OUTPUTĀ«ļ½¢babļ½£ā¤ 0 => ļ½¢bļ½£ā¤Ā» | ||
timotimo | well, that's supposed to work at least | ||
MasterDuke | RT #130083 for different behavior between perl6-m and perl6-debug-m | 13:10 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130083 | ||
MasterDuke | there are still other things to work on in my code, so i'll back off to the less flexible token to keep making progress | 13:11 | |
dalek | kudo/nom: 13f6b63 | usev6++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java: Check for concreteness in p6scalarfromdesc on JVM That method looks whether the decontainerized value of desc is a type object. It handles the 'null' case as well. Fixes RT #128341 and newly failing tests in S09-multidim/assign.t. |
13:18 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128341 | ||
rakudo/nom: cdca973 | (Zoffix Znet)++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java: | |||
rakudo/nom: Merge pull request #918 from usev6/rt128341 | |||
rakudo/nom: | |||
rakudo/nom: Check for concreteness in p6scalarfromdesc on JVM | |||
ast: 1f31490 | usev6++ | S09- (2 files): Unfudge tests for RT #128341 (rakudo-j) Fixed with Rakudo commit 13f6b63455. |
13:23 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128341 | ||
dalek | kudo/nom: 59bb1b1 | lizmat++ | src/core/ (2 files): Make IterationEnd.perl/gist/Str show "IterationEnd" Mostly for making debugging of iterators easier. |
15:38 | |
lizmat | T-Dose shutting down& | 16:01 | |
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Make IterationEnd.perl/gist/Str show "IterationEnd" | 16:23 | |
travis-ci.org/rakudo/rakudo/builds/175494050 github.com/rakudo/rakudo/compare/c...bb1b14713b | |||
buggable | [travis build above] ā Did not recognize some failures. Check results manually. | ||
TimToady waves briefly... | 18:12 | ||
will backlog offline | |||
MasterDuke | timotimo: i know you've worked on the profiler some. what do you think about adding sqlite as an output format? e.g., --profile-filename=example.sqlite outputs it as a sqlite database? that might make working with large profiles possible | 19:30 | |
timotimo | MasterDuke: it's possible. you could probably have a piece of code in rakudo that does it (because no nativecall sugar in nqp) and install it in the compiler and call it from there | 19:46 | |
or something like that, anyway | |||
MasterDuke | timotimo: hmm, doesn't sound quite as simple as i'd hoped, but maybe i'll look into it if no one else has after i finish up this line directive stuff | 19:58 | |
dalek | p: 17d9bbf | (Pawel Murias)++ | src/QAST/Node.nqp: Avoid printing out <> when we have dump ast nodes with no flags. |
20:12 | |
p: 070392c | (Pawel Murias)++ | src/vm/js/Compiler.nqp: [js] Insert 'use strict'. |
|||
p: 0062c15 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Instead of looking up the sc handle/idx on every QAST::WVal use, store the value in a js variable. |
|||
p: 8229f78 | (Pawel Murias)++ | src/vm/js/ (3 files): [js] Optimize boolification. |
|||
ast: 8f856a7 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S (2 files): gcd operator with zeros |
20:30 | ||
MasterDuke | what runs during stage mast of the rakudo build? | 21:18 | |
arnsholt | NQP code mostly, I think. Outputting the Moar bytecodes | 21:21 | |
lizmat | m: my @a[2;2] = ((0,1),(2,3),()); # should this fail or not ? | 21:27 | |
camelia | ( no output ) | ||
lizmat | jnthn: ^^^ one could argue the data has the wrong number of dimensions, although it actually doesn't specify any value in the out-of-bound dimension | 21:28 | |
afk& | 21:30 | ||
MasterDuke | arnsholt: thanks | 21:57 | |
it's interesting. m-CORE.setting is parsed twice. once during the parse stage, and again during the mast stage | |||
timotimo | "parsed"? | 22:00 | |
MasterDuke | read at least and HLL::Compiler.lineof called on each line | 22:01 | |
what's the nqp equiv of caller[1]? | |||
timotimo | something like with nqp::callframe? | 22:02 | |
or look at the source of callframe or something | |||
it helps when you change code to make it faster to also -Ilib | 22:06 | ||
MasterDuke | timotimo: ^^^ was that to me? | 22:08 | |
timotimo | no, to myself | 22:11 | |
i'm looking at JSON::Fast again | |||
it's allocating far too many BOOTCode >:( | |||
pmurias | MasterDuke: look in the nqp repo at src/vm/moar/QAST/QASTCompilerMAST.nqp:1405 | 22:14 | |
MasterDuke | pmurias: yeah, i didn't realize at first that compile_all_the_stmts() was called multiple times | 22:17 | |
timotimo | i wish someone could swoop in and make JSON::Fast's parse-string twice as fast or something ... | 22:26 | |
or make nom-ws not allocate BOOTCode :| | 22:30 |