01:11 jnap joined 02:24 ggoebel1112 joined
[Coke] updated gist.github.com/coke/8250608 02:26
02:35 camelia joined 02:44 camelia joined 02:47 ilbot3 joined 03:16 camelia joined 03:18 camelia joined
ingy jnthn: yeah that was good fun. 03:19
jnthn: going to port it to some "lesser" langs tonight :)
jnthn: do you have any pointers to Boy or Man? 03:20
ah rosettacode.org/wiki/Man_or_boy_test :) 03:21
03:29 camelia joined 03:33 jnap joined 04:01 cognominal joined 04:19 FROGGS joined 04:34 jnap joined
timotimo i think before i dive deeper into trying to make moarvm run in the browser, faxecutable support would be neat 05:08
05:08 FROGGS joined
timotimo ideally, i could come up with something that packs the complete nqp and perl6 stuff into one single file that has all the dependend .moarvm files in it, too 05:09
all the .moarvm files in lib/languages/nqp compress to only 900 kB when throwing bz2 at it 05:11
and libbz2 is only 70 kB big :)
something nice ought to be buildable with gdb and python plugins to visualise the whole state of a moarvm process/instance 05:25
visualise and explore
like, with a pyqt based gui perhaps?
05:35 jnap joined
timotimo yeah, you can apparently happily start a thread in the python support stuff of gdb and do gui stuff in there 05:38
05:51 FROGGS joined
timotimo if you build a gdb with -fPIE, you can just import gdb and have a gdb be the python interpreter's inferior rather than the other way around, which should make threading concerns even simpler 05:55
06:15 FROGGS joined 06:35 jnap joined 06:54 arnsholt joined 06:57 camelia joined 07:36 jnap joined 07:58 FROGGS joined
timotimo so, it should be pretty doable to walk the nurseries and gen2's and see what type each allocated object is, right? 08:28
and get a summary of allocated things on the heap?
08:28 odc joined
timotimo probably also could analyse how many objects of a specific type get kicked out of the nursery and how many get to live on in the gen2 08:28
09:38 jnap joined
jnthn Yeah, it's easy 'cus every object has its size in its header. 09:53
10:21 lue joined 10:38 jnap joined 10:50 camelia joined 10:54 camelia joined
timotimo the moarvm gc is precise, does that mean i can directly infer the type of object something is from just having its pointer? 11:32
jnthn That's orthogonal to preciseness, but yeah :) 11:33
You look at flags to check it's not actually an STable
And provided it's not, you can cast to MVMObject and follow ->st->WHAT to have the type object 11:34
timotimo ossum :) 11:36
i was wondering about the evaling lots of grammars thing again last night 11:37
i know that there's a weak hash for the serialization contexts, but evaling from the same line of code a bunch of time won't cause multiple SCs to come into existence, right?
jnthn Well, it will, but SCs are gc-able
11:39 jnap joined
timotimo ah, it could GC inside the SC 11:41
12:40 jnap joined 13:41 jnap joined 14:23 jnap joined
jnthn FROGGS: about? 14:28
FROGGS jnthn: I am here 14:32
jnthn FROGGS: I'm trying to figure out why <:L> doesn't work, while <:Lu> and <:Ll> does. As I understand it, :L is just the union of those and a few others. 14:33
FROGGS: I note that "L" appears in unicode_db.c...
diakopter could probably answer better 14:34
FROGGS I'd think that the check for the property value is wrong
diakopter yeah; nopaste the generated routine dump 14:35
jnthn diakopter: Please do...this is what breaks capitalize...
diakopter what is <:L> first of all
jnthn Letter 14:37
r: say 'I had to help my uncle jack off a horse'.wordcase(:where({ 7 == ++state $i })) 14:38
diakopter does :Letter work
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd: OUTPUTĀ«I had to help my uncle Jack off a horseā¤Ā»
..rakudo-moar 82f2fd: OUTPUTĀ«I had to help my uncle jack off a horseā¤Ā»
jnthn :(
m: say /abc/ ~~ /<:Letter>/
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
jnthn p: say /abc/ ~~ /<:Letter>/
camelia rakudo-parrot 82f2fd: OUTPUTĀ«Nilā¤Ā»
jnthn j: say /abc/ ~~ /<:Letter>/
camelia rakudo-jvm 82f2fd: OUTPUTĀ«Nilā¤Ā»
jnthn bah, nowhere
oh, darn 14:39
r: say 'abc' ~~ /<:Letter>/
FROGGS must go now, I am back in two or three hours :/
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
..rakudo-parrot 82f2fd, rakudo-jvm 82f2fd: OUTPUTĀ«ļ½¢aļ½£ā¤ā¤Ā»
jnthn No, :Letter doesn't
diakopter m: say 'a' ~~ /<:letter>/
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
diakopter m: say 'a' ~~ /<:digit>/ 14:40
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
diakopter m: say '1' ~~ /<:digit>/
camelia rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢1ļ½£ā¤ā¤Ā»
diakopter m: say '1' ~~ /<:Digit>/
camelia rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢1ļ½£ā¤ā¤Ā»
diakopter I think Letter was the first one I tested
when making it
dalek arVM: e294fc5 | jnthn++ | src/strings/ops.c:
Accept NEL into newline cclass.
14:46
jnthn m: say 'abc' ~~ /<[bc]>*/ 14:52
camelia rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢ļ½£ā¤ā¤Ā»
jnthn r: say 'abc' ~~ /<[bc]>*/ 14:53
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢ļ½£ā¤ā¤Ā»
jnthn r: say 'abc' ~~ /a<[bc]>+/ 14:54
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢abcļ½£ā¤ā¤Ā»
jnthn r: say 'abc' ~~ /a<[bc]>+?/ 14:55
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢abļ½£ā¤ā¤Ā»
jnthn r: say 'abc' ~~ /a<[bc]>{1,2}/
camelia rakudo-moar 82f2fd: OUTPUTĀ«===SORRY!=== Error while compiling /tmp/48oBAi08pJā¤Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*)ā¤at /tmp/48oBAi08pJ:1ā¤------> say 'abc' ~~ /a<[bc]>{1,2}ā/ā¤Ā»
..rakudo-jvm 82f2fd: OUTPUTĀ«===SORRY!=== Error while compiling /tmp/Hz8_dJSMIhā¤Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*)ā¤at /tmp/Hz8_dJSMIh:1ā¤------> say 'abc' ~~ /a<[bc]>{1,2}ā/ā¤Ā»
..rakudo-parrot 82f2fd: OUTPUTĀ«===SORRY!=== Error while compiling /tmp/UQ6b2q75t1ā¤Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*)ā¤at /tmp/UQ6b2q75t1:1ā¤------> say 'abc' ~~ /a<[bc]>{1,2}ā/ā¤Ā»
jnthn r: say 'abc' ~~ /a<[bc]>**1..2/
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢abcļ½£ā¤ā¤Ā»
jnthn r: say 'abc' ~~ /a<[bc]>**?1..2/
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢abļ½£ā¤ā¤Ā»
jnthn r: say 'abcbc' ~~ /a<[bc]>**?2..3/
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd, rakudo-moar 82f2fd: OUTPUTĀ«ļ½¢abcļ½£ā¤ā¤Ā»
jnthn hmm 14:56
diakopter any way to force a non-declarative in there?
jnthn r: say 'acdbcdbe' ~~ rx:P5/a(?:b|c|d){4,5}?(.)/ && $0 14:57
camelia rakudo-parrot 82f2fd, rakudo-jvm 82f2fd: OUTPUTĀ«ļ½¢dļ½£ā¤ā¤Ā»
..rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
jnthn Well, that is the one I'm trying to golf...
r: say 'acdbcdbe' ~~ rx:P5/a(?:b|c|d){4,5}?(.)/
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
..rakudo-parrot 82f2fd: OUTPUTĀ«ļ½¢acdbcdļ½£ā¤ 0 => ļ½¢dļ½£ā¤ā¤Ā»
..rakudo-jvm 82f2fd: OUTPUTĀ«ļ½¢acdļ½£ā¤ 0 => ļ½¢dļ½£ā¤ā¤Ā»
diakopter heh
jnthn Well, fail. 14:58
diakopter jvm seems most fail
jnthn I think Parrot has it right
JVM actually gets $0 right by accident o.O
And Moar totally blows it. 14:59
diakopter I think getting something right by accident is worse ;) 15:02
jnthn: does the same thing in p6 syntax work? 15:03
jnthn r: say 'acdbcdbe' ~~ rx/a[b|c|d]**?4..5(.)/ 15:05
camelia rakudo-moar 82f2fd: OUTPUTĀ«Nilā¤Ā»
..rakudo-parrot 82f2fd: OUTPUTĀ«ļ½¢acdbcdļ½£ā¤ 0 => ļ½¢dļ½£ā¤ā¤Ā»
..rakudo-jvm 82f2fd: OUTPUTĀ«ļ½¢acdļ½£ā¤ 0 => ļ½¢dļ½£ā¤ā¤Ā»
jnthn Think I might see what's up in moar 15:07
15:08 benabik joined
diakopter jnthn: nice find 15:32
jnthn bah, deprecations tests fail due to line numbers being a little off 15:39
[Coke] why are we even testing those? 15:43
(if this is the "things that used to be spec but now aren't" tests.)
jnthn They are. But other tests that care about line number also get things wrong... 15:44
[Coke] yahyah
dalek arVM: 288cec5 | jnthn++ | src/core/exceptions.c:
Eliminate an incorrect fixup to line numbers.
16:30
16:33 FROGGS joined
jnthn Grrr...even with those fixes I'm still sometimes off... 16:41
TimToady well, line numbers are so 20th century 16:46
FROGGS hehe 16:47
[Coke] moar now at an even 28000 passing tests.
jnthn Woo
What was yesterday?
[Coke] up 2 tests from yesterday (because i added them to roast. :)
jnthn Oh, none of my commits today made it in time? 16:48
[Coke] sorry, up 12. so 10 more from elsewhere!
jnthn Ah well. Tomorrow.
[Coke] jnthn++
jnthn What's annoying is that --target=mast shows the annotations are right now... 16:51
FROGGS well, that is good, no? 16:52
diakopter off by how much
jnthn Well, it seems that it somehow picks up the next annotation 16:53
Rather than the one it should find
diakopter needs to subtract one or two frmo the bytecode offset before comparing it 16:54
for when it's pre-advanced
jnthn Point 16:56
Though there is the sink code after the call in question
diakopter: Yeah, I tweaked that, but still busted 17:02
Well...the bytecode dumper shows them all as annotation: x.p6:65536 17:06
timotimo is that NYI? 17:09
jnthn Looks like WI 17:10
diakopter WI? 17:14
dalek arVM: 4fdfd70 | jnthn++ | src/core/bytecodedump.c:
Fix bytecode annotations dumping.
arVM: 2c82367 | jnthn++ | src/core/exceptions.c:
Account for PC pre-increment; diakopter++.
jnthn Wrongly Implemented
Though I think string heap index size changed at some point, so it was probably right once. 17:15
diakopter oh
I knew those should be defines ;)
jnthn Anyway, with all this I can confirm that the annotations end up in the right place in the bytecode file too.
But we still report 'em wrong.
diakopter there were off-by-one fixups several places in nqp 17:21
jnthn: oh, the fix you did needs to check for 0 before it subtracts 1 17:26
2c82367
er it needs to check whether it's the beginning of the bytecode segment for that frame
or something
jnthn diakopter: We can't call something having executed 0 instructions, can we? 17:27
diakopter sure, the first instruction can run an opcode that can throw
jnthn But then we look at throw_address, not return_address
diakopter oh 17:28
jnthn oh, which could be 0...
duh
oh...think I ofudn it 17:31
[Coke] parallel processing ssiue? 17:32
jnthn yeah, got it... 17:33
No, jnthn can't write a loop correctly issue 17:34
diakopter *all the time
dalek arVM: 6571abf | jnthn++ | src/core/exceptions.c:
Ensure we don't -1 a 0 offset; diakopter++.
17:35
arVM: 3a57b01 | jnthn++ | src/core/bytecode.c:
Fix off-by-one in annotation lookup.
[Coke] was stuj gkcinom yrou sgillenp!
jnthn Linear search. It's a hard algorithm :P
Deprecations related tests pass now, anyways 17:37
diakopter \o/
jnthn And the callframe.t failure is gone 17:38
And a couple of other error reporting ones
diakopter \o/
timotimo yays 17:39
FROGGS I am taking a look at <:L> now again
[Coke] regexes still the major source of failures, i think.
how much of that is differing unicode versions, i wonder.
FROGGS still 711 pages to read though :o) 17:40
jnthn [Coke]: It's mostly that some things like <:L> simply don't work
FROGGS right, it is not really about unicode version
s
jnthn [Coke]: I picked off three of the other S05 failures that didn't related to that already.
So we probably are only failing char prop related tests in S05 now.
Oh, that's not quite try 17:41
S05-mass/rx.t fails one test. That's the mongolian thingy
And we fail unicode-whitespace.t 'cus of Mongolia too
[Coke] S05-mass/rx.t failed 4 earlier today. 17:42
named-chars.t failed 46
jnthn Odd, was only failing 1 here...
[Coke] ~130 failures in the *properties* files.
feather.perl6.nl/~coke/moar.out - there's the daily run from today. 17:43
257 failures in S05 total.
that's as of 3316bb1 17:44
jnthn The capitalize.t failures are related to the S05 failures too; fixing <:L> will also fix those. 17:45
FROGGS I dont understand why Ll and Lu resolves as MVM_UNICODE_PROPERTY_GENERAL_CATEGORY, but L as MVM_UNICODE_PROPERTY_GRAPHEME_CLUSTER_BREAK
jnthn That sounds...broken. 17:46
diakopter: ^^
FROGGS "L" appears several times in uniode_db.c 17:47
first as 18, which is wrong
then as 11, which is wrong too 17:48
and finally as 14, which is correct
I wonder... not that these pop up because I added aliases for categories 17:50
seems so :/ 17:52
diakopter ;)
FROGGS but I guess other tests fail now again
*sigh*
diakopter see, I thought I got all the aliases originally 17:53
timotimo i'm having some trouble finding the way grammar classes etc are handled on moarvm. i'm guessing they are just P6Opaque? 17:54
jnthn timotimo: They have P6opaque REPR, yeah 17:57
timotimo: They're nothing special object system wise
timotimo right. and an instance or an entry into a lexpad or similar is all that would keep it alive? 17:58
jnthn That could, or any other place they were installed
Also any match objects they produce that are alive would point back to them. 17:59
timotimo that makes sense
but even if i just do eval q{ my anon grammar Foo { } } the memory usage keeps going up steadily
hm, are those things allocated in gen2?
jnthn Not generally 18:00
timotimo but that doesn't explain boundless growth, since there's a free-list going through the gen2 anyway
jnthn Right, gen2 is collected
Just less often.
timotimo yeah, which makes sense
jnthn yeah, loop { eval q{ anon grammar Foo { } } } is leaking 18:01
diakopter but each eval makes an SC
parts of which are gen2 allocated 18:02
timotimo jnthn: well, that would perhaps create a list from the results?
jnthn timotimo: Shouldn't be.
timotimo i did the same with a 1 at the end or something
OK
diakopter: but SC are weak-ref'd and gc'd or something like that
jnthn diakopter: Yeah, but we'll be sweeping gen2 a good number of times within the lifetime of this
diakopter: And the weak thingy means they *should* go away... 18:03
FROGGS here are test number with and without these aliases: gist.github.com/FROGGS/0c524af3699653d6b1de 18:04
one can see why I thought these aliases are a good thing
jnthn FROGGS: aye; I'm guessing they are needed, but the way they're being done is breaking something? 18:05
timotimo: Well, seems we never hit gc_free in MVMCompUnit, which is certainly an issue
FROGGS jnthn: obviously, yeah 18:06
jnthn: what should math <:Lu> btw?
match*
jnthn FROGGS: Uppercase letters
FROGGS ahh
jnthn r: 'aBc' ~~ /<:Lu>/
r: 'aBc' ~~ /<:Ll>/
camelia ( no output ) 18:07
jnthn r: say 'aBc' ~~ /<:Lu>/
r: say 'aBc' ~~ /<:Ll>/
FROGGS k, L Lu and Ll do work now
camelia rakudo-parrot 82effd, rakudo-jvm 82effd, rakudo-moar 82effd: OUTPUTĀ«ļ½¢Bļ½£ā¤ā¤Ā»
rakudo-parrot 82effd, rakudo-jvm 82effd, rakudo-moar 82effd: OUTPUTĀ«ļ½¢aļ½£ā¤ā¤Ā»
18:10 raiph joined
raiph i git cloned and built rakudo/moarvm yesterday on feather (more) 18:10
at the end I notice a couple odd files: 18:11
1;0 raiph@feather:~/rakudo$ ls -lt
-rwsr-sr-t 1 raiph raiph 0 Jan 17 01:10 non-existent-copy-stgt 18:12
-rwsr-sr-t 1 raiph raiph 0 Jan 17 01:10 non-existent-copy-mtgt
FROGGS seems like leftovers from tests
and I think I've seen that unlink does not work correctly sometimes 18:13
raiph ok. i did run make spectest (which failed)
FROGGS dinner &
raiph thx
jnthn raiph: Yeah, there are a couple of tests failing in copy.t that are probably to blame. 18:23
raiph: The merge doesn't convey "you can expect spectests to pass", just "you can expect to do a fair amount with it" :) 18:24
raiph jnthn: yeah, i'm hoping to carry out my quest with Rakudo/MoarVM 18:25
"Make Rakudo's sort work per spec"
questhub.io/realm/perl/quest/52bca7...e15d0000ca
jnthn :)
timotimo what did i do wrong? 18:26
jnthn timotimo: ALL THE THINGS
:P
timotimo oh this is not about p6sort in moar 18:27
jnthn timotimo: I think raiph is talking about improvements that are independent of any particular backend, though...
raiph Add Ordering subsets to Rakudo.
jnthn: which module would you add the spec'd Ordering subsets to?
yeah, i should be talking in #perl6 18:28
jnthn raiph: Yeah, better to discuss there...
Though the answer is likely "same place you find the method sort(..)" 18:29
raiph thx
jnthn is working on the return type checks for Rakudo on Moar 18:44
Should clear up a few tests failing 'cus of not having 'em.
But doing a cleanup on all backends of this to avoid a deref each return.
And simplify the Moar impl.
timotimo oh that sounds cool :) 19:06
we return a whole lot
FROGGS r: say "\x[C767]" ~~ m/^<:Lu>$/ 19:38
camelia rakudo-parrot 82effd, rakudo-jvm 82effd, rakudo-moar 82effd: OUTPUTĀ«Falseā¤Ā»
FROGGS perl6-m -e 'say "\x[C767]" ~~ m/^<:Lu>$/' 19:41
ļ½¢ģ§ļ½£
this matches when I remove the extra aliases... 19:42
trying a different patch now
ahh, it does not even know about Lu atm O.o 19:43
TimToady doesn't know how CJK or Hungul are supposed to consider case 19:44
FROGGS no, I mean the property Lu is unknown
which results in a property value code of zero, which is the same value that every codepoint has for an unknown property, so it succeeds 19:45
yeah, Lu, Ll etc are missing in the table of property codes now 19:46
um, Lower does match A now, and Upper matches a 19:48
>.<
jnthn Ugh, worked out why the return handling is thw ay it is 19:54
Can still make it cheap on Moar though :)
FROGGS cheap sounds good :o) 19:55
TimToady "Cheap, cheap, cheap!" --Chicken Little 19:57
FROGGS okay, I am installing the aliases only for general category now 20:01
since L appears in hst as Leading_Jamo 20:02
*as an alias
k, it resolves L as general category now, but property value code is still zero 20:05
diakopter "Cheap, cheap, cheap!" --The Pied Piper 20:06
timotimo jnthn: removing the deref made it b0rk? is it about return-rw perhaps? 20:11
jnthn timotimo: oh, I didn't mean a decont
TimToady "Cheap, cheap, cheap!" --Your Mother 20:15
FROGGS >.< 20:17
jnthn r: sub foo returns Int { return 'omg' }; foo 20:18
camelia ( no output )
..rakudo-parrot 82effd: OUTPUTĀ«Type check failed for return value; expected 'Int' but got 'Str'ā¤ in sub foo at /tmp/cMuBrXOZ1h:1ā¤ in block at /tmp/cMuBrXOZ1h:1ā¤ā¤Ā»
..rakudo-jvm 82effd: OUTPUTĀ«Type check failed for return value; expected 'Int' but got 'Str'ā¤ in sub foo at /tmp/FxvPeoKwVD:1ā¤ in block at /tmp/FxvPeoKwVD:1ā¤ā¤Ā»
FROGGS I think I know now how to make L work 20:50
diakopter WAT 20:55
...
FROGGS I'll will show a gist once it works
jnthn It's .BAT
FROGGS: yay :)
diakopter FROGGS: sry, wasn't replying to you 20:56
was reacting to this profile
FROGGS ahh
diakopter which can't possibly be correct
FROGGS okay :o)
diakopter oh. 20:57
jnthn Down to 10 individual test failures in S02 now, it seems 20:58
5 in S03
diakopter it would help if I actually rebuilt nqp/rakudo with the new moar 20:59
maybe.
no, it's true; 66% of time was actually spent in deserialize 21:00
jnthn Is that a startup trace?
jnthn is guessing so
diakopter no 21:01
it got partway into man or boy
I think.
jnthn Can't have got very far; deserialize only runs during startup...
Try a profile of just -e "1" or so 21:02
21:04 jnap joined
diakopter well it ran 2 million interpreter instructions 21:08
there, a 5GB trace. 21:10
maybe that'll be less startup-y
yeah, 20m instr 21:11
22.13% in allocation/gc
19.5% in gc
jnthn wonders where in GC is hot 21:12
diakopter process_worklist 21:13
and MVM_gc_mark_collectable has 10% exclusive 21:14
jnthn Wow...though I guess it is doing a lot of the work.
diakopter at least there doens't seem to be a memory leak 21:17
I think
there, ran one with instrumenting perl6_ops_moar.dll too, I think 21:20
bah. 21:54
dalek arVM: da37c0a | jnthn++ | src/core/frame.c:
Missing sanity check in autoclose.
21:59
jnthn That's not a fix for it, just a missing sanity check 22:00
diakopter fix for what 22:07
jnthn The amout of autoclose we seem to be doing 22:08
We should be doing O(none)...
23:12 colomon joined
dalek arVM/argh_it_hangs: 0cc39f2 | jnthn++ | src/core/frame.c:
Try caching auto-closed result.

Results in a hang in Rakudo spectests.
23:29
diakopter ++