🦋 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: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
MasterDuke ugexe, lizmat: currently the highest function by exclusive time during a `raku -I . -e 'use Test'` in a large directory is `sub DYNAMIC`. there are 104k lookups each for `$*CWD` and `$*SPEC` 01:55
MasterDuke ah, looks like i have a patch that gets rid of most of them, drops the time from ~3.7s to ~3.5s 02:47
MasterDuke and passes a spectest 03:19
oh, it's against github.com/rakudo/rakudo/pull/5287, so i can't PR it right now 03:43
tldr, it adds a new Str.IO multi with`:$SPEC!` and `:CWD!` parameters and passes them on to the IO::Path.new call. then use that in CompUnit::Repository::FileSystem!dist-from-ls 03:45
doh, it's not against that PR, i just don't like the git diff output 03:59
but i'll be inspired by that pr for my branch name 04:01
doh again, don't need to create a new Str.IO multi 04:13
Geth rakudo: MasterDuke17++ created pull request #5288:
Don't lookup $*(SPEC|CWD) for every file in dir...
04:21
lizmat notable6: weekly 10:08
notable6 lizmat, No notes for “weekly”
lizmat m: class A { has $.a is rw; submethod TWEAK() { $.a = 42 } } 10:30
camelia ===SORRY!=== Error while compiling <tmp>
Virtual method call $.a may not be used on partially constructed object (maybe you mean $!a for direct attribute access here?)
at <tmp>:1
------> { has $.a is rw; submethod TWEAK() { $.a⏏ = …
lizmat that fails, but this is ok?
class A { has $.a is rw; submethod TWEAK() { self.a = 42 } }
m: class A { has $.a is rw; submethod TWEAK() { self.a = 42 } }
camelia ( no output )
Geth rakudo/main: 4 commits pushed by (Nick Logan)++ 11:30
Geth rakudo/main: 3fa0fdf74c | (Daniel Green)++ | src/core.c/CompUnit/Repository/FileSystem.pm6
Don't lookup $*(SPEC|CWD) for every file in dir...

when recursing through a directory given as a `-I` option. When applied on top of github.com/rakudo/rakudo/pull/5287, `time raku -I . -e 'use Test'` in a directory with ~113k subdirectories/files dropped from ~3.7s to
  ~3.5s.
12:08
rakudo/main: 7a3ab690a4 | MasterDuke17++ (committed using GitHub Web editor) | src/core.c/CompUnit/Repository/FileSystem.pm6
Merge pull request #5288 from MasterDuke17/speedup_internal_dir_recursion_by_reducing_dynamic_lookups

Don't lookup $*(SPEC|CWD) for every file in dir...
lizmat and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2023/06/19/2023-...llections/ 12:34
ugexe Hmm, using the home directory as a repository is a terrible idea for another reason: IDEs will generate temp files and those are probably going to change a lot (and affect potentially unrelated code). I have hundreds of files like `/Users/nlogan/Library/Application Support/Code/User/History/-6f9923b8/W6qz.rakumod` 15:41
raku -e 'say CompUnit::Repository::FileSystem.new(:prefix($*CWD)).distribution.meta<provides>{"Library::Application Support::Code::User::History::-6f9923b8::W6qz"}' 15:44
nlogan/Library/Application Support/Code/User/History/-6f9923b8/W6qz.rakumod
Geth rakudo/ugexe/use-nqp-try: d6c9c075d9 | (Nick Logan)++ | src/core.c/Rakudo/Internals.pm6
Use nqp::handle instead of try

Previously we added 'try' to ignore errors from the various nqp stat calls. The rest of the code is written in nqp, so this changes that 'try' to use nqp::handle instead for a slight performance benefit.
23:51
rakudo: ugexe++ created pull request #5290:
Use nqp::handle instead of try
23:52