Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-09-27

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

All times shown according to UTC.

Time Nick Message
00:09 Geth ¦ MoarVM: 27d3d01e5a | (Samantha McVey)++ | src/strings/unicode_ops.c
00:09 Geth ¦ MoarVM: Add hex digits to the end of non-unique Unicode names
00:09 Geth ¦ MoarVM:
00:09 Geth ¦ MoarVM: Example:
00:09 Geth ¦ MoarVM: <CJK Ideograph> → <CJK Ideograph-4FFE>
00:09 Geth ¦ MoarVM:
00:09 Geth ¦ MoarVM: Also:
00:09 Geth ¦ MoarVM: * Return the correct value for noncharacters (<noncharacter>).
00:09 Geth ¦ MoarVM: * Don't return <illegal> for codepoints that are just reserved. Only
00:09 Geth ¦ MoarVM:   return <illegal> if a codepoint less than 0 is requested
00:09 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/27d3d01e5a
01:55 ilbot3 joined #moarvm
01:55 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
04:23 nine_ joined #moarvm
04:23 nwc10_ joined #moarvm
04:30 AlexDaniel joined #moarvm
04:31 avar joined #moarvm
04:32 BooK joined #moarvm
05:24 AlexDaniel joined #moarvm
05:44 leont joined #moarvm
05:48 AlexDaniel joined #moarvm
06:00 domidumont joined #moarvm
06:04 domidumont joined #moarvm
06:08 domidumont joined #moarvm
06:26 eater joined #moarvm
06:42 brrt joined #moarvm
06:45 brrt good * #moarvm
06:45 Geth ¦ MoarVM/even-moar-jit: f95f5b2dc6 | (Bart Wiegmans)++ | 85 files
06:45 Geth ¦ MoarVM/even-moar-jit: Merge remote-tracking branch 'origin/master' into even-moar-jit
06:45 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/f95f5b2dc6
06:52 Geth ¦ MoarVM/even-moar-jit: 401c4c7d02 | (Bart Wiegmans)++ | 85 files
06:52 Geth ¦ MoarVM/even-moar-jit: Merge remote-tracking branch 'origin/master' into even-moar-jit
06:52 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/401c4c7d02
07:12 brrt joined #moarvm
07:23 AlexDaniel joined #moarvm
07:40 patrickz joined #moarvm
07:51 AlexDaniel joined #moarvm
07:52 committable6 joined #moarvm
07:52 quotable6 joined #moarvm
07:52 evalable6 joined #moarvm
07:52 bloatable6 joined #moarvm
07:52 unicodable6 joined #moarvm
07:52 releasable6 joined #moarvm
07:52 coverable6 joined #moarvm
07:52 nativecallable6 joined #moarvm
07:52 greppable6 joined #moarvm
07:52 benchable6 joined #moarvm
07:52 bisectable6 joined #moarvm
07:52 squashable6 joined #moarvm
07:52 statisfiable6 joined #moarvm
07:57 AlexDaniel squashable6: status
07:57 squashable6 AlexDaniel, Next SQUASHathon in 9 days and ≈2 hours (2017-10-07 UTC-12⌁UTC+14)
07:58 samcv hey AlexDaniel. in case your unicodable bot relys on characters starting with < and ending with >
07:58 samcv due to commit 27d3d01e5a
07:59 samcv illegal is no more except for cp's below 0. and everything not assigned is either <reserved-XXXX> or <noncharacter-XXXX> or if it's over 0x10FFFF it's <unassigned-XXXX>
08:01 AlexDaniel samcv: thanks
08:01 AlexDaniel I don't think it even checks for < or >
08:01 AlexDaniel (although it did in the past)
08:01 AlexDaniel so I think it's fine
08:01 samcv before we had <illegal> for characters that didn't have any unicode data assigned to it. including noncharacters. but there really are no "illegal" characters
08:02 AlexDaniel so there's no need to call the police anymore eh
08:02 samcv woop woop
08:02 AlexDaniel m: say -5.chr.uniname
08:02 camelia rakudo-moar 9dba49: OUTPUT: «Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏<control-0005>' (indicated by ⏏)␤  in block <unit> at <tmp> line 1␤␤»
08:03 AlexDaniel wtf was that
08:03 samcv m: say (-5).chr.uniname
08:03 camelia rakudo-moar 9dba49: OUTPUT: «chr codepoint cannot be negative␤  in block <unit> at <tmp> line 1␤␤»
08:03 AlexDaniel ah. *facepalm*
08:03 AlexDaniel m: say (-5).uniname
08:03 camelia rakudo-moar 9dba49: OUTPUT: «<illegal>␤»
08:03 AlexDaniel right
08:04 samcv AlexDaniel, it's happened to the best of us!
08:05 AlexDaniel it's one of those thigs that drives me crazy. If I don't use whitespacey infix:<.>, then I can get into situations like this
08:05 samcv but i searched all the unicode documents and i am convinced that "unassigned" and "reserved" are practically the same thing. since i see both adjectives together
08:05 AlexDaniel if I do, then it blows up even worse in other situations
08:06 samcv "unassigned reserved codepoint" i saw. so not sure about above 0x10FFFF and above and if it should say something different than below but
08:06 samcv m: 0x10FFFE.uniname.say
08:06 camelia rakudo-moar 9dba49: OUTPUT: «<noncharacter-10FFFE>␤»
08:06 moritz isn't reserved == reserved for internal use, so won't ever be assigned?
08:06 samcv but noncharacters are correct now
08:06 samcv no
08:06 samcv noncharacter will never be assigned
08:06 samcv reserved is the same as it's always been. all the illegal codepoints under 0x10FFFF now show reserved unless they are noncharacters
08:07 samcv noncharacters are the last 2 cp's of each block. so 0xFFFE, 0xFFFF, 1FFFE, 1FFFF, 2FFFE, 2FFFF
08:07 samcv etc for all of unicode
08:08 samcv well technically it's specified only up to 0x10FFFF, but above 0x10FFFF is basically in the realm of nothingness
08:09 samcv so it appears there's no "real" difference between reserved and unassigned or at least no practical difference... so just to keep consistency i kept the ones under 0x10FFFF with reserved
08:10 AlexDaniel “<Plane 16 Private Use-100450>”
08:10 AlexDaniel cool, I love it
08:11 AlexDaniel samcv: have you thought about adding U+ there? Or something to indicate that these are hex
08:28 robertle joined #moarvm
08:45 Geth ¦ MoarVM/even-moar-jit: 26982d147e | (Bart Wiegmans)++ | 2 files
08:45 Geth ¦ MoarVM/even-moar-jit: [vector.h] replace shift with splice
08:45 Geth ¦ MoarVM/even-moar-jit:
08:45 Geth ¦ MoarVM/even-moar-jit: MVM_VECTOR_SPLICE is much closer to what we actually do in this
08:45 Geth ¦ MoarVM/even-moar-jit: 'function'
08:45 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/26982d147e
08:45 Geth ¦ MoarVM/even-moar-jit: 13aee3d867 | (Bart Wiegmans)++ | 3 files
08:45 Geth ¦ MoarVM/even-moar-jit: MARK operator can only take a parameter
08:45 Geth ¦ MoarVM/even-moar-jit:
08:45 Geth ¦ MoarVM/even-moar-jit: A MARK label is used to insert a label in the machine code. This label
08:45 Geth ¦ MoarVM/even-moar-jit: is necessarily indicated by a constant. Having it take a REG parameter
08:45 Geth ¦ MoarVM/even-moar-jit: makes no sense, since it represents no runtime operation that could use
08:45 Geth ¦ MoarVM/even-moar-jit: it.
08:45 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/13aee3d867
08:53 AlexDaniel joined #moarvm
09:00 Geth ¦ MoarVM/even-moar-jit: 35e0ae77bf | (Bart Wiegmans)++ | src/core/vector.h
09:00 Geth ¦ MoarVM/even-moar-jit: [vector.h] Wrap TOP and SIZE with parentheses
09:00 Geth ¦ MoarVM/even-moar-jit:
09:00 Geth ¦ MoarVM/even-moar-jit: ven++ for the suggestion
09:00 Geth ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/35e0ae77bf
09:17 samcv AlexDaniel, well that would change the whole standard and also is not how Unicode org denotes things
09:17 AlexDaniel ok
10:04 AlexDaniel joined #moarvm
10:07 AlexDaniel joined #moarvm
10:27 brrt joined #moarvm
11:00 domidumont joined #moarvm
11:03 zakharyas joined #moarvm
11:07 brrt joined #moarvm
12:57 zakharyas joined #moarvm
12:58 dogbert17 jnthn: did you get rid of your headache?
12:59 jnthn Not 100%, but today it's been slight enough that I barely notice it most of the time
13:00 Geth ¦ MoarVM: 79cdf0b4e7 | (Stefan Seifert)++ | 19 files
13:00 Geth ¦ MoarVM: Compile code for calling native functions.
13:00 Geth ¦ MoarVM:
13:00 Geth ¦ MoarVM: MVM_nativecall_build builds a JIT graph manually and compiles it. The
13:00 Geth ¦ MoarVM: result is attached to the MVMNativeCallBody. For now the new nativeinvoke_*
13:00 Geth ¦ MoarVM: ops (mirroring invoke_*) will enter that code. Ideally we will replace the
13:00 Geth ¦ MoarVM: whole frame containing the nativeinvoke by JIT compiled code.
13:00 Geth ¦ MoarVM:
13:00 Geth ¦ MoarVM: <…commit message has 14 more lines…>
13:00 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/79cdf0b4e7
13:00 Geth ¦ MoarVM: 76ff81c652 | (Stefan Seifert)++ | 5 files
13:00 Geth ¦ MoarVM: JIT compile JITed native calls
13:00 Geth ¦ MoarVM:
13:00 Geth ¦ MoarVM: While we already generated machine code for performing the actual call to the
13:00 Geth ¦ MoarVM: C function, we perform all deconting and unboxing of arguments in high level
13:00 Geth ¦ MoarVM: code. This is so that spesh can optimize this code to what's actually
13:00 Geth ¦ MoarVM: necessary for a given call site.
13:00 Geth ¦ MoarVM:
13:00 Geth ¦ MoarVM: <…commit message has 14 more lines…>
13:00 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/76ff81c652
13:00 Geth ¦ MoarVM: b3dd812aaa | (Jonathan Worthington)++ (committed using GitHub Web editor) | 20 files
13:00 Geth ¦ MoarVM: Merge pull request #676 from MoarVM/jit_nativecall
13:00 Geth ¦ MoarVM:
13:00 Geth ¦ MoarVM: JIT compile native calls
13:00 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b3dd812aaa
13:01 jnthn Will try and finish the expression JIT review this week also, so that too can go in :)
13:02 timotimo ooooooh
13:02 lizmat jnthn timotimo: is there a reason we're not using attr_inited to set default values of native attributes ?
13:02 lizmat it now checks for 0 and 0e0
13:03 lizmat which feels wasteful, since attrinited apparently does work for the is required check
13:03 lizmat m: class A { has int $.a is required }; A.new
13:03 camelia rakudo-moar 9af560: OUTPUT: «The attribute '$!a' is required, but you did not provide a value for it.␤  in block <unit> at <tmp> line 1␤␤»
13:03 lizmat m: class A { has int $.a is required("I say so" }; A.new
13:03 camelia rakudo-moar 9af560: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in parenthesized expression; couldn't find final ')'␤at <tmp>:1␤------>  A { has int $.a is required("I say so" ⏏}; A.new␤    expecting any of:␤        statement…»
13:04 lizmat m: class A { has int $.a is required("I say so" ); A.new
13:04 camelia rakudo-moar 9af560: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------>  int $.a is required("I say so" ); A.new⏏<EOL>␤    expecting any of:␤        statement end␤        statement modifier␤        statement modifier loop␤»
13:04 lizmat m: class A { has int $.a is required("I say so" ) }; A.new
13:04 camelia rakudo-moar 9af560: OUTPUT: «The attribute '$!a' is required because I say so,␤but you did not provide a value for it.␤  in block <unit> at <tmp> line 1␤␤»
13:04 jnthn If attrinnited works for non-object attributes it's probably an accident :)
13:05 lizmat but apparently a good accident ?
13:05 jnthn Maybe one that doesn't work on all backends though :)
13:05 jnthn It's a bit of a cheat really
13:05 lizmat ah, ok
13:05 jnthn As we don't actually have any way to tell if the native attrs were inited
13:05 jnthn So we take zero to mean that
13:05 lizmat ok, will leave it now
13:06 jnthn It's a bit of a trap but the alternative would be to ban defaults on native attributes which would be a bit sad too
13:06 lizmat but that also implies that "is required" on natives probably shouldn't be allowed
13:06 lizmat well, yes
13:06 jnthn Yeah, it's dubious at best
13:06 jnthn (is required)
13:07 lizmat hmmm... ok, will leave it for now, for a future optimisation
13:07 timotimo m: class A { has int $.a = 99 }; A.new(:0a).perl.say
13:07 camelia rakudo-moar 9af560: OUTPUT: «A.new(a => 99)␤»
13:07 timotimo ^- this is quite problematic
13:07 jnthn As I said, we live with that, or we live without defaults on native attributes :)
13:07 lizmat as I said, won't change the behaviour now
13:08 jnthn For sure, I'd transliterate the existing behavior as close as possible, otherwise we don't know whether bugs are in the code-gen or 'cus of the semantic tweak.
13:08 timotimo but we can check whether or not an a key in the build hash was there or net :\
13:09 jnthn Could, but that doesn't solve the problem if there's a custom BUILD method
13:10 * jnthn bbl
13:10 timotimo a custom build method would have to do its own magic to have "is default" at all
13:10 timotimo i.e. is default won't work on anything if BUILD exists
13:11 timotimo i might be misunderstanding what you mea
13:11 timotimo mean*
13:12 jnthn m: class C { has int $.x = 42; submethod BUILD() { $!x = 0 } }; say C.new.x
13:12 camelia rakudo-moar 9af560: OUTPUT: «42␤»
13:18 timotimo oh, we get the default in the accessor method?
13:20 lizmat m: m: class C { has int $.x = 42; submethod BUILD() { $!x = 0 } }; dd C.new
13:20 camelia rakudo-moar 9af560: OUTPUT: «C.new(x => 42)␤»
13:22 timotimo m: class C { has int $.x is rw = 42 }; my $c = C.new(a => 99); say $c.perl; $c.a = 0; say $c.perl
13:22 camelia rakudo-moar 9af560: OUTPUT: «C.new(x => 42)␤No such method 'a' for invocant of type 'C'. Did you mean 'x'?␤  in block <unit> at <tmp> line 1␤␤»
13:22 timotimo m: class C { has int $.x is rw = 42 }; my $c = C.new(x => 99); say $c.perl; $c.x = 0; say $c.perl
13:22 camelia rakudo-moar 9af560: OUTPUT: «C.new(x => 99)␤C.new(x => 0)␤»
13:22 timotimo hm, but i can set it to 0 and it's fine, so do we do the default in the buildplan after all?
13:23 nwc10 jnthn / nine_ : http://paste.scsys.co.uk/565168  ASAN very excited in NQP
13:59 timotimo i can't build nqp at all at the moment?
13:59 timotimo At Frame 12, Instruction 11, op 'prepargs', operand 2, expected MAST::Local, but didn't get one
13:59 timotimo at gen/moar/stage2/QAST.nqp:6556  (src/vm/moar/stage0/QAST.moarvm:assemble_to_file)
13:59 timotimo oh, there was a stage0 update i somehow missed
14:00 timotimo i thought i git-pulled for sure
14:29 travis-ci joined #moarvm
14:29 travis-ci MoarVM build failed. Jonathan Worthington 'Merge pull request #676 from MoarVM/jit_nativecall
14:29 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/280418461 https://github.com/MoarVM/MoarVM/compare/27d3d01e5a27...b3dd812aaae8
14:29 travis-ci left #moarvm
14:38 timotimo it also missed the bump
14:48 jnthn nwc10: Guess normality is restored with the NQP merge :)
14:49 jnthn Was hoping for simple language class today. Got the conditional tense instead. :P
15:02 jnthn Turns out that making the emit "just not resume if the target supply is dead" isn't actually so easy after all
15:06 * jnthn shelves that idea for now
15:06 jnthn Oh but wait
15:07 jnthn The tap will have been closed, so we should have the info locally :)
15:07 jnthn D'oh, that's exactly how I thought of doing it yesterday, then forgot
15:08 committable6 joined #moarvm
15:09 committable6 joined #moarvm
15:09 unicodable6 joined #moarvm
15:09 bloatable6 joined #moarvm
15:09 quotable6 joined #moarvm
15:09 benchable6 joined #moarvm
15:09 coverable6 joined #moarvm
15:09 bisectable6 joined #moarvm
15:09 nativecallable6 joined #moarvm
15:09 releasable6 joined #moarvm
15:09 evalable6 joined #moarvm
15:09 greppable6 joined #moarvm
15:09 squashable6 joined #moarvm
15:09 statisfiable6 joined #moarvm
15:12 brrt joined #moarvm
15:18 dogbert17 jnthn: can you be enticed to look at a gist and see if it shows anything blatantly obvious :) https://gist.github.com/dogbert17/696587a80b74dae8a3410f9e9f01447e
15:18 jnthn ooh
15:18 jnthn That looks suspect indeed
15:19 jnthn ooh yay, I think I made the emit = teardown thingy work
15:19 dogbert17 jnthn++
15:19 jnthn That'll allow folks to be a tad more careless without bad effects :)
15:32 mst joined #moarvm
15:32 dogbert17 jnthn: the suspect gist has now been transformed into https://github.com/MoarVM/MoarVM/issues/707
15:48 domidumont joined #moarvm
15:57 timotimo oh, we still don't have a version bump for the nativecall jit stuff?
15:57 jnthn I thought I saw it happen
15:58 timotimo anyway, i took the liberty of restarting teh last travis job
15:58 jnthn dogbert17: Thanks, will look at that, though mebbe not today
15:59 nwc10 jnthn: yes, NQP bump fixed it. now somewhere in rakudo build
15:59 * timotimo glances at the moarvm coverage
16:04 timotimo containers.c lacks stuff about code pairs, it never tries container_iscont_rw, and it doesn't do any multidim accesses (but this is only from the nqp test suite)
16:04 timotimo parametric.c doesn't have any coverage for the "this type isn't parametric" errors
16:17 leont joined #moarvm
16:20 timotimo i'm not sure it makes terribly much sense to look very closely at coverage by just the nqp test suite
16:39 domidumont joined #moarvm
16:42 domidumont joined #moarvm
16:49 robertle joined #moarvm
16:54 dogbert2 hmm, looks as if t/spec/S17-supply/syntax.t is causing trouble again, test 79 hangs whatever that is
16:54 leont joined #moarvm
16:55 dogbert2 heh, 68 running threads according to gdb
16:56 Zoffix dogbert2: fixed 3 seconds ago
16:57 dogbert2 impressive :)
17:01 timotimo MVMIter has an isplice reprop that doesn't have any contents; it has a comment though: This whole splice optimization can be optimized for the case we have two MVMIter representation objects.
17:04 timotimo the entirety of MVMString's copy_to is uncovered by nqp tests
17:06 patrickz joined #moarvm
17:08 AlexDaniel joined #moarvm
17:18 timotimo mhh, running perl6 -e 'say "hi"' causes 21243 allocations of size 24 and 5845 allocations of size 48, 3k of 72, and a bunch more of bigger sizes
17:19 timotimo i bet the FSA can be helpful here
17:24 timotimo 77430 vs 77091
17:24 timotimo kbytes
17:25 timotimo i imagine compiling something that has grammar declarations and regexes and such in it will compound this, or when the program code exercises more NFAs from the rakudo grammar
17:33 timotimo 233780 vs 233282
17:33 timotimo about 500 kbytes? :\
17:33 timotimo this is compiling Grammar.nqp fwiw
17:34 timotimo well, the win for tiny programs is certainly something nice
17:34 timotimo m: say 77091 / 77430
17:34 camelia rakudo-moar 983768: OUTPUT: «0.995622␤»
17:34 timotimo oh, what, only half a percent?
17:34 timotimo well, not even
17:34 timotimo *sigh*
17:37 lizmat fwiw, I'll take any half percent  :-)
17:41 patrickz_ joined #moarvm
17:53 patrickz joined #moarvm
17:54 Util joined #moarvm
17:58 timotimo true
17:58 timotimo i was just hoping for a bit more :)
17:58 timotimo given those 500k were all just management overhead and padding from malloc ...
17:59 timotimo yada yada cache locality blah blah :)
18:02 leont joined #moarvm
18:11 patrickz_ joined #moarvm
18:24 Ven`` joined #moarvm
18:35 japhb joined #moarvm
18:53 Ven`` joined #moarvm
19:52 patrickz joined #moarvm
20:57 lizmat joined #moarvm
22:04 AlexDaniel joined #moarvm
22:23 committable6 joined #moarvm
23:00 Geth ¦ MoarVM: 3059ba2829 | (Timo Paulssen)++ | src/6model/reprs/NFA.c
23:00 Geth ¦ MoarVM: use FSA to allocate memory in NFA
23:00 Geth ¦ MoarVM:
23:00 Geth ¦ MoarVM: there are a whole lot of small allocations in the NFA. we save
23:00 Geth ¦ MoarVM: some management overhead and round-to-next-bucket-size from malloc
23:00 Geth ¦ MoarVM: by using the fixed size allocator instead.
23:00 Geth ¦ MoarVM:
23:00 Geth ¦ MoarVM: A simple perl6 -e 'say "hi"' gets almost half a meg of ram freed up
23:00 Geth ¦ MoarVM: by this simple change. It's still less than half a percent in total.
23:00 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/3059ba2829
23:30 greppable6 joined #moarvm

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