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] |
|
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| |
|
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] |
|
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 |