Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-02-08

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:06 pyrimidine joined #moarvm
00:09 japhb joined #moarvm
00:20 jeffythedragonsl joined #moarvm
00:20 jeffythedragonsl Hey anyone there?
00:21 jeffythedragonsl joined #moarvm
00:22 jeffythedragonsl Wanted some feedback on the MVM rename
00:36 japhb joined #moarvm
00:56 TimToady jnthn is asleep currently
01:06 zakharyas joined #moarvm
01:08 japhb joined #moarvm
01:25 MasterDuke timotimo: for the heck of it i just jitted isprime_I and profiled the code dogbert17 posted earlier before after my change. before, 20% of the frames were speshed, after 20% were jitted. however, the total time spent was pretty much exactly equal, same with perf reports
01:26 timotimo hm, how long are those frames that were now being jitted?
01:26 timotimo can i see the jit log and/or spesh log?
01:26 timotimo (compression helps a lot here)
01:26 MasterDuke long?
01:26 timotimo well, how many instructions?
01:27 timotimo our jit is mostly good for removing interpreter overhead at the moment - which will change with brrt's next generation JIT
01:27 MasterDuke let me gist the logs
01:27 timotimo maybe only the relevant parts :)
01:27 timotimo i really ought to build a tool to do stuff with spesh and jit logs
01:29 MasterDuke https://gist.github.com/MasterDuke17/1a09a71b238f7335ad562b864ecdab8f, pr1.log is MVM_JIT_LOG before, pr2.log is after
01:29 MasterDuke oooh, added feature to the qt profiler viewer would be awesome!
01:32 timotimo not sure if i want to write it in cpp
01:33 MasterDuke heh, i sympathize 110%
01:33 timotimo do you see that your 20001 number is being used as a floating point number?
01:34 MasterDuke !!!!
01:35 timotimo what's the source code again?
01:35 japhb joined #moarvm
01:35 MasterDuke i converted it to nqp. `'my $b := nqp::knowhow().new_type(:name("TestBigInt"), :repr("P6bigint")); sub a() { my int $numPrimes := 0; my int $x := 1; while ++$x { if nqp::isprime_I(nqp::box_i($x, $b), 100) && ++$numPrimes == 5_001 { say($x); last } } }; a()'`
01:37 timotimo yeah, so try with nqp::iseq_i there
01:41 MasterDuke gist updated
01:43 timotimo -append_ins: <coerce_in>
01:43 timotimo -append_ins: <const_n64>
01:43 timotimo -append_ins: <eq_n>
01:43 timotimo +append_ins: <const_i64_16>
01:43 timotimo +append_ins: <eq_i>
01:43 timotimo exactly the kind of change i was hoping for
01:43 timotimo -Bytecode size: 1443
01:43 timotimo +Bytecode size: 1413
01:43 timotimo ^- hardly noticable
01:45 timotimo i don't know where the other differences come from
01:49 MasterDuke i added the perf reports to the gist
01:53 timotimo do we always go through bigints to figure out if a thing is a prime?
01:56 MasterDuke yeah
01:57 timotimo well, that's dumb :)
01:57 timotimo but did you see the talk from dana jacobsen?
01:58 MasterDuke not live, is the video available now?
01:59 timotimo don't know
02:00 timotimo they said they have very good speed improvements that they can send upstream
02:01 japhb Who is they, and what is upstream?
02:01 timotimo dana jacobsen. we are upstream
02:01 timotimo but also there's a dumb bug in libtom
02:01 yoleaux2 joined #moarvm
02:02 timotimo where it implements the algorithm for primality testing by using the first 100 bases instead of 100 random bases
02:02 japhb OK, fair enough.  Speed improvements to what?  To our math?  To our general speed?  To our GC?
02:02 timotimo and there's a published attack to generate numbers that will test as Prime for that
02:02 yoleaux2 joined #moarvm
02:02 timotimo speed improvements to .is-prime
02:02 MasterDuke oh good, then i'm not going to touch anything
02:02 japhb Oh.  That's useful, but not critical ...
02:02 yoleaux2 6 Feb 2017 10:59Z <samcv> japhb: that probably happened because you are not added to the rt list or something. send an email to That one was waiting in human moderation because you're not subscribed to the list. email perlbug-admin@perl.org and they can add you
02:02 yoleaux2 6 Feb 2017 11:00Z <samcv> japhb: otherwise takes human moderation for it to go through
02:24 pyrimidine joined #moarvm
02:46 samcv joined #moarvm
03:28 agentzh joined #moarvm
04:27 pyrimidine joined #moarvm
05:10 pyrimidine joined #moarvm
05:14 pyrimidine joined #moarvm
07:09 pyrimidine joined #moarvm
07:14 pyrimidi_ joined #moarvm
08:15 pyrimidine joined #moarvm
08:28 nebuchadnezzar joined #moarvm
09:06 Geth ¦ MoarVM: ffe92b73ff | (Samantha McVey)++ | 3 files
09:06 Geth ¦ MoarVM: Add a MVM_COLLATION_QC property
09:06 Geth ¦ MoarVM:
09:06 Geth ¦ MoarVM: This property is 0 or False when the codepoint is a starter in one of the collation
09:06 Geth ¦ MoarVM: weights that is a sequence of codepoints. Currently we only apply weights for single
09:06 Geth ¦ MoarVM: codepoints and not sequences, but this property will be needed as our support of
09:06 Geth ¦ MoarVM: the Unicode Collation Algorithm increases.
09:06 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ffe92b73ff
09:10 pyrimidine joined #moarvm
09:15 pyrimidi_ joined #moarvm
09:40 btyler_ joined #moarvm
09:40 [Coke]_ joined #moarvm
09:41 sivoais_ joined #moarvm
09:50 jnthn morning o/
09:50 yoleaux2 02:26Z <TimToady> jnthn: the %?LANG mechanism is rather bogus, insofar as it can't actually tell you the current language, only the language after the last add_categorical, which retroactively redefines %?LANG for earlier parts of the block
09:53 mtj_ joined #moarvm
09:58 jnthn .tell TimToady %?LANG is there for the sake of EVAL. I consider this as just another example of what we see in `EVAL 'say $x'; my $x = 42` - that is, by runtime certain things exist at block-level, even if the compiler had a finer-grained view of them earlier.
09:58 yoleaux2 jnthn: I'll pass your message to TimToady.
10:00 pyrimidine joined #moarvm
10:28 Geth ¦ MoarVM: 2c2374c01f | (Bart Wiegmans)++ | 2 files
10:28 Geth ¦ MoarVM: Add data section for JIT code
10:28 Geth ¦ MoarVM:
10:28 Geth ¦ MoarVM: This enables us to store (function) pointers and the like in a separate
10:28 Geth ¦ MoarVM: section rather than having to shuffle them in via constant
10:28 Geth ¦ MoarVM: expressions (ie. movabs). Expected to be a code-size saving, might
10:28 Geth ¦ MoarVM: eventually be used to canonicalize pointers and make JIT code
10:28 Geth ¦ MoarVM: serializable.
10:28 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2c2374c01f
10:28 Geth ¦ MoarVM: 2d81976c6c | (Bart Wiegmans)++ | 7 files
10:28 Geth ¦ MoarVM: Emit data node for extop 'fake' registers
10:28 Geth ¦ MoarVM:
10:28 Geth ¦ MoarVM: This should plug a minor memory leak from malloc()-ing 'fake' registers
10:28 Geth ¦ MoarVM: used for extop support. Introduces a MVM_JIT_DATA node type.
10:28 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2d81976c6c
10:28 Geth ¦ MoarVM: 1706706081 | (Jonathan Worthington)++ | 7 files
10:28 Geth ¦ MoarVM: Merge pull request #516 from MoarVM/jit-data-section
10:28 Geth ¦ MoarVM:
10:28 Geth ¦ MoarVM: Add data section for JIT compiled code
10:28 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1706706081
10:34 TimToady joined #moarvm
10:38 catbert17 joined #moarvm
10:49 pyrimidine joined #moarvm
11:13 pyrimidine joined #moarvm
11:15 pyrimidine joined #moarvm
11:34 pyrimidine joined #moarvm
11:58 catbert17 joined #moarvm
12:36 pyrimidine joined #moarvm
12:47 pyrimidine joined #moarvm
12:59 catbert17 joined #moarvm
13:49 pyrimidine joined #moarvm
14:08 IOninja Are there any issues with adding `#include <stdlib.h>` in src/core/interp.c ?
14:09 IOninja I guess I can find out what it does and copy the function I want...
14:10 arnsholt What function from stdlib is it you want to use?
14:10 IOninja oh, nm, it's only for ints I think
14:10 IOninja arnsholt: abs
14:11 arnsholt Shouldn't be a problem, I think
14:11 arnsholt And there's labs for long
14:11 IOninja I got MVMnum64 num tho
14:12 arnsholt Right
14:14 IOninja are && and || in C short-curcuiting?
14:14 timotimo i believe so
14:15 arnsholt They are
14:15 arnsholt Thus the idiom "if(pointer && pointer->member) { /* something with pointer->member */ }"
14:16 timotimo annoyingly, can't have a conditional mov in assembler
14:37 IOninja m: say abs -0e0
14:37 camelia rakudo-moar a63d82: OUTPUT«-0␤»
14:37 IOninja ^ wrong
14:37 IOninja j: say abs -0e0
14:37 camelia rakudo-jvm fb4f16: OUTPUT«0␤»
14:37 IOninja Right.
14:37 Geth ¦ MoarVM: zoffixznet++ created pull request #526: Fix abs_n op for negative zeros
14:37 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/526
14:37 timotimo hah, that's weird
14:39 timotimo hm, gcc probably compiles that to good assembly code
14:51 arnsholt IOninja: commented
14:51 pyrimidine joined #moarvm
14:53 IOninja arnsholt: saw somewhere that it's only part of library since "C99" is that normal? What C version do we use?
14:55 arnsholt Ah, FFS >.<
14:55 arnsholt Lemme see if Visual C has it
14:57 IOninja hm, copysign(num, 1.0) didn't do nothing. abs -1e0 reutrns -1
14:57 * IOninja tries copysignf
14:57 arnsholt Looks like it's in Visual Studio since at least VS 2015
14:57 arnsholt Oh, you'll probably want copysignl, sorry
14:57 samcv IOninja, C version -10
14:57 samcv some old one is all i know. you have to be careful
14:58 samcv not to make it angry
14:58 arnsholt jnthn: How recent a version of Visual Studio do we need to support, d'you think?
14:58 IOninja I'm gussing 10 is 2010 and so is newewr than C99?
14:58 timotimo hahahahahaha
14:58 timotimo no
14:59 timotimo MSVC hasn't advanced in the C standard it supports in over 10 years
14:59 timotimo maybe even over 15 years
14:59 samcv ^
14:59 timotimo microsoft just says "if you need newer C features, just use MSVC++"
14:59 samcv :\
14:59 samcv is it still actively developed?
14:59 timotimo i think development has picked up in the recent years?
15:00 samcv s/C++/C#
15:00 timotimo they keep buying experts from all over the field, at some point they *must* end up doing something for C
15:00 arnsholt Visual C only has partial support for C99
15:00 samcv we have like C85?
15:00 samcv idk. something something
15:00 arnsholt C89, yeah
15:00 samcv yeah
15:00 timotimo C89½
15:00 arnsholt Yeah#
15:01 samcv also why don't we use -c89 for gcc
15:01 samcv so it can error at you for doing things
15:01 timotimo we used to have -fpedantic i think
15:01 arnsholt Probably because VSC does support *some* of C99
15:01 arnsholt But not all of it
15:01 samcv i think we still do? idk i remember compiling stuff fine sometimes
15:01 samcv but then MSVC wouldn't let it
15:01 timotimo one of the worst offenders usually is that someone puts stuff before declarations
15:01 timotimo and we make that case error with flags
15:01 samcv it took a stricter version of not combining code and declarations
15:01 timotimo i wonder why we don't seem to have appveyor set up for moarvm?
15:02 samcv lazy lists
15:02 arnsholt Yeah, interleaving declarations and code is C99 and not supported by VSC
15:02 timotimo visual studio code? :P
15:02 ilmari does it support designated struct initializers yet?
15:02 arnsholt Also for(int i; ...; ...) { ... }
15:02 timotimo correct
15:02 arnsholt timotimo: Whatever =p
15:02 ilmari struct foo = { .bar = 42, .baz = 37 };
15:03 timotimo if we had that we ought to make all our reprs use that
15:03 timotimo but i don't think we do?
15:03 samcv never seen that notation ilmari
15:03 arnsholt Probably not
15:03 ilmari used all over the linux kernel
15:04 ilmari and (ab)used to impressive effect here: http://fanf.livejournal.com/148506.html
15:04 ilmari named and optional function arguments in C99
15:04 ilmari with only a tiny amount of preprocessor hackery
15:05 samcv lol.
15:05 samcv wtf
15:05 ilmari because you can mix designated and non-designated initialisers, and the non-designated ones continue in order after the designated one
15:05 samcv does C++ have named arguments?
15:06 arnsholt "It's not even completely horrible!" What an endorsement!
15:07 timotimo no, cpp doesn't have that
15:08 ilmari ISO:IEC 9899-1999 §6.7.8.17
15:09 ilmari ISO/IEC 9899:1999, to use the correct syntax
15:10 IOninja arnsholt: tried copysign/copysignf/copysignl none change the sign. I'm assuming that's due to number being MVMnum64 num which copysign doesn't know how to operate on?
15:11 timotimo no, MVMnum64 is just a typedef
15:11 IOninja ah
15:11 timotimo it's probably typedefd to "double"
15:12 IOninja oh good god
15:12 IOninja I never saved the result of copysign
15:13 timotimo ooooh!
15:14 IOninja It works! :)
15:16 IOninja arnsholt++ it's better too 'cause IEEE talks about signs on NaNs, which the *-1 thing don't do, but I see we don't got signed NaNs on Perl 6 level so kinda ignored that
15:16 IOninja just gonna finish stresstesting and update the PR
15:21 jnthn I can test stuff on MSVC if needed
15:21 jnthn I do builds there every so often
15:23 IOninja jnthn: arnsholt PR updated with the copysign thing: https://github.com/MoarVM/MoarVM/pull/526
15:25 samcv IOninja, so we should have signed NaN?
15:26 samcv .oO(‽)
15:26 jnthn .oO( I prefer garlic NaN... )
15:28 IOninja samcv: no idea. Probably not? It says standard don't specify signs on NaNs but stuff like abs()/negate() sets their signs and its relevant in ordering? or something or other https://gist.github.com/zoffixznet/a8f68ae75ecc5f0c47c03813b50248c7
15:29 IOninja m: use nqp; dd nqp::neg_n(NaN)
15:29 camelia rakudo-moar a63d82: OUTPUT«NaN␤»
15:29 IOninja m: use nqp; dd nqp::neg_n(Inf/Inf)
15:29 camelia rakudo-moar a63d82: OUTPUT«NaN␤»
15:29 * IOninja shrugs
15:31 IOninja Here's the whole thing if you want to read it: http://www.csee.umbc.edu/~tsimo1/CMSC455/IEEE-754-2008.pdf  the stuff I quoted is from 6.3 The sign bit, and there's also section 5.5.1 Sign bit operations
15:31 jnthn PR busts the build, I'm afraid...commented on PR
15:32 arnsholt Oh. Maybe the Moar build does have -lm?
15:32 arnsholt I guess I just assumed it did
15:32 IOninja What's that? linking math.h stuff?
15:32 arnsholt Yeah, math library
15:33 IOninja There was already #include <math.h> so I guess it's used elsewhere
15:33 IOninja And it builds in whatever my box uses to build it.
15:33 * IOninja reverts back to the 1.0/num thing, I guess
15:39 pyrimidine joined #moarvm
15:41 FROGGS joined #moarvm
15:41 IOninja PR updated to use the 1.0/num to detect the negative zero
15:42 IOninja and mutliply negative stuff by -1 instead of using copysign thing
15:55 samcv wow the full test for unicode collation is 17MB!
15:55 samcv i only ran the short test which is like 4MB :P
15:56 samcv probably same result but will run it just to make sure
15:56 [Coke] m: say $ENV<PATH>; # it'd be nice if this perhaps suggested the dynvar.
15:56 camelia rakudo-moar a63d82: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable '$ENV' is not declared␤at <tmp>:1␤------> say ⏏$ENV<PATH>; # it'd be nice if this perha␤»
15:58 IOninja m: say $*ENV<PATH> // 'meow'; # it'd be nice if this pointed out Perl 5'ism
15:58 camelia rakudo-moar a63d82: OUTPUT«meow␤»
15:58 [Coke] ... ooops, wrong window.
15:58 IOninja Burned myself twice with that :)
15:59 [Coke] I had someone at work here try $*ENV{PATH}, and was surprised when it worked. (turned out he deployed the wrong docker image, whoops)
15:59 [Coke] er, $ENV{PATH}, even!
16:18 FROGGS_ joined #moarvm
16:25 pyrimidine joined #moarvm
16:47 pyrimidine joined #moarvm
16:47 Geth ¦ MoarVM: 64118b2a38 | (Jonathan Worthington)++ | src/instrument/crossthreadwrite.c
16:47 Geth ¦ MoarVM: Filter out multi-cache noise in cross-thread log.
16:47 Geth ¦ MoarVM:
16:47 Geth ¦ MoarVM: Bit of a cheaty heuristic, but this whole instrumentation is a hack
16:47 Geth ¦ MoarVM: awaiting a true deadlock detector anyway.
16:47 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/64118b2a38
17:19 Geth ¦ MoarVM: 3cc2f1c75b | (Jonathan Worthington)++ | src/instrument/crossthreadwrite.c
17:19 Geth ¦ MoarVM: Another heuristic to cut CTW-log junk.
17:19 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/3cc2f1c75b
17:21 lucasb joined #moarvm
17:23 lucasb re naming consistency, I couldn't grasp the meaning of "Some names have a VM prefix for vm-specific but multi-backend types and some purely MoarVM-specific types have a MVM prefix"
17:23 lucasb can someone elaborate a bit more? :)
17:24 lucasb why would it be ok to have a VMArray, but not a VMString? how are they different?
17:26 jnthn Some REPRs are specific to MoarVM (and other backends that aren't 6model-based don't even use the REPR system for them)
17:26 jnthn Others are cross-backend
17:26 jnthn Such as VMArray, P6int, CStruct, and so forth.
17:26 jnthn MVMString is the way MoarVM chooses to represent its strings, but for JS and the JVM we can just use whatever they have
17:27 jnthn Similar for exceptions
17:29 lucasb well, it'll take a while for me to understand this :|
17:31 lucasb I'm looking at 6model/reprs/MVMArray.h; it's the implementation of a "MoarVM array", right? how is this generic that other backends may use this same representation (elems,start,ssize,slots) ?
17:31 lucasb (I guess I'm making a huge confusion. thanks jnthn++ for the patience)
17:32 jnthn nqp: class C is repr('VMArray') { }
17:32 camelia nqp-moarvm: ( no output )
17:32 jnthn nqp-j: class C is repr('VMArray') { }
17:32 jnthn Aww, guess no bot for that
17:32 jnthn r-j: class C is repr('VMArray') { }
17:32 camelia rakudo-jvm fb4f16: ( no output )
17:32 jnthn Ah, there we go
17:33 jnthn So VMArray is available on all backends
17:33 jnthn r-j: class C is repr('MVMString') { }
17:33 camelia rakudo-jvm fb4f16: OUTPUT«===SORRY!===␤java.lang.RuntimeException: No REPR MVMString␤»
17:33 jnthn That ain't
17:33 jnthn m: class C is repr('MVMString') { }
17:33 camelia rakudo-moar 2b1eb6: ( no output )
17:33 jnthn And that's a very weird thing to do :)
17:33 jnthn (You can't actually do anything useful whatsoever with it)
17:33 lucasb ah, clarifying examples :)
17:34 jnthn MoarVM uses 6model for every single garbage-collectable entity, though.
17:34 jnthn Other VMs do not natively provide it
17:34 jnthn The REPRs that are registered with a name starting with MVM are MoarVM-specific
17:39 lucasb I see written "core representations" in the comments. Does moarvm has to deal with NON-core representations at any time?
17:40 jnthn We've kinda pondered making that pluggable
17:40 jnthn Though I'm not hugely enthusiastic about that, to be honest.
17:41 jnthn And there's only so many useful ones you can probably write :)
17:41 jnthn Supporting extension ops has largely been a nuisance.
17:41 jnthn The only reason it's manageable at all is because we control the only use of them that exists :)
17:43 lucasb extension ops was the other thing I was gonna ask. are they what, like opcodes defined elsewhere, not in more core?
17:44 jnthn Right
17:44 jnthn Rakudo has a bunch
17:45 jnthn I'd like to converge on not needing them
17:45 jnthn But there's so many bigger fish to try at the moment... :)
17:45 jnthn The main reason they exist historically is because in theory writing common bits in C is more efficient
17:45 jnthn In reality, in a world with spesh/JIT, it tends to make things worse
17:47 lucasb last question: I see MVMCFunction lives on the MVMCFunction.h file, while the other MVMCSomething's live on the CSomething.h files. is this a file naming inconsistency too?
17:47 jnthn No
17:48 pyrimidine joined #moarvm
17:48 lucasb ah, ok
17:48 jnthn CStruct is actually one of the most "public" REPRs; NativeCall code uses iet
17:48 jnthn *uses it
17:48 jnthn MVMCFunction is used in the VM bootstrap
17:48 jnthn And for not much else
17:50 lucasb right, understood. thanks for the explanations, jnthn. I'll try to digest everything.
17:55 jnthn :)
17:55 jnthn afk for a bit
18:12 lucasb joined #moarvm
18:15 lucasb source comment says representation IDs are determined by the order they are registered. is it relevant to keep the order and the ids in sync?
18:15 lucasb some entries in the ordered lists doesn't seen to match:
18:15 lucasb https://github.com/MoarVM/MoarVM/blob/master/src/6model/reprs.h#L88-L97
18:15 lucasb https://github.com/MoarVM/MoarVM/blob/master/src/6model/reprs.c#L231-L240
18:54 samcv i've been trying to think how i will implement collation weights for sequences of cp… still haven't finally brainstormed that part up
18:54 samcv the implementation as data part at least, how to store the data structure
18:55 samcv i made a MVM_COLLATION_QC that is set to 0 in case the cp is a starter in one of the sequences that have weights
18:55 samcv but not sure how to store the actual data for accessing yet
18:55 samcv if anybody has any ideas i'm all ears
18:59 pyrimidine joined #moarvm
19:06 lucasb re the mismatch of repr ids and the order of registration, I guess it doesn't matter because they are registered with the ID they claim to have, not with sequentially incremented integers.
19:08 lucasb (but I would still sort those entries accordingly :)
19:08 IOninja my PR passed travis and was approved for merging: https://github.com/MoarVM/MoarVM/pull/526
19:08 IOninja \o/
19:13 samcv IOninja, commented
19:14 IOninja Note to self, do NOT run grep -FR '/*' . in MoarVM's checkout to see if /* needs a newline after it :)
19:15 IOninja there's like a gazillion matches in src/strings/unicode_db.c
19:16 samcv heh
19:16 IOninja samcv: updated
19:17 samcv IOninja, also one tip for when you update a pr and amend `git commit --amend --date now`
19:17 samcv then it will show up properly on github
19:17 samcv to show you altered it
19:17 samcv git doesn't change timestamp when you amend
19:17 samcv (by default)
19:17 IOninja noted, thanks
19:18 samcv also why do you need `num < 0 || num == 0`
19:18 samcv why not `num <= 0`
19:18 samcv oh nvm i see the &&
19:19 IOninja Yeah, I figured that's faster than doing 1/num for all negatives
19:19 samcv yeah
19:20 Geth ¦ MoarVM: fd7300d273 | (Zoffix Znet)++ | src/core/interp.c
19:20 Geth ¦ MoarVM: Fix abs_n op for negative zeros
19:20 Geth ¦ MoarVM:
19:20 Geth ¦ MoarVM: Currently, abs_n(-0e0) leaves the sign intact, returning -0e0.
19:20 Geth ¦ MoarVM:
19:20 Geth ¦ MoarVM: IEEE 754-2008[^1], section 5.5.1 says "abs(x) copies a floating-point
19:20 Geth ¦ MoarVM: operand x to a destination in the same format, setting the sign bit
19:20 Geth ¦ MoarVM: to 0 (positive)." Which means the -0e0 needs to become 0e0.
19:20 Geth ¦ MoarVM: <…commit message has 5 more lines…>
19:20 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/fd7300d273
19:20 IOninja \o/
19:20 Geth ¦ MoarVM: d10ba497f1 | (Jonathan Worthington)++ | src/core/interp.c
19:20 Geth ¦ MoarVM: Merge pull request #526 from zoffixznet/fix-abs-n
19:20 Geth ¦ MoarVM:
19:20 Geth ¦ MoarVM: Fix abs_n op for negative zeros
19:20 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/d10ba497f1
19:21 jnthn IEEEninja :)
19:24 SmokeMachine joined #moarvm
19:44 pyrimidine joined #moarvm
19:49 pyrimidi_ joined #moarvm
20:15 zostay joined #moarvm
20:21 patrickz joined #moarvm
20:26 Geth ¦ MoarVM: nanis++ created pull request #528: On Windows, improve handling of Unicode in command line arguments and environment strings
20:26 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/528
20:28 pyrimidine joined #moarvm
20:31 IOninja sweet
20:37 pyrimidine joined #moarvm
21:47 pyrimidine joined #moarvm
21:49 pyrimidi_ joined #moarvm
22:05 pyrimidine joined #moarvm
22:25 pyrimidine joined #moarvm
22:43 travis-ci joined #moarvm
22:43 travis-ci MoarVM build failed. Jonathan Worthington 'Another heuristic to cut CTW-log junk.'
22:43 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/199684243 https://github.com/MoarVM/MoarVM/compare/64118b2a38b0...3cc2f1c75be4
22:43 travis-ci left #moarvm
22:44 pyrimidine joined #moarvm
23:01 IOninja ^ just a bumpage race
23:02 pyrimidine joined #moarvm
23:22 pyrimidine joined #moarvm
23:40 pyrimidine joined #moarvm
23:47 tbhIsck joined #moarvm
23:49 tbhIsck Was lurking around and noticed  #526, out of curiosity, why "Fix abs_n op" doesnt uses fabs ?
23:49 pyrimidine joined #moarvm
23:50 Ven joined #moarvm
23:51 tbhIsck in gcc it compiles to andpd which sets the sign bit to 0
23:52 tbhIsck faster in the case of 0 or -0 inputs
23:58 pyrimidine joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary