github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
brrt \o #moarvm 09:59
samcv++ AlexDaniel++ #release
lizmat brrt o/
brrt ohai lizmat
brrt wants to start pressing merge buttons
lizmat can't wait 10:00
but is busy to do the P6W
dogbert2 lizmat: wouldn't it be nice if jnthn's opts came out before you released the weekly 10:06
where is jnthn btw?
lizmat indeed
.seen jnthn 10:07
yoleaux I saw jnthn 20 Sep 2018 22:40Z in #moarvm: <jnthn> But the C stack tells exactly where, as you found :)
lizmat I guess he's busy :-)
dogbert2 almost certainly
it will be very interesting to see what will happen to the [Tux] benchmark 10:08
Geth MoarVM: bdw++ created pull request #969:
Postrelease opts
10:10
dogbert2 brrt++ 10:15
brrt I don't think nine++'s work will be merged just yet
but I do want to do a review of postrelease-opts first
dogbert2 that will take quite a bit of time I guess 10:17
nwc10 :-) 10:36
jnthn-nomsg I'm alive. I'll be back to Perl 6 stuff soon, maybe later today :)
Or tomorrow if not :)
nwc10 you have coffee?
jnthn-nomsg Yes. Had a busy weekend afk and currently a few work things to catch up on :)
brrt I'd assume that fall under the definitoin of 'alive' 10:37
:-P
nwc10 good. beer fridge is also fine?
jnthn-nomsg :P
It is :)
nwc10 \o/
jnthn-nomsg brrt++ for the PR for postrelease-opts; that way it might got some review other than my own look over it before it's merged :) 10:38
robertle1 I am playing around with some benchmarks as well (github.com/robertlemmen/p6bench) and in these the postrelease-opts branch gives me a whopping -15% runtime, very cool. interestingly the biggest winner is the "mandelbrot" benchmark which is pretty simple and the "smallest" of these, also mostly deals with Num operations 11:14
lizmat robertle1: do you see any spectest failures ? 11:42
robertle1 lizmat: didn't look specifically... 11:44
dogbert2 lizmat: I don't think there are any spectest failures left in postrelease-opts 12:04
lizmat then who will push the "merge" button? 12:12
dogbert2 brrt or jnthn-nomsg I guess 12:16
timotimo robertle1: are you using Complex for your code, or handling pairs of Nums manually?
jnthn-nomsg Num box/unbox to num got quite a bit faster, which probably helps :) 12:18
My own spectesting of postrelease-opts came back clean multiple times in a row 12:19
timotimo pea ought to help a whole lot with things like arithmetic on Complex objects 12:21
jnthn-nomsg Aye 12:22
robertle1 timotimo: pairs of Nums manually, I wanted to avoid rats in this case as I have a separate benchmark for them 12:25
timotimo complex doesn't use Rat to my knowledge 12:27
m: say (0+0i).re.^name
camelia Num
robertle1 yeah, I was just wondering where I got the idea from that a complex is two rats... I guess I should use a complex then! 12:28
AlexDaniel releasable6: next 12:39
releasable6 AlexDaniel, Next release in ≈26 days and ≈6 hours. 0 blockers. Changelog for this release was not started yet
AlexDaniel, Details: gist.github.com/7e167a6de57c8a63e0...48104b34e3
AlexDaniel fwiw I can quickly bisect specific modules, but not the whole ecosystem just yet 12:41
Whateverable needs a little change before that will be possible
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/09/24/...-than-two/ 13:07
dogbert2 lizmat++ (weekly) 13:18
Geth MoarVM/master: 69 commits pushed by (Jonathan Worthington)++, (Timo Paulssen)++, MasterDuke17++, (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/e...ba2e1fbf64
14:19
dogbert2 .oO 14:24
is lizmat still around 14:25
lizmat am again
ah, it got merged :-)
dogbert2 :-) 14:26
lizmat is someone busy bumping versions?
dogbert2 don't think so ...
lizmat ok, then I'll do it 14:30
dogbert2 yay
lizmat confirm spectest ok with me too 14:45
jnthn-nomsg Phew :)
CORE.setting builds should be slightly faster also :)
lizmat yeah, maybe 1~2 seconds ? 14:53
jnthn-nomsg Yup, that's what I see 14:54
lizmat weekly: news.perlfoundation.org/2018/09/per...nat-4.html
notable6 lizmat, Noted!
jnthn-nomsg I'll be back tomorrow, with some tuits :) 15:58
Zoffix In Perl 6 6.d you're now able to harness the Power of The Atom! Thread-safe atomic operations on a new atomicint type! marketing.perl6.org/id/1537803105/pdf_digital 16:46
[Coke] Zoffix++ 17:14
Geth MoarVM/fork-safety: 12 commits pushed by (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/f...d843ff6916
17:53
timotimo just a rebase? 17:54
brrt yes, thats a rebase 17:56
with a fix for the ops order
that was why I had it in the first place :-0
timotimo if i order ops now, when will they be shipped? 17:57
brrt soon 17:58
but all ops are being dropshipped
anyway.... I'm of a mind to push the merge button on fork-safety as well
timotimo it wouldn't bother me 17:59
brrt :-)
Geth MoarVM/master: 13 commits pushed by (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/d...33c34a1bc6
18:04
brrt hmm, hang on..... minor bugfix 18:06
Geth MoarVM: db11d5f4d1 | (Bart Wiegmans)++ | src/io/eventloop.c
[IO] Eventloop threadcontext variable oops
18:11
nine brrt: congratulations! 19:25
brrt thanks nine :-) 19:28
hows the mbc branch coming along
nine Seems like I lost my inertia a bit. My initial idea for where speedups will come from turned out to be wrong. I can't get a useful profile of the code and without data it's hard to tell how to get to Profit. 19:30
brrt hmmm 19:31
that hurts
oh hey, I found a way to make fork() deadlock, it seems 19:34
nine like...an inverse fork bomb?
brrt something like that 19:36
something to do with gc, it seems 19:37
yeah, something funny with gc 19:40
I'll have to investigate a bit more
nine I guess what I really have to find out is if I can write a frame's bytecode while traversing the QAST. If I can do that this would save all those allocations of small buffers for the individual ops as well as the time for merging them. 19:44
And to find that out, all I think I really have to do is figure out if I can compile MAST::Calls directly where they are created rather than later on. For MAST::Ops I already know that this works and in fact those objects are no longer created at all. 19:46
diakopter I suspect it's possible.. might need to create some things to track routine- and module-level state to pass around though 19:48
ISTR I wrote some very deep magic in injecting coercions.. perhaps way too much deep magic. 19:50
also it's tied to the regex compiler somewhat deeply 19:51
on that note, I wouldn't be at all surprised to learn there are vast inefficiencies uselessly added by that compiler stage 19:52
runtime inefficiencies, I mean 19:53
lizmat smells opt opportunities 19:54
nine I don't think many people have dared really touch this code :)
diakopter jnthn wrote the first third of those two huge files, then I wrote the second two-thirds, then he went back and fixed a bunch of it... but yeah 19:55
QASTCompilerMAST.nqp and QASTOperationsMAST.nqp and QASTRegexCompilerMAST.nqp I mean. 19:59
github.com/perl6/nqp/blob/master/s....nqp#L1446 20:00
^ this is hilarious
diakopter nine: you realize much of this compilation style was cribbed from Parrot? :) 20:05
nine Wow! Getting rid of MAST::Call was so very much easier than I thought it would be 20:05
diakopter: I've glimpsed a bit of that in the git history :) 20:06
diakopter in fact many of the regex compiler routines, I transliterated directly from Patrick's original bootstrap in PIR, even reusing variable names
(such as bstack and cstack) 20:08
the regex compiler forced the early implementation of the jumptable instruction, ah... fond memories 20:10
nine In other words, we really shouldn't treat this code as perfectly designed and optimized but rather as a first draft that does the job?
brrt notes that the JVM has a similar instruction
diakopter omg yes, that code should be Captain Marvel'd to bosons 20:11
samcv i'm not sure how to inject a BOM when writing a utf16 file in moarvm 20:16
i mean we really just assume we are writing the bytes we're asking for. hm
brrt BOMs are evil... 20:18
samcv :) 20:19
i mean. we could do it on rakudo side. but they we have to check our position each time we write and if we're at the start of the file then we need to add it
diakopter filesystems are evil. network communication protocols are evil. instruction sets are evil. languages are evil. :)
japhb
.oO( Daemons, strangely, are not evil. )
20:21
lizmat samcv: at least in MoarVM, an "unless $fh.tell" could be very fast
diakopter samcv: adding one check per write doesn't sound too bad..
japhb diakopter: I'm assuming you have tongue firmly in cheek on that one ... 20:22
lizmat I think diakopter forgot grammars
diakopter actually no, but yes I am assuming it can automatically be optimized/JITted down to branchless code... lol
I mean you either have a check with every write, or routines swapped in with the check partially-evaluated/optimized away 20:24
samcv i still don't like it 20:25
japhb diakopter: I've half a mind to suggest that open-for-write-with-truncate for utf-16 should write the BOM before returning the handle, and *nothing else should even check*.
Apparently that was the half that controlled the keyboard access. ;-)
diakopter sure, or just add another layer of buffer that does that 20:26
what's another buffer
japhb >.<
brrt actually, japhb, that's not so bad idea
it is a file output thing after all 20:27
japhb Right. (write?)
brrt it doesn't apply on networks, or on any other thing 20:28
japhb Nodnod 20:29
timotimo so opening a file and closing it immediately would give you a 2 byte big file?
japhb timotimo: *If* you opened it utf-16, yes. 20:30
brrt and possibly utf-16-with-byte-order-mark
japhb If you want to truncate to 0 bytes, use literally any other encoding.
timotimo i suppose you're opting in to madness at that point already
japhb brrt: OK, fair, yes.
timotimo: :-)
brrt either that or have a flag on the handle (in perl6 land even, maybe) 20:31
diakopter or upon closing if you've never written to it, delete it if it created it?
lizmat I guess a flag could be set on the handle to truncate the file if no specific bytes were written? 20:32
when you close it, I mean ?
Geth MoarVM/nqp-mbc: 5 commits pushed by (Stefan Seifert)++
timotimo :enc("utf16abomination")
diakopter 20:33
💣
timotimo 0xFFull looks very funny
japhb What I definitely want to avoid is exporting the cost of BOM management to everything else; I'm going on the principle of "the complex thing can be expensive, the simple things should be cheap" 20:34
lizmat
.oO( open( $file, :💣 ) )
nine Now there's only MAST::Label, MAST::Annotated and MAST::HandlerScope left. Those I will have to change all in one go since they need the current position in the bytecode. But other than that I don't see any difficulty.
japhb
.oO( Oh man, I am SOOOO 0xFFull! )
brrt japhb: we need more of that in perl6 :-)
japhb lizmat: Heh
brrt nine++
japhb nine++ # Good progress! 20:35
nine brrt++ # getting me back on track instead of playing some Wing Commander III
diakopter The price of freedom is eternal vigilance
oh that's Wing Commander IV, sorry 20:36
japhb I think my Wing Commander floppies have all literally bitrotted. I'm not even sure I have a machine still with a floppy drive, and this from someone known to hoard old equipment.
lizmat japhb: you can still get USB floppy-drives pretty easily 20:37
although you might need a USB -> USB-C adapter nowadays :-)
japhb lizmat: Really? I had no idea. I guess it's needed for people trying to recover old data that didn't migrate to new machines.
brrt had no idea, either 20:38
lizmat indeed. I have one in my drawer
japhb I've heard though that most floppies from the 80s and even 90s are nigh-unreadable now.
(Haven't tried it myself.)
diakopter japhb: I had to use a USB floppy earlier this year to recover an ancient Windows 2008 server with the boot recovery disk
lizmat FWIW, It's been a while since I tried oe
japhb Wowzers.
diakopter 2008 is ancient, yes.
nine diakopter: I would actually like to play some WC IV but there's some issue with the GOG version on wine and I can't find the plain DVD version anywhere
diakopter also, ebay's got it :) 20:42
timotimo when i was little i enjoyed WC Prophecy a whole lot 20:43
brrt has a disk of Age of Empires that won't work anymore 20:45
brrt I'm wondering if there is something I'm doing really wrong, or if there is something that is broken about rapid starting and stopping of threads in general 20:59
lizmat brrt: perhaps you've uncovered a gremlin ? 21:02
brrt we'll see 21:08
there's a circular linked list in tc->instance->threads, that is .. suspect 21:12
that's odd, nobody else called MVM_threaed_cleanup_threads_list 21:14
diakopter I think that might be old 21:15
brrt yeah...
okay i'll have to investigate that further 21:16
but i'll do that tomorrow
diakopter who is cry.nu
brrt damn... fork still doesn't work :-(
samcv 21:17
samcv hey 21:22
yeah that's my site
timotimo set r17(15), r17(39) # used to guard for BOOTArray 22:21
^- probably a useful comment
Geth MoarVM: 08675c0ccb | (Timo Paulssen)++ | src/spesh/optimize.c
spesh comments: de-typed guards, lex_known, spesh plugins
23:12