01:48 colomon joined 04:04 FROGGS_ joined 05:39 lizmat joined
nwc10 what do I need to copy/update to replace the stage0 bootstrap files? 05:39
(Not that I'm about to send a patch for this. I want to test that it won't break when someone next really needs to do it) 05:40
06:56 Ven joined 07:06 lizmat joined 07:14 FROGGS joined 07:32 brrt joined
brrt nwc10 - iirc you copy the stage2 output from nqp to the stage0 dir 07:34
FROGGS nwc10: make m-bootstrap-files or so 07:35
nwc10 FROGGS: I don't see that target anywhere in the Makefile 07:40
FROGGS nwc10: you are talking about nqp@moar, right? 07:41
nwc10 FROGGS: Well spotted. The problem was between the keyboard and the chair
FROGGS :o)
FROGGS submits nickbug 07:42
07:43 lizmat joined 08:04 zakharyas joined
nwc10 If I look at the profiles for ./perl6-m -e 1 08:09
I see stuff from a GC run (And top)
timotimo hum? top? 08:10
nwc10 oh, on "called"
not on time I think
yes, Problem continues to exist between keyboard and chair 08:11
anyway, the question is, is that GC run avoidable?
(ie can/should we tweak some sizes to defer the pain until after minimal startup)
or is that a daft idea for subtle reasons?
timotimo IIRC we made the nursery size as big as the l3 cache for a Good Reasonā„¢ 08:14
nwc10 that's probably the answer that I was missing 08:15
jnthn We should avoid the GC run by allocating less objects at startup.
timotimo or by making the objects we allocate smaller
nwc10 <masak>fewer</masak><ducks/> 08:16
jnthn Note that all the deserialized stuff goes directly into gen2
timotimo though that's not necessarily still possible for all of them
jnthn So we're talking about the work that CORE.setting does in its mainline.
timotimo and all the things the parser and compiler do before and after the given program 08:17
i wanted to call that "boilerplate", but that's not quite fitting
08:17 lizmat joined
jnthn True, though for a small program that ain't loads. 08:17
nwc10 jnthn: OK, I was wondering that - is this runtime work? And all runtime work that can be avoided is faster startup 08:19
jnthn I'd hope that it can be avoided, yes.
timotimo nwc10: since a not so long time we also do a json parse at startup for the CompUnitRepo
jnthn Mostly, at least.
timotimo JSON::Fast does less gc than JSON::Tiny, so there's a start 08:20
but it could be loads better
nwc10 that's at "-e1" sort of startup?
timotimo that's how i understood it 08:21
i thought it could be deferred by a well-placed //=, but i haven't looked into it yet
nwc10 ah OK
jnthn Still didn't backlog yet fully on #perl6; did JSON::Fast get used already?
nwc10 this might sound daft (but all benchmarks and stats are, to some degree)
timotimo no, JSON::Fast has no users yet, but its interface is a drop-in replacement for JSON::Tiny 08:22
nwc10 but I think that perl6 -e0 time matters (if we can reduce it without predudicing other things)
jnthn I'm surprised we need to read the JSON until somebody does a "use" or "need" fwiw.
nwc10 because it's something people will try, and it's an immediate first impresison
jnthn: that was my thought
actually, strictly, I think it's "command line hello world" that probably matters
jnthn Given how much is built in to Perl 6 anyway, plenty of one-liners and simple scripts and REPL sessions will never need to load a module.
nwc10 which needs a bit more parsing
jnthn Parsing hellow world doens't use a module. 08:23
nwc10 good. that was my assumption
so it feels like a somewhat reasonable benchmark
timotimo FWIW, the json parse isn't a meant-to-stay solution anyway
nwc10 I might have a branch that reduces it by about 1% CPU
lizmat jnthn: I *tried* many times to defer the initialization of @*INC 08:24
it always seems to break panda, though
nwc10 sad panda not good
lizmat last time I tried it, it took bare startup time from 0.15 to 0.1 on my machine
nwc10 OK, 0.75%
will that do? 08:25
jnthn lizmat: Hm, I'd been thinking more that the CUR inside @*INC would not load the database until it had to.
lizmat I'm pretty sure it doesn't, but FROGGS would know for sure
timotimo tries hacking that in
08:26 Ven joined
lizmat the 0.05 is just for initializing @*INC and %*CUSTOM_LIB 08:26
jnthn lizmat: I'm pretty sure it must be givne people have been reporting increased startup time when they have lots of modules installed.
FROGGS look at Inc.pm 08:27
jnthn sees in the bit of backlog he just got to that FROGGS++ is also working on getting rid of the JSON
lizmat the first time I tried was with d05d411e968b3408420bbc7b02c1248f3dc005de on Sep 8, 2014
that patch should basically still all that's needed 08:28
*be
jnthn my $abspath := "$prefix/share/libraries.json";
if IO::Path.new-from-absolute-path($abspath).e {
my $config = from-json( slurp $abspath );
Is that the from-json in question?
FROGGS no
timotimo it's in CompUnitRepo/Installation
inside BUILD 08:29
FROGGS aye
FROGGS wasnt fast enuff
instead of "from-json $manifest.slurp" I tried "$manifest.slurp.EVAL" bt that end up horrible 08:30
probably because we precompile lib.pm which has it hands on @*INC
lizmat is there a simple way to re-apply a particular patch without committing immediately ? 08:32
FROGGS I dunno
jnthn git cherry-pick --no-commit sha1-here 08:33
lizmat jnthn++
jnthn If you want to try a revert without committing, exact same trick works, fwiw. :) 08:34
FROGGS lizmat: can you reboostrap panda and install a random module as a sanity test? 08:35
lizmat doing that just now :-) 08:37
hmmm... different error now, lemme double check 08:38
wrong branch, rebuilding 08:39
jnthn lizmat: Backlogging #perl6 still, but making the exception behavior of however-we-spell-nqp::eqat-in-Perl-6 consistent with substr feels rihgt to me. 08:44
lizmat hmmm... getting Missing or wrong version of dependency 'src/gen/m-CORE.setting' (from 'lib/File/Find.pm') now :-( 08:45
grrr... I have no tuits to figure that out now :-(
FROGGS lizmat: can you push to a branch? 08:46
then I'll take a look
lizmat git cherry-pick --no-commit d05d411e968b3408420bbc7b02c1248f3dc005de
nwc10 lizmat: if mberends is there, please say Hi!
lizmat should do the trick
FROGGS or that :o)
jnthn Ah yes, greetings to NLPW too. I'll try to make it next year. :) 08:47
lizmat mberends is here, will say hi (Tea minus 2)
timotimo say hi from me, too! 08:48
nwc10 thanks
enjoy tea
enjoy whisky later
enjoy the excuse for gathering for tea, conversation, whisky and fluxx
timotimo with my changes i get "possible version skew detected" :\ 08:49
FROGGS timotimo: changes to what? I did get the too yesterday 08:50
timotimo and without my change it works. great.
gist.github.com/timo/0856734414bc1a53fb7b 08:51
FROGGS ahh, I got that error when tring to .EVAL an empty MANIFEST in BUILD 08:52
FROGGS likes to SHOUT today
timotimo let me make sure the manifest gets loaded properly
huh 08:56
jnthn caught up backlogging just in time to make brunch :)
timotimo bon brunch, jnthn! 08:57
(or is that spelt "bonne"?)
nwc10 jnthn: I have baked you two "branches". They use 0.75% CPU in startup 08:58
but you should eat first and review them carefully (please) because the changes to the varint serialisation code are a bit funky
timotimo there is *some* data ...
nwc10 (but have been tested on Power64 and Power32, including a reboostrap) 08:59
timotimo gist.github.com/timo/0856734414bc1...tfile2-txt
nwc10 er, that's not correct
they use 99.25% CPU in startup
rather than 100% :-)
this chair needs a new occupant
FROGGS hehe 09:00
timotimo FROGGS: i'm not 100% sure how the data is written back to disk, maybe that's the problem?
maybe write-back isn't triggering the data to actually be read or something? 09:01
FROGGS timotimo: in Installation.pm method install at the end
writing back does not mean it gets re-read, correct
timotimo not re-read
FROGGS but since panda spawns a perl6 to to install stuff, it should not matter 09:02
timotimo just un-lazy'd
huh 09:03
the first "possible version skew" error happens in testing Shell::Command, where Shell::Command shouldn't even be in the MANIFEST yet
oh
but it's looking for File::Find anyway 09:04
well, the gist has an up to date diff, maybe you can look into it, as you know better what to expect at what stage of the process 09:05
FROGGS the installation process is quite hairy... 09:06
09:18 lizmat joined
timotimo i'm out of ideas regarding this patch 09:26
FROGGS yeah, I gave up yesterday too 09:33
timotimo mhh 09:34
09:46 oetiker joined
jnthn nwc10: Turns out we're going for walk/shopping now, so I'll look at the patches later on :) 09:55
jnthn is having his "weekend" today/tomorrow, so Sunday will be the next big NF* hacking day :)
bbl 09:56
nwc10 have fun. No hurry 09:57
11:45 lizmat joined 12:13 Ven joined 12:14 raiph joined 12:32 zakharyas joined 13:01 lizmat joined 13:15 Ven joined 13:18 lizmat joined 13:32 Ven_ joined 14:04 lizmat joined 14:15 brrt joined 14:36 lizmat joined 14:47 zakharyas joined
nwc10 jnthn: historically, was there an assumption that the MoarVM "byte"code files needed to be 2 byte aligned (everywheere) 15:41
hence all stuff in the serialisation blob had to be 2n bytes long? 15:42
(obviously not true now there are varints)
15:48 Ven joined
jnthn nwc10: For the bytecode segment and annotations segment I think it matters, for the serialization blob I don't think we're sensitive to that. 15:55
Hmm, what on earth... 16:06
I *think* "make test" on my laptop got a bunch slower... 16:07
NQP make test, that is.
oh duh duh duh...I have a --debug --no-optimize build of Moar. :)
nwc10 jnthn: if you use --asan regularly, then it's all wow superfast when you build --optimise 16:32
it's a bit like walking for a day with a large rucksack, then taking it off in the evening 16:33
instant diet!
18:00 FROGGS joined 18:13 zakharyas joined 18:45 synbot6 joined 18:51 PerlJam joined 20:53 vendethiel joined
dalek arVM: 575c486 | FROGGS++ | src/core/coerce.c:
tweak istrue_s, every non-empty string is true now
21:41