github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
nwc10 good *, #moarvm 05:56
MasterDuke: thanks. In this case cppcheck is not correct 05:58
and it's arguably a bit silly, as I didn't write sizeof(entry_raw)
I wrote sizeof() with a type
and a type which is not the type of cntry_raw 05:59
07:25 brrt joined
nwc10 good *, brrt 07:36
brrt good * nwc10 :-) 07:38
another slog waiting for us 07:39
nwc10 slog? Something specific, or simply "Tuesday" ?
brrt I guess 'tuesday' 07:40
07:42 leont joined 07:44 zakharyas joined
MasterDuke nwc10: cool. i'll admit i didn't bother checking the checker and just passed on its warning 07:57
nwc10 I'm assuming that that was the only thing in the hash code that it grumbled about. If so, that's good
MasterDuke iirc, yes 07:58
nwc10 and there *might* still be buffer overflows. But all the regression tests pass under ASAN (and I wrote some more tests) so there aren't any *obvious* ones.
08:01 domidumont joined
MasterDuke wow. gmp really is quite a bit faster. `my ($a; $b; $c; $s); for 66..5_000 -> $e { $a = 23**$e; $b = 7**$e; $c = $a % $b; $c *= $c; $c += $a; $c -= $b; $s = ~$c }; say $s.substr(0, 10); say now - INIT now` takes about 35s with libtommath. on my gmp branch it takes 0.24s (and gives the same result) 08:25
moritz wow 08:30
is it the stringifcation that is slow in libtommath, or everything?
MasterDuke well, the stringification is *really* slow. but so far everything i've tested is slower to some degree 08:32
the difference is way less dramatic if i take out the stringification every loop 08:33
if i increase the range to 10_000, but don't stringify every iteration, libtommath is ~2.1s and gmp is ~0.36s 08:35
the stringification is definitely an algorithmic difference. my pure-Raku implementation of stringification using Barrett reduction was faster than libtomath at ~2**600 iirc 08:37
and i haven't yet gotten around to finalizing my implementation for libtommath... 08:38
08:46 domidumont left 09:30 harrow` left 09:32 harrow joined 09:36 domidumont joined 09:43 brrt left 10:09 brrt joined 11:16 brrt left 11:19 MasterDuke left 11:32 zakharyas left 11:39 MasterDuke joined
Geth MoarVM: 0015fd05bd | (Nicholas Clark)++ | 3 files
Re-instate meaningful hash iterator debugging inside HASH_DEBUG_ITER.

The previous debugging code was removed as part of commit bac1ae1cf74f2917:
   Re-implement MVMStrHashTable as a Robin Hood Hash.
and never added back.
11:47
MoarVM: fb99295086 | (Nicholas Clark)++ | 4 files
Add MVM_str_hash_iterator_target_deleted() for HASH_DEBUG_ITER.

This name is rather a mouthful, but it describes the logic that this function encapsulates - does this hash iterator point to an entry that has been deleted. This avoids repeating implementation details in four places.
12:21 MasterDuke left 12:38 pamplemousse__ joined 12:48 sena_kun joined 12:54 zakharyas joined 13:07 squashable6 left 13:08 squashable6 joined 13:10 MasterDuke joined
Geth MoarVM: 60070970c4 | (Nicholas Clark)++ | src/core/fixedsizealloc.c
oops if MVM_fixed_size_alloc() is called for a size of 0 bytes.

Previously this wasn't trapped. With FSA_SIZE_DEBUG enabled (not the default) everything works (it can allocate "0" bytes, as it adds its debugging record keeping to the size requested). With default settings, we corrupt the malloc heap, which doesn't get reported at the time, and may or may not get reported in any useful way later.
13:56
14:15 travis-ci joined
travis-ci MoarVM build errored. Nicholas Clark 'oops if MVM_fixed_size_alloc() is called for a size of 0 bytes. 14:15
travis-ci.org/MoarVM/MoarVM/builds/731288125 github.com/MoarVM/MoarVM/compare/f...070970c4a7
14:15 travis-ci left
nwc10 dear travis dry-by bot - *what* failed? 14:19
timotimo dry-by, eh? 14:20
nwc10 er, drive-by
[Coke] looks like only some of the builds failed. one error is Error: retrieving gpg key timed out. 14:21
timotimo ah, ugh
one of our bots used to check what killed a travis build
nwc10 ah, I missed that it splats 2 URLs
timotimo i think it was one run by zoffix that hasn't been put back online by anybody else since he left
[Coke] I think someone with privs could re-start that job and hope it didn't time out this time
I can see the error, but don't see a "re-run" anywhere on the sub jobs. 14:22
timotimo let me have a look
how good that it has a button directly on that list, makes it faster to restart many jobs in a row
jobs still failing with the same error 14:27
one of the restarted jobs seems to succeed now
14:41 travis-ci joined
travis-ci MoarVM build errored. Nicholas Clark 'oops if MVM_fixed_size_alloc() is called for a size of 0 bytes. 14:41
travis-ci.org/MoarVM/MoarVM/builds/731288125 github.com/MoarVM/MoarVM/compare/f...070970c4a7
14:41 travis-ci left
sena_kun Those logs are not cool. 14:42
If those are internal travis issues, if its coverage is done by azure, maybe we can deprecate-disable travis? Azure builds go just fine. 14:46
14:48 travis-ci joined
travis-ci MoarVM build errored. Nicholas Clark 'oops if MVM_fixed_size_alloc() is called for a size of 0 bytes. 14:48
travis-ci.org/MoarVM/MoarVM/builds/731288125 github.com/MoarVM/MoarVM/compare/f...070970c4a7
14:48 travis-ci left 14:56 Altai-man joined 14:58 sena_kun left 15:43 zakharyas left 15:48 zakharyas joined 16:24 elcaro left 16:31 elcaro joined 16:36 elcaro left 16:37 elcaro joined, domidumont left 16:44 elcaro left, elcaro joined 17:28 pamplemousse__ left, zakharyas left 17:30 elcaro left 17:37 elcaro joined 17:38 chansen_ left, kawaii left 17:39 tbrowder left
Geth MoarVM/hash-single-allocation: 20 commits pushed by (Nicholas Clark)++
review: github.com/MoarVM/MoarVM/compare/c...f3353ace9f
17:41
17:54 kawaii joined 17:58 tbrowder joined 18:00 chansen_ joined 18:05 pamplemousse__ joined 18:31 pamplemousse__ left 18:56 sena_kun joined
nwc10 oops, try this one 18:56
Geth MoarVM/hash-single-allocation: 17 commits pushed by (Nicholas Clark)++
review: github.com/MoarVM/MoarVM/compare/7...978ba231a9
18:57
18:58 Altai-man left 19:06 elcaro left, kawaii left 19:07 kawaii joined 19:23 elcaro joined
nwc10 WTF - I think tha this thing is working first time. 19:26
(OK, one typo before it would compile)
it compiles - ship it!
19:39 zakharyas joined
MasterDuke any difference in benchmarks? 19:39
nwc10 not yet. This thing just has regression tests. 19:41
dogbert17 late night hacking I see 20:15
MasterDuke: do you have time for another stupid question wrt your gmp patch 20:16
MasterDuke sure
dogbert17 ok, this line in your diff: 329 + result = mpz_cmp_si(*b->u.bigint, 0) != 0; 20:17
shouldn't that be: 329 + result = mpz_cmp_si(*b->u.bigint, 0L) != 0;
dunno if it matters but in their demo examples they use 0L 20:18
MasterDuke i don't think it can make a difference for 0 20:23
but i just changed them all and no difference 20:26
20:31 zakharyas left 20:34 Kaiepi left 21:08 sena_kun left
dogbert17 sigh, well it was worth a shot 21:15
MasterDuke hm. you don't even need the exponentiation. if you just use a bigint constant, e.g., 73786976294838206464, you get the same behavior 21:26
m: say +(42 xx 73786976294838206464)
camelia Cannot .elems a lazy list
in block <unit> at <tmp> line 1
MasterDuke i get `0` 21:27
ah ha! 21:41
in MVM_bigint_cmp 21:43
- return r;
+ return r == 0 ? 0 : r < 0 ? -1 : 1; 21:44
rakudo tests pass...on to a spectest 21:45
dogbert17 MasterDuke++ 21:47
21:49 MasterDuke left 21:52 kawaii left, tbrowder left 21:54 chansen_ left 21:55 tbrowder joined 21:56 chansen_ joined 22:00 MasterDuke joined
dogbert17 mpz_cmp* is used in several places, perhaps more changes are necessary 22:03
22:07 kawaii joined
MasterDuke good catch, one other place did need a fix! 22:08
dogbert17 cool 22:10
MasterDuke unfortunately don't think it's going to correct any of the spectest fails
dogbert17 why is that? 22:11
MasterDuke most other uses of mpz_cmp_* were checking for equality, which did work the same as libtommath's 22:12
it's just greater/less than that was different 22:13
and the only use of one of those was in an unlikely branch of bigint_pow
dogbert17 so what kind of failures are you getting? 22:15
MasterDuke a couple are because gmp doesn't return an error code like libtommath does, it just aborts 22:16
m: say 42.expmod(-1,7) # gmp gives `Floating point exception (core dumped)`
camelia Error in mp_exptmod: Value out of range
in block <unit> at <tmp> line 1
MasterDuke m: say so (2⁴⁵⁵³⁵³⁵³⁴⁵³⁶⁴⁵³⁵³⁴⁵) # gmp gives gmp: overflow in mpz type Aborted (core dumped)` and i'm not sure why 22:17
camelia False
MasterDuke m: say 2⁴⁵⁵³⁵³⁵³⁴⁵³⁶⁴⁵³⁵³⁴⁵ 22:18
camelia Numeric overflow
in block <unit> at <tmp> line 1
MasterDuke so we have to figure out to handle those kinds of cases 22:19
some are wrong values when right-shifting, which we had a lot of special handling for and i just got rid of, but maybe some of it needs to come back 22:20
and some are different num representations
m: say 2026887777243374/10**63 22:21
camelia 2.026887777243374e-48
MasterDuke and gmp gives 2.0268877772433737e-48
anyway, i'm off to bed. good progress today 22:22
dogbert17 sleep well 22:23
22:53 MasterDuke left