geekosaur isn't Map a readonly Hash? for this, you only need one of them, with gistseen keeping it from recursing inside again 00:00
or at least close enough that you only need the oine implementation, plus something to keep caching happy 00:01
MasterDuke yeah, i guess a better way to say my question is, why doesn't Map.gist use gistseen?
Hash is a Map 00:03
00:03 shareable6 joined
geekosaur that's why I think caching. with gistseen it knows not to recurse, without it recurses on elements. so Map needs to do that to gist its ocntents, but Hash explicitly recurses once to cache it and then sets the cached flag so the gist machinery doesn;t recurse again 00:03
presumably because it;s faster than the default recursion 00:04
(for one, it doesn't need to use polymorphic didspatch ebcause it knows already it's a Map)
at least that's my guess. probably need lizmat for more detail 00:05
timotimo except if you mix something in
also, it doesn't know it's a map, it only knows that it's Map or a subclass for which there isn't a more specific candidate 00:06
MasterDuke timotimo: fyi, this question is inspired by your comment on 00:07
timotimo ah, it just uses Map's stringification?
but i do see gistseen on the call stack 00:08
MasterDuke but changing Map.gist (since PseudoStash is a Map) to use gistseen doesn't help
timotimo try printing out the keys in the gistseen structure; i expect it just has a new WHICH every time?
MasterDuke hm, i assumed it uses Map's gist, since it doesn't have its own
timotimo 00:09
samcv hopefully this will be helpful, should be making .lines 30% faster 00:13
timotimo it's probably sensitive to line length?
samcv well longer lines take more time 00:14
MasterDuke did i miss something? what's making .lines 30% faster?
timotimo but shorter lines spend more time making strings and such?
samcv well longer input
timotimo: yeah i guess so... 00:15
timotimo anyway, 30% sounds absolutely lovely
samcv what was taking most time was find_cclass in string
and the code that gets unicode property should be about 10% faster 00:16
MasterDuke timotimo: first bunch of output of printing the WHICH in gistseen
samcv for things in plane 1
and general category should be slightly faster as well
and then we'll have more speed with non MVMString based hashes internally in moarvm as well 00:17
unicodable6: { .uniprop eq 'Zl' } 00:18
unicodable6 samcv, U+2028 LINE SEPARATOR [Zl] (control character)
samcv maybe i can make it faster if i convert the property call to just a list of all Zl unicode characters
timotimo i'm not sure i see the connection to mvmstring based hashes? 00:19
samcv hmm is that the only one?
timotimo: well i made it check the hash value before doing memcmp
timotimo oh, i thought we were still talking about find_cclass
samcv (it made MVMString hashes 15% faster, so i'm guessing may speed up non MVMString hashes by 10%)
well i am. but i lost track of my mind
MasterDuke m: my $a; $a = for ^5000; say $a 00:22
camelia$_ => 4999))
MasterDuke m: my $a; $a = for ^6000; say $a
camelia$_ => 5999))
samcv unicodable6: { .uniprop eq 'Zp' }
unicodable6 samcv, U+2029 PARAGRAPH SEPARATOR [Zp] (control character)
MasterDuke huh. adding a `note $WHICH` in gistseen makes the 5000 version print `Pair|680173F0EF009277D9152317924CA6D5FEB9CAE6 Too few positionals passed; expected 3 arguments but got 2 in block <unit> at -e line 1` 00:23
but the 6000 version just start spewing out an untold number of lines of output
samcv ok i think i got about a 50% speedup of .lines by removing all unicode database calls 00:26
well it's maybe 30% with overhead from doing .slurp and other mvm overhead but i believe it's about 50% faster by itself 00:27
jnthn o.O
samcv: .lines on a Str, or on a filehandle?
samcv on a str
jnthn ah :)
Was gonna say, I worked on the filehandle case quite a bit and couldn't think where it was doing calls into the Unicode DB aside from decoding/normalization 00:28
samcv uh it may be 2x faster actually
anyway it's a lot
jnthn samcv++ 00:29
samcv yep it is 2x
MasterDuke and adding MVM_SPESH_DISABLE=1 makes it always die with `Too few positionals passed; expected 3 arguments but got 2`, no matter the iteration count 00:38
jnthn sleep & 00:52
evalable6 Use of uninitialized value of type Callable in numeric context
in block <unit> at /tmp/I…
jnthn, Full output:
Geth nqp: 9833073130 | (Samantha McVey)++ | tools/build/MOAR_REVISION
Bump MoarVM to get 2x speed improv. for .lines and others

Changes: 2018.05..2018.05-12-g042ee7874 042ee7874 Make .lines 2x faster by speeding up MVM_find_cclass for newlines f94b02972 Use new branch predictor hints to unicode_db and prop query a84b607bd Add branch predictor hints macros 154d2c3f8 Convert HASH_DEL_IN_BKT and HASH_EXPAND_BUCKETS from macros to inlines ... (8 more lines)
nqp: version bump brought these changes:
c00142108a | (Samantha McVey)++ | tools/build/MOAR_REVISION

Changes: 2018.05-12-g042ee7874..2018.05-13-gec9deabcb ec9deabcb Fix MSVC build by making dummy expect macros
¦ nqp: version bump brought these changes:
rakudo: 6663a6d454 | (Samantha McVey)++ | tools/build/NQP_REVISION
Bump NQP/MoarVM to get 2x speed improv. for .lines

Changes: 2018.05..2018.05-12-gc00142108 c00142108 Bump MoarVM to fix MSCV that broke with last bump 983307313 Bump MoarVM to get 2x speed improv. for .lines and others ba0367278 Fix stringification of Sub when using --target=ast d3280011c s:global/start/beginning/ in JVM slice methods 2 562d359b7 s:global/start/beginning/ in JVM slice methods fc6441a19 Fix STDIN error for non-interactive REPL mode d8ee853cd [js] Add getppid op
¦ rakudo: version bump brought these changes:
01:50 Kaiepi left 01:52 PufferBot left, Kaiepi joined 01:57 ilbot3 joined, ChanServ sets mode: +v ilbot3 02:10 llfourn joined 02:39 Zoffix joined
samcv unicodable6: { .uniprop('space') } 03:29
unicodable6 samcv, U+000A <control-000A> [Cc] (control character) 03:30
samcv, U+0009 <control-0009> [Cc] (control character)
samcv, 25 characters in total:
Zoffix samcv++ # 2x faster stuff 03:50
samcv :) 04:23
well it's night time for me. o/ 04:38
05:30 Kaiepi left, Kaiepi joined 06:07 BenGoldberg joined 06:12 BenGoldberg left 07:49 robertle joined 08:12 shareable6 left
[Tux] Rakudo version 2018.05-20-g6663a6d45 - MoarVM version 2018.05-14-g0d542c459
csv-ip5xs0.877 - 1.029
csv-ip5xs-208.540 - 8.883
csv-parser25.388 - 25.394
csv-test-xs-200.465 - 0.468
test8.771 - 10.043
test-t2.339 - 2.401
test-t --race0.981 - 1.054
test-t-2042.112 - 44.475
test-t-20 --race14.769 - 15.178
08:48 jmerelo joined
jmerelo hi 08:48
[Tux]: quite an improvement, right? 08:51
09:08 shareable6 joined
El_Che t/04-nativecall/01-argless.t (Wstat: 139 Tests: 0 Failed: 0) 09:13
Non-zero wait status: 139
seem to be a flapper
(passed on the next build)
[Tux] jmerelo, not really 09:26
10:27 shareable6 left 10:41 AlexDaniel joined 11:39 jmerelo left 11:56 Zoffix left
ilmari git ff 12:18
12:28 Kaiepi left 12:29 Kaiepi joined
Geth roast/avoid_redecl_warn: a920e69c88 | usev6++ | 5 files
Avoid some warnings about redeclarations
rakudo: 1c1acbc2aa | MasterDuke17++ | src/core/Hash.pm6
Turn BIND-KEY into multis

The CORE.setting compilation no longer gets confused.
rakudo: caf0f568b0 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core/Hash.pm6
Merge pull request #1869 from MasterDuke17/add_BIND-KEY_multi

Turn BIND-KEY into multis
13:43 MasterDuke left 13:58 pmurias joined
Geth nqp/async-await-continuations: 943 commits pushed by 31 authors
samcv [Tux]: i haven't been able to get your CSV test working property i'm not sure what i'm doing wrong 14:02
perl6 < /tmp/hello.csv doesn't appear to do anything 14:03
timotimo was the "make the input data smaller" thing part of the instructions already?
you're potentially running test-t-20 without realizing? 14:04
samcv timotimo: no clue. what's the proper way to run just test-t?
timotimo i think you just change the for loop that generates /tmp/hello.csv to give only ... don't know, 5k 50k lines
50000 lines, indeed 14:06
samcv ah ok
timotimo 1_000_000 in the README.speed file, 50_000 what's used for the measurements on channel
samcv i'm also curious about the speed it'd be if clang were used
for many things clang seems to be faster for me 14:07
clang 6 vs gcc 7.4
[Tux] samcv, any questions left unanswered? 14:15
Geth nqp: f08a582693 | (Paweł Murias)++ | src/vm/js/nqp-runtime/coercions.js
[js] Handle _ and unicode unary minus in string to number coercions
nqp: d5f13c037e | (Paweł Murias)++ | src/vm/js/nqp-runtime/core.js
[js] Fix bug
nqp: 41a0d017fe | (Paweł Murias)++ | src/vm/js/nqp-runtime/core.js
[js] Implement nqp::getuniname for private-use and surrogate characters
samcv on 50,000 items i get 10.26s on gcc 7.4 and 9.65 on clang atm 14:29
timotimo that's an impressive difference 14:30
14:44 MasterDuke joined
samcv perf reports that text::csv is using 5.96% in MVM_sc_get_sc_object but with some changes i got it down to 1.62% 15:17
Geth rakudo: jsimonet++ created pull request #1873:
Hide parent's submethods from ^methods() result.
[Tux] samcv, shall I give you co-maint? 15:20
samcv dunno, i don't need it 15:21
these were changes i'm making to moarvm fyi
[Tux] ah
samcv i also recently added branch predictor macro hints so we can tell the compiler that certain cases should be expected. not sure i was able to measure a difference by putting MVM_UNLIKELY() around cases that are very unlikely like when we throw for having nonconcrete objects but i'm guessing every bit helps 15:23
though it did make a difference in improving the speed of uniprop general category internally in moarvm which is used a lot so the big switches wolud optimize for the most common case
(i did that yesterday) not sure if it affects text::csv though. but other code it can have a bit of impact on 15:24
Geth rakudo: 704b893c6a | usev6++ | src/vm/jvm/runtime/org/perl6/rakudo/
[JVM] Implement canStore in RakudoContainerSpec

This fixes some tests that failed because a wrong multi candidate was choosen because nqp::isrwcont gave a wrong result. Fixes RT #126531 and
synopsebot RT#126531 [open]: [JVM] throwing X::AdHoc "Cannot assign to a readonly variable or a value" instead of X::Parameter::RW
Geth roast: 77e5e6ea57 | usev6++ | 4 files
[JVM] Unfudge now passing tests
16:24 skids joined 17:19 shareable6 joined 17:38 stmuk joined 17:40 stmuk_ left 17:46 shareable6 left
AlexDaniel . 17:58
18:01 Kaiepi left, Kaiepi joined 18:22 cognominal joined 18:51 lucasb joined
samcv it seems nqp and rakudo only use nqp::findcclass for whitespace and for newlines 18:59
so i'm going to optimize both of those
already optimized for newline which affects .lines. and .words should get a speedup when i optimize for whitespace
MasterDuke nice 19:01
Geth rakudo: tbrowder++ created pull request #1874:
Clean up and correct whitespace handling.
19:03 skids left
lucasb Hello. I'm making an argument for changing the behavior of Rational.base($n, *): 19:05
Geth rakudo: cc28ce378a | (Tom Browder)++ | src/Perl6/Pod.nqp
Clean up and correct whitespace handling.

Improve unicode space char documentation.
rakudo: 01a3736499 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Perl6/Pod.nqp
Merge pull request #1874 from tbrowder/reduce-spaces-regex

Clean up and correct whitespace handling.
lucasb m: <1/3>.base(10, 2**63) 19:06
camelia (timeout)
lucasb ^^ Ok, fine. it's *my* fault. I, the programmer, requested that huge number.
On the other hand, when I say "<1/3>.base(10, *)", the "*" mean DWIM, right? And I don't want the DWIM behavior to mean "please, make my program hang". In this case I would be happier with an arbitrary lower limit for fractional digits *plus* a warning saying that the limit was reached and if I really want, I can pass an actual number to the method, instead of whatever. 19:07
samcv MasterDuke: basically instead of calling for the unicode property of every single character as it's searching for a match, i'm going to have make a macro that is just (cp == 20) || (cp == 10) || etc 19:08
and it's much cheaper and doesn't have to go to the unicode database which is costly when you're seeking the document for a specific thing
tbrowder_ samcv: in your unicode work, have you seen anyplace that would improve text file io for ascii encoding? jnthn has done lots of work to improve ascii rw io vs p5, but maybe you’ve found something in your recent optimization work that would help. 19:12
samcv maybe. i haven't tested stuff with ascii decoding. i could test that? 19:13
like .slurp(:enc<ascii>) or whatever?
looks like our nqp::iscclass for alphabetic was wrong and tested Lo, Ll, Lu, Lt, Lm not the alphabetic property. 19:16
alphabetic is supposed to be Lowercase + Uppercase + Lt + Lm + Lo + Nl + Other_Alphabetic. aside from generating a ton of different checks and being wasteful that way. hopefully nothing breaks when i change this...
unless we wanted that functionality? idk 19:18
tbrowder_ well, i have a test setup on github (that i need to update) that does read / write of large text files that i think shows a practical comparison of p5 vs p6 in a user’s real environment. 19:20
samcv unicodable6: { .uniprop.starts-with('L') != ( .uniprop('Lowercase') || .uniprop('Uppercase') || .uniprop eq 'Lt' | 'Lm' | 'Lo') } 19:22
unicodable6 samcv, «timed out after 30 seconds» «exit signal = SIGHUP (1)»
samcv :(
tbrowder_ see
samcv unicodable6: { .uniprop('L') != ( .uniprop('Lowercase') || .uniprop('Uppercase') || .uniprop eq 'Lt' | 'Lm' | 'Lo') } 19:23
unicodable6 samcv, «timed out after 30 seconds» «exit signal = SIGHUP (1)»
samcv AlexDaniel: how to make it try harder?
pmurias samcv: re really wanted that functionality, I'm under the impression that a lot of the unicode property stuff "specced" behavior is a result of random circumstances rather than thought over decisions ;) 19:25
samcv pmurias: which functionality? 19:43
well i mean Alphabetic includes 🅓 for example which is So symbol other. but it is .uniprop('Uppercase') so it's in Alphabetic 19:49
geekosaur pmurias, it's generally more complex than that 19:50
unicode has cultural and even political aspects
technical issues aren't even int he back seat, sometimes they end up strapped to the roof
El_Che geekosaur: what roof. That early optimaization! :) 19:51
samcv well regardless i can change it to L since currently it does Lo Ll Lu Lt Lm 19:52
geekosaur El_Che, you think it's a joke. problem is, you are in some sense right: but the "roof" is part of the structure of unicode itself 19:53
a structure that is trying to do far too many things at once 19:54
samcv which structure?
geekosaur (but has no choice but to try to do sso or just give up completely on the idea)
samcv and what is this roof. forgive me for being confused
geekosaur sorry, I'm building a metaphor for the complete mess that is unicode and everything around it, including but not limited to: technical, language.writing, cultural, political, etc. 19:55
unicode-as-concept is more or less impossible. and yet necessary
samcv ah 19:56
the mess that is unicode is better than the mess before. and for that we can be happy :P
El_Che my metaphore was way simplier: don't build a roof if you plan to add a 2nd store
samcv but i agree to some aspect
ok i get that
geekosaur well, if I;m using a vehicle metaphor, I'm imagining you hang extra trailers on the end 19:58
because you're not going to get everyone to raise the underpasses to make roon for your second story
which still fits the metaphor: people will use unicode to the extent that it fits what works for them and no further. which is why it's still not that popular in many places: still showing western cultural roots and fitting a bit poorly in many ways 20:00
tbrowder_ m: say “\n” ~~ /\h/ 20:12
camelia Nil
tbrowder_ does anyone see the need for allowing any space chars in pod, other than the newline, that are in the regex \v character class? 20:18
pmurias samcv: old unicode roast tests 20:24
samcv tbrowder_: aside from the fact that it is specced you mean? 20:25
tbrowder_ i didn’t know that was specced, looking... 20:26
samcv oh well i thought that was the issue?
with those tests that failed a few days ago
tbrowder_ no, sorry, in working that issue, i worked from the outside in, and now i realize that the fix is too large in that i believe legal pod should be restricted from having any character in the \v char class except the newline. at the moment the space char tests asume any \v char can be in pod text. 20:32
i should have said “inside out” since i broadened the scope of the testing. 20:33
AlexDaniel samcv: re harder: 20:34
squashable6: next
squashable6 AlexDaniel, ⚠🍕 Next SQUASHathon in 5 days and ≈13 hours (2018-06-02 UTC-12⌁UTC+14). See
AlexDaniel samcv: next squashathon is for whateverable, maybe you can contribute this :)
21:11 shareable6 joined 21:24 stmuk_ joined 21:26 stmuk left 21:27 cognominal left 21:37 mst left, mst joined 21:49 cognominal joined 22:42 BenGoldberg joined
MasterDuke timotimo: re the PseudoStash business, i've thoroughly confused myself. you think the fix is in Mu.gistseen? 23:01
timotimo more probably in a WHICH somewhere
MasterDuke ? 23:05
timotimo well, why isn't it noticing that it's the same PseudoStash object over and over again?
MasterDuke well, it's not always the same 23:06
i.e., if i print the $WHICH in gistseen and then do a wc -l vs sort -u | wc -l i got 27265 and 15151 23:07
timotimo well, i thought it's the same object but it generates a different WHICH unfortunately
MasterDuke hm, maybe that's why lower iteration counts don't see this 23:10
timotimo well, i think that's because it doesn't inline at lower iteration counts 23:11
MasterDuke i.e., at higher counts a gc happens and the object moves
timotimo it'll only move twice at most
MasterDuke but it seems ~6k is where things change, which seems really high for making an inlining decision 23:12
timotimo hmm. 23:13
23:47 stmuk joined 23:49 stmuk_ left