Geth | kudo/nom: dd514da052 | TimToady++ | src/Perl6/Grammar.nqp speed up find_symbol a bit The $*WANTEDOUTERBLOCK symbol is usually false, but our dynvar cache doesn't cache negative results, and we didn't set a default cacheable false value. Now we do. Parses setting most of a percent faster. |
01:04 | |
ast: f7a91c6448 | (Carl Masak)++ | S12-class/attributes.t Mark up test with 'RT #126975' |
08:22 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126975 | ||
Geth | kudo/nom: d932355ea9 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm Include try-load in CompUnit::PrecompilationRepository's interface Users expect every precompilation repository to support try-load, so don't break in case we get a non-Default precomp repository. |
09:45 | |
ast: b37b953b72 | (Stefan Seifert)++ | 2 files Run tests for long implemented importing of Perl 5 functions |
10:05 | ||
tadzik | Inline::Perl5 is core now? :o | 10:10 | |
nine | No, but Perl 5 compatibility tests have been in roast long before I started Inline::Perl5 ;) | 10:19 | |
tadzik | ah :) | 11:07 | |
nine | Which is good because I'm quite lazy when it comes to writing tests... | 11:12 | |
Geth | kudo/nom: 9d5c3fd549 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Introducing R:It.CStyleLoop An optimized version of Seq::CStyleLoopIter |
11:21 | |
kudo/nom: c2eb7fb70a | (Elizabeth Mattijsen)++ | src/core/Seq.pm Make Seq.from-loop use R:It.CStyleLoop This makes "do loop ( init; while; next ) { }" about 6% faster. |
|||
AlexDaniel | :o | 11:33 | |
Geth | kudo/nom: 493211227d | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Optimize R:It.WhileLoop a bit further Work around the "Cannot reference undeclared local '__lowered_lex_3225" issue. Makes "do while foo { bar }" about 20% faster. |
11:38 | |
[Tux] | This is Rakudo version 2017.01-102-gd932355ea built on MoarVM version 2017.01-14-g357438a9 | 11:54 | |
csv-ip5xs 2.828 | |||
test 12.426 | |||
test-t 5.028 | |||
csv-parser 13.681 | |||
2nd run 5.239 | |||
RabidGravy | still nudging down | 11:58 | |
under five seems well doable | |||
Geth | kudo/nom: 3888b4201e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Optimize R:It.RepeatLoop a bit further Work around the "Cannot reference undeclared local '__lowered_lex_3225" issue. Makes "do repeate while foo { bar }" about 20% faster. |
11:59 | |
kudo/nom: fdcf462f42 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm Optimize Any.IterateOneNotSlippingWithoutPhasers - work around "Cannot reference undeclared local '__lowered_lex_3225" - use $stopped instead of $redo logic: saves one init each iteration Makes maps of the form ".map: -> $_ --> Foo { ... }" about 2x as fast, where Foo is something not Slippy. |
12:38 | ||
masak .oO( the fight against Kryptonited Superman would've been pretty short and curb-stomp, if not for the fact that Lex had also been correspondingly lowered ) :P | 12:55 | ||
also, I'm now picturying Slippy as a really slimy paper clip | 12:56 | ||
picturing* | |||
Geth | ast: 8b31a15344 | (Samantha McVey)++ | S15-unicode-information/uniprop.t Test for full names for East_Asian_Width not abbreviated ones |
13:50 | |
kudo/nom: 7e98504c1f | (Elizabeth Mattijsen)++ | src/core/Block.pm Make firing phasers about 25% faster This should affect all loops that have phasers in them. Of course, this improvement is only on the overhead of calling the phasers, not the code in them. |
14:08 | ||
p: 9f6530e878 | MasterDuke17++ | docs/6model/repr-compose-protocol.markdown Fix typo |
14:24 | ||
lizmat | afk& | 14:30 | |
samcv | lizmat, having some problem with iterators | 15:48 | |
here is my log gist.github.com/samcv/7ff0bcee783a...3d02264a41 | 15:49 | ||
and i can't replicate if i write my data to a json, then have a minimal thing and put it in a $ sigil hash, and do for $rev-hash.keys.sort(+*) it works fine | 15:50 | ||
maybe all that print out means something | |||
still getting the same error even if I turn it into a List before calling `for` on it | 15:55 | ||
nine | samcv: what's on ./UCD-gen.p6:580? | 16:03 | |
samcv | for $rev-hash.sort.keys(+*) { } | 16:04 | |
but even if i make the sort and the keys section happen above it, it still crashes | |||
for $sorted-values { } << this still crashes | |||
dogbert17 | brokenchicken: bizarre, according to my mail prg I didn't send anything ?!?! | 16:57 | |
dogbert17 notices that Digest::MD5 is incredibly slow :( | 17:00 | ||
brokenchicken | .oO( the ghost in the machine... ) |
17:01 | |
dogbert17 | I did get a strange mail in the middle of the night from RT mentioning this bug, confused the hell out of me | 17:02 | |
nine | Ah curse zef's agressive cache :/ | 17:05 | |
brokenchicken | There's an option to bypass it, though I don't see it documented... | 17:06 | |
--/cached | 17:08 | ||
Geth | p: 5bebbcf857 | (Pawel Murias)++ | 5 files [js] Remove takeclosure leftover, update comment. |
17:42 | |
p: 94ea924119 | (Pawel Murias)++ | docs/qast.markdown Improve QAST::ParamTypeCheck docs. |
|||
p: ca1e923d27 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js [js] Remove debugging leftover found by BenGoldberg1++. |
|||
p: 04c221c7fc | MasterDuke17++ | docs/qast.markdown Fix typo |
17:56 | ||
lizmat | m: for ^10 -> { ... } # samcv, looks like you're doing this somehow | 18:46 | |
camelia | rakudo-moar 7e9850: OUTPUTĀ«Too many positionals passed; expected 0 arguments but got 1ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā» | ||
samcv | lizmat, weird | 19:09 | |
brokenchicken | Where's the code with that issue live? | 19:10 | |
github.com/samcv/UCD | |||
samcv | yeah. i replaced it with a while loop tho | 19:11 | |
brokenchicken | oh | ||
samcv | let me try switching it back and investigate more | ||
brokenchicken, let me show you this atom plugin i got tho | 19:12 | ||
a.uguu.se/QCHsRaf0pTh8_Screenshot_...111201.png | |||
see the right side | |||
it's populated with all the sub's in the file, and i can easily click and go to them | |||
i have a file .nav-marker-rules gist.github.com/6b69255ed071eb9c25...ddf4594238 in the project's folder which just has regex which matches the sub's | 19:13 | ||
MasterDuke | wouldn't DrForr's Perl6::Parser be the best tool for implementing that? assuming it's fast enough, etc. | 19:14 | |
samcv | well all it's matching is #marker-rule: /sub ([\w-']+)/||%1 | 19:15 | |
but you can have more rules if you want, but it's way more productive for large files. and in the rakudo source you could set it for methods etc and do more things | |||
to find your way around the file easier and get a gist of the routines in it | |||
brokenchicken | samcv: I don't got any space for it tho: i.imgur.com/NIzgyq0.png | 19:17 | |
samcv | lol. you can always show it and then hide it i guess? | ||
idk i usually show it in alternative to the file browser | |||
Geth | kudo/nom: 031efe0d9f | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm Optimize Any::IterateOneWithPhasers a bit further This makes my @a = do for @b { ...; PHASER foo } about 5% faster, and for @b { ...; PHASER foo } about 15% faster. |
21:02 | |
samcv | so str seem to maybe just automatically unbox? | 21:25 | |
m: use nqp; my $h := nqp::hash; nqp::bindkey($h, nqp::unbox_s('key'), nqp::unbox_s('value')); say nqp::istype(nqp::atkey($h, 'key'), str) | |||
camelia | rakudo-moar 031efe: OUTPUTĀ«0ā¤Ā» | ||
samcv | m: use nqp; my $h := nqp::hash; nqp::bindkey($h, nqp::unbox_s('key'), nqp::unbox_s('value')); say nqp::istype(nqp::atkey($h, 'key'), Str) | ||
camelia | rakudo-moar 031efe: OUTPUTĀ«1ā¤Ā» | ||
lizmat | yeah str <-> Str pretty much is automatic | 21:26 | |
samcv | and I thought jnthn said i couldn't bind native types in nqp? | 21:27 | |
m: use nqp; my $h_2 := nqp::hash; nqp::bindkey($h_2, 'wa', 1); say $h_2<wa>.WHAT; | 21:28 | ||
camelia | rakudo-moar 031efe: OUTPUTĀ«(Int)ā¤Ā» | ||
samcv | seems to work fine? | ||
so I am very confused | 21:29 | ||
lizmat | samcv: why wouldn't that work ? | 21:30 | |
samcv | idk jnthn said there were only string keys or values in nqp | ||
or maybe that's on the vm level and the Int is a hack? | |||
i thought that nqp only had string keys or values, and then rakudo employed some hack to be able to have typed objects | 21:31 | ||
lizmat | well, the $h_2<wa> will nqp::hllize the nqp::hash | ||
but the values can be anything, they're _o if you will | |||
for opaque I believe | |||
samcv | _o? | ||
timotimo | no, _o stands for "object" | 21:33 | |
lizmat | just like nqp::list is really internally nqp::list_o, so is nqp::hash really nqp::hash_o | ||
timotimo | i.e. whatever MVMObject you can come up with | ||
it's just contrast to _i, _n, and _s | |||
samcv | hmm ok | ||
timotimo | i don't seem to remember us having any hash with _i, _n, or _s? | 21:34 | |
samcv | so hashes CAN store native types | ||
just keys are only strings? | |||
and native type strings are a hack in rakudo right? | |||
timotimo | yeah, hash keys can only be strings | ||
samcv | so all nqp hashes stores values as objects? | ||
timotimo | yeah | 21:35 | |
samcv | m: use nqp; my $h_2 := nqp::hash; nqp::bindkey($h_2, 'wa', nqp::unbox_s('1')); say nqp::isstr(nqp::atkey($h_2, 'wa')); | ||
camelia | rakudo-moar 031efe: OUTPUTĀ«0ā¤Ā» | ||
samcv | nqp: my $h_2 := nqp::hash; nqp::bindkey($h_2, 'wa', nqp::unbox_s('1')); say nqp::isstr(nqp::atkey($h_2, 'wa')); | ||
camelia | nqp-moarvm: OUTPUTĀ«Confused at line 2, near "say nqp::i"ā¤ at gen/moar/stage2/NQPHLL.nqp:765 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:908 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moarā¦Ā» | ||
timotimo | m: use nqp; my $h := nqp::hash; nqp::bindkey($h, nqp::unbox_s('key'), nqp::unbox_s('value')); say nqp::isstr(nqp::atkey($h, 'key')) | 21:36 | |
camelia | rakudo-moar 031efe: OUTPUTĀ«0ā¤Ā» | ||
samcv | nqp: my $h_2 := nqp::hash; nqp::bindkey($h_2, 'wa', nqp::unbox_s('1')); say(nqp::isstr(nqp::atkey($h_2, 'wa'))) | ||
camelia | nqp-moarvm: OUTPUTĀ«1ā¤Ā» | ||
samcv | it won't let me store a str into a hash? | ||
in rakudo? but is fine in nqp? | |||
lizmat | indeed, native str hashes are NYI | ||
as are any native value hashes actually | |||
timotimo | writing nqp in rakudo gives you a whole lot of hllize and other magical things | ||
which can be surprising | 21:37 | ||
samcv | how do i stop it | ||
timotimo | but necessary to make it mix at all with perl6 code | ||
don't actually know :\ | |||
samcv | can i have a nqp module then? | ||
that is pure nqp? | |||
timotimo | yeah, you can, but i'm not sure what limitations there are | 21:38 | |
there is "use floo:from<nqp>" | |||
m: use Perl6::Compiler:from<NQP>; say Perl6::Compiler.WHAT | |||
camelia | rakudo-moar 031efe: OUTPUTĀ«No such method 'gist' for invocant of type 'Perl6::Compiler'ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā» | ||
timotimo | there, it's a nqp object, and so it won't .gist | ||
lizmat | m: use Perl6::Compiler:from<NQP>; say Perl6::Compiler.^name | 21:39 | |
camelia | rakudo-moar 031efe: OUTPUTĀ«Perl6::Compilerā¤Ā» | ||
samcv | ok so if i have a file called "myawesomenqpthing" | ||
use lib 'lib'; use myawesomenqpthing:from<NQP> and it'll work? | |||
a file called myawesomenqpthing.nqp in lib | 21:40 | ||
brokenchicken | m: use HLL::Grammar:from<NQP>; grammar Foo is HLL::Grammar { token TOP { <ident> } }.parse('foo').say | ||
camelia | rakudo-moar 031efe: OUTPUTĀ«===SORRY!===ā¤While looking for 'HLL/Grammar.moarvm': no such file or directoryā¤Ā» | ||
brokenchicken | awww | ||
timotimo | i'm not actually certain | 21:45 | |
but RAKUDO_MODULE_DEBUG ought to help | |||
and you can "use lib" with something magical to make it look for nqp modules in the right place | |||
nine | use lib won't do anything for NQP | 21:56 | |
timotimo | can't we nqp#something for that? | ||
nine | NQP's module loader looks in %*COMPILING<%?OPTIONS> for one extra path. Otherwise it'll look in . and blib | 22:00 | |
Curiously nqp-jvm supports an NQP_LIB environment variable | 22:01 | ||
samcv | interesting | 22:06 | |
timotimo | OK | 22:14 | |
Geth | kudo/nom: 6b6a0b4357 | (Elizabeth Mattijsen)++ | src/core/SlippyIterator.pm Add SlippyIterator.slip-all A utility method when an iterator received a Slip and you're inside of a push-all. Checks for Empty so it is even faster doing nothing :-) |
22:20 | |
kudo/nom: 3424465077 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm Optimize Any.IterateOneWithPhasers still further - add push-all method makes @a = do for @b { ...; PHASER foo } about 1.5x faster - fix problem with LAST phaser being called twice in sink-all |
22:22 | ||
kudo/nom: b31c591915 | (Elizabeth Mattijsen)++ | src/core/SlippyIterator.pm Add SlippyIterator.slip-all(Slip:U) candidate So we can transparently handle Slip type objects being iterated. |
22:34 | ||
kudo/nom: 5b3ac83b93 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm Use SlippyIterator.slip-all in more places |
|||
lizmat | and that finishes my tuits for today | ||
good night, #perl6-dev! | |||
brokenchicken | night | ||
timotimo | gnite lizmat! | 22:36 | |
samcv | what's the nqp ternary operator? | 23:42 | |
brokenchicken | Same as Perl 6 | 23:45 | |
samcv | well how do i call it in perl 6? | ||
brokenchicken doesn't really understand the question | 23:46 | ||
samcv | there's nqp::if, how do i call ternary operator from perl 6? | ||
brokenchicken | hehe | 23:47 | |
samcv: just use the nqp::if :) It's the same thing | |||
samcv | b-but | ||
fine! | |||
brokenchicken | nqp::if(cond, stuff-if-true, stuff-if-false) | ||
samcv | is calling nqp::atkey(nqp::atkey($enum-prop-nqp, $prop), $enum)); twice more expensive than | 23:53 | |
err | |||
gist.github.com/564739be643467135b...05ab104cd6 see this change | 23:54 | ||
it seems having a variable holding the atkey takes about the same amount of time as calling atkey twice |