samcv yay. optimizing moar get a 12% speed improvement slurping a 200MB text file 02:03
exciting
[Tux] This is Rakudo version 2016.12-200-gf9ed7300f built on MoarVM version 2016.12-58-ga4fbf52e 07:53
csv-ip5xs 3.178
test 13.159
test-t 5.328
csv-parser 14.749
dalek p: eb5881a | samcv++ | tools/build/MOAR_REVISION:
Bump MoarVM for 14% better performance decoding UTF-8 text

  github.com/MoarVM/MoarVM/commit/d0...3457d8ff48
08:32
kudo/nom: 528ec53 | samcv++ | tools/build/NQP_REVISION:
Bump MoarVM/NQP for 14% better performance decoding UTF-8 text

  github.com/MoarVM/MoarVM/commit/d0...3457d8ff48
08:33
samcv [Tux], will this help the tests you run every day?
[Tux] test is already running :) 08:34
samcv nice
brrt samcv++ nice work 08:38
samcv have more changes i'm working on but they're more about 1% or so each improvement, so thought i'd add this one in now
cause it goes through that codepath A LOT 08:39
brrt i'm slightly scared that there'd be low-hanging fruit like this still left, but good find
nine I'm glad that there's still LHF ;) 08:40
samcv LHF?
samcv forgets that one
low hanging fruit ok
but yeah we need a faster UTF-8 decoding implementation 08:41
brrt i believe that
not sure but i'm guessing this ties in with jnthns utf8-c8 branch?
samcv (this is irrespective of UNicode in general) just the utf-8 decoding bytes into codepoints
unrelated
though i mean things still pass through both when decoding as utf8-c8 08:42
we first decode to codepoints from whichever format, then we put them in graphemes and determine how the characters break up and combine
[Tux] This is Rakudo version 2016.12-200-gf9ed7300f built on MoarVM version 2016.12-58-ga4fbf52e
csv-ip5xs 3.165
test 13.198
test-t 5.281
csv-parser 14.026
second run was 5.367
so withing noise range 08:43
samcv csv-parser looks smaller
it's only going to be seen if you are taking in UTF-8 data, not manipulating strings (mostly)
[Tux] that is tony's
samcv tony's?
[Tux] github.com/tony-o/perl6-csv-parser <= 08:44
samcv so i'm guessing it reads in utf-8 data from a file? 08:46
well idk what your source file is. just curious is it ascii or have mixed things
[Tux] just (very) plain ASCII 08:50
sh$ for i in $(seq 1 1000000); do echo 'hello,","," ",world,"!"'; done > /tmp/hello.csv
sh$ time perl csv.pl < /tmp/hello.csv
although my tests have less records, just 10000 08:51
[Tux] => $work
samcv it's basically this github.com/minimaxir/big-list-of-n...r/blns.txt but 10,000 times 09:01
most is ascii, but it has some weird sections. there's probably better things to test it with, buti wasn't sure what to do
arnsholt Big list of naughty strings! =D 09:06
samcv m: EVAL qx{curl raw.githubusercontent.com/minimaxi.../blns.txt} 09:18
camelia rakudo-moar 528ec5: OUTPUTĀ«===SORRY!=== Error while compiling <tmp>ā¤EVAL is a very dangerous function!!! (use the MONKEY-SEE-NO-EVAL pragma to override this error,ā¤but only if you're VERY sure your data contains no injection attacks)ā¤at <tmp>:1ā¤------> list-of-naughtā€¦Ā»
samcv m: use MONKEY-SEE-NO-EVAL; EVAL qx{curl raw.githubusercontent.com/minimaxi.../blns.txt}
camelia rakudo-moar 528ec5: OUTPUTĀ«qx, qqx is disallowed in restricted settingā¤ in sub restricted at src/RESTRICTED.setting line 1ā¤ in sub QX at src/RESTRICTED.setting line 11ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
samcv #Scunthorpe Problem
#
#Innocuous strings which may be blocked by profanity filters (en.wikipedia.org/wiki/Scunthorpe_problem)
hha
that part is funny
medieval erection of parapets
"Craig Cockburn, Software Specialist" 09:19
arnsholt Ah yes, the Scunthorpe problem =D
samcv "Human injection: #Strings which may cause human to reinterpret worldview"
If you're reading this, you've been in a coma for almost 20 years now. We're trying a new technique. We don't know where this message will end up in your dream, but we hope it works. Please wake up, we miss you.
whew
arnsholt Alternatively the clbuttic problem =)
mst a reference so old you might call it medireview 09:32
samcv .tell jnthn I found the code for QT's SIMD optimized UTF-8 decoder code.woboq.org/qt5/qtbase/src/core...c.cpp.html thought you might like to see 09:35
dammit
anybody want to fix github.com/perl6/roast/blob/master...est-gen.p6 to work after the GLR? 10:38
i was not around before that time
needs to be updated for Unicode 9.0 10:39
notviki buggable: speed 11:08
buggable notviki, ā–‡ā–‡ā–‡ā–ˆā–‡ā–‡ā–ˆā–‡ā–ˆā–‡ā–ˆā–ˆā–‡ā–‡ā–‡ā–ˆā–„ā–†ā–…ā–ƒā–„ā–„ā–‚ā–ƒā–ƒā–„ā–‚ā–ā–ā–‚ā–ƒā–‚ā–‚ā–…ā–‚ā–‚ā–„ā–‚ā–ƒā–‚ā–‚ā–ā–†ā–„ā–‚ā–‚ā–ƒā–‚ā–‚ā–‚ data for 2016-12-15ā€“2017-01-04; range: 5.137sā€“6.264s
notviki oh man, the "replaced content" section of that article is hilarious 11:37
"Several websites running rudimentary obscenity filters have replaced the word "ass" with "butt", resulting in "clbuttic" for "classic" and "buttbuttinate" for "assassinate"." 11:38
mst notviki: yup 11:41
I remember when it happened 11:42
I mean, the clbuttic yahoo one
geekosaur also inspiring the cloud-to-butt plugin :p
notviki samcv: nothing strikes me as pre-glrish in that script 12:01
jnthn github.com/perl6/roast/blob/master...gen.p6#L43 12:02
That line probably needs to be `for flat`
And there's a similar one below it
notviki c: pre-glr my @a = ^5; my @b = <a b c d e>; for @a Z @b -> $s, $e { dd [$s, $e ] } 12:03
committable6 notviki, Ā¦Ā«pre-glrĀ»: $ = [0, "a"; 1, "b"]ā¤$ = [2, "c"; 3, "d"]ā¤Too few positionals passed; expected 2 arguments but got 1ā¤ in block <unit> at /tmp/E6Nlqdbsdz:1ā¤ Ā«exit code = 1Ā»
notviki m: my @a = ^5; my @b = <a b c d e>; for @a Z @b -> $s, $e { dd [$s, $e ] }
camelia rakudo-moar 528ec5: OUTPUTĀ«[(0, "a"), (1, "b")]ā¤[(2, "c"), (3, "d")]ā¤Too few positionals passed; expected 2 arguments but got 1ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
notviki ok
samcv here's the input txt it generates from notviki if you want to fix it ftp://ftp.unicode.org/Public/9.0.0/ucd/NormalizationTest.txt 12:04
night everybody o/ 12:07
jnthn 'night, samcv 12:10
lizmat Files=1162, Tests=54568, 197 wallclock secs (11.74 usr 4.88 sys + 1292.46 cusr 134.21 csys = 1443.29 CPU) 12:23
masak notviki: my other favorite is Reuters having some kind of automatic replacement s/the queen/Her Majesty Queen Elizabeth the Second/g -- and then they ran an article about bees: badbeekeepingblog.com/2016/04/21/t...he-second/ 12:26
that and "clbuttic", those two are what I usually bring up when explaining the dangers of regex match false positives to people 12:27
"clbuttic" is also a good time to talk about \b and word boundaries
"the queen" notably doesn't have that problem -- it's just a case where dumb textual matching does too much 12:28
[Coke] dogbert2: if you want to be a bug admin, I need your RT account/email. 13:38
notviki my nqp-foo isn't strong enough. A bunch of stuff I tried for .clone in Setty/Baggy is 22% faster for 3-item bags, but 26% slower for 1000-item bag when compared against just { self.new-from-pairs: self.pairs; } 13:46
lizmat notviki: what we really need are object hashes at the VM level 13:52
problem with that is that we would need to implement that on all backends at the same time to prevent mental meltdown
notviki :( 13:57
jnthn Having object hashes at the VM level is perhaps going to be trouble.
REPR operations must never call back into userland code as part of their contract. But if you can't do that, how do you check if the two things are equivalent?
lizmat ok, well if we can't have them at VM level, perhaps we need to think about how to make equivalence checker more optimal than eq .WHICH 13:58
jnthn Yes, ObjAt needs a re-think 13:59
But really we should just be dealing in integers
e.g. hashing something produces an integer
Which we use to look up in the hash table 14:00
And then eqv to check we hit the right thing
dalek kudo/nom: 42a8c58 | lizmat++ | src/core/ (3 files):
Make R:I.WhateverIterator a method

Brings it more in line with the other R:I.*iterator methods, and allows some of the boilerplate to be hidden away in the method.
arnsholt Time for a Mu.hashCode? =)
jnthn That's what WHICH is for, it's just that ObjAt could do with being smarter :) 14:02
Or actually less smart ;) 14:03
Just an integer :)
Though I think we probably want to have ways to construct ObjAt from other integers/ObjAt instances
So we can factor out the hash computation
arnsholt Ah, right =) 14:04
jnthn And avoid the mass of StackOverflow threads C# et al. have on "how to write a good hashcode function" ;) 14:05
And the resulting copy-paste of those into every non-small codebase out there :)
lizmat so I guess we need some form of nqp::exists_id() ? 14:07
jnthn only had to fix two .t files for lexical module loading in his $dayjob codebase
lizmat on an nqp::hash 14:08
jnthn lizmat: I'd probably bypass nqp::hash entirely and just have an nqp::list
lizmat for object hashes ?
jnthn Or two
Yeah
lizmat works for me
jnthn I mean, that's what hashes are under the hood anyway :)
If we're smart then we might actually come out *ahead* of uthash 14:09
On memory use
Because it does things as a linked list.
And so there's malloc overhead per element too
lizmat how bad is nqp::splice ? (for nqp::deletekey functionality) ?
jnthn Huh? 14:10
If you're asking that, then I suggest reading up on how to implement hash tables. ;_)
lizmat perhaps I should :-)
jnthn (Elements never need to move.)
In short, though, you take the integer hash value 14:11
And then modulo it with the number of elements in your current array
If that's kept to a power of 2 then that can be a bit operation 14:12
And that tells which index to look in to
The only problem beyond that is deciding on the strategy for collisions
lizmat right
jnthn A simple on being "just insert it into the next free slot"
*simple one 14:13
And then on lookup scan until hitting a null
Also need a time to decide when to re-hash
uh, not so much re-hash, but when to expand.
lizmat feels to me this is something perl 5 has thought through a lot already ?
jnthn Does it do object hashes? 14:14
lizmat no
jnthn (in core, I'm sure it's done 50 times on CPAN)
Most langs have done this :)
If you do the robin hood hashing, read the recent "accidentally quadratic" post about Rust's use of it
It's worth reading for the nice explanations of things as well as the "what not to do" :) 14:15
lizmat feels more and more like a rite of passage that's above my pay level :-)
jnthn I don't think it is, it's just a bit of background reading. :) 14:16
And I'm sure others can chip in and help too :)
notviki ZOFVM: Files=1211, Tests=130982, 165 wallclock secs (21.10 usr 3.39 sys + 2923.98 cusr 288.86 csys = 3237.33 CPU) 14:17
jnthn I mean, I'd certainly want to give myself a refresher on the literature in the area if I was working on it. :)
Nobody implements hash tables every day. :)
dalek kudo/nom: 1ee9c82 | (Zoffix Znet)++ | src/core/ (3 files):
Implement .clone for SetHash, BagHash, and MixHash

I tried some nqp-foo that was faster on small baggies, but was 25% slower on ones with 1000+ elements. So I just went with this.
Fixes RT#127863: rt.perl.org/Ticket/Display.html?id=127863
14:19
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127863
ast: 37b3e12 | (Zoffix Znet)++ | S02-types/ (2 files):
Test .clone works on SetHash, BagHash, and MixHash

RT#127863: rt.perl.org/Ticket/Display.html?id=127863 Rakudo fix: github.com/rakudo/rakudo/commit/1ee9c825f8
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127863
jnthn tries to concentrate on $other-job for a bit 14:23
[Coke] morning, everyone. 14:24
jnthn o/ [Coke]
dalek kudo/nom: 8ab6e01 | lizmat++ | src/core/ (2 files):
Make R:I.DwimIterator a method

Brings it more in line with the other R:I.*iterator methods, and allows some of the boilerplate to be hidden away in the method.
14:33
p: 8025596 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Implement nqp::throwextype.
14:35
p: f4e49bd | (Pawel Murias)++ | t/nqp/044-try-catch.t:
Test nqp::throwextype.
p: daef23e | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
[js] Fix error.
ast: 1fc7349 | (Zoffix Znet)++ | S15-normalization/test-gen.p6:
De-bitrot pre-GLR script
14:36
notviki .tell samcv S15-normalization/test-gen.p6 should now work: github.com/perl6/roast/commit/1fc7349f48
.tell samcv S15-normalization/test-gen.p6 should now work: github.com/perl6/roast/commit/1fc7349f48 14:37
yoleaux2 notviki: I'll pass your message to samcv.
[Coke] buggable: ? 14:39
buggable: tags 14:40
buggable [Coke], Total: 1460; BUG: 941; UNTAGGED: 309; LTA: 135; NYI: 96; RFC: 61; CONC: 53; JVM: 52; REGEX: 41; SEGV: 31; PERF: 28; UNI: 27; NATIVECALL: 21; POD: 20; REGRESSION: 20; @LARRY: 19; IO: 18; TODO: 18; PRECOMP: 13; TESTNEEDED: 13; BUILD: 11; OO: 11; TESTCOMMITTED: 10; STAR: 8; BOOTSTRAP: 6; OPTIMIZER: 6; GLR: 5; MATH: 4; OSX: 4; REPL: 4; WEIRD: 3; RT: 2; SPESH: 2; WINDOWS: 2; @y: 1; CONFIGURE: 1; DOCS: 1; LIBR
[Coke] notviki: why is that total 1460? (and not 1448 or 1478?)
notviki There's a bug where if someone comments or tags an already resolved ticket perl6.fail will pick it up and think it's open again 14:41
[Coke] also, what is "LIBR" ?
oh, maybe one of those closed tickets.
notviki buggable: tag LIBRARY
buggable notviki, There is 1 ticket tagged with LIBRARY; See perl6.fail/t/LIBRARY for details
notviki I guess that, except it got cut off
[Coke] ok, we don't use that value from the tag attribute anywhere else. clearing... 14:42
dalek kudo/nom: 935d6c2 | lizmat++ | src/core/ (5 files):
Make R:I.MappyIterator-values a method

Brings it more in line with the other R:I.*iterator methods, and allows some of the boilerplate to be hidden away in the method.
14:48
kudo/nom: 40d7deb | lizmat++ | src/core/Rakudo/Internals.pm:
Move all *Iterator methods together

No functional change, just some code reorg for developer sanity
15:01
p: 0256679 | (Pawel Murias)++ | src/vm/js/nqp-runtime/bignum.js:
[js] Implement division by zero in nqp::div_In.
15:07
p: 24ac01e | (Pawel Murias)++ | t/nqp/060-bigint.t:
Test division by zero using nqp::div_In.
pmurias bartolin: I added tests for your div_In fixes.
ThorstenB Jnthn, do you have a couple cycles to talk about building rakudo on WSL? 15:32
jnthn Uh...yes but you just left :) 15:40
ThorstenB: Hi :) 15:41
I read the couple of github issues filed on that.
If it's being fixed upstream in dyncall then we should be able to easily get those changes into our local copy of that
ThorstenB That's all I wanted to make you aware of. It'll "take a while", dyncall devs have sensibly opted to look beyond perl6 and have found other projects that run into this as well, outside of WSL. 15:43
As far back as January 2014, but it was never bubbled upstream instead some folk just kvetched about the dyncall assembly code and did -Wl,-z,noexecstack 15:44
jnthn I think somebody else a while ago ran into the excutable stack thingy too
(When building MoarVM)
ThorstenB Yeah you might also see it with selinux
jnthn I may well be misremembering, but I'm not sure it was tracked down to dyncall, so it's nice that at least now it is :) 15:45
ThorstenB I have faith it'll get fixed. Not right this very second, people have lives and other todos to go into dyncall as well, but it'll get fixed eventually 15:46
jnthn So, if I understand, we're waiting for dyncall for the moment, as a first resort? And I/somebody just needs to make sure we get that fix when it's available?
ThorstenB Yes. If you don't want to wait you can force it at linktime with-Wl,-z,noexecstack in the relevant portion of the makefile 15:47
But for now, unless this becomes more than a niche thing, just wait for upstream fix
jnthn Works for me. 15:48
Thanks for looking in to it.
ThorstenB Thanks for being game to pull the fix when it's available 15:49
notviki NeuralAnomaly: status 16:04
NeuralAnomaly notviki, [āœ˜] Next release will be in 2 weeks and 3 days. Since last release, there are 63 new still-open tickets (62 unreviewed and 0 blockers) and 205 unreviewed commits. See perl6.fail/release/stats for details
notviki clicks "take" on the roundrobin ticket 16:05
dogbert17 [Coke]: is it my BitCard username, i.e. email, that you need? 16:06
[Coke] dogbert17: We can try that, sure 16:30
notviki Seems Rakudo built from sauce on windows has issues with Linenoise not loading properly? twitter.com/sinan_unur/status/8163...7761547264
ugexe yeah, I suspect its because the dll doesn't expect itself to be renamed 16:33
notviki Seems to work fine on my Rakudo Star install... isn't it renamed in there too? 16:34
stmuk notviki: I had to revert to an earlier version in R* 16:35
ugexe on OpenSSL i used a hack where it copies the installed sha1 dll to a temp directory and renames it to its original name, then uses *that*
github.com/sergot/openssl/blob/mas...Lib.pm6#L3
notviki stmuk: so it's a known bug?
stmuk notviki: yes and there has been recent work on it (note this is on mingw AFAIK its been broken on MSVC for a while) 16:36
notviki cool
ugexe i use MSVC and it works for me (in that I get the error shown) 16:37
stmuk its been months since I tried MSVC maybe I'm out of date on that but there were special MSVC problems in the past 16:38
dalek p: 365c861 | (Pawel Murias)++ | t/moar/02-qast-references.t:
Improve error message on failing test.
16:39
p: 47f5158 | (Pawel Murias)++ | src/vm/js/ (4 files):
[js] Stop putting things in nqp.op that are not exactly what the op is.
p: d8ec951 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Implement nqp::getattrref_{i,n,s} and nqp::atposref_{i,n,s} ops.
p: 1124404 | (Pawel Murias)++ | t/nqp/104-refs.t:
Test nqp::getattrref_{i,n,s} and nqp::atposref_{i,n,s} ops.
stmuk maybe 46f953 works on MSVC? 16:40
notviki is mildly annoyed bdfoy and sinan broadcast these "buggy adventures in Perl 6" tweets, yet use bleed dev versions instead of using what we recommend users use -_-
stmuk in hindsight the old versions should have had timebombs in them
and maybe I should make R* exit on Fedora if the modules aren't installed :) 16:49
ThorstenB Speaking of bleed, this reminds me of something that puzzled me. Rakudobrew appears to build 2016.12 right now, but the latest source tarball is 2016.11. Am I seeing things? If not, was having rakudobrew build something newer intended? 16:53
notviki ThorstenB: rakudobrew isn't for regular users. 16:56
ugexe github.com/rakudo/rakudo/archive/2016.12.tar.gz
notviki ThorstenB: the latest version of user distribution is 2016.11 16:57
ThorstenB Notviki: oh wow. Okay there is a possible ux issue here. When you look at rakudo.org, click download, then build from source, it starts with "the simplest way is to use rakudobrew" 16:58
I therefore thought that was the go-to method for a regular perl6 user
If that's not so then the documentation on that page can use a massage
notviki Yeah 16:59
ThorstenB The way that reads to me is "use rakudobrew and only if that is not flexible enough, install manually"
stmuk maintaining rakudo.org and perl6.org is just doubling the workload 17:00
notviki ThorstenB: it's just that page was written when we thought rakudobrew was awesome... but then users happened and we started receiving all these reports of problems, but they were due to people using rakudobrew but not having enough know-how to use it, so we then decided that recommending rakudobrew is a bad idea 17:01
And yeah, in needs some love 17:02
ThorstenB I came to perl6 about a week ago with zero background in it, so I just googled and that's where I ended up ... on that rakudo.org page
notviki created a ticket to improve the download page(s) rt.perl.org/Ticket/Display.html?id=130500 17:07
hum, fixing that roundrobin ticket breaks tests for a previous ticket that complained about the opposite issue :S 17:09
m: say roundrobin $(1, 2), <a b c> 17:10
camelia rakudo-moar 40d7de: OUTPUTĀ«(((1 2) a) (b) (c))ā¤Ā»
notviki cpan@perlbuild2~/CPANPRC/rakudo (nom)$ ./perl6 -e 'say roundrobin $(1, 2), <a b c>'
((1 a) (2 b) (c))
:(
well crap... Seems the two ideas are entirely contradictory 17:15
.ask jnthn would you have any comments for RT#130498? Fixing it breaks tests for another ticket you fixed that makes these routines treat itemized lists as single items... so, I guess this isn't a bug at all? 17:23
yoleaux2 notviki: I'll pass your message to jnthn.
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130498
timotimo samcv: if you were expecting the performance of csv to improve because of your changes, we'll have to wait for a moar + nqp bump first 18:07
notviki timotimo: it was bumped (based on what I see in the backlog) 18:10
timotimo oh?
notviki irclog.perlgeek.de/perl6-dev/2017-...i_13851359
timotimo i didn't notice, but yeah
good catch
jnthn . 18:13
yoleaux2 17:23Z <notviki> jnthn: would you have any comments for RT#130498? Fixing it breaks tests for another ticket you fixed that makes these routines treat itemized lists as single items... so, I guess this isn't a bug at all?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130498
jnthn notviki: This is one of the consequences of an Array being a bunch of *items*, yes. 18:15
notviki ok, so notabug then
jnthn m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(@l>>.list); 18:16
camelia rakudo-moar 40d7de: OUTPUTĀ«(((0 1 2)) ((3 4 5)) ((6 7)))ā¤Ā»
notviki m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(@lĀ».List);
camelia rakudo-moar 40d7de: OUTPUTĀ«(((0 1 2)) ((3 4 5)) ((6 7)))ā¤Ā»
notviki m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(|@lĀ».List);
camelia rakudo-moar 40d7de: OUTPUTĀ«((0 3 6) (1 4 7) (2 5))ā¤Ā»
notviki there
jnthn ah, needed | too
m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(|@lĀ».list);
camelia rakudo-moar 40d7de: OUTPUTĀ«((0 3 6) (1 4 7) (2 5))ā¤Ā»
jnthn .list removes itemization which is sufficient (and cheaper than .List) 18:17
notviki cool
jnthn Now, what shall I use my next hour to look at...
Ah, right, I valgrund RT #130494 last night before bed 18:18
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130494
AlexDaniel m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(|@l); 18:23
camelia rakudo-moar 40d7de: OUTPUTĀ«(((0 1 2) (3 4 5) (6 7)))ā¤Ā»
AlexDaniel m: my @l = (0,1,2),(3,4,5),(6,7); say roundrobin(|@l.List);
camelia rakudo-moar 40d7de: OUTPUTĀ«((0 3 6) (1 4 7) (2 5))ā¤Ā»
AlexDaniel why Ā» not sure
jnthn Oh, .List also deconts the elements... 18:24
jnthn always forgets that, it's a really odd thing for an upcast to not return self, even if this behavior can be useful
AlexDaniel will never be able to remember the difference between .list and .List 18:25
jnthn kinda wishes we'd given the useful behavior Array.List has a nice name.
:733
oops
AlexDaniel so .list does nothing and .List does something usefulā€¦ hmm 18:26
notviki a: [], 'list', \()
s: [], 'list', \()
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/40d7...st.pm#L769
notviki s: [], 'List', \()
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/40d7...ay.pm#L290
jnthn .list removes the itemization of the thing you call it on, in this case 18:27
AlexDaniel ?
notviki Weird, 'cause the code just returns { self }
jnthn Yes, and self isn't an item 18:28
notviki ah self is deconted.. is that why?
jnthn Right
notviki k :)
AlexDaniel hmā€¦ what would be the example to show the effect?
jnthn m: say 131072000 / 2000
notviki m: my $l = (1, 2, 3); dd $l
camelia rakudo-moar 40d7de: OUTPUTĀ«65536ā¤Ā»
rakudo-moar 40d7de: OUTPUTĀ«List $l = $(1, 2, 3)ā¤Ā»
notviki m: my $l = (1, 2, 3); dd $l; dd $l.List
camelia rakudo-moar 40d7de: OUTPUTĀ«List $l = $(1, 2, 3)ā¤(1, 2, 3)ā¤Ā»
AlexDaniel m: my $l = (1, 2, 3); dd $l; dd $l.list 18:29
camelia rakudo-moar 40d7de: OUTPUTĀ«List $l = $(1, 2, 3)ā¤(1, 2, 3)ā¤Ā»
AlexDaniel ahh,okay
notviki m: my $l = (1, 2, 3); dd $l X (1, 2, 3); dd $l.List X (1, 2, 3)
camelia rakudo-moar 40d7de: OUTPUTĀ«(($(1, 2, 3), 1), ($(1, 2, 3), 2), ($(1, 2, 3), 3)).Seqā¤((1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)).Seqā¤Ā»
jnthn > count objects type="Buf[uint8]" 18:43
501
About the leak, the reason there's so much leaked is because libuv suggests we allocate a 64KB buffer for each line, then gives us something much smaller 18:44
The leak doesn't appear to be at C level, but rather than all the Bufs live on once they make it Perl 6 side.
(I did 500 iterations of the loop, this snapshot is near the end of the program, after 16 GC runs had chance to nom some of them) 18:45
timotimo 64 kb o_O
jnthn Also
jnthn <3 maor-ha
*moar-ha, heh, can't even type it
timotimo so should we take the extra work to copy into a smaller buffer if we notice it's less than 10% full? 18:46
OSLT?
jnthn We could just realloc since it was malloc'd
timotimo ah, good
jnthn If somebody fancies giving moar-ha the ability to use readline if it's installed, that'd be super-nice ;) 18:47
oh... 18:49
timotimo it would be! :)
jnthn I also idly wonder if we can somehow bias the BFS used for path against giving entries from the inter-gen root set 18:50
Since it's the shortest path but not the most useful
timotimo yes! 18:51
i thought about allowing to completely throw it out; generalized to completely ignoring one specific object
jnthn If I remember the code we may be able to just hack that arc to cost a load 18:52
It's useful that it shows up in results
If it's the only thing keeping it alive
timotimo aye 18:53
jnthn grr, yeah, I think fixing that now is going to be faster than trying 500 object IDs with path to find one not in the inter-gen set 18:54
Block (Object) (475739) --[ Unknown ]--> 18:55
Wonder why htat's Unknown
timotimo it's a secret to everybody 19:01
dalek kudo/nom: d9c735f | (Zoffix Znet)++ | README.md:
Include URL to twitter.com/perl6org

  (the original @rakudoperl seems to be a dead account)
19:03
jnthn Righty, let's see if my change works... 19:07
Um, no but... :) 19:22
So I busted it. But in such a way that it didn't visit the inter-gens at all. And then the things didn't show a path to them 19:27
So they really are only in the inter-gen set 19:28
Well, they aren't 19:29
They're ref'd by an object that's in that set
That in turn may be (about to check) that we never do a full collect
Because we don't track the memory pressure sufficiently to trigger one
Because of the buffer size iffiness
Hm, might be worse than that. 19:48
AlexDaniel can somebody help me with this one? 20:12
m: class I { method pull-one { IterationEnd } }; role Foo { also does Positional; also does Iterable; method iterator { I.new } }; say ("bar" but Foo) ~~ /a/
camelia rakudo-moar d9c735: OUTPUTĀ«Type check failed in binding to iter; expected Iterator but got I (I.new)ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
AlexDaniel mc: class I { method pull-one { IterationEnd } }; role Foo { also does Positional; also does Iterable; method iterator { I.new } }; say ("bar" but Foo) ~~ /a/
committable6 AlexDaniel, Ā¦Ā«2015.12Ā»: Nil
AlexDaniel bisectable points to github.com/rakudo/rakudo/commit/e4...0569b798c5
actually, forget that, it's more complicated than thisā€¦ 20:14
timotimo why isn't I "is Iterator"? 20:15
AlexDaniel Iā€¦ don't know? Not my code 20:16
m: class I is Iterator { method pull-one { IterationEnd } }; role Foo { also does Positional; also does Iterable; method iterator { I.new } }; say ("bar" but Foo) ~~ /a/ 20:17
camelia rakudo-moar d9c735: OUTPUTĀ«===SORRY!=== Error while compiling <tmp>ā¤Method 'pull-one' must be implemented by Iterator because it is required by roles: Iterator.ā¤at <tmp>:1ā¤Ā»
AlexDaniel mc: class I is Iterator { method pull-one { IterationEnd } }; role Foo { also does Positional; also does Iterable; method iterator { I.new } }; say ("bar" but Foo) ~~ /a/
committable6 AlexDaniel, Ā¦Ā«2015.12Ā»: ===SORRY!=== Error while compiling /tmp/G9bOXew4mrā¤Method 'pull-one' must be implemented by Iterator because it is required by a roleā¤at /tmp/G9bOXew4mr:1 Ā«exit code = 1Ā»
lizmat does Iterator 20:18
AlexDaniel m: class I does Iterator { method pull-one { IterationEnd } }; role Foo { also does Positional; also does Iterable; method iterator { I.new } }; say ("bar" but Foo) ~~ /a/ 20:19
camelia rakudo-moar d9c735: OUTPUTĀ«Nilā¤Ā»
timotimo ah, sorry, does Iterator, not is Iterator 20:20
but you already noticed
i mean liz noticed 20:21
dalek kudo/nom: 6920dad | lizmat++ | src/core/ (2 files):
Make single element Z a bit faster

By using the UnendingValueIterator instead of the WhateverIterator. Main reason is that we don't need to check for Whatever, or keep remembering values, as there is only one value to remember.
20:39
gfldex jnthn: could you have a look at the following please? github.com/perl6/doc/issues/1111 21:19
samcv morning perl6!
yoleaux2 14:37Z <notviki> samcv: S15-normalization/test-gen.p6 should now work: github.com/perl6/roast/commit/1fc7349f48
samcv yay!
dalek kudo/nom: dbe3e0e | lizmat++ | src/core/Rakudo/Internals.pm:
Introducing R:I.RandomizeOrderIterator

An iterator that will semi-randomize the order of the values of a given iterator. It does this by randomly fetching 2..5 values from the iterator, and supplying them in reverse order. Rince. Repeat.
21:24
ast: be3385d | samcv++ | S15-normalization/ (45 files):
Update S15-normalization tests for Unicode 9.0
21:36
jnthn gfldex: Left a comment 21:52
jnthn is too tired for more leak hunt today, or anything else much useful for that matter...
Probably gone for the night o/ 21:53
moritz \o
dalek ast: 284be4e | samcv++ | S15-nfg/emoji-test (2 files):
Add Emoji grapheme tests

Generated from Emoji version 4.0 These are seperate from the other Grapheme break tests, in being an optional part of the Unicode standard.
22:06
ast: 587a426 | samcv++ | S15-nfg/emoji-test.t:
Fudge failing Emoji tests
kudo/nom: 18793d1 | samcv++ | t/spectest.data:
Add emoji-test.t to spectest.data

  See roast commit:
  github.com/perl6/roast/commit/284b...b67fb898aa
22:09
samcv lizmat, you broke some of the Zip operator tests 22:18
lizmat ah? 22:19
samcv yea
t/spec/S03-metaops/zip.t failed 4
lizmat checks
samcv: you're right, but odd that I didn't see that :-( 22:22
guess it's 6920dad16f5
lizmat checks
dalek kudo/nom: bd03adb | lizmat++ | src/core/ (2 files):
Revert "Make single element Z a bit faster"

This reverts commit 6920dad16f59b0de314bb0fae5027b8039e9847b.
22:25
lizmat samcv++ # spotting the error of my ways :-)
bartolin pmurias: thanks! the first time I looked, I didn't find the
lizmat I'm starting to look at optimizing hypers
bartolin pmurias: thanks! the first time I looked, I didn't find the right way to write those tests.
pmurias: I think I understand it now :-) 22:26
dalek kudo/nom: 0f25d83 | lizmat++ | src/core/metaops.pm:
Make is nodal check a bit faster

The existence of the method is enough to mark nodality. No need to call it to find out.
22:47
kudo/nom: 516e527 | lizmat++ | src/core/Capture.pm:
Make Capture.Bool about 3x as fast

It wasn't much to begin with, but it appears to be checked a lot.
23:07
timotimo neat 23:16
dalek kudo/nom: 996ab6a | lizmat++ | src/core/Mu.pm:
Streamline "hyper" nodality test a bit
23:20
ast: 0349626 | flussence++ | S19-command-line/arguments.t:
Add command line test for UTF-8 decoding of @*ARGS (#215)

Github issue ref: MoarVM/MoarVM#482
23:40