🦋 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:02 reportable6 joined 01:48 kjp_ left 01:53 kjp joined
Geth rakudo: MasterDuke17++ created pull request #5316:
wip use new stat syscall in DirRecurse
03:59 linkable6 left, evalable6 left 04:00 evalable6 joined 04:02 linkable6 joined 04:26 squashable6 left 04:27 squashable6 joined 06:00 reportable6 left 06:02 reportable6 joined 07:02 squashable6 left, bloatable6 left, committable6 left, greppable6 left, shareable6 left, tellable6 left, sourceable6 left, coverable6 left, reportable6 left, benchable6 left, quotable6 left, nativecallable6 left, statisfiable6 left, notable6 left, linkable6 left, evalable6 left, bisectable6 left, releasable6 left, unicodable6 left 07:03 greppable6 joined, nativecallable6 joined, quotable6 joined, linkable6 joined, statisfiable6 joined, benchable6 joined, bisectable6 joined, unicodable6 joined 07:04 sourceable6 joined, squashable6 joined, shareable6 joined, releasable6 joined, bloatable6 joined, notable6 joined, committable6 joined, reportable6 joined 07:05 coverable6 joined, evalable6 joined, tellable6 joined 07:55 sena_kun joined 09:14 sena_kun left 10:29 quotable6 left, nativecallable6 left, bloatable6 left, unicodable6 left, greppable6 left, releasable6 left, shareable6 left, squashable6 left, benchable6 left, linkable6 left, notable6 left, bisectable6 left, reportable6 left, tellable6 left, statisfiable6 left, coverable6 left, evalable6 left, sourceable6 left, committable6 left 10:30 quotable6 joined, greppable6 joined, sourceable6 joined, linkable6 joined, bloatable6 joined, tellable6 joined, notable6 joined 10:31 unicodable6 joined, committable6 joined, releasable6 joined, evalable6 joined, nativecallable6 joined, coverable6 joined 10:32 shareable6 joined, bisectable6 joined, squashable6 joined, benchable6 joined, statisfiable6 joined, reportable6 joined 10:53 nine left, nine joined 11:25 sivoais left 11:56 sivoais joined 12:00 reportable6 left 12:01 reportable6 joined 12:35 sivoais left 12:47 sivoais joined
lizmat nine: looks like support for :P5 would yield up to 28 test files 15:33
nine: a worthy new goal for me? 15:34
japhb I'm surprised it's that many ... but "yes please". :-) 15:39
[Coke] obligatory lizmat++ nine++
lizmat ok, so when I'm gonna do it, would it be a problem if the resulting AST would deparse as a Raku regex ? 15:44
japhb That's both an interesting question and a valuable feature. :-) 15:51
There's still the ability to grab the original *text* of the code that was parsed, yes? So it's not like the original :P5 variant is just *gone*, rather that it wouldn't be represented as special nodes 15:52
lizmat well, that depends on the approach I'm going to take 16:01
generally, the original source can currently not be fetched, but that *is* in the works (the Origins framework)
16:10 nine left, nine joined
Geth rakudo/main: 5fc5c32ebd | (Elizabeth Mattijsen)++ | 7 files
RakuAST: refactor handling of rakudoc blocks

  - save margin with all remaining rakudoc objects
  - add "rakudoc-table" as highlighting category
  - use new :directive / :for flags
  - remove margins from paragraphs in RakuAST::Doc objects
  - make deparsing *much* closer to the original (by reproducing
... (11 more lines)
SmokeMachine What’s origin framework? 16:38
lizmat: ^^ 16:39
lizmat github.com/rakudo/rakudo/blob/main...ns.rakumod
SmokeMachine lizmat: thanks! Taking a look! 16:42
17:16 vrurg left, vrurg joined 17:22 vrurg left 17:46 sena_kun joined 17:51 vrurg joined 18:00 reportable6 left 18:02 reportable6 joined 18:27 vrurg left 18:37 vrurg joined
Geth JSON-Unmarshal/main: 5 commits pushed by (Vadim Belman)++ 20:38
20:48 sena_kun left
Geth JSON-Unmarshal/main: 1d053cbf6d | (Vadim Belman)++ | lib/JSON/Unmarshal.rakumod
Make it possible to non-Any objects with unmarshal()

It's been previsouly done for `_unmarshal`, but this signature was overlooked accidentally.
JSON-Unmarshal/main: 209ec9e7ad | (Vadim Belman)++ | 2 files
Update documentation according to the latest changes

  - add signatures of the `unmarshal` sub
  - document its named parameters
  - move the part about `is unmarshalled-by` trait into its own section
JSON-Unmarshal/main: fa28230ae9 | (Vadim Belman)++ | Changes
Updated Changes
JSON-Unmarshal/main: 344ec60f8d | (Vadim Belman)++ | 2 files
MasterDuke anyone see anything obviously wrong/missing in github.com/MoarVM/MoarVM/pull/1762 and github.com/rakudo/rakudo/pull/5316 ? i keep thinking it's just going to be some silly copy/paste-o, but i've looked them over a couple times without seeing it 21:30
vrurg MasterDuke: I haven't tried to analyze it, lacking time for that. But what's the advantage of using newdisp? 22:22
MasterDuke vrurg: jnthn and nine have suggested that particularly io-related ops should be done as syscalls. i guess because they can be better speshed? 22:30
vrurg I thought you know. :) Anyway, the advantage I see immediately is it should be easier to extend with new APIs. Though there must be something else too. 22:32
MasterDuke i believe the syscall allow for better description and analysis of their arguments, so lend themself to better optimization. but that's just my thought 22:35
ugexe i wonder if its related to the upgrade-repository function specifically, or if thats just the first instance it hits 22:52
i guess its from `for $short-dir.dir -> $file {` 22:55
MasterDuke yep 22:57
ugexe (next if $entry eq '.' or $entry eq '..') 22:58
MasterDuke that's from the first commit though, things were fine with just it 22:59
ugexe so its the IO::Path commit that gives the posted error? 23:01
MasterDuke yeah 23:02
ugexe thats odd, because if its the call to `.dir` that is causing the issue then it should be exercising only the code from the first commit 23:03
i.e. `method dir` uses DIR-RECURSE, and doesn't really use anything in IO::Path besides call $.absolute 23:04
ah, i guess it could also be related to github.com/rakudo/rakudo/blob/5fc5...#L176-L181 23:06
upgrade-repository calls !repository-version (linked above)
so seems like maybe the call to .f isn't working correctly? 23:07
MasterDuke yeah, it seems to be something where it thinks a dir is a file (i.e., `.f` is true when it should be false) 23:08
which is why i was hoping it was a silly typo in my .f edit (or its implementing syscall), but no luck so far 23:09
(and i confirmed that the first commit builds and installs ok, now running a spectest)
ugexe i think .f is returning false when it should be returning true fwiw 23:11
could probably try something like nqp -e 'nqp-stat-calls-to-check-dot-f' to test 23:13
MasterDuke it looks to me like it's trying to "open()" a directory
ugexe yeah. but 23:15
if ($version < 1) {
for $short-dir.dir -> $file {
for it to hit that second line, $version has to be 0. $version gets set to 0 if .f returns false
$version 0 is super old, so it probably doesn't even get exercised anymore 23:16
MasterDuke trivial examples are correct
ugexe in normal circumstances
maybe its the .unlink then?
MasterDuke [dan@alexandria rakudo]$ ./rakudo-m -e 'use nqp; my $s := nqp::dispatch("boot-syscall", "file-stat", "VERSION", 0); say nqp::dispatch("boot-syscall", "stat-is-reg", $s)'
[dan@alexandria rakudo]$ ./rakudo-m -e 'use nqp; my $s := nqp::dispatch("boot-syscall", "file-stat", "t", 0); say nqp::dispatch("boot-syscall", "stat-is-reg", $s)'
[dan@alexandria rakudo]$ ./rakudo-m -e 'use nqp; my $s := nqp::dispatch("boot-syscall", "file-stat", "t", 0); say nqp::dispatch("boot-syscall", "stat-is-dir", $s)'
[dan@alexandria rakudo]$ ./rakudo-m -e 'use nqp; my $s := nqp::dispatch("boot-syscall", "file-stat", "VERSION", 0); say nqp::dispatch("boot-syscall", "stat-is-dir", $s)'
i didn't touch .unlink though 23:17
ugexe i mention it because its the only file-like operation that gets done in that loop 23:18
oh, rather
the next line of the loop
my @ids is List = $file.lines.unique; 23:19
.lines on a path would try to open it i think
MasterDuke yep, that's the line where it's failing
ugexe i missed that part
MasterDuke the backtrace goes 195, 194, 193 23:20
but i think your right that it doesn't get into that `$version < 1` part of the code on main 23:21
ugexe still, for it to get inside that loop means the !repository-version is either incorrectly returning false for that call to .f, or the slurp it does is somehow returning 0
MasterDuke afk for a while, should be back later 23:22
ugexe raku -e '"lib".IO.lines' 23:27
'lib' is a directory, cannot do '.open' on a directory 23:28
on main, trying to call .lines on a directory gives a slightly different error
MasterDuke that's surprising, what's the error on main? (turns out i'm not afk just yet) 23:37
that comes from IO::Handle.open 23:40
huh. why an IO::Handle?
because IO::Path.lines calls self.open? but why is self an IO::Handle? 23:43