Geth rakudo: ugexe++ created pull request #6634:
Refuse a regex or branch made up of modifiers alone from 6.e
00:54
[Coke] github.com/coke/raku-blin-release-...ee/2026.09 - latest blin run through fdc7d63 01:09
I'll do a redo on the failing ones, just in case. 01:14
$ rak '[ ]' output-2026.09-2/failures.md 01:16
Segmentation fault (core dumped) rak '[ ]' output-2026.09-2/failures.md
rak 0.3.20, raku v2026.08. 01:17
Uni63 Sitemap Syndicate stayed failing 02:08
on d2e7633, 00ccf31, 00ccf31 02:12
Geth rakudo: ugexe++ created pull request #6635:
Scope the language revision to the compilation unit
02:39
nqp: ugexe++ created pull request #867:
Give each repetition of a bounded quantifier its own NFA state
03:15
ugexe 👀 03:23
04:33 kurahaupo left 06:23 kjp left 06:27 kjp joined 06:31 finanalyst joined
lizmat ugexe: nice set of raku PRs! 07:42
s/raku/NQP 07:43
I will be mostly afk for the next week, so I won't be able to give much support
please make sure each NQP merge is combined with a separate NQP bump in Rakudo for bisectability
07:55 lizmat left 08:27 kurahaupo joined 09:16 finanalyst left
[Tux] Rakudo v2026.08-136-gfdc7d63571 (v6.d) on MoarVM 2026.08-7-g00c8b043b
csv-ip5xs0.277 - 0.281
csv-ip5xs-201.148 - 1.163
csv-parser1.179 - 1.196
csv-test-xs-200.114 - 0.115
test1.928 - 1.979
test-t0.486 - 0.487
test-t --race0.313 - 0.336
test-t-206.619 - 6.653
test-t-20 --race1.654 - 1.716
11:59
csv-test-xs 0.014 - 0.015
tux.nl/Talks/CSV6/speed4-20.html / tux.nl/Talks/CSV6/speed4.html tux.nl/Talks/CSV6/speed.log
Sorry for missing timings. I did a too thorrough cleanup and removed things I should not have removed. Backups++ 12:01
12:21 shareable6 left 12:23 shareable6 joined
Geth rakudo: ugexe++ created pull request #6637:
Keep a unit lexical container out of a dependent's serialization
14:07
rakudo: ugexe++ created pull request #6638:
Let make attach to a capture's own match in its code block
ugexe those two address the blin failures 14:08
ab5tract R#6638 description has some formatting funkiness 15:03
linkable6 R#6638 [open]: github.com/rakudo/rakudo/pull/6638 Let make attach to a capture's own match in its code block
ugexe yeah i hate how various twigils mess up githubs formatting 16:08
[Coke] I fixed it already 16:12
Geth rakudo/main: 8bb5ba5a19 | (Nick Logan)++ (committed using GitHub Web editor) | 5 files
RakuAST: Parse -M arguments as use statements (#6631)

Previously a -M argument was split on :: into a bare module name, so adverbs such as -M'Foo:ver<1.*>:auth<x>' were looked up as a module named "Foo:ver<1.*>:auth<x>" and never found. A pragma given with -M was looked up as a module as well.
... (13 more lines)
16:15
rakudo/main: 11 commits pushed by (Nick Logan)++
review: github.com/rakudo/rakudo/compare/8...3537869d27
16:20
rakudo/main: a8c9e4d1ab | (Nick Logan)++ (committed using GitHub Web editor) | 5 files
Refuse a regex or branch made up of modifiers alone from 6.e (#6634)

Previously a branch of a regex alternation or conjunction made up of nothing but internal modifiers, such as the `:i` in `/ :i | foo | bar /`, compiled to an empty branch. That branch matches the empty string, so the regex matched every input. A regex or group holding only modifiers, such as `/ :i /`, matched the empty string the same way. ... (12 more lines)
16:24
rakudo/main: 6ec31943a4 | (Nick Logan)++ (committed using GitHub Web editor) | 21 files
Scope the language revision to the compilation unit (#6635)

Previously every compile-time check of the language revision read it from the compiler object, which holds a single value for the whole process. Any unit compiled in that process wrote to it: a `use v6.x` pragma, a module compiled in-process because it was not precompiled, or an EVAL. The legacy frontend reset it at the start of each unit, the ... (31 more lines)
rakudo/main: 3815433cbf | (Nick Logan)++ (committed using GitHub Web editor) | 10 files
Keep a unit lexical container out of a dependent's serialization (#6637)

Previously a module that changed a unit lexical container while precompiling repossessed the container into its own serialization, since the container is declared static and the unit frame works on the serialized one itself. Loading that module then handed back the state its precompilation saw, so a registry filled by several modules ended ... (5 more lines)
rakudo/main: 35f83b260d | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
Let make attach to a capture's own match in its code block (#6638)

Previously make attached to the match of the cursor in the nearest enclosing regex frame. In a capture group's code block the legacy frontend resolves that cursor to the enclosing regex, while $/ is the capture's own match, so a make there landed on the enclosing match and the capture's made stayed empty. This attaches to the caller's $/ when it is a match of the parse the cursor belongs to, and falls back to the cursor's match when $/ has been overwritten by a match of another parse.
nqp/main: f3c4afd604 | (Nick Logan)++ | 2 files
Recompute block quantifier limits after a cursor restart

A `** {code}` quantifier evaluates its limits when the regex reaches it and keeps them in frame registers. Backtracking into a subrule restarts its frame, which jumps straight to the pending mark without passing that code, so the landing saw a min and max of zero and accepted any repetition count. Previously `"burden" ~~ /(. ** {2})+ n/` matched with ... (10 more lines)
16:26
nqp/main: fb6f7ab328 | (Nick Logan)++ | 2 files
Count the first repetition of a separated frugal block quantifier once

The frugal branch of dynquant tested `min < 1` into the register that carries the repetition count across the atom. With a separator the entry path jumps past the store that resets that register, so the first repetition counted as two. Previously `"a,a" ~~ /^ (a **? {2} %
  ",") $/` failed to match and `**? {1..3} % ","` stopped one repetition
short of its maximum.
This tests the minimum in its own register.
nqp/main: 502a904fb1 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
Merge pull request #865 from ugexe/ugexe/dynquant-restart-limits

Recompute block quantifier limits after a cursor restart
nqp/main: a179809040 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
Give each repetition of a bounded quantifier its own NFA state (#867)

Previously the NFA builder for `x ** n..m` reused the caller's exit state as the landing state once the minimum count was reached, and built the next repetition from there. When the exit was a real state the remaining repetitions collapsed into self loops on it. When the exit was the fate state, which is how the last atom of a regex is ... (13 more lines)
16:34
16:46 Pixi` is now known as Pixi
Geth nqp/main: 3e6afa227e | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
Drop the cached match when backtracking trims captures (#866)

A code block binds `$/` to the cursor's MATCH, which reifies the capture stack once and is then reused. Pushing a capture already discards that cache, but trimming captures on backtrack did not, so a later code block or assertion saw captures the regex had backtracked past. Previously `'abc' ~~ /(\w)+ <?{ $0.tail eq 'b' }>/` could never ... (6 more lines)
17:14
rakudo: ugexe++ created pull request #6639:
Various nqp bumps
17:15
rakudo/main: 4 commits pushed by (Nick Logan)++ 18:21
rakudo: ugexe++ created pull request #6640:
Settle a channel's closed promise even when the marker is in flight
18:53
19:17 finanalyst joined
Geth nqp: ugexe++ created pull request #868:
Flush the position before subrule arguments and limits blocks run
20:48
[Coke] ugexe: mini blin run at HEAD, verified those 3 issues fixed. 21:16
doing another full run now to catch any nqp issues.
ugexe 👍
21:23 lizmat joined 21:56 lizmat left
Geth roast/ugexe/regex-zerowidth-groups: 2b4bca8439 | (Nick Logan)++ | S05-metasyntax/repeat.t
Test block quantifier limits inside a capture

A capture group runs in its own frame, and backtracking into it restarts that frame. Previously the restart skipped the code that evaluates a
  `** {code}` quantifier's limits, so `(\N ** {8})` backtracked one
character at a time and could match fewer than eight characters.
Fixes rakudo/rakudo#4309
23:14
linkable6 RAKUDO#4309 [closed]: github.com/rakudo/rakudo/issues/4309 [regex] \N**{$foo} backtracks characters one by one
Geth roast/ugexe/regex-zerowidth-groups: 276cfc518d | (Nick Logan)++ | S05-metasyntax/charset.t
Test lookarounds over compound character classes

Previously a lookahead over a character class that mixes backslash sequences with characters, or subtracts one class from another, consumed a character, and a negated one was not inverted at all. A plus sign in front of a negated backslash sequence subtracted instead of adding, and a lookahead over an empty enumeration always matched. This ... (5 more lines)
roast/ugexe/regex-zerowidth-groups: bd259e9b8d | (Nick Logan)++ | S05-metasyntax/charset.t
Test lookarounds over compound character classes

Previously a lookahead over a character class that mixes backslash sequences with characters, or subtracts one class from another, consumed a character, and a negated one was not inverted at all. A plus sign in front of a negated backslash sequence subtracted instead of adding, and a lookahead over an empty enumeration always matched. This ... (5 more lines)
23:15
nqp: ugexe++ created pull request #869:
Honor zerowidth and negate on regex group nodes
23:16
rakudo: ugexe++ created pull request #6641:
RakuAST: drop marker flags from character class subtraction
23:18
roast: ugexe++ created pull request #907:
Test lookarounds over compound character classes
23:19