00:06 pyrimidine joined 01:24 pyrimidine joined 01:36 pyrimidine joined
Geth MoarVM: jeffythedragonslayer++ created pull request #532:
VMArray2
02:33
MasterDuke huh, i tried changing Parameter's $!flags to an int32, but the heap profile shows the exact same total bytes 02:40
samcv MasterDuke, still storing it in a 64bit int i guess 02:41
that sort of makes sense
well. sometimes. not really if you store a huge number of them. then you may be unhappy
MasterDuke well, `perl6 -e 'my int @a[10_000_000]'` shows a higher max resident than `perl6 -e 'my int32 @a[10_000_000]'` 02:43
so i assume it's actually using something smaller for int32 02:46
samcv constant @array = 'foo', 'bar'; hopefully the compilier will replace @array[0] with 'foo' in the code then? 02:49
hm 02:50
i'm happy with how much faster i've gotten UCD-gen.p6 02:52
down to 5 minutes i think 02:53
MasterDuke do you have it online somewhere? 02:55
samcv yeah 02:57
github.com/samcv/UCD
give me a few min and i'll commit the last of my optimizations
i would run it with --nonames so it doesn't make the base40 names
since that will take like 5 minutes to do currently since it's not very optimized 02:58
err it's 5 minutes if you don't generate the names i mean 02:59
MasterDuke btw, is github now using your highlighting? 03:00
samcv yep
been that way for a few weeks
still need to sort out some bugs with the code that makes the point index though 03:01
MasterDuke `my $long-pvalue`, it's highlighting `long` 03:02
samcv well generates the point index if else's
hmm i don't see that on my end
on which file
ok it takes 217.0865949 seconds without making the names now :) 03:03
\o/
hopefully didn't break anything
MasterDuke UCD-gen.p6 03:05
samcv link 03:06
MasterDuke github.com/samcv/UCD/blob/master/U...en.p6#L139 03:08
samcv yeah it's fine in Atom for me. that's weird 03:09
everything is highlighted weird tbh 03:10
MasterDuke, ok just pushed latest verison 03:20
03:30 pyrimidine joined
MasterDuke whoops. `MoarVM panic: Internal error: invalid thread ID 1256009152 in GC work pass` 03:32
03:32 agentzh joined 03:36 pyrimidi_ joined
samcv uh oh 03:45
on my program?
MasterDuke yeah, while profiling. works fine without 03:50
hm, may still have a stray change in my build, let me clear all that out 03:52
huh, worked now 04:04
samcv need to make the base 40 name thing go faster 04:39
you can do --namesonly if you want only building the names btw 04:40
err --names-only
argh i broke something. oh well it was already kinda broken before but. less broken 04:46
MasterDuke, oh looks like i used .end instead of tail. hah. no wonder it screwed it up 05:03
MasterDuke close, but no cigar
and i'm outta here, later... 05:04
samcv byby
05:35 pyrimidine joined 05:52 Guest34565 joined 07:10 pyrimidine joined 07:35 pyrimidine joined 08:30 agentzh joined 08:36 pyrimidine joined 09:37 pyrimidine joined 10:33 agentzh joined 11:09 patrickz joined
timotimo MasterDuke: p6opaque is still subject to the same aligning rules as C structs, so maybe you put the int32 in front of a pointer and that made it put padding in between? 11:24
11:42 FROGGS joined
samcv timotimo, what do you think about unicmp_s having two options for the collation_level on negative one positive 11:49
so you could sort normally except have capitals first or something 11:50
instead of after lowercase
unicmp_s(a, b, neg_collation, collation, country, language)
well language comes before country but
timotimo sounds fine to me, but changing that with bootstrap and everything is a bit annoying :) 11:51
samcv for sure
timotimo unicmp hasn't been out in a user-facing release yet, right?
samcv nope
timotimo mhm 11:52
samcv unless you have some way to do it with one integer that's not insane
timotimo well, there's an idea
i mean here: 11:53
samcv could have 1 and 2 be primary and 4 and 8 be secondary, and 16 and 32 be tertiary
timotimo we can turn the op binding for unicmp_s into a smarter thing in the QASTOperationsMAST
samcv but that makes it less easy
smarter?
timotimo that introspects whether it has 5 or 6 arguments and inserts a dummy 0 in there
yeah, you can put a piece of code in, too
samcv hm
timotimo many examples in there 11:54
samcv good thing i introduced the op and gave me more time to play with it and use it
timotimo :)
samcv and rereading unicode page, it talks a lot about it being configurable
timotimo anyway, that way would allow us to only use the one-way unicmp inside nqp and negative-able unicmp in rakudo 11:55
samcv why not use negative-able in both
i mean no reason not to
timotimo have to build another stage0
samcv yeah 11:56
timotimo i claim that stage0s are the main contributor to nqp's repo size
samcv i mean we can do QAST too
yeah i will look at that i guess sometime when i have time
and also gave up on returning differnt values based on where it broke the tie
and making sure we have a 4th level configurable as well 11:57
i gotta go to bed. night! 12:04
timotimo gnite! 12:05
samcv oh and i also need to set these modes too unicode.org/reports/tr10/#Compariso...able_Table
so more to think about lol 12:06
timotimo we'll basically do all the things forever
samcv lol
those extra things make it all more complicated lol. so that will be the last thing i do, but making up a way to set it should be good
i will dream about api implementation 12:07
timotimo that sounds pretty terrible, actually %)
12:37 agentzh joined
timotimo added stats about each thread's gen2 to the vmhealth readout 12:39
it's a whole lotta text now
dogbert17 timotimo: cool, have you noticed anything interesting/suspicious with you new branch? 12:44
dogbert17 notices that running htmlify.p6 with --parallel almost works now, almost got to the end this time before bugging out 12:45
timotimo nothing interesting so far 12:46
but i also never tried it on anything serious
my test program is a vidya game :)
dogbert17 cool
timotimo jnthn: it doesn't seem like you got everything when you pulled perl6-bench; the split_string_regex microbenchmark still has the bug that i fixed on the 8th 12:50
wednesday, that is 12:51
nine ~ 12:55
yoleaux2 10 Feb 2017 05:51Z <llfourn> nine: I'm not 100%. But I've been looking at some of your commits from around lexical use time. It looks like you had to work around something similar with 'use': github.com/rakudo/rakudo/commit/85...af607897c. That sounds to me like exactly what is happening with require atm, except in INDIRECT_NAME_LOOKUP in operators.pm rahter than .find_symbol in World.
nine Any hints for debugging "SC not yet resolved; lookup failed"? As I'm working on precomp-singleprocess-resurrection, I'm quite sure it's an object from the main program escaping into the to be precompiled comp unit. So is there wa way to catch that?
timotimo i'd have to look at the moar sourcecode 12:59
can you figure out which of the ~four ones it is that explodes in your face?
it's five instances
nine MVM_sc_get_sc_object
timotimo sounds like you're not loading SCs in the right order? 13:00
nine But how could that be if the only thing the branch changed is running the perl 6 compiler in-process using evalfiles? 13:01
jnthn I think if you can breakpoint it under the debugger you might be able to figure out the handle/description of the SC it's trying to resolve, which may provide a clue 13:02
nine That's...odd dep is 0 and it blows up in the comp unit's dependencies+deserialize. One would think that at that point the first SC would be readily available? 13:06
timotimo it might also be interesting to get a moar bytecode backtrace 13:07
"call MVM_dump_backtrace(tc)"
13:08 pyrimidi_ joined
jnthn iirc, dependencies+deserialize very early on creates the SC 13:08
In the code it produces
At least, for the precomp case
timotimo maybe we can see in what SCs we're already deserializing or something? 13:09
jnthn I wonder if there's some unfortunate assumptions going on here
timotimo like, do we see a piece of the dependency graph projected onto our call stack?
jnthn I think when we know we're not precomping, then we don't spit out any SC setup/deserialize code because we already have the SC in memory 13:10
nine There are a lot of calls to MVM_sc_get_sc
timotimo try to breakpoin tonly the panic
er, the throw_adhoc
nine Did so before. Then I thought it would be interesting to be able to look closer at MVM_sc_get_sc itself. But that's just wasting time :) 13:11
timotimo ah
nine MoarVM's backtrace at MVM_exception_throw_adhoc is even a bit shorter than the one from --ll-exception 13:12
timotimo hmm 13:13
MasterDuke in src/Perl6/Metamodel/BOOTSTRAP.nqp, how would i scalary_attr() a str array? e.g., to turn `List @named_names` into `str @named_names`? 13:17
*heh. scalar_attr() 13:18
nine I clearly see cu->body.scs_to_resolve[0]->sc being NULL there
From MoarVM's perspective there shouldn't be any difference between a calling perl6 --target=mbc and a Perl 6 program running the compiler with :target<mbc> when generating the bytecode file, shouldn't there? 13:33
Now look at this! This is a moar dump of a minimal module on nom: gist.github.com/niner/0e32037010b7...4fd803162c and a dump of the same module on precomp-singleprocess: gist.github.com/niner/6c10d50c641a...b5cd99dff5 14:01
They should be virtually identical except for maybe the cuids. But they clearly aren't. There are lot's of differences including loads of bytecode diffs in dependencies+deserialize 14:02
MasterDuke heh. `SC_2 : AC32ABF7F7462E14EE588B2D0A6062A1B512D6D1` missing from the second. seems like that might be important 14:03
nine And in the branch, Frame_4 is never called independencies+deserialize and Frame_5 is completely missing. 14:05
Ooooh...maybe it thinks it's doing nested compilation. Which is sort of is to be frank. QASTCompilerMAST would in that case for example not write the call to the repo_conflict_resolver which is suspicioulsy absent from the second mbc file 14:10
14:12 colomon joined
nine Except that it doesn't 14:23
Oh, it's the other part of the condition. The compiler just doesn't know that it's in precompilation mode! 14:29
Aah, --target only turns on precomp mode if it's actually passed on a command line evalfiles won't do it for us. 14:33
And with that, the precomp files have become virtually identical :) On to the next issue... 14:41
IOninja This one's good to merge now methinks: github.com/MoarVM/MoarVM/pull/528 14:54
works for me
Geth MoarVM: nanis++ created pull request #534:
Issue #533: MoarVM does not build on `cygwin`.
14:55
MoarVM: 8c2c627ca5 | (A. Sinan Unur)++ | Configure.pl
Issue #533: MoarVM does not build on `cygwin`.

Remove mention of `cygwin` support from `Configure.pl`.
15:06
MoarVM: 7ff91dbbed | (Jonathan Worthington)++ | Configure.pl
Merge pull request #534 from nanis/nanis-nocygwin

Issue #533: MoarVM does not build on `cygwin`.
jnthn IOninja: Needs one small tweak; commented on it. But otherwise, yes, looks like we can merge soon :) 15:16
MasterDuke jnthn, IOninja: any idea about my BOOTSTRAP.nqp and scalar_attr() question? i've tried a couple things, but haven't figured it out yet 15:18
IOninja doesn't know 15:19
jnthn Is that List even correct? 15:20
I don't think we store those as a high-level List
I suspect that being scalar_attr is bogus
Or if we do it should just be typed Mu since it holds a low-level thing 15:21
MasterDuke i was a little surprised it worked when i tried that (making them List) a while ago 15:23
jnthn Well, it doens't mean anything when we just bind what we want there anyway :) 15:25
MasterDuke yeah. but it does complain `P6opaque: representation mismatch when storing value (of type NQPArray) to attribute (of type str)` if i make it `str`. not surprising in that case 15:28
jnthn No, 'cus an an array of str is not a str :) 15:30
MasterDuke which is reasonable. but is there a way to say it's supposed to be an array of str? 15:32
jnthn Only looking at what we bind there 15:33
github.com/rakudo/rakudo/blob/nom/....nqp#L1888 15:34
But what is that... 15:35
github.com/rakudo/rakudo/blob/nom/....nqp#L4996
Seems a boxed Str array
Not a native str array
So yeah, there's a change to save some boxes there :) 15:36
*chance
MasterDuke i also forgot that nqp doesn't support typed arrays 15:38
jnthn Yes and no
You can do it 15:39
With NQP ops
nqp::list_s() to create a str array
And then nqp::push_s, nqp::atpos_s, nqp::bindpos_s to access it
MasterDuke ah, right
timotimo did we use to be better at while_empty than perl5? 15:44
hm, maybe it really was only the native case 15:45
i thought our int2str_concat was only shaped downwards like that a long time ago, but it was improved when we got ropes? but now it's getting slower and slower the more work we pile on it
nine Serialization Error: reference to context outside of SC 15:54
Now this ^^^ sounds very much like a leaky roof of the precompiler
Geth MoarVM/vmhealth: 60377d1d17 | (Timo Paulssen)++ | 3 files
also report page counts and free items in thread's gen2
15:58
timotimo wowza, i have a playable framerate in my shooter game when run with valgrind! 16:00
(though the vmhealth reports make very noticable dents in performance each time)
imgur.com/a/FJiDY 16:03
quite bumpy
*fascinating*, when i move my mouse, it makes it just slow enough to come to a complete standstill as long as the cursor's moving 16:05
16:07 lucasb joined
nine The above "reference to context outside of SC" happens in serialize_closure which makes me believe that it's about my $*ADD-DEPENDENCY = -> $dependency { @dependencies.push: $dependency }; 16:07
Now how can I have the precompiler communicate dependencies to the caller without leaving any references to objects outside the precompiler in there?
lucasb good saturday to everybody 16:09
about the representation renaming pull request, I made a list of the representation names vs. filenames vs. id names 16:10
gist.github.com/anonymous/cb09e405...c6512dae6b
from there, you can spot that the different ones are Null/MVMNull and AsyncTask/MVMAsyncTask 16:11
nine What do you people think about me calling the compilation steps directly, so I can ask the compiler about those dependencies before going into the mbc stage?
timotimo write it to a file :D 16:12
nine timotimo: or or or maybe to STDOUT? 16:13
timotimo that'd be a possibility
STDOUT is a file, too :P
nine I guess it could run into deadlocks with a full buffer, but that'd probably only hit jnthn ;) 16:14
.oO( successfully circlified )
timotimo knowing his luck, yeah
fwiw, our std file handles are being set to async by libuv anyway
so it's more probable that data just gets lost :D 16:15
nine For those who weren't tuned in at the time: jnthn running into the buffer issue prompted me to take another look at in-process precompilation in the first place ;)
timotimo i think we have an op that clears the sc from an object
if you pass native strings, it could be possible to detach it properly
though it could be that that clearing op properly clears whole object graphs 16:16
though of course it mustn't go through to, like, Int or something
*shrug*
*sigh*, the pushme benchmark does something different in rakudo vs nqp and perl5 16:17
nine I'll give the "ask, don't tell" thing a try. Would be nice to be able to use more than just basic strings for communication
timotimo froggs used to use that op to put whole json-like structures into files, iirc
so maybe you can do stuff like that
lucasb also, the other inconsistent name is MVM_REPR_ID_MVMNativeCall 16:19
jnthn, IOninja: so, my questions are:
should the filenames and ids of representations VMArray, VMException, VMHash, VMIter, VMThread be renamed to remove MVM?
should the repr ids of the CThings be renamed to remove the MVM from the name? (eg. MVM_REPR_ID_MVMCArray -> MVM_REPR_ID_CArray)
should those inconsistent names be renamed? (NativeCall,Null,AsyncTask)
IOninja doesn't know 16:20
lucasb IOninja: ok :) I just wanted to keep you on the loop
timotimo oh, that benchmark is fixed in a newer version than jnthn is running on his machine
lucasb IOninja: BTW, thanks for fixing the empty itemized list thing 16:23
nine Ooh... nqp::getcomp("perl6") will always return the same compiler object. So using that to compile a different module can quite possibly screw up the current compilation. 16:24
timotimo oh
right, we put some stuff in the one instance we have 16:25
like the commandline arguments, right?
though i'm not sure the compiler actually holds any state while it's compiling?
i mean, apart from stuff on the stack via dynvars and such
nine I don't know. And it makes me nervous. There's e.g. $!save_ctx 16:29
timotimo ooh
jnthn: i think you'll have to regenerate the perl5 results for perl6-bench to become happy, since now you're technically running the new perl6 and nqp benchmarks vs the old perl5 benchmarks, even though only the perl6 portions have changed, and i'm not sure how that changes what the graphs look like 16:30
Geth MoarVM/master: 12 commits pushed by (A. Sinan Unur)++, (Jonathan Worthington)++
review: github.com/MoarVM/MoarVM/compare/7...685af60a7b
16:31
jnthn Merged #528; nanis++ 16:33
timotimo fantastic
jnthn timotimo: Hm, will take a look at that a little later on :)
timotimo that's why it says "perl6-bench version 0029b74, ea2a4d0" at the top of the results 16:34
16:35 pyrimidine joined 16:39 agentzh joined
TimToady jnthn: so if I get an error like "Missing serialize REPR function for REPR MVMContext (BOOTContext)", is that something that means there's just a missing function, or does it mean I've let some value through to the serializer that should never get there? 16:52
timotimo there are things that we never want to have hit the serialization stage 17:01
i forgot what Context is all about, though
TimToady it's about lexical scopes 17:08
which you'd think is something you want to remember... 17:09
but maybe the problem is that it's a BOOTContext?
timotimo is it about closures? because i thought lexical scopes was done with "outer" pointers in static frames
i assume searching irclog for "missing serialize" + MVMContext might find you something 17:10
TimToady well, I'll figure it out eventually, but can't really hack today, so I just thought I'd ask to see if it set off any sirens :) 17:11
timotimo that's fair
TimToady anyway, I think contexts are what you use to navigate all the various PseudoStashes 17:12
and since some grammars are actual objects that could have attributes, I'm trying to track the current language as an object, not just as a type 17:14
timotimo ah
TimToady but I suspect something related to that is feeding a $!ctx to the serializer somewhere
jnthn Sorry, was busy in the kitchen :) 17:26
MVMContext shows up when we do PseudoStashes or the equivalent 17:27
timotimo good to know
is there already a comment for that btw? :)
jnthn Comment where? :)
I suspect we probably can make them serializable
But it's at least a warning sign of a change unexpectedly makes us need to do so. 17:28
MasterDuke jnthn: i've been making the stuff here github.com/rakudo/rakudo/blob/nom/....nqp#L4996 an nqp::list_s(), but don't see any difference in the Parameter total bytes after a heap profile 17:39
so would it be correct to assume i'm doing something wrong i.e., if i was doing it correctly the total bytes would definitely be less? 17:40
jnthn MasterDuke: It won't make a difference to Parameter, itself, because Parameter points to the array, which is a separate object 17:41
MasterDuke: If you look at summary, however, that should show a decrease
And you can use count type="P6Str" or so 17:42
And should see less boxes
MasterDuke ahh, thanks
BOOTStr? 17:47
jnthn Oh, or that, yes :) 17:54
d'oh
Sorry, P6str is the REPR name
count repr="P6str"
But count type="BOOTStr"
:) 17:55
MasterDuke heh, figured it had to be one of the things in the top 15 17:56
18:03 lizmat joined 18:05 geekosaur joined 19:16 lizmat joined
samcv good * everyone 19:59
20:43 agentzh joined
Geth MoarVM: samcv++ created pull request #535:
Use utf8 for unicode_db files; Add missing #ifdef for variable initialization
20:45
20:57 agentzh joined 22:44 pyrimidi_ joined
Geth MoarVM: e197d97077 | (Samantha McVey)++ | src/core/fixedsizealloc.c
Add missing #ifdef for variable initialization

This variable is unused except when #ifdef is true, so have an #ifdef for the initialization too.
22:45
MoarVM: 26a3c52695 | (Samantha McVey)++ | 3 files
Use utf8 for unicode_db files

Fixes a compiler warning from having non-UTF-8 encoded text in unicode_db.c Also ensures when we uppercase the Emoji sequence names, letters with diacritics get uppercased properly.
MoarVM: 7a7de2f51a | (Jonathan Worthington)++ | 4 files
Merge pull request #535 from samcv/fixes

Use utf8 for unicode_db files; Add missing #ifdef for variable initialization
MasterDuke is there a way to tell the type of an nqp::list? i've converted Parameter's @!named_names to an nqp::list_s, but now this github.com/perl6/nqp/blob/master/s....nqp#L1123 is complaining 22:49
Geth MoarVM/master: 4 commits pushed by (Jeff Linahan)++, (Jonathan Worthington)++
MasterDuke if i make those two array subscripts atpos_s, it fails test #60 in t/qast/01-qast.t ('declaring and using a param with multiple names works') 22:50
jnthn ah
MasterDuke it works with just an nqp::list(), but then there's no reduction in BOOTStrs 22:51
jnthn I think we only probably only want this change for the thing we store in serialization, not in the QAST tree
Yeah, though this case only shows up in a couple of cases
*places
I'd look in lower_signature in Rakudo's Actions.nqp 22:52
MasterDuke cool, thanks
jnthn In the case it spits out a fast-path for when a named parameter has exactly two names
And just copy them into a normal array
That happens really very few times
And it's not going to affect the serialization blob
MasterDuke so just make it a list_s here? github.com/rakudo/rakudo/blob/nom/....nqp#L8121 22:54
or you mean in the else that currently just returns 0 22:56
jnthn I presume you already had to change 8119 just above it? 22:57
Anyway, no, I mean, something my my @copy; @copy[0] := nqp::atpos_s(@names, 0); @copy[1] := nqp::atpos_s(@names, 1); $var.named(@copy); or so
MasterDuke ah 22:58
22:59 pyrimidine joined
MasterDuke hadn't had to change 8119, just changed all the [] to atpos 22:59
well, i've now changed my changes a couples times, so i don't think so, but couldn't swear to it 23:00
jnthn Hm, I@m surprised it didn't have to become nqp::atpos_s(@names, 0) there
MasterDuke oh sorry, my line #s were off. yes, that became an apos 23:01
jnthn :) 23:06
MasterDuke ok, from 15,335 BOOTStrs to 14,883. now to see how it spectests 23:20