🦋 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.
00:00 reportable6 left 00:01 reportable6 joined
Geth rakudo/main: 71240f0024 | (Daniel Green)++ | src/core.c/CompUnit/Repository/FileSystem.pm6
Get rid of more $*(SPEC|CWD) lookups in dir()
00:39
00:49 kurahaupo left
Geth ¦ problem-solving: vrurg assigned to codesections Issue Rakudoc in third-party modules and some related topics github.com/Raku/problem-solving/issues/373 01:02
01:41 MasterDuke joined 01:47 MasterDuke left 02:01 MasterDuke joined
MasterDuke ugexe, lizmat: in CompUnit::PrecompilationRepository.precompile, there are a couple places where `$path.Str` is used (e.g., github.com/rakudo/rakudo/blob/main...pm6#L346). however, the parameter `:$source-name` has a default of `$path.Str`. can it be used instead of those `$path.Str`s? or would its 02:44
value if passed in and not the default be the wrong thing to use in those places?
05:33 squashable6 left, evalable6 left, benchable6 left, linkable6 left, unicodable6 left, bisectable6 left, shareable6 left, greppable6 left, notable6 left, sourceable6 left, quotable6 left, tellable6 left, releasable6 left, committable6 left, reportable6 left, statisfiable6 left, coverable6 left, nativecallable6 left, bloatable6 left 05:34 committable6 joined, reportable6 joined 05:35 releasable6 joined, unicodable6 joined, bloatable6 joined, statisfiable6 joined, nativecallable6 joined, evalable6 joined, sourceable6 joined, notable6 joined, squashable6 joined 05:36 tellable6 joined, quotable6 joined, greppable6 joined, bisectable6 joined, coverable6 joined, benchable6 joined, shareable6 joined 06:00 reportable6 left 06:01 reportable6 joined 06:34 linkable6 joined 07:20 sena_kun joined 09:21 sena_kun left
Geth rakudo/main: 1617881dc2 | (Elizabeth Mattijsen)++ | src/core.c/List.pm6
Streamline List.fmt a bit, a few % faster

  - clone source list
  - don't use positional logic, but shift / push
  - reduce bytecode size for easier / sooner inlining
09:38
rakudo/main: 7d3b9d6b4c | (Elizabeth Mattijsen)++ | 3 files
Combine 6.e augments and additions into single files

And document them a bit better as to the reason of their existence.
10:17
rakudo/main: 3d0b322287 | (Elizabeth Mattijsen)++ | 7 files
Remove .e files that were combined into Fixups/additions
10:18
11:18 linkable6 left, evalable6 left 11:19 evalable6 joined, linkable6 joined 11:55 tonyo left 11:56 tonyo joined
ugexe MasterDuke: I think source-name might be for showing the stack traces but i'm not sure 11:58
tools/build/install-core-dist.raku: :source-name("core#$source-file (CompUnit::Repository::Staging)"),
src/core.c/CompUnit/Repository/Installation.pm6: :source-name("$source-file ($_.key())"), 11:59
in both cases they have a path followed by a space followed by ( followed by a module name followed by ) 12:00
similar to $?FILE
12:00 reportable6 left 12:01 reportable6 joined
lizmat why is it again that we cannot augment roles ? 12:16
timo1 probably because we don't want to keep every class that has applied a role around so we can augment them at the same time as the role has been augmented 12:20
lizmat but what if augmenting a role would *not* affect any classes that already consumed the role ? 12:41
case in point: adding a .fmt candidate to QuantHashes 12:42
12:43 lucs left, lucs joined
lizmat now I need to add a .fmt method to Bag/BagHash/Set/SetHash/Mix/MixHash 12:43
14:00 kurahaupo joined
[Tux] Rakudo v2023.05-151-g3d0b32228 (v6.d) on MoarVM 2023.05-7-g3df20182b
csv-ip5xs0.792 - 0.796
csv-ip5xs-205.218 - 6.490
csv-parser3.874 - 3.920
csv-test-xs-200.378 - 0.433
test6.159 - 6.507
test-t1.351 - 1.354
test-t --race0.874 - 0.879
test-t-2021.381 - 21.523
test-t-20 --race6.314 - 6.402
14:17
note: I killed Opera, Iron and Teams before I ran the timings 14:18
Geth rakudo/main: 69d570d21a | (Elizabeth Mattijsen)++ | 7 files
Make .fmt a multi everywhere

To allow it being augmented in 6.e to allow for candidates taking the new Format object
14:22
rakudo/main: a2d616a0fa | (Elizabeth Mattijsen)++ | 5 files
Give .fmt a single proto in the setting
15:09 kurahaupo left 15:12 kurahaupo joined 15:14 kurahaupo left 15:18 kurahaupo joined 15:20 kurahaupo left 15:25 kurahaupo joined 15:31 kurahaupo left 15:34 kurahaupo joined 16:17 kurahaupo left 16:22 kurahaupo joined 16:46 kurahaupo left 16:57 kurahaupo joined 17:40 sena_kun joined 18:00 reportable6 left 18:01 reportable6 joined 18:20 kurahaupo left 18:21 RakuIRCLogger left, RakuIRCLogger joined 18:25 kurahaupo joined 18:40 kurahaupo left 18:45 kurahaupo joined 19:06 kurahaupo left 19:11 kurahaupo joined
gfldex `Backtrace` is fetching code object names via nqp. Is this a bootstrappy thing or does it evade my mixin intentinally? github.com/rakudo/rakudo/blob/main...e.pm6#L198 20:03
vrurg_ gfldex: what do you mean 'bootstrappy'? 20:08
20:08 vrurg_ is now known as vrurg
gfldex My first guess was that backtraces have to work early in the compilation of Rakudo itself. 20:13
ohh, there is also nqp::setcodename! 20:16
gfldex goes to abuse that
:-/ That doesn't work either. 20:22
vrurg What did you use it with?
Whatever, &foo.set_name("bar") does use setcodename anyway. So, it's something different. 20:24
BTW, for a multi-dispatch you'd have to apply it to every candidate.
gfldex That's exactly what I'm trying to do. 20:28
here is the code: gist.github.com/gfldex/c6b3dc2f6c6...2f67508e35 20:31
The mixin works for the candidates but Backtrace::Frame ignoes it because it is using nqp::getcodename . 20:32
20:32 kurahaupo left
vrurg Try just r.set_name(...) 20:33
m: sub foo { say Backtrace.new.Str; }; &foo.set_name("bar"); foo; 20:34
camelia in sub bar at <tmp> line 1
in block <unit> at <tmp> line 1
vrurg Argh, yes, there is a problem about that: when the trait is applied the routine compilation is not done yet. 20:36
20:38 kurahaupo joined
vrurg At some point later finish_code_object on the World gets invoked which rewrites any name change. 20:38
gfldex r.set_name does change the name in nqp-land. If I use nqp::getcodename right after setting it, I get the correct name. But it wont show up in the stacktrace. I'm even more confused then usual.
vrurg was already dancing on these rakes. :)
gfldex ohh
vrurg Compile time is compile time. It hides surprises. 20:39
gfldex Should be a solvable problem in my case tho. 20:40
vrurg The only compiler-independent solution would be to have some kind of fixup at run-time. Nothing better comes into mind at this moment. 20:41
gfldex First time I used an INIT phaser and I'm a raku beginner since 2008! 20:45
20:52 sena_kun left 20:57 kurahaupo left 21:02 kurahaupo joined 21:09 kurahaupo left 21:14 kurahaupo joined 21:16 kurahaupo left 21:23 kurahaupo joined 21:31 kurahaupo left 21:36 kurahaupo joined 22:41 kurahaupo left 22:46 kurahaupo joined
Geth rakudo/main: f3bb7a2c21 | (Elizabeth Mattijsen)++ | src/core.e/Formatter.pm6
Add Format.count method

To allow introspection to find out how many arguments a given Format expects.
23:04
rakudo/main: eceaeeaef7 | (Elizabeth Mattijsen)++ | 2 files
Add .fmt(Format:D) candidates where appropriate

By creating clients of the Format.handle-iterator implementation detail method. Sadly, this meant creating augments for all QuantHash classes separately, as one cannot augment roles.
rakudo/main: 143aac0765 | (Elizabeth Mattijsen)++ | src/core.e/Fixups.pm6
Correct comment, japhb++ for the catch
23:08
ugexe I don't think a name like .count method on something like Format is very clear what its for 23:09
argument-count would intuitively be the number of arguments 23:10
or an argument to return the arguments expected, and then call .elems on that?
lizmat it's analogous to Signature.count 23:11
ugexe ah i see, nevermind then
lizmat it's conceptually the .count of the Callable that is in the Format