🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | log inspection situation still under development | For MoarVM see #moarvm
Set by lizmat on 22 May 2021.
MasterDuke oh, multiple people working on a branch, need to remember not to force push a lot of rebases 08:31
MasterDuke anyone object to rebasing rakuast up to master? i.e., after 2022.03 08:41
nine MasterDuke: fine with me, but I guess it's up to jnthn. 08:42
lizmat Files=1351, Tests=117115, 297 wallclock secs (35.63 usr 10.08 sys + 4108.10 cusr 354.32 csys = 4508.13 CPU) 08:50
Geth rakudo: MasterDuke17++ created pull request #4825:
Add .rakumod files to compiler id
09:26
rakudo: 970f1828ca | (Elizabeth Mattijsen)++ | lib/CompUnit/Repository/Staging.rakumod
There's an IO::Path.copy, so use that

That should also take care of any attributes being copied as well.
  hythm++ for spotting
09:44
rakudo/rakuast: 30902c0d0f | (Daniel Green)++ | 2 files
Add .rakumod files to compiler id

This means a change to them will invalidate precomp files. This wasn't a problem before rakuast because rakudo/src/* didn't have any .rakumod files, but now it does.
rakudo/rakuast: b330e2a8f5 | MasterDuke17++ (committed using GitHub Web editor) | 2 files
Merge pull request #4825 from MasterDuke17/rakuast_add_rakumod_file_to_compiler_id
lizmat MasterDuke: is the removal of lib/.precomp also done for the rakuast branch ? 09:46
MasterDuke when? it happens during a `make realclean` 09:47
lizmat ah, ok... well there's news: on HEAD, lib/.precomp doesn't even get created anymore 09:58
hmmm... lemme double check that :-) 09:59
yup
c081f32838a863cdb57a6c077c5c26cd6cde0893 took care of that :-) 10:00
Geth roast: 081d05b32c | (Elizabeth Mattijsen)++ | S32-list/are.t
Add tests for .are
10:01
nine lizmat: but it will still get created by make test 10:05
lizmat hmmm... it probably shouldn't ? 10:20
hmmm... I guess "make test" needs to be able to run without having run "make install" 10:29
meh 10:30
nine Yes, it is customary to run tests before installing 10:35
lizmat :-) 10:40
Geth rakudo: ce0d8d6428 | (Elizabeth Mattijsen)++ | lib/CompUnit/Repository/Staging.rakumod
Add .self-destruct method to CUR::Staging

So that a CURS can clean up after itself after having deployed installed files.
11:45
Geth rakudo: aa6b13cdd0 | (Elizabeth Mattijsen)++ | lib/CompUnit/Repository/Staging.rakumod
Add CUR::Staging.rempove-artefacts method

To hopefully make it easier to cleanup a CURS repo before packaging. Logic lifted from tools/install-dist.raku.
11:55
lizmat argh, .remove.artefacts of course :-(
MasterDuke hm, don't we usually use american english spellings? 11:56
lizmat I guess :-( didn't realize there as a US spelling for it 11:58
*was
MasterDuke en.wikipedia.org/wiki/American_and...ifferences couple rows down in the table 12:00
Geth rakudo: 6e81f3423c | (Elizabeth Mattijsen)++ | lib/CompUnit/Repository/Staging.rakumod
s/artefacts/artifacts
12:08
nqp: MasterDuke17++ created pull request #768:
Some potential MAST bytecode writing optimizations
12:19
Geth rakudo: f196efd319 | (Elizabeth Mattijsen)++ | lib/CompUnit/Repository/Staging.rakumod
Gradually type CUR::Staging

And use self.foo instead of $.foo
12:32
Geth rakudo: d369fd1e68 | (Elizabeth Mattijsen)++ | tools/install-dist.raku
Streamline install-dist to more modern Raku code

  - move pod to end
  - less copy-paste code, more subs
  - more internal documentation
  - consistent error handling
13:07
Geth rakudo/install-without-precompile: 1c059c2be6 | (Elizabeth Mattijsen)++ | 2 files
Add :precompile = True flag to CURI.install

The idea behind this is to allow modules to just be installed and have the runtime decide when it should (re-)precompile any compilation units that were not precompiled yet. This would e.g. allow the DateTime::TimeZone distribution to be installed within a second, rather than on 4+ minutes. And only precompile those timezones that are actually used at runtime.
Also add the --/precompile flag to install-dist.raku
13:37
rakudo: lizmat++ created pull request #4826:
Add :precompile = True flag to CURI.install
lizmat afk for a bit& 13:38
[Tux] WHOOPSAKADEESY! 14:12
Rakudo v2022.03-15-gd369fd1e6 (v6.d) on MoarVM 2022.03-1-gefff4cd31
csv-ip5xs0.791 - 0.811
csv-ip5xs-204.943 - 5.147
csv-parser3.595 - 3.685
csv-test-xs-200.399 - 0.404
test6.509 - 6.541
test-t1.386 - 1.456
test-t --race0.829 - 0.838
test-t-2019.627 - 20.612
test-t-20 --race6.439 - 7.055
MasterDuke nice 14:22
[Tux]: do you have test-t-20 graphed over similar timespans? 14:23
japhb wonders what sped things up that much 14:32
MasterDuke probably just a lucky hash randomization. even with MVM_SPESH_BLOCKING i've seen thing where the timing will be pretty consistent between most runs, but with noticeable outliers in either direction 14:35
japhb Wow, the drop in Q4 for test-t-20 is even more dramatic than for test-t 14:36
MasterDuke: interesting
Meanwhile sadly "test-t --race" still isn't back to where it was in Q4 *2018* 14:39
Makes me wonder why not
MasterDuke werem 14:41
japhb ? 14:41
MasterDuke *weren't some massive stability problems with race/hyper fixed around then?
japhb Ah, interesting.
It looks like the "fixed" version of early 2019 forms a hard performance baseline -- some changes made "test-t --race" slower, but none slower. You could almost draw a horizontal line below the last 3 years. 14:44
*but none faster
[Tux] I repeat that test-t --race is an interesting showcase, but *only* for valid CSV as in this test: the --race version will FAIL on any more complex CSV 14:54
MasterDuke: tux.nl/Talks/CSV6/speed.log - graph all you like 14:55
japhb I'm not sure what you mean by "valid" versus "complex" ... could you explain a bit more?
[Tux] embedded newlines will cause the race version to parse incomplete lines 14:56
japhb MasterDuke: if you have the Terminal::Quickcharts repo: `wget tux.nl/Talks/CSV6/speed-all.log; raku -I. examples/csv-timings "test-t --race"` 14:57
[Tux]: Huh. 14:58
dogbert11 has a vague memory seeing a valgrind error in one of the CSV tests relating to newlines 15:08
[Tux] japhb, IIRC Liz created the race version where each "line" in a file is passed to a parser instance. Multiple parsers then each finish their work, but this will fail on e.g. `1,2,"foo\nbar",3,4"`, as parser 1 gets `1,2,"foo\n` and parser 2 gets `bar",3,4` both being invalid CSV 15:19
japhb [Tux]: AH! That makes sense now
MasterDuke japhb: test-t-20 --race does show a drop at new-disp merge 16:26
japhb MasterDuke: Nod, but "test-t --race" does not. 16:28
MasterDuke right, it's currently dominated by startup (process + threads) time 16:29
japhb That's a lot of startup time ....
MasterDuke well, overhead in general is probably a better word 16:33
japhb Fair. 16:36
Geth rakudo/master: 16 commits pushed by (Elizabeth Mattijsen)++
review: github.com/rakudo/rakudo/compare/d...78be8937e8
17:20
lizmat splitting CompUnit/PrecompilationUnit.pm6 into 4 separate files while keeping git blame history 17:21
nine ^^
Geth rakudo: 193cb539c3 | (Elizabeth Mattijsen)++ | src/core.c/CompUnit/PrecompilationId.pm6
Simplify CompUnit::PrecompilationId
17:50
Geth rakudo: 7c1e80c6d7 | (Elizabeth Mattijsen)++ | src/core.c/Block.pm6
Remove unnnecessary copying from Block.add_phaser
18:05
Geth rakudo: 3187922bcb | (Elizabeth Mattijsen)++ | src/core.c/Block.pm6
Some more natification in Block
19:01
rakudo: 3e217a0d9a | (Elizabeth Mattijsen)++ | src/core.c/IO/Special.pm6
Streamline IO::Special a bit
19:24
nine Thanks for fixing the mistakes of my past :) 20:10
lizmat nine: you're welcome! 20:11
Geth rakudo: 1f34539969 | (Elizabeth Mattijsen)++ | src/core.c/Process.pm6
Remove current dir from any path if RAKUDO_MODULE_DEBUG
20:50
rakudo: 71edcf2872 | (Elizabeth Mattijsen)++ | src/core.c/CompUnit/PrecompilationRepository.pm6
Split CompUnit::PrecompilationRepository!load-file

Create separate methods so we don't need to check things all the time. And make the RAKUDO_MODULE_DEBUG output a bit less noisy.
lizmat and that concludes my hacking for today
Geth ¦ rakudo: lizmat self-assigned CompUnit::Repository::Staging: No such method 'need' for invocant of type 'Any' github.com/rakudo/rakudo/issues/4799 22:26
ugexe ci looks like the reproducible build test on windows is more flakey than normal as of today 22:43
what, if any, eqiv to .install(:force) should .deploy have? should .deploy be respecting the repo.lock? i wish i could have asked these questions in a pull request 23:55