Geth MoarVM: 27d3d01e5a | (Samantha McVey)++ | src/strings/unicode_ops.c
Add hex digits to the end of non-unique Unicode names

Example:
  <CJK Ideograph> → <CJK Ideograph-4FFE>
Also:
  * Return the correct value for noncharacters (<noncharacter>).
  * Don't return <illegal> for codepoints that are just reserved. Only
   return <illegal> if a codepoint less than 0 is requested
00:09
01:55 ilbot3 joined 04:23 nine_ joined, nwc10_ joined 04:30 AlexDaniel joined 04:31 avar joined 04:32 BooK joined 05:24 AlexDaniel joined 05:44 leont joined 05:48 AlexDaniel joined 06:00 domidumont joined 06:04 domidumont joined 06:08 domidumont joined 06:26 eater joined 06:42 brrt joined
brrt good * #moarvm 06:45
Geth MoarVM/even-moar-jit: f95f5b2dc6 | (Bart Wiegmans)++ | 85 files
Merge remote-tracking branch 'origin/master' into even-moar-jit
MoarVM/even-moar-jit: 401c4c7d02 | (Bart Wiegmans)++ | 85 files
Merge remote-tracking branch 'origin/master' into even-moar-jit
06:52
07:12 brrt joined 07:23 AlexDaniel joined 07:40 patrickz joined 07:51 AlexDaniel joined 07:52 committable6 joined, quotable6 joined, evalable6 joined, bloatable6 joined, unicodable6 joined, releasable6 joined, coverable6 joined, nativecallable6 joined, greppable6 joined, benchable6 joined, bisectable6 joined, squashable6 joined, statisfiable6 joined
AlexDaniel squashable6: status 07:57
squashable6 AlexDaniel, Next SQUASHathon in 9 days and ≈2 hours (2017-10-07 UTC-12⌁UTC+14)
samcv hey AlexDaniel. in case your unicodable bot relys on characters starting with < and ending with > 07:58
due to commit 27d3d01e5a
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> 07:59
AlexDaniel samcv: thanks 08:01
I don't think it even checks for < or >
(although it did in the past)
so I think it's fine
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
AlexDaniel so there's no need to call the police anymore eh 08:02
samcv woop woop
AlexDaniel m: say -5.chr.uniname
camelia 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
AlexDaniel wtf was that 08:03
samcv m: say (-5).chr.uniname
camelia chr codepoint cannot be negative
in block <unit> at <tmp> line 1
AlexDaniel ah. *facepalm*
m: say (-5).uniname
camelia <illegal>
AlexDaniel right
samcv AlexDaniel, it's happened to the best of us! 08:04
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
AlexDaniel if I do, then it blows up even worse in other situations
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
m: 0x10FFFE.uniname.say
camelia <noncharacter-10FFFE>
moritz isn't reserved == reserved for internal use, so won't ever be assigned?
samcv but noncharacters are correct now
no
noncharacter will never be assigned
reserved is the same as it's always been. all the illegal codepoints under 0x10FFFF now show reserved unless they are noncharacters
noncharacters are the last 2 cp's of each block. so 0xFFFE, 0xFFFF, 1FFFE, 1FFFF, 2FFFE, 2FFFF 08:07
etc for all of unicode
well technically it's specified only up to 0x10FFFF, but above 0x10FFFF is basically in the realm of nothingness 08:08
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:09
AlexDaniel “<Plane 16 Private Use-100450>” 08:10
cool, I love it
samcv: have you thought about adding U+ there? Or something to indicate that these are hex 08:11
08:28 robertle joined
Geth MoarVM/even-moar-jit: 26982d147e | (Bart Wiegmans)++ | 2 files
[vector.h] replace shift with splice

MVM_VECTOR_SPLICE is much closer to what we actually do in this
  'function'
08:45
MoarVM/even-moar-jit: 13aee3d867 | (Bart Wiegmans)++ | 3 files
MARK operator can only take a parameter

A MARK label is used to insert a label in the machine code. This label is necessarily indicated by a constant. Having it take a REG parameter makes no sense, since it represents no runtime operation that could use it.
08:53 AlexDaniel joined
Geth MoarVM/even-moar-jit: 35e0ae77bf | (Bart Wiegmans)++ | src/core/vector.h
[vector.h] Wrap TOP and SIZE with parentheses

ven++ for the suggestion
09:00
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 10:07 AlexDaniel joined 10:27 brrt joined 11:00 domidumont joined 11:03 zakharyas joined 11:07 brrt joined 12:57 zakharyas joined
dogbert17 jnthn: did you get rid of your headache? 12:58
jnthn Not 100%, but today it's been slight enough that I barely notice it most of the time 12:59
Geth MoarVM: 79cdf0b4e7 | (Stefan Seifert)++ | 19 files
Compile code for calling native functions.

MVM_nativecall_build builds a JIT graph manually and compiles it. The result is attached to the MVMNativeCallBody. For now the new nativeinvoke_* ops (mirroring invoke_*) will enter that code. Ideally we will replace the whole frame containing the nativeinvoke by JIT compiled code.
... (14 more lines)
13:00
MoarVM: 76ff81c652 | (Stefan Seifert)++ | 5 files
JIT compile JITed native calls

While we already generated machine code for performing the actual call to the C function, we perform all deconting and unboxing of arguments in high level code. This is so that spesh can optimize this code to what's actually necessary for a given call site.
... (14 more lines)
MoarVM: b3dd812aaa | (Jonathan Worthington)++ (committed using GitHub Web editor) | 20 files
Merge pull request #676 from MoarVM/jit_nativecall

JIT compile native calls
jnthn Will try and finish the expression JIT review this week also, so that too can go in :) 13:01
timotimo ooooooh 13:02
lizmat jnthn timotimo: is there a reason we're not using attr_inited to set default values of native attributes ?
it now checks for 0 and 0e0
which feels wasteful, since attrinited apparently does work for the is required check 13:03
m: class A { has int $.a is required }; A.new
camelia The attribute '$!a' is required, but you did not provide a value for it.
in block <unit> at <tmp> line 1
lizmat m: class A { has int $.a is required("I say so" }; A.new
camelia ===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…
lizmat m: class A { has int $.a is required("I say so" ); A.new 13:04
camelia ===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
lizmat m: class A { has int $.a is required("I say so" ) }; A.new
camelia 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
jnthn If attrinnited works for non-object attributes it's probably an accident :)
lizmat but apparently a good accident ? 13:05
jnthn Maybe one that doesn't work on all backends though :)
It's a bit of a cheat really
lizmat ah, ok
jnthn As we don't actually have any way to tell if the native attrs were inited
So we take zero to mean that
lizmat ok, will leave it now
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
well, yes
jnthn Yeah, it's dubious at best
(is required)
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
camelia A.new(a => 99)
timotimo ^- this is quite problematic
jnthn As I said, we live with that, or we live without defaults on native attributes :)
lizmat as I said, won't change the behaviour now
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 :\
jnthn Could, but that doesn't solve the problem if there's a custom BUILD method 13:09
jnthn bbl 13:10
timotimo a custom build method would have to do its own magic to have "is default" at all
i.e. is default won't work on anything if BUILD exists
i might be misunderstanding what you mea 13:11
mean*
jnthn m: class C { has int $.x = 42; submethod BUILD() { $!x = 0 } }; say C.new.x 13:12
camelia 42
timotimo oh, we get the default in the accessor method? 13:18
lizmat m: m: class C { has int $.x = 42; submethod BUILD() { $!x = 0 } }; dd C.new 13:20
camelia C.new(x => 42)
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 C.new(x => 42)
No such method 'a' for invocant of type 'C'. Did you mean 'x'?
in block <unit> at <tmp> line 1
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
camelia C.new(x => 99)
C.new(x => 0)
timotimo hm, but i can set it to 0 and it's fine, so do we do the default in the buildplan after all?
nwc10 jnthn / nine_ : paste.scsys.co.uk/565168 ASAN very excited in NQP 13:23
timotimo i can't build nqp at all at the moment? 13:59
At Frame 12, Instruction 11, op 'prepargs', operand 2, expected MAST::Local, but didn't get one
at gen/moar/stage2/QAST.nqp:6556 (src/vm/moar/stage0/QAST.moarvm:assemble_to_file)
oh, there was a stage0 update i somehow missed
i thought i git-pulled for sure 14:00
14:29 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Merge pull request #676 from MoarVM/jit_nativecall 14:29
travis-ci.org/MoarVM/MoarVM/builds/280418461 github.com/MoarVM/MoarVM/compare/2...dd812aaae8
14:29 travis-ci left
timotimo it also missed the bump 14:38
jnthn nwc10: Guess normality is restored with the NQP merge :) 14:48
Was hoping for simple language class today. Got the conditional tense instead. :P 14:49
Turns out that making the emit "just not resume if the target supply is dead" isn't actually so easy after all 15:02
jnthn shelves that idea for now 15:06
Oh but wait
The tap will have been closed, so we should have the info locally :) 15:07
D'oh, that's exactly how I thought of doing it yesterday, then forgot
15:08 committable6 joined 15:09 committable6 joined, unicodable6 joined, bloatable6 joined, quotable6 joined, benchable6 joined, coverable6 joined, bisectable6 joined, nativecallable6 joined, releasable6 joined, evalable6 joined, greppable6 joined, squashable6 joined, statisfiable6 joined 15:12 brrt joined
dogbert17 jnthn: can you be enticed to look at a gist and see if it shows anything blatantly obvious :) gist.github.com/dogbert17/696587a8...9e9f01447e 15:18
jnthn ooh
That looks suspect indeed
ooh yay, I think I made the emit = teardown thingy work 15:19
dogbert17 jnthn++
jnthn That'll allow folks to be a tad more careless without bad effects :)
15:32 mst joined
dogbert17 jnthn: the suspect gist has now been transformed into github.com/MoarVM/MoarVM/issues/707 15:32
15:48 domidumont joined
timotimo oh, we still don't have a version bump for the nativecall jit stuff? 15:57
jnthn I thought I saw it happen
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
nwc10 jnthn: yes, NQP bump fixed it. now somewhere in rakudo build 15:59
timotimo glances at the moarvm coverage
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
parametric.c doesn't have any coverage for the "this type isn't parametric" errors
16:17 leont joined
timotimo i'm not sure it makes terribly much sense to look very closely at coverage by just the nqp test suite 16:20
16:39 domidumont joined 16:42 domidumont joined 16:49 robertle joined
dogbert2 hmm, looks as if t/spec/S17-supply/syntax.t is causing trouble again, test 79 hangs whatever that is 16:54
16:54 leont joined
dogbert2 heh, 68 running threads according to gdb 16:55
Zoffix dogbert2: fixed 3 seconds ago 16:56
dogbert2 impressive :) 16:57
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:01
the entirety of MVMString's copy_to is uncovered by nqp tests 17:04
17:06 patrickz joined 17:08 AlexDaniel joined
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:18
i bet the FSA can be helpful here 17:19
77430 vs 77091 17:24
kbytes
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:25
233780 vs 233282 17:33
about 500 kbytes? :\
this is compiling Grammar.nqp fwiw
well, the win for tiny programs is certainly something nice 17:34
m: say 77091 / 77430
camelia 0.995622
timotimo oh, what, only half a percent?
well, not even
*sigh*
lizmat fwiw, I'll take any half percent :-) 17:37
17:41 patrickz_ joined 17:53 patrickz joined 17:54 Util joined
timotimo true 17:58
i was just hoping for a bit more :)
given those 500k were all just management overhead and padding from malloc ...
yada yada cache locality blah blah :) 17:59
18:02 leont joined 18:11 patrickz_ joined 18:24 Ven`` joined 18:35 japhb joined 18:53 Ven`` joined 19:52 patrickz joined 20:57 lizmat joined 22:04 AlexDaniel joined 22:23 committable6 joined
Geth MoarVM: 3059ba2829 | (Timo Paulssen)++ | src/6model/reprs/NFA.c
use FSA to allocate memory in NFA

there are a whole lot of small allocations in the NFA. we save some management overhead and round-to-next-bucket-size from malloc by using the fixed size allocator instead.
A simple perl6 -e 'say "hi"' gets almost half a meg of ram freed up by this simple change. It's still less than half a percent in total.
23:00
23:30 greppable6 joined