github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:13 dogbert11 joined 00:16 dogbert17 left 00:28 japhb joined 01:08 squashable6 left 01:11 squashable6 joined 01:32 MasterDuke left 01:37 dogbert11 left 02:26 leont left
nwc10 good *, #moarvm 06:36
07:03 ZzZombo joined 07:04 ZzZombo left 08:13 domidumont joined 09:58 zakharyas joined
jnthn o/ 10:00
nwc10 \o 10:02
10:30 El_Che joined
El_Che jnthn: fyi so far all the distro have zstd libs except the EL family (RHEL, Centos, Amazon Linux, Oracle Linux) 10:31
jnthn: I mean in the official repos. Centos has i through EPEL, but you don't want to depend on that 10:32
nwc10 El_Che: Sereal bundles zstd - I don't know if there's any insight in how they do it, as to where the portability traps are 10:34
ie metacpan.org/source/YVES/Sereal-De...8/MANIFEST
10:37 El_Che left, El_Che joined
El_Che nwc10: moarvm bundles already stuff. Maybe it can be used as a fallback? 10:38
jnthn Is it frowned upon to bundle things for distros when they *don't* package it? 10:40
I know Debian is very strict on these things.
El_Che they recently added one package of mine to the distro that has a freeware/abandoned (but licensed) source in a dir 10:41
let me check what they did with it
they kept it in the package 10:44
(even if that directory has a different license than the rest of the program) 10:45
jnthn Could be one way to provide the dep reliably: depend on a package where possible, bundle where not 10:46
By my instincts on these things aren't always in agreement with what those producing distros like :) 10:47
El_Che well, rhel 8 will be EOL'ed in 2029 (and even then extra paying customers can keep using it for years) 10:49
anyways, if someone wants to test drive this, it would be nice so I can fix if something is broken: github.com/nxadm/rakudo-pkg/blob/m...evbuild.md 11:30
in short, it builds rakudo/nqp/moarvm/zef on a bunch of systems, runs test in debug and hopefully keeps core files when segfaults happen 11:31
11:40 leont joined
nine It seems to me that the best way is to simply provide a package of zstd for distros that don't ship it and have moar depend on that for those distros. 11:52
El_Che (if it sucks, tell me, so I can change it to something useful) 11:53
nine I'm not aware of a distro that openly welcomes bundled libraries. There's just varying degrees of strictness (with Debian being close to the strict end of the spectrum) 11:55
11:58 zakharyas left
nwc10 was in a meeting. and then at lunch 12:17
what I was meaning was
1) I was assuming the same plan as other things we bundle - option to use the bundled version or the system vedrsion 12:18
2) Sereal already bundles zstd - maybe there are some tricks to do it (how they do the makefile) that we could steal if it isn't as easy as it shuld be
12:29 sivoais_ joined 12:31 sivoais left
jnthn When you discover there's a middle 80% between the first and second ones you expected... 15:31
nwc10 oh my 15:32
15:33 zakharyas joined 15:58 patrickb joined 16:48 dogbert11 joined, dogbert11 left 17:11 dogbert17 joined 17:57 codesections joined
jnthn OK, mostly handled that. Also, my test case that I expected to need further work before it would pass...passes. This isn't entirely good because it means I've overlooked something. Though probably in the test case. 18:11
Gotta wire up some extra GC marking too as its passing by luck. But...should give my poor arm a rest first. 18:14
18:16 domidumont left 18:39 zakharyas left 18:55 MasterDuke joined
nine Yes. Arms are...kinda important 18:56
MasterDuke huh, i feel i missed some important context 18:58
nine Some trouble with the hardware
MasterDuke i wasn't free to look into my segv today, but hopefully will have some time tomorrow night. nine, i assume you didn't find anything else yesterday besides that there's an NQPMatch instead of an MVMSpeshCandidate in that slot? 19:34
19:55 evalable6 left, linkable6 left 19:56 evalable6 joined 19:57 linkable6 joined
nine right 20:31
timotimo haven't kept up with stuff, but finally got my new work device and when trying to build an nqp, i get a "cannot invoke VMNull" inside of build-hll-sysconfig 20:45
odd.
ah, could have been because fedora installs only a partial perl 20:47
stage parse is 54 seconds 20:48
20:57 patrickb left 21:05 zakharyas joined
dogbert17 54 seconds is pretty good, what did you get on your old machine? 21:06
timotimo will need to check later when my old machine isn't busy :) 21:07
dogbert17 something tells me that your new machine is faster :) 21:14
21:28 zakharyas left 21:40 rypervenche joined
MasterDuke jnthn: it's amazing how many 80%s fit in 100%. it's like that series that sums to whatever you want it to, i think 1/1 - 1/2 + 1/3 - 1/4 + ... + 1/(n-1) - 1/n 21:50
timotimo: i'm pretty sure the situation is the same as wherever you left off. i'm 90% done with a random project and stuck in some gc problem... 21:52
nine MasterDuke: always feels like that, doesn't it? :) 21:54
MasterDuke welcome to the new project, same as the old project... 21:55
i do manage to learn a little bit more each time, but it doesn't feel like a fast process 21:57
jnthn MasterDuke: Hah, yes :) 21:58
tellable6 2021-02-12T21:10:05Z #raku-dev <japhb> jnthn: Did you design react to avoid starvation of whenevers under heavy load? See question from last night ^^
nine Well, because it isn't. This stuff is hard.
jnthn Thankfully I figured out a solution to this one :) 21:59
Mostly by realizing there was a way not to be clever, looking at all the bookkeeping the clever way would need, and realizing that the not clever way was likely going to be as fast anyway. 22:00
As a bonus, I can feel quite confident this solution is correct.
(Famous last words!)
nine MasterDuke: the NQPMatch object gets put into that spesh slot when inlining something
jnthn My test case was also off by one, meaning that it covers the thing I just implemented, but not the next thing I need to implement. 22:01
MasterDuke nine: oooh, you're right. the build (of that first file) succeeds if i add MVM_SPESH_INLINE_DISABLE=1 22:02
jnthn Huh, my Raku example for wrapped methods at multiple levels of inheritance also all works. 22:04
MasterDuke nine: i'm not sure if that's the source cause though. if i remember correctly from yesterday, the inline triggers enough calls to spesh_add_slot that there's a realloc
nine jnthn: I find it even more unnerving when something unexpectedly works rather than unexpectedly fails 22:05
MasterDuke: there is a realloc, but I traced it further
jnthn Yeah, I just made a more complex example and it worked too o.O 22:06
OK, I'm going to look at this tomorrow with a fresh brain.
MasterDuke oh, the slots are fine after the realloc?
nine MasterDuke: oh, I know something! 22:07
MasterDuke: look at merge_graph in src/spesh/inline.c
MasterDuke: when inlining, we need to update the inlinee's instructions referencing spesh_slots, because they get renumbered (as the spesh_slots array is appended to the inliner's). Did you update that code to cover the instructions that now use spesh slots? 22:08
i.e. invoke_*?
jnthn ooh, that's a good one 22:09
nine++
MasterDuke i didn't make any change like that in inline.c
jnthn iirc you don't need to change inline.c but oplist should state that it's an sslot register
nine I just saw that that's pretty generic code that uses the op information and operand type. Did you actually update the oplist? 22:10
oplist still says int16
jnthn D'oh.
MasterDuke ha. ugh
nine One of those thousands of details that can get you if you don't know about them :)
jnthn new-disp now handles these things fine: gist.github.com/jnthn/b0e6a33f431a...0869810584 22:11
Meaning my main remaining task from the perspective of Raku semantics is the many details around multi-dispatch 22:12
nine jnthn: I don't think my code uses more complicated things than that. Let's ship it!
MasterDuke wait, but it still is. it's just the index of the tc->cur_frame->effective_spesh_slots instead of an index into <frame->something>->spesh_candidates 22:13
jnthn It has to run vrurg's code too. :)
nine MasterDuke: yes, but you need to change it from int16 to sslot
MasterDuke oh, ah 22:14
nine and don't forget running update_ops.p6
MasterDuke chicken and egg problem here... 22:15
heh. works with MVM_SPESH_DISABLE=1
nine That's the situation where I'm glad that there's rakudo packages for openSUSE... 22:16
or that :)
MasterDuke i used to have the arch rakudo package installed, but i kept getting my zef mixed up
vrurg jnthn: it's soon be time for unfudging the tests? :)
jnthn vrurg: Depends how multi stuff goes, and then once I get things working, I need to do the work to switch Rakudo over to using the new dispatcher everywhere, and NQP the same, and then hunting any fallout 22:17
vrurg jnthn: no doubt. But anyway it looks more like definite terms now, not like "somewhen in the future"! 22:18
jnthn Since I have to re-work aspects of multi-dispatch anyway, I'm going to solve the thing where we have to run the signature binder twice on things with where-clauses or nameds or unapcks: once to bind them, and once again in the actual invoke 22:19
nine MasterDuke: src/jit/x64/emit.dasc:3378 from "mov ARG4, invoke->spesh_cand_or_sf_slot;" to "get_spesh_slot ARG4, invoke->spesh_cand_or_sf_slot;"
MasterDuke hah. and now nqp builds. nine++
jnthn I've also decided in RakuAST that I'm going to try and do away with the slow-path binder and code-generate every case, including the destructuring bind ones.
MasterDuke (with jit disabled)
vrurg is really happy about the news. jnthn++!
jnthn I'm quite sure I will go through moments of regretting that decision while doing it, but the result will be worth it :) 22:20
vrurg jnthn: I know this feeling. :)
MasterDuke nice. normal moarvm build, normal nqp build... 22:22
normal rakudo build... 22:24
and a passing make m-test m-spectest. nine++ again. good to know the code changes were correct, but wow, who knows how long it would have take me to think of that? 22:27
now just need to go back and clean up the commits a bit 22:29
oh, wait. haven't done that invalidating the caller business 22:31
huh. the example that originally started this whole thing is now slightly slower, and produces essentially the same number of deopts (688k) 22:50
m: my $r := "a" .. "za"; my @a = $r[^$r.elems]; say now - INIT now
evalable6 5.25980414
MasterDuke those 688k are for reify-at-least, SETTING::src/core.c/List.pm6:40
i see a couple "Removing a spesh candidate because it was deopted too many times" messages in the spesh log for that reify-at-least 22:52
hm. and if i up the threshold for removing an opt to 1000 deopts, apparently that never triggers? now there aren't any of those message in the spesh log 22:56
23:36 MasterDuke left