Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:09 reportable6 left 00:15 evalable6 joined 00:16 linkable6 joined, nativecallable6 joined 00:32 colemanx joined 01:10 reportable6 joined 01:14 lizmat_ left, lizmat joined 01:16 releasable6 joined 01:18 Geth joined 01:22 RakuIRCLogger left 01:23 RakuIRCLogger joined 02:15 unicodable6 joined 03:07 colemanx left 04:07 evalable6 left, linkable6 left 04:08 evalable6 joined 06:09 reportable6 left 06:11 reportable6 joined 07:11 committable6 left, shareable6 left, squashable6 left, nativecallable6 left, sourceable6 left, bloatable6 left, reportable6 left, unicodable6 left, evalable6 left, tellable6 left, coverable6 left, notable6 left, quotable6 left, releasable6 left, statisfiable6 left, benchable6 left, bisectable6 left, greppable6 left, squashable6 joined, quotable6 joined, nativecallable6 joined 07:12 shareable6 joined, notable6 joined, reportable6 joined, statisfiable6 joined, bloatable6 joined 07:13 sourceable6 joined, tellable6 joined, committable6 joined 07:14 evalable6 joined, greppable6 joined 08:10 linkable6 joined 08:12 unicodable6 joined 08:13 bisectable6 joined 09:09 frost joined, frost left, frost joined 09:13 releasable6 joined
nine MasterDuke: faking the signal doesn't help, as the process will still dump core even with a synthetic SIGSEGV 09:14
What does help is disabling core dumps for the process via ulimit: use NativeCall; sub setrlimit(int64 $resource, blob8 $rlp) is native(Str) { * }; sub strdup(int64) is native(Str) {*}; try setrlimit(4, blob8.allocate(4096, 0)); strdup(0) 09:15
Problems with that are that setrlimit is defined as int setrlimit(int resource, const struct rlimit *rlp); and we don't have a way in NativeCall to request a native int of whatever the platform default size is, we cannot determine the size of the rlimit structure and the value of the RLIMIT_CORE constant 09:17
We might still get away with this though, as there's no harm if the setrlimit call fails and probably neither if it sets a different limit. 09:18
10:13 linkable6 left, evalable6 left 10:14 linkable6 joined 10:15 frost left 10:16 evalable6 joined
Nicholas I think that on every platform we build on (and likely ever will) C's int will be 32 bits (and sizeof(int) will be 4) 10:22
it's only certain crazy DSP chips where sizeof(int) is 1, because sizeof everything is 1
and really obsolete Crays (K series, I think) where sizeof(int) is 8
and DOS and similar ancient things where it's 2
but it does somewhat L.T.A. if we don't have a way to express integers with native C sizes 10:23
(if I understood that correctly)
nine I think you did. We have long, longlong, size_t, even bool, but not int. Most probably because the name "int" was already taken and is a 64 bit integer 10:38
m: use NativeCall; my native nativeint is Int is ctype("int") is repr("P6int") { }; say nativesizeof(nativeint) 10:40
camelia 4
nine m: use NativeCall; say nativesizeof(int) 10:41
camelia 8
11:12 benchable6 joined 11:13 coverable6 joined 12:07 reportable6 left 14:10 reportable6 joined
dogbert17 m: my int8 $x = 2**7 - 1; say $x; say $x++; say $x 15:21
camelia 127
-129
-128
dogbert17 nine: does this look suspicious to you? 15:22
nine it does 15:29
dogbert17 is it something that your recent work might help fix? 15:32
I took the example from this old report: github.com/Raku/old-issue-tracker/issues/5099 15:35
15:37 linkable6 left, evalable6 left 15:38 linkable6 joined 15:40 evalable6 joined
nine I don't think its related. Actually I have no idea how we can get from 127 to -129 :) 15:45
Geth MoarVM: dd97819250 | (Daniel Green)++ | 4 files
Fix format strings for Win32 + set C99 for MinGW
15:48
MoarVM: ef95f00311 | MasterDuke17++ (committed using GitHub Web editor) | 4 files
Merge pull request #1668 from MasterDuke17/some_windows_format_string_fixes
MoarVM: MasterDuke17++ created pull request #1669:
Define -D__USE_MINGW_ANSI_STDIO=1 for MinGW
15:59
nine I now have experimental patches that will allow for arg speshing in a new postcircumfix:<[ ]>(array::uintarray:D \SELF, uint $pos) candidate which unblocks inlining and indeed, we can then end up with a single nqp::atposref_u in place of the call. 16:49
16:50 linkable6 left, evalable6 left
nine They deal with the :D problem, protos with ($, |) signatures and finally try to simplify references to native values when we have multiple possibly matching multi candidate (i.e. runtime dispatch) but the possible candidates agree on rwness of an arg 16:51
16:53 linkable6 joined
lizmat nine++ # wow! 16:59
17:51 evalable6 joined 18:07 reportable6 left 19:09 reportable6 joined 19:29 [Coke] left 19:32 [Coke] joined 19:34 dogbert11 joined 19:36 dogbert17 left 19:38 dogbert11 left
MasterDuke nice 19:42
19:46 dogbert11 joined 19:50 dogbert17 joined 19:51 dogbert17 left, dogbert17 joined 19:53 dogbert11 left
MasterDuke jnthnwrthngtn: does github.com/rakudo/rakudo/commit/1f...36ca3c4R49 have to be `try self.invalidate_method_caches($obj);`? it can't be `self.?invalidate_method_caches($obj);`? 20:21
m: say (1.84467440737096e+19).Int  # perl and wolfram alpha think this should be 18446744073709600000 20:31
camelia 18446744073709600768
MasterDuke committable6: releases say (1.84467440737096e+19).Int 20:32
committable6 MasterDuke, ¦releases (60 commits): «18446744073709600768␤» 20:33
MasterDuke but python agrees with raku 20:34
bartolin_ but rakudo-j is on the side of perl and wolfram alpha ... 20:36
MasterDuke welcome to thunderdome... 20:37
moon-child I assume wolfram alpha is using a precise value, not making a float and then rounding it 20:59
but rakudo-j, ehmm... 21:00
21:03 colemanx joined 21:07 dogbert11 joined 21:10 dogbert17 left 21:39 dogbert11 left, dogbert11 joined
MasterDuke oh, nqp doesn't have `.?` 22:43
23:02 squashable6 left 23:05 squashable6 joined
MasterDuke is there a way to safely nqp::getattr an attribute that might not exist, other than using `try`? 23:21