Geth MoarVM: fa5158a38c | (Samantha McVey)++ | src/strings/normalize.c
Don't break after ZWJ for Emoji=True + GCB=Other

With this change we are now counting 100% of the Emoji v4.0 emoji as a single grapheme. Since ascii numbers and the pound symbol are also counted as Emoji, disregard any codepoints in the ASCII range.
00:27
geekosaur "..are also counted as emoji". I don't even. 00:28
Geth MoarVM: bef5802bda | (Samantha McVey)++ | tools/UCD-download.p6
Make some fixes to the Unicode data file downloader

Update it to the version from my Unicode Grant repo and fix an additional problem downloading the UCA files.
00:29
samcv yep
they have an emoji presentation with variation selector 00:30
probably...
no clue. it's not on the emoji list but they're listed as emoji. the only i know they're a part of are the keypad ones
now that Unicode 9.0 is effectively done... i will have a party 00:31
hehe
timotimo offers high-files before going to bed 00:33
samcv updates moarvm readme to show unicode 9.0 support
Geth MoarVM: 89a9999fc1 | (Samantha McVey)++ | README.markdown
Update the README to indicate Unicode 9.0 support

With the recent fix to all the Unicode 9.0 era Emoji
  (though technically part of Emoji v4.0 standard), list
that we support Unicode 9.0.
Other changes which contributed to this were fairly recent full support of Prepend codepoints and Regional Indicators as well as various other Grapheme related things.
samcv ^5 :) 00:34
samcv high files?
samcv heh
timotimo o/āµo samcv
we can totes 3dprint a big 5 that has handles on each side btw 00:35
samcv hehe
timotimo and if that's not "high five" enough, i'm sure we can get a glassblower (maybe a student) to make us a ... specific device ... shaped like a 5 00:37
sleep time 00:47
01:48 ilbot3 joined
samcv what's the best way to make strands. just concatting things? 02:10
02:24 AlexDaniel joined 03:19 vendethiel joined 08:09 domidumont joined 08:53 sivoais joined
jnthn samcv: Waht's the context on "make strands"? But yeah, concating two simple strings will potentially make strands, though if it detects it has to tweak with the ends of them for normalizations reasons you'll get a flat string again 11:23
samcv++ # emoji tests passing \o/
nine Funny. I get "Code ref '' does not exist in serialization context", with "finish_code_object" being the outer according to gdb, but giving all the anonymous subs in method finish_code_object names does not change the result 11:26
Btw. my current strategy is to bite the bullet and write all the debug helpers I need to make debugging this rather trivial. Though it seems like finding out what those tools could do is rather non-trivial by itself. 11:29
timotimo i can try to offer guidance 11:30
nine In essence all my troubles are caused by serialization context confusions in situations where we do nested compilation (BEGIN time EVAL or in-process precompilation).
I get various "does not exist in serialization context" errors and one testcase shows repossession issues. I guess they are all related. 11:31
timotimo: so if you were to debug such issues. What information would you seek? 11:32
timotimo oh lord, i haven't looked into serialization related things in a long time 11:35
maybe trace the creation of objects that get a SC set, and when repossession happens, what gets repossessed? 11:37
not sure :\
i wonder if it's a good idea to turn off GC so that pointers don't move 11:38
jnthn I suspect something that can dump what's actually in a serialization context would be somewhat useful
timotimo mhm
jnthn Given we have debug_name that should be possible
nine Both sound quite useful to me.
And given MVM_dump_p6opaque's warm reception, spending time on such debug tools could be good for the soul :) 11:39
timotimo i've experienced it crash on me 11:40
dump p6opaque i mean
nine Yeah, me, too. I'm not that surprised given how little I actually know about these internals. I'm sure to have missed a couple of cases. 11:42
timotimo heh.
i ought to look into it a bit
among other things it'll just dump a string even if the object in question isn't even a string at all 11:43
i wonder if i committed that piece of code that puts a decision tree there
nine Already looks a bit odd: gist.github.com/niner/062b873d56fe...dc1962a3ef 12:07
And objects appear to be listed multiple times in root_objects 12:17
13:00 domidumont joined 13:05 domidumont joined
nine A VMNull object in an SC's root_codes array? Sounds odd, but I guess its nothing out of the ordinary. 13:18
With this SCRoot dumper I can now confirm that the code ref in question does indeed not appear in the SC or its dependencies. Could be that it was in an SC of a comp unit that has already been serialized 13:22
OTOH the object itself thinks it belongs to the writer's root sc 13:25
MasterDuke fyi, just updated github.com/MoarVM/MoarVM/pull/590 13:31
timotimo have you tried working with rr yet, nine?
nine timotimo: what's rr? 13:54
rr-project.org? That does sound useful :) As I could just set a data-watch at the object's sc field's address 13:57
Geth MoarVM/even-moar-jit: 3e0c0881df | (Bart Wiegmans)++ | src/jit/core.expr
Add return_o expression op

Rather common, presents no problems, did indicate that our template correctness checks aren't great.
14:00
MoarVM/even-moar-jit: b81cd68142 | (Bart Wiegmans)++ | docs/jit/todo.org
Plan JIT stack walker
nine The choice of name is kinda idiotic though. How is any search for that name supposed to come up with something useful? 14:01
14:06 buggable joined
nine How can I disable the GC? 14:25
timotimo: you were spot on. Disabling the GC would make this easier
jnthn nine: Easiest way is to force everything to be allocated in gen2
Only way, probably :)
There's a function you can call to achieve taht, I forget the exact name, but I think it's in src/gc/allocate.h
nine MVM_gc_allocate_gen2_default_set(tc) 14:27
jnthn That's the one 14:30
Oh, I should note a caveat: it does it for per thread
So if you're going to have multiple threads being spawned then you'll want to stick a call to that into both moar.c where we make the VM instance and thread.c where a new thread is spawned. 14:31
nine jnthn++ # works like a charm 14:36
14:36 AlexDaniel joined
nine timotimo++ # I now got the place where the object is put into SC #27 :) 14:36
jnthn nine: fwiw if you want to add an env var MOAR_GC_NEVER or something I'm fine with that 14:37
I don't think you'll be the last person who wants it :)
dogbert17 is it correct that Metamodel::C3MRO.^mro returns types even though they are marked as hidden?
timotimo what does hidden mean? 14:38
nine jnthn: will do. Still have to commit yesterday's debug_name fixes, too.
timotimo if something's not in the mro, methods from it won't be available at all 14:39
at least in theory?
jnthn dogbert17: Yes, there's an mro_unhidden for the other thing
dogbert17 timotimo: a trait called 'is hidden'
jnthn nine++
dogbert17 cool, will tweak the doc, the ^mro method has two explanations, I intend to remove the one that is less detailed 14:40
nine Ok, the unnamed code ref is a comp unit's mainline. Which isn't that surprising considering that we're compiling a module. 14:41
timotimo don't forget that whenever you call some code from a running rr session it will clone the program, run the code, then destroy the clone 14:46
nine The code object is actually right. It should still be in SC #27. That's where we added it and that's where we are now failing to find it. So somehow it had to be removed from the SC. 14:48
actually "has to have been removed" I think...
dogbert17 timotimo: would you be terribly upset if I closed RT #123434 15:07
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=123434
timotimo please go ahead 15:10
dogbert17 timotimo: done 15:13
15:29 FROGGS joined
FROGGS o/ 15:32
15:38 domidumont joined 16:34 vendethiel joined
dogbert17 if you run helgrind on a script, is there an 'easy' way to know if something is a real problem or just something irrelevant? 17:00
dogbert17 perhaps not the easiest question to answer 17:02
timotimo that is one of the hardest things :) 17:03
dogbert17 to be more specific, I'm running the second code example in RT #130796
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=130796
dogbert17 m: my $c = 0; my @a = lazy gather { take 1; loop { take rand } }; my @b = lazy gather { take 1; loop { take rand } }; for ^10 -> $i { await start { $ = @a[^$i] }, start { $ = @b[^$i] } }; say @a[^10] eqv @b[^10]; say $c; say @a[^10] 17:04
camelia False
0
(1 0.999299666130502 0.53503705328689 0.294035244642186 0.67976963144181 0.86719035238592 0.867675113551506 0.362186164002754 0.80890451131411 0.839907669840518)
dogbert17 I get a bunch of output but how do I make heads or tails of it?
stuff like: 17:06
==29592== Possible data race during read of size 4 at 0x6B4E834 by thread #11
==29592== Locks held: none
==29592== This conflicts with a previous write of size 4 by thread #1
==29592== Locks held: 1, at address 0x6B412C8
I gisted the output here: gist.github.com/dogbert17/b774a3bc...8d89ee27cd 17:11
timotimo i expect the helgrind output of just an empty program (well, maybe two start blocks and an await or something) could look similarly gigantic 17:17
we can turn off lazy deserialization of SCs, that'd probably eliminate a few pieces of output 17:18
dogbert17 timotimo: there's some stuff at the top which seems to show up in each and every program, I added a few carriage returns in the output after that stuff 17:23
timotimo 9:#define MVM_SERIALIZATION_LAZY 1 17:24
you can flip this to 0
dogbert17 timotimo: I'll give it a shot 17:28
the output went from 2300 lines to 2100 lines 17:35
gist updated 17:43
timotimo bleh :( 17:44
dogbert17 :) 17:46
can you see anything suspicious?
timotimo couldn't look closely yet, sorry 17:50
dogbert17 I decreased the number of iterations, no the output is ~800 lines 17:51
*now
timotimo: switched to a longer gist, the reason I did that is that the run in question actually failed with 'Cannot call method 'push' on a null object'. The other runs did not fail. 18:18
timotimo this log doesn't speak to me :< 18:38
dogbert17 it was worth a shot :) 18:45
this caught my eye but I guess it's nothing ... gist.github.com/dogbert17/b774a3bc...-txt-L4055 18:49
timotimo it doesn't help that the granularity of allocation info there is super bad 18:57
however
we can get those to become better by enabling the FSA debug mode
the size debug one
it'll use malloc for every allocation, so we'll get the code that actually grabbed the data rather than the code that caused the whole page to be allocated 18:58
that'd be worth a try
dogbert17 do you mean #define FSA_SIZE_DEBUG 0 19:00
set to 1 ofc
timotimo that's the one 19:08
dogbert17 trying to get the code example to fail 19:09
19:24 domidumont joined 19:32 zakharyas joined
dogbert17 finally, gist updated, the error 'This continuation has already been invoked' is not at the bottom though 20:02
20:09 colomon joined
timotimo hmpf 20:22
samcv i need to decide when i want to convert needles from 8bit to 32bit before searching the haystack for them. i found for big documents i can get a pretty big speedup by doing so 20:40
yoleaux 13:46Z <Zoffix> samcv: You're listed as stakeholder for Formal Rules for Defining Matched Delimiters/Brackets. When can you start working on that? Would you include approximate time required to complete it it? github.com/perl6/6.d-prep/blob/mas...mplement-2
21:07 colomon joined 21:14 colomon joined 21:29 colomon joined
Geth MoarVM: e13c30b705 | (Samantha McVey)++ | 2 files
Use MVMint64 for MVM_string_chr (oplist/function mismatch)

The oplist showed chr using int64 but its function had MVMCodepoint which is a 32 bit integer. Change the functions so it accepts a 64 bit integer.
21:50
22:11 colomon joined 22:27 colomon joined 22:53 colomon joined
MasterDuke timotimo: how difficult would it be to make num_graphs a MVMuint64 instead of MVMuint32? 23:32
timotimo probably easy 23:46
MasterDuke i figure some places all that's needed is changing the type of e.g., an index variable, but some places might need a little more attention 23:50
if i managed it, how do you think a PR to make that change would be accepted? 23:52