🦋 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 06:00 reportable6 left 07:17 lizmat joined 07:21 lizmat_ left
Geth rakudo/main: 0eb99b8a94 | (Stefan Seifert)++ | src/core.c/Exception.rakumod
Fix reporting of X::Role::Initialization errors

The $.role attribute was passed to the constructor and used for creating the error message but was not actually declared as an attribute.
07:22
07:41 finanalyst joined 08:37 finanalyst left
Geth rakudo/main: a219c9bc47 | (Stefan Seifert)++ | 2 files
RakuAST: fix mixin creation with constructor argument

In 69 but Foo(1) the argument has to be passed to the &infix:<but> function as :value(1). It will then be passed on to the role constructor.
08:53
nine 1053
ab5tract climbing! 10:12
nine: so it's definitely this "memmem32" code that is breaking things (re: R#5550) 10:15
linkable6 R#5550 [open]: github.com/rakudo/rakudo/issues/5550 [Fixed in RakuAST] Simple literal-only regex fails
10:15 linkable6_ left
ab5tract a while back you asked if we knew what this `:rxtype<scan>` thing was actually doing.. it looks like for `:rxtype<literal>` we enable a pre-search scan that does a quick `index_s`, presumably to fail faster 10:17
that `index_s` calls `MVM_string_memmem_grapheme32`, which in turn calls `memmem_uint32`, which does the modulus based scan 10:20
replacing `MVM_string_memmem_grapheme32` with its previous contents fixes the issue. but the commit message of `e71ba738` references a 4x-15x speedup. 10:22
so I'm feeling a bit stuck about resolution options 10:25
I don't even know what test corpus samcv used when they measured that speedup 10:29
nine If in doubt correctness trumps speed. Of course would be nice to fix the actual bug and get both :) 10:39
ab5tract indeed... I guess I should have mentioned that I'm at the end of my skillset when it comes to the relevant C code :) 10:43
I've only used to debugging styles: printing swear words at opportune locations and comfy IDE integrations 10:44
let's add a third :) 10:51
nine I'm still at printing swear words :D 10:53
Well that and poking at stuff in gdb
ab5tract nine: are you using the `rakudo-gdb-m` wrapper? because it (and `rakudo-lldb-m`) both still reference `perl6.moarvm` ... gist.github.com/ab5tract/9030eb229...079e546cfe 10:59
though changing it to `rakudo.moarvm` or `rakudo-debug.moarvm` just gives a `ModuleLoader.moarvm not found` error 11:02
It looks like --libpath="\@nfp(\@nqp::libdir@)@" in tools/templates/moar/Makefile-runner_opts.in doesn't return anything (anymore) 11:20
nine Nah, I just use gdb --args ./rakudo-m ...
ab5tract TIL 11:21
nine Ever since rakudo-m became a proper binary, the wrapper kinda lost its purpose
ab5tract I guess that's why it's a bit of a rotten carcass
probably better to rewrite them than fix them, if we are going to keep them 11:24
11:25 sena_kun joined 12:10 sena_kun left 12:12 sena_kun joined
Geth nqp/main: 97217442cf | ab5tract++ | tools/lib/NQP/Config/NQP.pm
Allow --moar-option='--no-optimize' to actually work
12:42
ab5tract I'll be honest, I'm a bit brain boggled about how `Configure.pl` in rakudo.git depends on a Perl module in `nqp.git` :) 12:43
ah, we have `./tools/lib/NQP/Config/Rakudo.pm`, missed that somehow 12:45
but I fixed my issue with rakudo's Configure.pl by editing the module in nqp .. so ... 🤷 12:47
unfortunately I've used just about all of my brain juice just getting to this point where the debu 13:03
*the debugging process is available
13:43 MasterDuke joined
MasterDuke ab5tract: some of the comments here reviews.freebsd.org/D2601 seem relevant 13:44
tellable6 2024-04-18T06:52:56Z #moarvm <nine> MasterDuke: still doubt that would bring any measurable benefit. Mind that I could also just be wrong.
hey MasterDuke, you have a message: gist.github.com/11f155971e1c30cfbb...77115c8a97
MasterDuke they mention a bug that was fixed. maybe you could compare that implementation with ours? 13:45
ab5tract MasterDuke++
unfortunately this bug fix predates the implementation of memmem_uint32, but I'll still check this for viability 13:48
maybe something was lost in translation
MasterDuke and there might be newer bug fixes/reports, that's just the first one i found 13:49
ab5tract Yup, looking at reviews.freebsd.org/source/src/his...g/memmem.c 13:54
At least one
but part of the issue is... *none* of this references a `memmem_uint32` 13:55
It's hard for me to grok how much of the memmem32 patch was simple porting and how much as adapted 13:56
MasterDuke have you been able to construct an nqp::index_s call that exhibits the bug? 13:58
afk for probably a while & 13:59
ab5tract it's actually a MAST:Op
I haven't tried to create a "tiny" version, but that's a good idea 14:00
14:58 kjp left
ab5tract I wonder why we use 32-bits for our graphemes? wasn't UTF-16 already mostly abandoned as "more bits than necessary"? 15:42
even more curious.. the haystack string is stored as MVM_STRING_GRAPHEME_32 but the needle is stored as MVM_STRING_GRAPHEME_8 16:31
nine UTF-16 was the worst of both worlds. It wasted a lot of space on real-world strings that would fit in just 1 byte while it still was a variable length encoding, because 16 bits is just not enough. UTF-32 is a decent internal representation as each unit really represents a code point 16:48
MasterDuke aren't the graphemes 32-bits to support synthetics? 17:03
i wouldn't mind if the string-related code in moarvm was overhauled (probably to have more size-specific code paths for speed), but it's a decently sized undertaking 17:06
this was a poc of the type of thing i'm thinking of github.com/MoarVM/MoarVM/compare/m...g?expand=1 17:13
ab5tract nine: thanks for the clarification
MasterDuke: that's a link to open a PR, rather than a PR proper 17:14
MasterDuke yeah, i never created a PR
ab5tract ack. I will check the branch on your repo then 17:15
MasterDuke it's just that one commit
ab5tract regarding the FreeBSD memmem, it's definitely worth updating 3rdparty/memmem.c to the latest and greatest 17:18
but the meat of memmem32.c is apparently samcv's own adaptation 17:19
now to find the bug and squash it >:) 17:20
MasterDuke irclogs.raku.org/moarvm/2023-02-20.html has some chat about that branch, why i tried it, and the results 17:23
ab5tract will dig into it, thanks! 17:34
Is assigning -1 to a uint32_t just a run of the mill way to get a variable holding the max value of a uint32_t? 17:35
MasterDuke that's what i would assume 17:36
17:46 finanalyst joined
ab5tract I guess it just feels like an odd pattern, so I was wondering how common it is 17:50
lizmat m: my uint64 $a = -1; say $a
camelia 18446744073709551615
lizmat it is :-)
it beats typing:
m: my uint64 $a = 0xffffffffffffffff; say $a 17:51
camelia 18446744073709551615
lizmat :-)
ugexe anyone tried pasting memmem32.c into a llm and asking it to find the hidden bug? :) 18:03
ab5tract If that actually works… 18:09
I’ll become a believer
18:38 MasterDuke left
ab5tract as usual, I'm extremely underwhelmed by AI: gist.github.com/ab5tract/0ec39f79f...5155f185d4 18:38
lizmat well, the fix is clear: 18:39
To resolve this bug, the two-way string matching algorithm could be modified to handle cases where the maximal suffix of the needle string is not unique. Another possible approach is to use a different string search algorithm altogether.
:-)
ab5tract but that's not the actual problem
m: "Xabddcabacab" ~~ /abacab/ ==> so() ==> say() 18:40
camelia True
lizmat "Another possible approach is to use a different string search algorithm altogether."
18:42 notna joined
ab5tract heh 18:42
releasable6 Next release in ≈4 days and ≈23 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 19:00
releasable6_ Next release in ≈4 days and ≈23 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft
Geth rakudo/main: 35cc0d6aa1 | (Stefan Seifert)++ | 6 files
RakuAST: Prohibit re-binding of parameters (unless rw or copy)
19:50
20:08 notna left
Geth rakudo/main: 171307e928 | (Stefan Seifert)++ | 2 files
RakuAST: Prohibit rebinding of variables declared in bound signatures

my ($a, ) := (1, ); $a := 2; # now fails correctly
20:21
20:55 finanalyst left
Geth rakudo/main: 5f8c7bbeb0 | (Stefan Seifert)++ | src/Raku/ast/term.rakumod
RakuAST: throw targeted exception when trying to re-bind term
21:08
22:08 kjp joined 22:43 bloatable6_ left, coverable6_ left, shareable6_ left, committable6_ left, unicodable6_ left, releasable6_ left, bisectable6_ left, evalable6_ left, greppable6_ left, statisfiable6 left, tellable6_ left, quotable6_ left, sourceable6_ left, notable6_ left, nativecallable6_ left, squashable6 left, benchable6_ left, greppable6_ joined, nativecallable6_ joined, coverable6_ joined, notable6_ joined, squashable6 joined 22:44 bloatable6_ joined, reportable6 joined, bloatable6_ left, nativecallable6_ left, greppable6_ left, squashable6 left, reportable6 left, notable6_ left, coverable6_ left 22:45 quotable6_ joined, linkable6_ joined, coverable6_ joined, notable6_ joined, bisectable6_ joined 22:46 benchable6_ joined, nativecallable6_ joined, statisfiable6 joined, sourceable6_ joined, bloatable6_ joined, unicodable6_ joined, evalable6_ joined, releasable6_ joined, shareable6_ joined 22:47 greppable6_ joined, tellable6_ joined, reportable6 joined, committable6_ joined, squashable6 joined 23:48 shareable6_ left, tellable6_ left, reportable6 left, notable6_ left, benchable6_ left, committable6_ left, nativecallable6_ left, linkable6_ left, quotable6_ left, coverable6_ left, squashable6 left, unicodable6_ left, statisfiable6 left, releasable6_ left, sourceable6_ left, bisectable6_ left, bloatable6_ left, evalable6_ left, greppable6_ left 23:49 greppable6_ joined, releasable6_ joined 23:50 statisfiable6 joined, quotable6_ joined, reportable6 joined, shareable6_ joined, coverable6_ joined 23:51 linkable6_ joined, sourceable6_ joined, squashable6 joined, committable6_ joined, notable6_ joined, benchable6_ joined, nativecallable6_ joined, bloatable6_ joined, evalable6_ joined 23:52 tellable6_ joined, bisectable6_ joined, unicodable6_ joined 23:55 sena_kun left