github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:06 Redfoxmoon joined 00:07 p6bannerbot sets mode: +v Redfoxmoon 01:31 ZzZombo left 02:54 ggoebel left 02:55 Redfoxmoon left 03:03 Redfoxmoon joined, p6bannerbot sets mode: +v Redfoxmoon 03:08 ggoebel joined 03:09 p6bannerbot sets mode: +v ggoebel 03:13 lizmat left 04:33 Redfoxmoon left, Redfoxmoon joined, asimov.freenode.net sets mode: +v Redfoxmoon, p6bannerbot sets mode: +v Redfoxmoon 05:25 robertle left 06:20 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo, ZzZombo left 06:21 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 06:22 robertle joined, p6bannerbot sets mode: +v robertle 06:27 patrickb joined, p6bannerbot sets mode: +v patrickb 06:56 brrt joined 06:57 p6bannerbot sets mode: +v brrt
brrt \o 06:57
nwc10 o/ 07:01
brrt ohai nwc10 07:02
I decided I may want to destroy the per-thread uv_loop_t
since all 'real' async use goes over the eventloop thread these days anyway
the exception being a few directory operations 07:05
the whole current_frame_nr business may be eliminated as well 07:08
hmm. but maybe not today though :-) 07:14
07:18 domidumont joined 07:19 p6bannerbot sets mode: +v domidumont 07:30 zakharyas joined 07:31 p6bannerbot sets mode: +v zakharyas
Geth MoarVM/fork-safety: 5 commits pushed by (Bart Wiegmans)++ 07:33
MoarVM/fork-safety: d1eb3371ff | (Bart Wiegmans)++ | src/io/eventloop.c
[IO] Wake up event loop to notify it of being closed

Otherwise the event loop will hang forever
07:34
07:47 lizmat joined 07:48 p6bannerbot sets mode: +v lizmat 08:04 zakharyas left 08:05 zakharyas joined 08:06 brrt left, p6bannerbot sets mode: +v zakharyas
timotimo brrt, the blocker for the release is github.com/MoarVM/MoarVM/issues/951 08:12
robertle I am currently bisecting that... 08:13
timotimo cool 08:14
08:34 brrt joined, p6bannerbot sets mode: +v brrt 09:02 zakharyas left, zakharyas joined 09:03 p6bannerbot sets mode: +v zakharyas 09:05 zakharyas left, zakharyas joined 09:06 p6bannerbot sets mode: +v zakharyas 09:32 brrt left 09:55 domidumont left, domidumont joined 09:56 p6bannerbot sets mode: +v domidumont 10:16 ZzZombo left 10:56 lizmat left 11:05 lizmat joined 11:06 p6bannerbot sets mode: +v lizmat
robertle timotimo, brrt: I got a fix on 951, details in the ticket 11:14
AlexDaniel M#951 11:15
synopsebot M#951 [open]: github.com/MoarVM/MoarVM/issues/951 [āš  blocker āš ] Problem running programs on RPi with 2018.08
11:16 zakharyas left 11:23 japhb_ left
timotimo oh, so it *was* a missing pointer alignment thing after all 11:33
the reason why it gets memory corruption rather than a sigbus is that there's code to walk the nursery for objects that have to be freed
robertle oh, and that assumes they are aligned!
of course!
timotimo and if some objects don't get aligned properly, we'll be looking at the wrong data inside an object
AlexDaniel robertle++ 11:34
robertle in that case I think the MVM_ALIGN_SIZE should really be within allocate_nursery, not where we call it. it seems a property of the nursery itself that stuff needs to be aligned
11:44 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo
dogbert2 robertle++ 11:49
11:55 brrt joined 11:56 p6bannerbot sets mode: +v brrt
Geth MoarVM: robertlemmen++ created pull request #961:
Fix alignment of nursery allocations
11:56
brrt robertle++ that looks very sane 12:03
timotimo isn't it nice to have only one blocker for a change? ;) 12:04
lizmat so why isn't it merged yet ? 12:11
Geth MoarVM: ccf3dd373e | (Robert Lemmen)++ (committed by Bart Wiegmans) | 2 files
Fix alignment of nursery allocations

Recent changes used a path to nursery allocation that are not aligned, leading to segfaults on e.g. armhf. Alignment is really a property of the nursery as it is also encoded in the collector, so doing the alignment within the allocator, not at the call site.
Fixes github.com/MoarVM/MoarVM/issues/951
12:13
brrt because I'm waiting for the results to come in ;-)
lizmat aha... ok :-) 12:14
brrt bump time, I'd think? 12:27
12:44 zakharyas joined 12:45 p6bannerbot sets mode: +v zakharyas
Geth MoarVM/pea: e9cbb7f1f1 | (Jonathan Worthington)++ | 13 files
Minimal escape analysis and scalar replacement

This only handles the case where:
  * No aliasing
  * No deoptimizing instructions
  * No control flow (conditionals, loops)
... (7 more lines)
12:55
MoarVM/pea: a13e416e5f | (Carl Masak)++ (committed by Jonathan Worthington) | src/spesh/usages.h
Reset MVM_SPESH_CHECK_DU to 0
MoarVM/pea: dab77573d4 | (Carl Masak)++ (committed by Jonathan Worthington) | src/spesh/manipulate.c
Add missing comment to a new function
jnthn Just a rebase :) 12:57
Geth MoarVM/pea: fc0d9ece23 | (Jonathan Worthington)++ | src/spesh/pea.c
Handle int64, num64, and str attributes in PEA
12:57 robertle left
jnthn That one's new, though :) 12:57
lizmat pea?
jnthn is on his way home, and will be back proper on Monday or so :)
partial escape analysis 12:58
lizmat ah
ok
I guess I expected mea :-)
nine jnthn: JFI, I'm cooking something that I think will interest you: gist.github.com/niner/037905ca666f...b948568b22 12:59
13:04 zakharyas left 13:05 zakharyas joined
jnthn
.oO( I hope it's a curry...please let it be a curry... )
13:05
13:06 p6bannerbot sets mode: +v zakharyas
jnthn nine: ooh, nice ) 13:06
nine: You saw my gist with the proposed ops for doing this more efficiently too? :) 13:07
nine nope?
jnthn oh.
Moment...I find the gist
nine: gist.github.com/jnthn/1e865a06d213...2908858a57
The first comment I agree with, fiw. The second one is a mixed bag, though mostly relates to the Perl 6 API, and I don't much care about that part right away. 13:09
*fwiw
brrt ohai jnthn :-) 13:10
jnthn Oh, and that last comment totally misunderstood the point that I was specifying a low level API to build the user level ones on. :)
So it's kinda interesting, but I purposefully didn't try to design a high level API because I knew that'd be a bike-shed :) 13:11
o/ brrt
nine jnthn: oh, yes, that sounds helpful. I guess the bytecode writer can also become a good use case for testing such an API. 13:12
jnthn Yes, that was my intention :) 13:15
Prove the ops on a real-world problem first :)
nine Then I have another good reason for continuing this experiment :) 13:16
jnthn nine++ :) 13:18
brrt yeah, i'm still in favor of that design 13:19
nine++ that is pretty cool 13:23
but.
I've been looking into the ELF format, and I can't find a reason why we couldn't fit MBC into ELF 13:24
timotimo what will that offer?
brrt native linking, for one thing
jnthn nine: fwiw, I was also thinking we could switch away from the MAST tree along the way
brrt debugging support, for another
timotimo we could make moarvm files executable to just print out "This program cannot be run in Linux mode." 13:25
brrt better yet, you can associate ELF with an interpreter
timotimo bleeeehhh, nose bleeds *again*?
brrt so you can even make executables
jnthn nine: Getting rid of all of the allocations in the code gen phase 13:26
nine: Or at least, getting rid of loads of them
I suspect that'd make compilation significantly faster
nine jnthn: yes, my understanding is that getting rid of the MAST tree is what could make the NQP bytecode writer useful from a performance (and memory usage) perspective. I'm starting with MAST to get something up and running quickly and will later replace more and more of the MAST compiler by this, piece by piece. 13:27
jnthn nine: Yeah, that's a good strategy.
jnthn is very much in favor
nine the QAST -> MAST step is not quite trivial :) But I guess even just getting rid of representing all ops and their arguments by generated byte code will save a lot of allocations already 13:28
err... "getting rid of reresenting all ops and their arguments by tree nodes and replacing that with generated byte code"
timotimo ... resenting all ops ... 13:29
jnthn nine: Yeah, at the very least labels will need fixups after the fact 13:31
But that's still just keeping a table of fixups and doing it later ;)
timotimo even then, they can be kept around as sets of offsets into the bytecode
yeah
the more we get from C to nqp, the closer we get to being able to implement the trickier GC techniques, like concurrent or incremental 13:34
brrt ... at which point I reiterate my stance that I'd rather not, if all were the same 13:36
timotimo fair enough. we'll see when we get there how much C we still have that'll require us to write code enormously carefully
one day i'd like to look into methods of making nurseries of less-active threads not promote to the old gen as fast 13:47
perhaps it could be as simple as "don't set the 'seen in nursery already' bit unless the nursery in question has been filled up to 25%" 13:49
13:50 brrt left
timotimo also, perhaps auditing the source code for assumptions of "gen2 means never moves" could be a good idea, in case we want compaction of the old gen at some point. which i think would be good to have for very-long-running processes like, say, a cro web app 13:59
jnthn That's very widely assumed :) 14:00
timotimo it is, yeah
so maybe we'll never get compaction in gen2? :S 14:01
jnthn We'd need evidence to know we've got a problem there for real programs bbefore worrying about it, I think 14:03
nine never say never...
jnthn gen2 is organized into fixed-size bins and then falls back to malloc for oversized
For the first to be an issue, we need the app to dramatically change its alocation patterns during its runtime 14:04
A Cro webapp is likely serving the same kind of requests over and over again so should get a good hit rate on the sizes used, so that seems a less likley candidate for problems to me 14:05
timotimo it'll at least do that whenever it enters the compiler, for example if you have a template library that EVALs
but it'll always come back from that, and the number of times it'll do that is probably bounded, unless you do hot template reloading 14:06
14:15 zakharyas left 14:16 zakharyas joined 14:17 p6bannerbot sets mode: +v zakharyas 14:19 ZzZombo_ joined 14:20 p6bannerbot sets mode: +v ZzZombo_ 14:21 ZzZombo left 14:32 MasterDuke left 14:46 ZzZombo_ left, ZzZombo_ joined, card.freenode.net sets mode: +v ZzZombo_, p6bannerbot sets mode: +v ZzZombo_, ZzZombo_ is now known as ZzZombo 14:50 lizmat left 14:56 robertle joined 14:57 p6bannerbot sets mode: +v robertle 15:04 zakharyas left, brrt joined 15:05 zakharyas joined, p6bannerbot sets mode: +v brrt 15:06 p6bannerbot sets mode: +v zakharyas 15:42 dogbert17 left 15:59 patrickb left 16:02 domidumont left 16:05 zakharyas left 16:06 brrt left 16:12 zakharyas joined 16:13 p6bannerbot sets mode: +v zakharyas 16:20 robertle left 16:44 zakharyas left 17:00 robertle joined 17:01 p6bannerbot sets mode: +v robertle 17:18 lizmat joined 17:19 p6bannerbot sets mode: +v lizmat 18:19 zakharyas joined 18:20 p6bannerbot sets mode: +v zakharyas 19:03 zakharyas left 19:37 Kaiepi left 21:13 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 21:17 MasterDuke left 21:46 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 22:56 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 23:39 ZzZombo_ joined 23:40 p6bannerbot sets mode: +v ZzZombo_ 23:41 ZzZombo left