samcv .tell pmurias it's <:InBlockName> if you see how it is in roast 03:41
yoleaux samcv: I'll pass your message to pmurias.
Geth roast: 3beda20320 | usev6++ | S32-basics/xxKEY.t
[jvm] Unfudge now passing tests
06:07
bartolin lizmat: there was no (new) problem with the jvm build. it regularly fails because 'make test' does not work before 'make install' (RT #132101) 06:11
synopsebot RT#132101 [open]: rt.perl.org/Ticket/Display.html?id=132101 [JVM] ‘make test’ does not work before ‘make install’
[Tux] Rakudo version 2017.11-60-g78aeaf469 - MoarVM version 2017.11-28-gba1fb9542
csv-ip5xs1.105 - 1.160
csv-ip5xs-2013.060 - 13.768
csv-parser12.091 - 12.485
csv-test-xs-200.443 - 0.501
test11.701 - 11.703
test-t2.954 - 2.955
test-t --race1.227 - 1.262
test-t-2053.423 - 54.464
test-t-20 --race18.402 - 19.138
08:37
second run test-t 2.994 - 3.048 08:45
scovit Zoffix: I do not understand the logic behind 6c299bf9f8 10:50
to me it seems that the school kid algorithm already reduces the numbers, so I wouldn't do it later again when we possibly already overflowed 10:55
sub DIVIDE_NUMBERS seems like an hack to me
Geth rakudo: 47f23fc687 | (Elizabeth Mattijsen)++ | src/Perl6/World.nqp
Use IterationBuffer to store let/temp data

  - instead of nqp::list, which HLLizes
  - allows for simplification of the let/temp logic later
10:56
Zoffix scovit: the logic is we don't reduce twice, so we gain 40% speed. Ints don't overflow. And DIVIDE numbers also handles Rat->Num conversion. 11:29
scovit: aye, if the denominators were proper uints they'd overflow, but the same was the case before my patch. They're currently just Ints tho and I expect this issue to be handled when the denominator is made a proper uint64 11:47
Hoping to file for a small grant in 2018 to do all the Rat polishing, unless someone beats me to it.
DrForr Zoffix: gist.github.com/drforr/21d6067a74a...f91f3dbd0b Not sure if you can fix it, probably is in the Gist module. 11:49
Actually it's deeper, down in SSL according to the error. I can view github.com and view the gist.github.com inteface without problems. 11:50
Zoffix then it be in HTTP::UserAgent
or deeper 11:51
Geth rakudo: 126d7b550c | (Elizabeth Mattijsen)++ | 2 files
Abstract prefix:<temp|let> logic into R:I, use it

Apart from the name of the temporary value storage, there is really no difference between prefix:<temp> and prefix:<let>. So abstract the logic into a Rakude::Internals method and use that, while optimizing the logic on the fly.
lizmat saves about 3.5K on settings.moarvm size 11:52
Zoffix nice
DrForr Right. I'll yank the code that does the github post and just settle for the MD->HTML conversion.
Maybe even add a --output to file option. 11:54
Geth rakudo: 6fb5c8c89e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm
Argh, we need to stub X::Localizer::NoContainer

  - now that the temp/let logic lives in R:I
  - also put the exception stubs in alphabetical order for easier maintenance
12:19
pmurias samcv: <:ascii> and <:space> are in roast (they seem to have been added as part of a bug report rather than a deliberate addition) 12:55
Geth rakudo: f6c2e70bbc | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm
Fix typo in comment, MasterDuke17++
moritz pmurias: <:ascii> also appears in S05 12:57
pmurias moritz: in the <:!Blk<ASCII>> form 13:49
moar horrid property handling "logic" seems to be creeping into roast 13:53
Geth rakudo: 6601da5c62 | (Elizabeth Mattijsen)++ | src/core/Hash.pm
Streamline Hash.AT-KEY, jnthn++ for the pointer

With improved inlining we have now, it makes sense to take the capture taking logic out of AT-KEY, so that it can be inlined for the most common case. Capture taking/$!whence setting is now done in a private method
  !AT-KEY-WHENCE, which also takes care of the case where there was no
  $!storage allocated yet. Makes Hash.AT-KEY about 1.7x faster for the common
case of looking up an existing Str:D key.
13:54
|Tux| Rakudo version 2017.11-65-g6601da5c6 - MoarVM version 2017.11-28-gba1fb9542
csv-ip5xs1.065 - 1.067
csv-ip5xs-2012.459 - 12.735
csv-parser11.871 - 12.021
csv-test-xs-200.434 - 0.457
test11.436 - 11.477
test-t2.882 - 2.889
test-t --race1.146 - 1.236
test-t-2051.779 - 53.072
test-t-20 --race17.433 - 17.476
14:29
lizmat buggable: speed 20 :4 test-t 14:40
buggable lizmat, ▃▁▃ ▄ dates: 2017-12-01–2017-12-05
lizmat, ▇███ ▁▂▅█ range: 2.809s–3.048s
lizmat, ████ ▇▄▄▆█▅ ████▂▁ speed: 2% faster (widths: 9/3)
lizmat, ████▁███████▆▆██████
Geth rakudo: fe8312b7ed | (Elizabeth Mattijsen)++ | 2 files
Streamline Array.Slip.AT-POS like Hash.AT-KEY

  - also use the same postfix for the private helper method
  - WHENCE is an implementation detail, CONTAINER is what it gives
14:50
wander How can I print symbol table when exec nqp code? 14:52
I can print AST by using `--target=parse`, is there something similar on symbol table?
timotimo i don't think there is, but if you build the moarvm file, you can then moar --dump the resulting file and that has variable names in it 14:53
though the --target=ast also has definitions in it, i recall now 14:57
wander emmm...seems QAST is right, where are actions of QAST? 15:07
pmurias language design question: do we want <alpha> to match the unicode property alphabetic or work like Letter? 15:10
wander: you mean what the QAST nodes mean? 15:11
timotimo Actions is where all the QAST nodes get created 15:12
QASTCompilerMAST turns the QAST into MAST, which is what moarvm consumes and turns into moar bytecode 15:13
ilmari what does QAST stand for? Quite Abstract Syntax Tree?
timotimo PAST was Parrot AST, QAST is just P+1 AST 15:14
because Q comes after P
tadzik Qarrot, pronounced "Carrot" 15:15
tadzik hides
ilmari NQPAST was too long?
timotimo very good
wander ok, I use `--target=mast` to generate MAST, let me take a look at it
MAST cannot be executed by moar directly, can it? I got "Unhandled exception: Bytecode stream corrupt (missing magic string)", how to deal with it 15:21
timotimo yeah, mast is a text format
you have to --target=mbc to get what moar eats
oh, i know why you thought mast is what you needed 15:22
when you --target=mast, you get a text dump (so humans can understand what's going on (even though it's very hard to read)) but what moar actually gets for the next stage is the objects that were dumped; we don't have a parser for the text format, and there's things missing in the text format that are essential to compilation 15:23
jnthn Usually to look at the bytecode I dod --target=mbc --output=x.moarvm and then moar --dump x.moarvm 15:26
*do
wander this time I got "Cannot dump this object; no dump method", anything missed? 15:27
command: "./nqp --target=mbc main.nqp --output=main.moarvm" 15:28
timotimo the --foo args need to go before the main.nqp
otherwise you'll be passing --output to the program in main.nqp
wander it works :-) 15:30
timotimo jnthn: thank you very much 15:31
timotimo you're welcome
wander it looks even the dump version is more readable to me 15:34
timotimo i've experienced in the past that the output from --dump was cut off; redirecting to a file or through less usually helps in that case 15:35
perhaps that's fixed now that we threw out libuv for stdout and stderr
Geth rakudo: af29a227c8 | (Elizabeth Mattijsen)++ | src/core/Array.pm
Streamline Array.AT-POS for better inlineability

  - seems to make Array.AT-POS about 1.6x faster on existing elements
  - hardly measurable slowdown on non-existing elements
15:52
lizmat this should also be visible in test-t 15:53
timotimo nice 15:58
wander timotimo: can I generate mbc by dumped code? I'm hacking perl6/nqp#332 and find some questionable lines in the dumped code, I want to modify and exec it to see if my assumption is correct. 16:37
synopsebot NQP#332 [open]: github.com/perl6/nqp/issues/332 [Moar] Bug in || on Moar
tbrowder .ask AlexDaniel what do you think of my last comment on last Rakudo PR- 16:38
yoleaux tbrowder: I'll pass your message to AlexDaniel.
timotimo you can create MAST manually and compile that to mbc
but it's very difficult to change mbc once it's in file form 16:39
tbrowder .ask AlexDaniel PR? I am getting close to a good solution for the table config key values but I think the last PR is a good interim solution. Note also the previous PR must also be merged to get the new tests to work. So I’m respectfully requesting merge of PR #1287 and PR #1291. 16:45
yoleaux tbrowder: I'll pass your message to AlexDaniel.
wander ok now i have a file includes MAST that's modified (gist.github.com/W4anD0eR96/c773390...eb9173f3a) 16:46
which command should be taken to compile it to mbc
timotimo we can't go from the text dump format to working mbc, you'll have to hook into the compiler and force it to change what it passes on, i'm afraid
i realize that's damn tricky :( 16:47
lizmat dinner&
wander what is "hook into the compiler" (sorry for so many trivial questions)? 16:48
timotimo go into QASTCompilerMAST and have it check what's being fed to it and then make the necessary changes to result in the code you actually want 16:49
wander let me try. thank you! 16:50
timotimo if you want to build custom qast and run it, you can do it just like in here: github.com/perl6/nqp/blob/master/t...ferences.t
i don't think anybody manually created MAST ever since nqp started running on moarvm itself 16:51
or perhaps someone did and it's easier than i think?
also: here comes an extra fun part: if you make changes to the nqp compiler, you'll first compile a whole nqp with a compiler that has your change 16:52
so if your change is too invasive, it can cause the compiler to misbehave before it even reaches the frame you're trying to change
wander anyway, I find the bug relevant to issue above occurred after QASTtoMAST, that is, QAST is correct but MAST is wrong 16:55
gist.github.com/W4anD0eR96/39c1b13...6910793eff 16:56
Geth rakudo: 9a2f53250e | (Elizabeth Mattijsen)++ | src/core/List.pm
Streamline List.AT-POS a bit

  - only about 5% improvement on the fast path
  - basically same slow path handling as in Array.AT-POS
18:14
timotimo wander: did you look at where unless gets compiled? it's in QASTOperationsMAST line 689 and following 18:54
annoyingly, it's one implementation for if, unless, with, and without 18:55
wander yes
maybe it's about $res_reg
timotimo so the bug is that the second-to-last set operation - the one before the label - uses the wrong register as its source? 18:56
i'm not quite sure why using register 8 there is wrong 18:57
wander before the label? 18:58
timotimo no, why using register 7 is wrong i mean
wander yes
timotimo in the "it should be" version there isn't any mention of local number 7 at all 18:59
wander there should have never been about 7, IMO
the result is loc_8, seems like we lose track on it the use a new reg instead 19:00
s/is/is in/
timotimo oh, what does local number 1 store in this example? 19:01
wander code snip `my int $foo = $bar || 200`, loc_1 keeps the value of $bar 19:02
if I remove `int`, the it generates (gist.github.com/W4anD0eR96/15f6df2...b7a278f2a)
which gives correct result 19:03
timotimo perhaps it's an optimization gone wrong
i mean attempt to make the code gen smarter for native types 19:04
wander moar's optimizer? 19:06
since QAST looks fine
timotimo no, human optimizer 19:08
trying to make the if/unless/with/without code better
wander code in QASTOperationsMAST? 19:10
timotimo yes 19:11
wander I think it might be about what $res_reg is, but I cannot print/note it to see what it is. 19:12
got "cannot stringify this" 19:13
Geth rakudo: c5afc97e30 | (Elizabeth Mattijsen)++ | src/core/Array.pm
Make Array.ASSIGN-POS about 1.7x faster

  - making it inline better would cause slowdown on non-fast paths
  - doesn't increase/reduce number of inlined frames in --profile
  - doesn't slow down slow paths noticeably
19:16
timotimo yeah, it'll be an object of type MAST::Register i expect 19:17
you find that code under moarvm's repository
lib/MAST/Nodes.nqp
a MAST::Node has a dump method, for example 19:18
oh it'll be a MAST::Local probably?
wander yes, it's a MAST::Local, which also has method dump :) 19:22
samcv i don't think <:ascii> should work.. 19:48
i don't see ascii as a property value alias or a property alias. and if we did want an ascii thing we'd want it named <ascii> not <:ascii> 19:49
oops nvm. had case sensitive search on. "ASCII" is an alias for Basic_Latin. so <:InASCII> should work but not <:ascii> 19:50
Geth roast: 8da27758cc | (Samantha McVey)++ | S05-mass/properties-general.t
Use <:InASCII> not <:ascii> for searching for ASCII codepoints

ASCII is an alias for Block Basic_Latin. Bare ascii is not specced, although it presently works in MoarVM.
19:53
samcv also i'm not sure what happens for properties that start with "In" since there are some 19:56
currently moarvm doesn't have any of those in the database. but not sure if it was a great idea to preface blocks with "In" since "In" can occur in actual properterty names 19:57
<:Indic_Positional_Category> will it try to check if Block=dic_Positional_Category ? 19:58
or well it check if the character has a non-default value for Indic_Positional_Category. hm
timotimo hm, time for longest token matching to shine? 19:59
though that'd have to query moarvm for "does this exist?"
samcv yeah
timotimo we have that op, don't we?
samcv yeah
if the pvalue returns 0 it doesn't exist
Geth rakudo: a974de9ba6 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
Make R:It:ReifiedArray 15% to 30% faster

  - make sure pull-one is as simple as possible
  - add a !hole method for handling holes in $!reified
  - make push-all also use !hole method
  - use lexical $i in push-all for slighly faster performance
20:06
jnthn lizmat++ # I see speedups :) 20:17
lizmat jnthn: you mean in code, or just in commit messages ? :-)
timotimo whoa
lizmat hopes someone can verify
timotimo faster iteration over all reified arrays ought to be really nice for a big chunk of all code out there 20:18
jnthn lizmat: in commit messages :) 20:23
I'm presuming your measurements are accurate
I can try them tomorrow on a couple of benchmarks I have at the office though :)
lizmat hopes for good news then :-) 20:24
I have thrown out several optimizing attempts because they didn't :-(
[Tux] Rakudo version 2017.11-70-ga974de9ba - MoarVM version 2017.11-28-gba1fb9542
csv-ip5xs1.056 - 1.077
csv-ip5xs-2012.927 - 12.996
csv-parser11.928 - 12.397
csv-test-xs-200.424 - 0.434
test11.577 - 11.758
test-t2.825 - 2.854
test-t --race1.238 - 1.265
test-t-2051.212 - 52.593
test-t-20 --race17.546 - 18.069
21:46
lizmat noise :-( :-) 21:48
Geth rakudo: ae02bc2994 | (Elizabeth Mattijsen)++ | src/core/Array.pm
Streamline Array.iterator.push-until-lazy a bit

  - pretty hard to qualify how much this will save
  - but appears to have a positive effect on make spectest
  - uses lexicals in loops instead of attribute
  - at least, no capture inside it anymore, which would inhibit inlining
21:51
lizmat and this concludes my hacking for today& 21:53
samcv m: say 171.chr ~~ /<:Initial_Punctuation>/ 22:40
camelia 「«」
samcv at least this seems to work even though it starts with 'In' so that's good
AlexDaniel tbrowder: I'm a bit too busy this week. I'll take a look when I can, but please don't hold your breath for it 23:02
maybe someone else can take a look
tbrowder ok, but first i’ll keep improving the code—almost there! thnx 23:04