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
|