github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
nwc10 good *, #moarvm 06:13
MasterDuke interesting. rakudo builds, but install-core-dist.raku dies with `Cannot assign a literal of type Num (NaN) to a native variable of type int. You can declare the variable to be of type Real, or try to coerce the value with NaN.Int or Int(NaN)` 07:46
MasterDuke doh. that's what i get for attempting to program while tired. easy to spot the problem now 07:50
nine MasterDuke: there are worse things than quickly spotting a problem that you deemed inscrutable the day before :) 08:43
brrt \o 08:52
MasterDuke yeah, i'll take it 09:09
nwc10 o/ 10:18
MasterDuke oh, is the german perl workshop on now? i hadn't heard anything about it 10:23
jnthn Yes 10:24
nwc10 but also "no" depending on what granularity you're considering 10:25
not this morning
but the heretical real-concept that happens after "morning" out in the real world. (This, depsite the fact that it's only online. Although there was a shot of two orgaisers in the same place) 10:26
MasterDuke ah, jnthn is giving a talk today at 13:30. what timezone is that? 10:28
nwc10 CET
jnthn My one, which makes it easy for me :)
nwc10 you will want to be streaming.media.ccc.de/gpw2021/
unless you have a pirate copy already. (I don't)
conferences never used to have this problem with timezones when they were in actual places 10:29
jnthn is amused by the thought of his talk being pirated
nwc10 it just randomly occurred to me.
because I realised that it's like a move before it's released in the cinmea - or more, like non-live TV before it's shown 10:30
MasterDuke do i need to pay to watch?
nwc10 No.
I don't think you even need to pay to be on the chat channel at app.element.io/#/room/#GermanPerlW...matrix.org 10:31
so, there's no real market for pirated copies.
sorry, if anyone thought that this was a money spinner
MasterDuke cet is one hour ahead, think i can manage that 10:32
MasterDuke huh. `say DateTime.now` is off by 12 minutes. i could understand being off by some larger values i was using the wrong multiplier between nanoseconds and seconds, but how does 12min happen? 11:14
lizmat not for me 11:15
m: say DateTime.now
camelia 2021-03-25T12:15:40.658154+01:00
lizmat looks ok here as well ?
lizmat maybe your clock is off ? 11:15
MasterDuke i'm on my branches to remove nqp::time_(i|n) and replace with nqp::time that returns nanoseconds 11:16
lizmat aah... ok
*phew8
*
nwc10 is your local bug exactly 12 minutes?
lizmat 12 seconds I could sorta understand? epoch vs instant ? 11:17
MasterDuke oh yeah, it was seconds
whoops 11:18
lizmat line 866 and following in src/core.c/Rakudo/Internals.pm6 11:26
hmm...that's be more like 27 seconds 11:27
MasterDuke my measurement wasn't very precise, i was running the rakudo appimage for comparison and then immediately running my local rakudo
nwc10 everyone has about 12 minutes to make coffee (or eat breakfast, hint hint) before jnthn is on streaming.media.ccc.de/gpw2021/GPW2021 12:19
well, jnthn this year, rather than just photos some of which have jnthn in previous years 12:20
lizmat did we lose the sound? 13:15
nwc10 jnthn: once you've done with questions on the real live stream, what was your euphamasim for "it might SEGV" covering for why it was eager keys 13:16
we should fix that. But not this week 13:20
I'm going back upstairs with the table (To the coffee, the sofa and the sun) 13:21
jnthn Even if it didn't segv, it'd still be wrong 13:24
Probably OO::Monitors should warn on return of a lazy thing
lizmat jnthn: I wonder whether the three hashes keyed on URL, couldn't have been encapsulated into a single object and used in a SetHash ? 13:32
with the encapsulating object creating a proper WHICH :-) 13:33
jnthn lizmat: I said that in the answer session, but unfortunately the sound got lost for it
lizmat aha, ok 13:34
yeah, no sound indee
d
jnthn But yeah, I did look at it and think "hm, that'd be nicer as one object"
lizmat but yeah, for the presentation, it would have been an additional level of indirection / layer to prevent understanding 13:36
jnthn The WHICH certainly, also I know I'm a very heavy user of lexical classes, but especially for those watching with Perl eyes it may be a less obvious thing too. 13:37
lizmat yeah, figured that :-) 13:49
or maybe use a module such as ValueTypeCache :-) 13:52
MasterDuke heh. `Failed test '   ... of approximately correct value'`...`maximum absolute tolerance: 5`...`actual absolute difference: 1616680383668322973.624558` 13:54
nwc10 :-)
lizmat jnthn: so any idea how many people watched ? 14:05
jnthn lizmat: No 14:13
nwc10 seed the torrents! 14:14
jnthn lizmat: However, the video will be around for a long time. Also there's actually a "director's cut" version that was a bit too long for the schedule, but has an extra section at the end showing some Comma features of use to those using Cro
Probably the Cro docs should get a section linking to these things... 14:15
nwc10 but will fit the typical TPCiC 50-minute slot jsut fine?
jnthn hah! That'd be lazy :P 14:18
nwc10 it only works if you *are* lazy and don't update anything
jnthn I think by then new-disp will have landed and RakuAST will be far along enough to justify another talk
dogbert11 notes that one of [Tux] CSV tests makes ASAN quite angry 15:13
t/45_eol.t ........... 1/? ================================================================= 15:14
==355764==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020003278ac at pc 0x7f35e3a21f17 bp 0x7ffe0e684a70 sp 0x7ffe0e684a60
READ of size 4 at 0x6020003278ac thread T0
#0 0x7f35e3a21f16 in cache_sep_info src/strings/decode_stream.c:639
#1 0x7f35e3a21f16 in MVM_string_decode_stream_sep_from_strings src/strings/decode_stream.c:698
nine Tradeoffs, tradeoffs, tradeoffs. After spending another couple hours on it, I'm pretty sure that conceptually nqp::backtrace cannot work as it is. The reason is that we simply do not retain the information that it would need to work. 17:31
To generate a backtrace, we need the full call chain of frames at the point of the exception. That's easy, we have that as all we need is put the call chain onto the heap and store the top most MVMFrame*. 17:32
We also need the current position within each of those frames. And that we do not have. A frame doesn't know the point in the caller where it got called from (or would need to return to). Instead it's the caller that stores this information. 17:33
But in Backtrace.new after throwing and catching the exception, we return to one of the callers in the exception's chain and continue executing it (which is how we come across that nqp::backtrace call). So the return point gets changed between exception throw and backtrace. 17:34
Now there is a solution that stores the missing position information into each frame's "extra" in that call chain. It's implemented in MVMContext's snapshot_frame_callees. 17:35
But that would have to happen in MVM_exception_throwobj, making every exception throw even more expensive. 17:36
MasterDuke nine: exceptions aren't the worst thing to get a little slower. but will this also effect rakudo's control flow perf? 18:22
nine it would 18:47
But...maybe we can still avoid that
Thing is, the part I struggle with is to get a stable number of frames, regardless of JIT or spesh being enabled or not. What do I need that number for? To skip the top most n frames! 18:48
Because those frames are just the throwing of an exception, Backtrace.new, Failure!SET-INTERNAL, Failure.new and fail(), none of which the user cares about. 18:49
So instead of starting at the exception's frame, I could actually start generating the backtrace at tc->cur_frame. 18:50
MasterDuke nine: sounds promising 20:14
MasterDuke ok, i now have a moavm+nqp+rakudo that all use nqp::time instead of nqp::time_(i|n) and pass all tests 20:45
nine sounds excellent :) 20:46
MasterDuke but with virtually no other change. i.e., pretty much just an s/nqp::time_n/nqp::div_n(nqp::coerce_in(nqp::time),1000000000e0)/g 20:47
MasterDuke i think i'll PR them as is so people can see the changes and suggest anything that now can be done better/differently 20:49
MasterDuke github.com/MoarVM/MoarVM/pull/1450 20:57
nine Ok, seems like this 4th implementation works also and has no drawbacks. On the contrary it makes Failures a little bit cheaper 20:59
What I did was make it possible to call nqp::backtrace not with an exception but with an nqp::null. In that case it will just start with the current frame and position. 21:00
MasterDuke very cool 21:01
nine With this we finally pass those backtrace tests with MVM_SPESH_NODELAY
MasterDuke i don't remember what it was, but a little while ago somebody showed some slow code and iirc creating Failures was (one of?) the biggest costs 21:02
japhb nine++ # Constantly pushing stability forward 21:04
MasterDuke++ # Taking up my old complaint and doing something about it. :-)