🦋 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 sjn joined, tbrowder__ joined, timo joined, |Tux| joined, reportable6 left, ugexe joined 00:01 reportable6 joined 00:03 jgaz joined 00:05 guifa joined 00:27 jgaz left 00:29 jgaz joined 00:55 MasterDuke joined
MasterDuke `Type check failed in assignment to $s; expected Stat but got BOOTStat (BOOTStat)`. i'm now trying to create an actual class in raku and use it, but even wrapping the result of the nqp::dispatch("boot-syscall", "file-stat", "<path>") in nqp::hllizefor still give this error 01:07
where my experimentation looks like: `class Stat is repr("Stat") { method is-dir(::?CLASS:D:) { use nqp; nqp::dispatch("boot-syscall", "stat-is-dir", self) }; }; IO::Path.^add_method("stat", method (IO::Path:D:) { use nqp; my Stat $s = nqp::dispatch("boot-syscall", "file-stat", nqp::decont_s(self.absolute), 0); return $s } ); IO::Path.^compose; my 01:09
$s = "TODO".IO.stat; say $s.is-dir`
timo the file-stat syscall could take a type as argument and create an instance of that, then you don't need to add an hll type and entries to hll structs and all that 01:23
i think maybe Stat is "special" enough that it doesn't need to get support from the hll mechanism 01:24
MasterDuke not sure what you mean
i don't know what other types we would want to create from file-stat
timo Stat instead of BOOTStat 01:25
in fact, if the Stat-repred type is passed to the file-stat syscall, there doesn't need to be a BOOTStat at all
the BOOT types are useful for when the code is run too early to have the "proper" types that are defined somewhere in nqp and/or rakudo, since we can't create an instance of something without having the class for it, and creating "proper" classes kind of needs nqp or raku code 01:30
MasterDuke well, would this be simpler if i actually did it in rakudo instead of at runtime (which was just to make testing faster)? 01:34
timo i'm not sure what you mean by "in rakudo" and "at runtime" 01:39
MasterDuke i was just running the above code via `raku -e '...'`, which is why i needed the `^compose`. but if i stick it in IO/Path.pm6, would anything change? 01:44
timo no, there is currently nothing that makes file-stat able to return a Stat instead of a BOOTStat 01:47
hllizefor relies on a little "registry" that stores a type for a "role", and for the BOOTStat type to also have the same role 01:48
without all that, hllizefor will just be a no-op and cause the type mismatch you see
passing in the type you want as an argument to the file-stat syscall lets you bypass all that 01:49
added bonus: if you check if it's a type object or an instance, an existing instance could be overwritten with no need to allocate if you keep the Stat around between file-stat calls 01:50
MasterDuke hm, interesting. thanks, i'm afk now, but will play with that later 01:51
04:13 nativecallable6 left, evalable6 left, sourceable6 left, statisfiable6 left, benchable6 left, coverable6 left, notable6 left, squashable6 left, bloatable6 left, quotable6 left, greppable6 left, committable6 left, releasable6 left, unicodable6 left, linkable6 left, bisectable6 left, reportable6 left, tellable6 left, shareable6 left 04:14 evalable6 joined, shareable6 joined, notable6 joined, tellable6 joined, sourceable6 joined, coverable6 joined, unicodable6 joined 04:15 statisfiable6 joined, committable6 joined, bisectable6 joined, quotable6 joined, linkable6 joined, reportable6 joined, greppable6 joined, nativecallable6 joined, bloatable6 joined, benchable6 joined 04:16 releasable6 joined, squashable6 joined 04:33 nebuchadnezzar left, nebuchadnezzar joined 06:00 reportable6 left, reportable6 joined 06:28 dogbert11 joined 06:29 dogbert17 left 07:17 dogbert11 left 07:25 dogbert11 joined 08:49 sena_kun joined 09:49 linkable6 left, evalable6 left, linkable6 joined 09:51 evalable6 joined 11:33 lucs left 11:34 lucs joined 12:00 reportable6 left, reportable6 joined 12:05 ab5tract joined
Geth rakudo/main: 90aa9c66da | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: fix issue with recursive markup

Specifically, if outer markup was using < or <<, and inner markup was using «, then the end » would not be detected, causing misparsing and a worry. Also improve the wording of said worry.
13:05 linkable6 left, evalable6 left, evalable6 joined 13:07 linkable6 joined
Geth rakudo/main: 2c2c4d4e8a | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/LegacyPodify.pm6
RakuAST: fix podification of embedded markup after newline
timo MasterDuke: reminder to make sure the dir recurse and whatnot handle files with terrible filenames by using utf8-c8, for example when you `touch $(printf "\xFE\xFF")` and other invalid utf8 nonsense 13:24
the result when printed would look like "􏿽xFE􏿽xFF".IO that is how rakudo prints stuff that was decoded with utf8-c8 and then encoded as utf8 13:47
since ideally you wouldn't print bytes that aren't valid utf8 to stdout, that's just politeness 13:48
13:58 sena_kun left 14:00 sena_kun joined
Geth rakudo/main: 55537e9b29 | (Nick Logan)++ | 3 files
Remove deprecated --nqp-lib option

The --nqp-lib option has had no effect for years, and it was supposed to be removed long ago. This removes any remaining
  --nqp-lib option related code.
rakudo/main: 1b460be191 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
Merge pull request #5306 from rakudo/ugexe/remove-nqp-lib-leftovers

Remove deprecated --nqp-lib option
rakudo/main: c7e6e5af8d | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: make check for meta depend on *last* | seen

This allows | to be used in the lemma of L< and X< without needing to escape them.
rakudo/ugexe/distributionfy-core-dists: 339d905851 | (Nick Logan)++ | 35 files
Copy modules from lib/ to individual distributions at core-lib/

As the first step of splitting the core modules into multiple distributions we will copy the modules into subdirectories of core-lib/, grouping them in a way that seems logical. In a future step we will incorporate these new paths to various parts of the tooling (since we will need to do -Icore-libs/BUILDPLAN,
  -Icore-libs/NativeCall, and so on) and delete the still existing
lib/ directory.
rakudo/ugexe/distributionfy-core-dists: 7a8b7d2276 | (Nick Logan)++ | 131 files
Update tests to use core-libs/

Now that the modules in lib/ have been broken into multiple distributions inside of core-libs/ we need to actually use them. Previously this would have been handled via e.g. t/harness5 using PERL6LIB=lib. However, a single directory cannot always represent all the core distributions, so there are many cases where not ... (14 more lines)
15:03 dogbert11 left 15:50 Xliff joined
Xliff Raku-GLib suite timing statistics for Raku 2023.06.32.g.101.d.3.ca.5.d.0 15:50
Using the following processor: 13th Gen Intel(R) Core(TM) i9-13900K
Total number of projects: 33 (506183 loc)
Total non-parallel compile times: 5434.090 (164.669 avg)
Total parallel compile times: 1002.853 (30.389 avg) 5.419x speedup
Geth rakudo/main: d72c562dfe | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: a better way to extract meta-info from markup

Take the last atom: it *must* be a Str because we don't allow markup in the meta of L<> and X<>. Split that on the first | seen (which could well be the first character). Use that as meta. Adjust atom accordingly, or remove it if it has now become empty.
This fixes some corner cases in the Raku documentation, but breaks other cases, such as L<foo::(bar|baz)|url>, which will now have to be written as L<V<foo::(bar|baz)>|url>, which sadly isn't rendered correctly by Pod::To::Text.
rakudo/main: 15f9685b0c | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: fixed borked (private) method call
lizmat meh, tests didn't spot that
16:16 SmokeMachine left, SmokeMachine joined 17:25 ab5tract left
nine MasterDuke: I don't see a need for hllizefor. Your Raku class can just wrap the otherwise opaque BOOTStat object. Same as IO::Handle just stores the !PIO and passes it to nqp ops 17:29
17:51 bisectable6 left 17:53 bisectable6 joined 18:00 reportable6 left, bisectable6 left 18:01 reportable6 joined 18:02 bisectable6 joined
Geth ¦ problem-solving: finanalyst assigned to coke Issue POD6 to RakuDoc revision process github.com/Raku/problem-solving/issues/375 18:17
rakudo/main: 1beeb166ad | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: fix handling of L<C<foo>>

Aka, a L<> or X<> with a markup code and *no* | or meta info. This could be considered a user error, but it should handle this without dying.
19:13 bisectable6 left 19:15 bisectable6 joined
Geth rakudo/main: 1b68eb7d95 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Fixups.pm6
RakuAST: handle E< > more friendly

aka, just whitespace between < >. Parse this more friendly by just leaving the atom in place without any meta information.
21:23 vrurg left 21:39 sena_kun left 21:56 vrurg joined 22:17 bisectable6 left 22:20 bisectable6 joined 23:52 linkable6 left, evalable6 left, evalable6 joined 23:55 linkable6 joined