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