What's Changed
🚀 Features
- feat(parser,grammar): support bare-identifier adverb declaration names by @tokuhirom in #6835
- feat(vm): an
is rwroutine returns a container (ADR-0059) by @tokuhirom in #6855 - feat(rakuast): routine return types and hyper infix operators (ADR-0011) by @tokuhirom in #6864
- feat: ADR-0037 Slices 4-5 — EVAL context targets the live frame by @tokuhirom in #6878
- feat: ADR-0054 Slices 4-6 -- collapse Slip constants, fix cache gate, close out the ADR by @tokuhirom in #6880
- feat: give a role-mixed value's .WHAT a composition-keyed identity (ADR-0060) by @tokuhirom in #6881
- feat: ADR-0049 slices 4-6 — Nil-decay mutation sites, sentinel retirement, sweep by @tokuhirom in #6885
- feat: ADR-0048 Phase 3 -- one shared placeholder-bind emitter with raku's arity error by @tokuhirom in #6897
- feat: implement Formatter.new by @tokuhirom in #6941
- feat(baghash): implement the .add / .remove per-key count mutators by @tokuhirom in #6970
- feat: make
return-rwcall results assignable and mutable by @tokuhirom in #6972 - feat: Code.line / Code.file report a routine's declaration site by @tokuhirom in #6979
- feat(backtrace): newline-terminate frames, add nice/next-interesting-index/outer-caller-idx by @tokuhirom in #6983
- feat(pod): grow the Pod object model to match rakudo by @tokuhirom in #6986
- feat(concurrency): Thread.new/.run, exit-time thread join, Lock::Async recursion methods by @tokuhirom in #6990
- feat(metamodel): MOP introspection -- lookup/can invocants, Versioning, Documenting, Trusting by @tokuhirom in #6991
- feat: give X:: exceptions the rakudo attributes throws-like was skipping by @tokuhirom in #6998
- feat(batteries): re-measure the three unbundled trackers; bundle Log::Async by @tokuhirom in #7012
- feat: give chained comparison a genuine AST node (Expr::ChainedCompare) by @tokuhirom in #7025
- feat: Code.line/Code.file for a Regex (grammar token/rule) by @tokuhirom in #7033
- feat: implement
$*USER and $ *GROUP dynamic variables by @tokuhirom in #7038 - feat(for): bind the element container in an
is rwloop (ADR-0045 slices 0-1) by @tokuhirom in #7065 - feat(for): the topic and hash sources bind the element container (ADR-0045 slices 2-3) by @tokuhirom in #7068
- feat(container):
.values/.reverse/.sorthand out element containers (ADR-0045 slice 4) by @tokuhirom in #7072 - feat(closure): retire the three unboxed capture families (ADR-0055 slice 1) by @tokuhirom in #7074
- feat(nativecall): marshal a
&callback (Sig)parameter to a real C function pointer by @tokuhirom in #7076 - feat(web): add embeddable WASM package by @tokuhirom in #7152
🐛 Bug Fixes
- fix(regex,compiler): losing
||branch code block, and a listop slip in sink context by @tokuhirom in #6836 - fix(types): native
arraytype smiley in term position, andarrayis notArrayby @tokuhirom in #6843 - fix(supply): propagate a source quit through any depth of chained on-demand whenever sources by @tokuhirom in #6841
- fix(threads): stop publishing containers a spawned block never names (ADR-0039 §8.3) by @tokuhirom in #6854
- fix(parser): diagnose any undeclared bareword
whenmatcher that gobbles its block by @tokuhirom in #6840 - fix(supply): register Promise(supply) sinks on the calling thread by @tokuhirom in #6857
- fix: a shadowing typed declaration no longer leaks its constraint out of a branch/loop by @tokuhirom in #6859
- fix(regex): token-body interpolation provenance + litlen for proto entry (ADR-0046 Slices 2-3) by @tokuhirom in #6860
- fix(vm): type the deferred vivification path's steps so a positional step makes an Array by @tokuhirom in #6862
- fix(regex): rank nested proto candidates by measurement, not by matching them all (ADR-0046 Slices 4-5) by @tokuhirom in #6865
- fix: bound lazy array element assign/delete reify to the touched index by @tokuhirom in #6879
- fix: reflect parametric container roles in of by @tokuhirom in #6883
- fix: split isa_check into nominal-only and does_check-only role tables by @tokuhirom in #6884
- fix: stop light-call fast paths leaking caller state on panic unwind by @tokuhirom in #6890
- fix: preserve composite regex subrule arguments by @tokuhirom in #6891
- fix: test-module-sweep.sh passes() now recognizes TAP # TODO failures by @tokuhirom in #6892
- fix: resolve a package's
our @a/our %hby its qualified mirror, not the bare env key by @tokuhirom in #6894 - fix: Whatever-priming stops at thunk barriers (ADR-0033 Phase 4) by @tokuhirom in #6895
- fix: ADR-0052 Slice 1 -- every construct that runs a body owns a stack base by @tokuhirom in #6896
- fix: make
$*ARGFILES.eof and $ *IN.eof terminate instead of looping forever by @tokuhirom in #6898 - fix: give .splice its own one-arg rule, shared by all three splice paths by @tokuhirom in #6899
- fix: keep a container attribute's
is default(...)across a whole-container assignment by @tokuhirom in #6900 - fix: parse key-less colon pairs in extended identifiers ($take-me:) by @tokuhirom in #6901
- fix: return the Backtrace::Frame from
$!.backtrace[N]instead of Nil by @tokuhirom in #6902 - fix:
< 42/10 >keeps its RatStr allomorph (quote-words vs numeric literal terms) by @tokuhirom in #6903 - fix: preserve captures across regex alternation by @tokuhirom in #6889
- fix: preserve zero-denominator Rat raku repr by @tokuhirom in #6904
- fix: preserve anonymous sub gist names by @tokuhirom in #6906
- fix: parse arbitrary numeric angle-word fractions by @tokuhirom in #6905
- fix: match raku utf8-c8 invalid byte codepoints by @tokuhirom in #6907
- fix: bundle piped take arguments by @tokuhirom in #6908
- fix: emit value before supply done by @tokuhirom in #6909
- fix: preserve submethod routine type by @tokuhirom in #6910
- fix: handle proto signatures and IO special targets by @tokuhirom in #6911
- fix: interpolate named placeholder variables by @tokuhirom in #6912
- fix: honor metaclass methods all flag by @tokuhirom in #6913
- fix: preserve condition wait predicate captures by @tokuhirom in #6914
- fix: memoize is cached routines by @tokuhirom in #6917
- fix: parse indirect parameter type constraints by @tokuhirom in #6920
- fix: dispatch callable Z operator by @tokuhirom in #6921
- fix: include method in invalid qualifier errors by @tokuhirom in #6922
- fix: render implicit topic block signatures by @tokuhirom in #6919
- fix: use effective permissions for IO smart-match by @tokuhirom in #6924
- fix: preserve IO handle display paths by @tokuhirom in #6923
- fix: support empty IO path parts subscripts by @tokuhirom in #6925
- fix: preserve Win32 path separators by @tokuhirom in #6926
- fix: recognize drive paths in Cygwin specs by @tokuhirom in #6927
- fix: expose Scalar for itemized list VAR by @tokuhirom in #6929
- fix: handle Unix path split edge cases by @tokuhirom in #6928
- fix: support Perlin noise language constructs by @tokuhirom in #6930
- fix: pull lazy zip operands by @tokuhirom in #6931
- fix: handle statement-modifier sequences and distant endpoints by @tokuhirom in #6933
- fix: write back grouped meta-assignment lists by @tokuhirom in #6936
- fix: preserve closure sequence array reifiers by @tokuhirom in #6937
- fix: preserve topic in xx thunks by @tokuhirom in #6938
- fix: handle direct smartmatch results in for loops by @tokuhirom in #6940
- fix: upgrade forward-declared role parents by @tokuhirom in #6942
- fix: preserve direct gather list coercion by @tokuhirom in #6943
- fix: coerce rw hash accessor assignments by @tokuhirom in #6944
- fix: dispatch mixin methods while rendering collections by @tokuhirom in #6945
- fix: model collection HOW anonymous mixins by @tokuhirom in #6946
- fix: ignore named arguments in Hash push by @tokuhirom in #6947
- fix(parser): support nested tuple hyper assignment by @tokuhirom in #6948
- fix: make inline for blocks recursively callable by @tokuhirom in #6950
- fix(parser): prime HyperWhatever superscript powers by @tokuhirom in #6949
- fix: make dollar-question-file absolute by @tokuhirom in #6951
- fix(parser): WHAT/HOW/VAR accept a bare {...} hash-literal/block arg by @tokuhirom in #6954
- fix(vm): seed env from local slot before push wraps native int arrays by @tokuhirom in #6957
- fix(runtime): register Dateish as a real composable role by @tokuhirom in #6956
- fix: .^set_name on a builtin type now renames it process-wide, matching Rakudo by @tokuhirom in #6955
- fix(ci): install current Rakudo release for bench ratio baseline by @tokuhirom in #6959
- fix(parser): compound-assign RHS continues past a parenthesized inner assignment by @tokuhirom in #6963
- fix(parser): regex-embedded :my declarators skip $/ correctly by @tokuhirom in #6962
- fix(regex): :my/:constant declarative-prefix lexicals persist to caller scope by @tokuhirom in #6964
- fix(regex): :our declarator inside a grammar token writes through to package storage by @tokuhirom in #6965
- fix(regex): embedded :my declarator sees $0/$/ and persists to caller scope by @tokuhirom in #6966
- fix(parser): converge
anon grammaronto the real identifier class, and stop a namedanon classcolliding with itself by @tokuhirom in #6967 - fix(compiler): decide for-loop slice-vs-element from the subscript's runtime value by @tokuhirom in #6969
- fix(parser): run a bare
{ ... }block as the statement a modifier modifies by @tokuhirom in #6971 - fix: empty colon-call argument lists, and substr's Cool argument numification by @tokuhirom in #6973
- fix(vm): a module's
our $sresolves to its package cell, not the caller'smy $sby @tokuhirom in #6974 - fix: native methods honour Raku's implicit
*%_slurpy named by @tokuhirom in #6975 - fix(metamodel): distinguish role group, individual role, and punned class in .HOW by @tokuhirom in #6976
- fix(vm): stop an in-file
module M { our $x }sharing storage with a mainlinemy $xby @tokuhirom in #6977 - fix(parser):
;in a call argument list opens a trailing empty slice; enum bodies reuse the parenthesized term by @tokuhirom in #6978 - fix(subst): make the s/// replacement a real qq quote by @tokuhirom in #6982
- fix: split "cannot assign to this" into rakudo's three exceptions by @tokuhirom in #6981
- fix(promise): X::Promise::Broken mixin, vow protection, and no duplicate backtrace frame by @tokuhirom in #6984
- fix(grammar): dynamic rule parameters, FAILGOAL, and the <?ww>/<!ww> assertions by @tokuhirom in #6985
- fix: control constructs in expression position and control-exception routing by @tokuhirom in #6988
- fix(mixin): role-mixed values survive coercion, binding, sort, gist and sink by @tokuhirom in #6989
- fix(str): Rat Failure, :x validation, printf method/Junction, is-Str payload by @tokuhirom in #6987
- fix(regex): seven regex-engine and Unicode-name gaps by @tokuhirom in #6994
- fix(enum,range): enum
does Role, EnumHOW introspection, Range int-bounds/minmax, 6.e rotor by @tokuhirom in #6993 - fix(test): throws-like must not silently skip its named matchers by @tokuhirom in #6995
- fix: five signature-parsing and argument-binding gaps by @tokuhirom in #6996
- fix(dispatch): method-literal invocants, MRO attribute order, nextsame into a builtin constructor by @tokuhirom in #6997
- fix(parser): user-defined operators and term-vs-quote-language disambiguation by @tokuhirom in #7001
- fix: attribute and collection container identity (four doc-diff tickets) by @tokuhirom in #6999
- fix: seven Buf/Blob and list-mutator divergences by @tokuhirom in #7003
- fix: EVAL compunit identity, CompUnit introspection, and $*RAKU reflection by @tokuhirom in #7004
- fix: five lazy/gather/Junction divergences, each a different root cause by @tokuhirom in #7005
- fix: six role declaration/composition divergences by @tokuhirom in #7006
- fix: a declaration resets readonly state,
-> $_is a topic scope, literal-list topics are immutable by @tokuhirom in #7010 - fix(parser): six expression/term parser gaps (nested hyper, paren method target, brace postcircumfix, Map.new named args, \qq escapes, imported constants in ternaries) by @tokuhirom in #7011
- fix: seven numeric / coercion divergences from the doc-diff backlog by @tokuhirom in #7009
- fix: five IO / lexical-declaration / autovivification divergences by @tokuhirom in #7007
- fix: mint role_id once per declaration site, not per registration by @tokuhirom in #7014
- fix: render Backtrace::Frame .gist/.raku with Rakudo's attribute shape by @tokuhirom in #7015
- fix: allow whitespace between prefix ++/-- and their operand by @tokuhirom in #7016
- fix: my/our $.x class-level attributes work inside method bodies by @tokuhirom in #7018
- fix: parse space-separated & (...) inline Callable signatures in params by @tokuhirom in #7019
- fix: local sub now shadows a same-named imported NativeCall sub by @tokuhirom in #7022
- fix(runtime): narrow GLOBAL::/OUR:: stash enumeration to real package members by @tokuhirom in #7023
- fix: absorb an escaping when/default succeed at the nearest block boundary by @tokuhirom in #7021
- fix: fold multidim :exists/:kv/:p/:delete onto the canonical hole predicate by @tokuhirom in #7026
- fix: EVAL now reads the caller's current lexical value, not just writes it by @tokuhirom in #7027
- fix: anon class/role/grammar NAME no longer installs a symbol by @tokuhirom in #7028
- fix: R.^pun returns the punned class, not the role group by @tokuhirom in #7029
- fix: keep env in sync for locals a package/module block touches by @tokuhirom in #7031
- fix: pointy blocks in for statement modifiers now consume their own arity by @tokuhirom in #7032
- fix: dispatch a user Str for infix x (string repetition) by @tokuhirom in #7035
- fix: restore current_package unconditionally after a class-body walk error by @tokuhirom in #7034
- fix: closure capture misses free vars read only by a nested named sub by @tokuhirom in #7036
- fix: chdir adverb parsing and :!d existence-test skip by @tokuhirom in #7037
- fix: expose our-scoped file-scope subs in GLOBAL::/OUR:: stash by @tokuhirom in #7039
- fix: support ++/--/prefix ++ on a class-level attribute accessor outside a method by @tokuhirom in #7040
- fix: .wordcase on an allomorph reads its Str part and preserves the type by @tokuhirom in #7041
- fix: reject underscore in a <nu/de> fraction's numerator as a literal Rat by @tokuhirom in #7043
- fix: correct multidim value-adverb shape on a hole, miss, and negation by @tokuhirom in #7044
- fix: mark several immutable lvalues mutsu still let you assign to by @tokuhirom in #7042
- fix: make [x]/[xx] reduce metaops fold left-associatively by @tokuhirom in #7045
- fix: continue a no-paren argument list past an adjacent colonpair by @tokuhirom in #7047
- fix: make a for loop's pointy signature handle a trailing slurpy by @tokuhirom in #7048
- fix: say/print/put/note must not read an adjacent colonpair as an invocant colon by @tokuhirom in #7049
- fix: enforce a for loop's zero-positional-parameter guard in every position by @tokuhirom in #7051
- fix: a method of a class declared inside a block captures the block's free vars by @tokuhirom in #7052
- fix: give the merged Proc::Async Supply a live channel so
whenever $procworks in react by @tokuhirom in #7054 - fix: a grammar's parse result is a cursor of that grammar, not a plain Match by @tokuhirom in #7056
- fix: itemize Array/Hash elements at the construction sites (ADR-0040 slice 2) by @tokuhirom in #7050
- fix(unicode): derive the ranged .uniname names and the surrogate/private-use sentinels by @tokuhirom in #7059
- fix(grep): do not promote a :delete hole to an element container by @tokuhirom in #7061
- fix(mop): stop
grammar Bot::Grammar[...]overflowing the stack, and honourmethod ^parameterizeby @tokuhirom in #7063 - fix(scope): give a user lexical
$selfits own env key (ADR-0061) by @tokuhirom in #7064 - fix(bind): gate
:=ancestor-frame propagation on the compiler-resolved source, not the name by @tokuhirom in #7066 - fix(atomic): anchor a new atomic-lane generation to the published value (ADR-0062) by @tokuhirom in #7069
- fix(return-rw): produce a first-class container for a scalar variable and a list by @tokuhirom in #7070
- fix(bind): a sigilless (
\p) parameter binds the caller's container by @tokuhirom in #7071 - fix(vm): reify deferred Seqs in string context, teach eqv about lazy lists, honour &*EXIT by @tokuhirom in #7073
- fix(runtime): stop EVAL stubs leaking out, and publish nested
our @a/our %hby @tokuhirom in #7075 - fix(container): defer array-element vivification to the write, like raku by @tokuhirom in #7077
- fix(eval): stop two context-dependent suppressions of EVAL failures by @tokuhirom in #7078
- fix(array): read a shared container cell through, not as, the value by @tokuhirom in #7079
- fix(hash): mutate a hash through its shared container cell, not around it by @tokuhirom in #7080
- fix(hash): keep typed/object-hash push semantics on a cell-boxed
%hby @tokuhirom in #7081 - fix(blob): eq/ne between two Blobs compares bytes across Blob types by @tokuhirom in #7084
- fix(coercion): a type object's own
.Stris what a regex match and a coercion parameter see by @tokuhirom in #7086 - fix(signature): scope a
whereconstraint to its declaration, not its caller by @tokuhirom in #7085 - fix(parser):
return()is a zero-argument call, so it returns Nil by @tokuhirom in #7087 - fix(eval): an EVAL'd unit does not inherit the caller's
fatalby @tokuhirom in #7089 - fix(eval): a placeholder at an EVAL'd unit's mainline is X::Placeholder::Mainline by @tokuhirom in #7091
- fix(types): resolve a package-scoped type's short name without env by @tokuhirom in #7095
- fix(operators): the routine form of a numeric-comparison operator is now the operator by @tokuhirom in #7096
- fix(operators): a user-declared operator is scoped to its compilation unit by @tokuhirom in #7097
- fix(types): punned-role isa/smartmatch, Promise subclass factories, mixin type-object gist/definedness by @tokuhirom in #7099
- fix(vm): deliver signal raised while forcing a lazy gather by @tokuhirom in #7100
- fix(vm): an END phaser's frozen capture is no longer clobbered by a same-named closure by @tokuhirom in #7103
- fix(vm):
$/and the capture variables are routine-scoped, like$!by @tokuhirom in #7101 - fix(vm):
==falls back to.Numeric, so two DateTimes naming one instant are equal by @tokuhirom in #7104 - fix(runtime): a captured proto/multi survives its import scope popping by @tokuhirom in #7106
- fix(modules): a required module's top-level MAIN no longer collides with the caller's by @tokuhirom in #7107
- fix(seq): preserve finite closure sequence identity by @tokuhirom in #7108
- fix(binding): detach is copy from sigilless metadata by @tokuhirom in #7114
- fix(lazy): reify finite CatHandle pipelines by @tokuhirom in #7115
- fix(run): inherit child stdio by default by @tokuhirom in #7113
- fix: normalize EVAL parse diagnostics by @tokuhirom in #7117
- fix: rank optional-arity multi candidates together by @tokuhirom in #7118
- fix: preserve INIT phaser placeholder checks by @tokuhirom in #7119
- fix: resolve imported proto multis through code variables by @tokuhirom in #7123
- fix: run hyper/race for on worker batches by @tokuhirom in #7122
- fix: preprocess Rakudo-only eval directives by @tokuhirom in #7126
- fix: retain thread spawn origins for backtraces by @tokuhirom in #7130
- fix: render pod blocks as gist trees by @tokuhirom in #7132
- fix: isolate roles declared by EVAL by @tokuhirom in #7131
- fix: preserve take-rw container aliases by @tokuhirom in #7134
- fix: preserve user class element writes through closures by @tokuhirom in #7136
- fix: yield Tap from do whenever by @tokuhirom in #7139
- fix: decontainerize lvalue return introspection by @tokuhirom in #7140
- fix(vm): retain block match scope through callables by @tokuhirom in #7137
- fix: itemize deferred cached Seq List views by @tokuhirom in #7142
- fix: retire atomic dirty keys by @tokuhirom in #7143
- fix(runtime): match anonymous Any multi parameters by @tokuhirom in #7144
- fix: return newly declared role expression value by @tokuhirom in #7145
- fix(grammar): register anonymous grammars as classes by @tokuhirom in #7146
- fix: implement repl routine by @tokuhirom in #7147
- fix(vm): rebind named for params after start by @tokuhirom in #7148
- fix: return Failure for empty reductions without identities by @tokuhirom in #7149
- fix: include logical die and try backtrace frames by @tokuhirom in #7151
- fix(web): use scoped npm package name by @tokuhirom in #7154
- fix: reject invalid Blob comparisons by @tokuhirom in #7155
⚡ Performance
- perf(compiler): drop both throwaway method-body compiles a type declaration paid by @tokuhirom in #6852
- perf(vm): cache the per-call bare-name dispatch probes by @tokuhirom in #6960
- perf(vm): compiled-method fast path binds simple named/attributive params by @tokuhirom in #6961
- perf(map): route read-only array .map back to the shared compile-once loop by @tokuhirom in #7058
- perf(sort): extract Schwartzian sort keys in one batched map by @tokuhirom in #7060
- perf(dispatch): memoize the native-method augment-override gate by @tokuhirom in #7062
- perf(vm): the rw map loop no longer re-runs the compiler on every call by @tokuhirom in #7109
- perf(vm): closure creation stops rebuilding two per-chunk sets every time by @tokuhirom in #7110
- perf(vm): a closure's body is shared, not deep-cloned on every creation by @tokuhirom in #7111
- perf(vm): a
gatherbody is compiled once, not on every creation by @tokuhirom in #7112 - perf: cache positional callable parameter calls by @tokuhirom in #7125
📝 Documentation
- docs: select Log::Async as the general logging battery, file blockers by @tokuhirom in #6837
- docs: survey compression/archive battery slot by @tokuhirom in #6839
- docs: survey XML parsing/generation battery slot by @tokuhirom in #6842
- docs: note libxml2's 2025 maintainer sustainability crisis in xml.md by @tokuhirom in #6844
- docs(todo): track the four native-type/smiley gaps #6843 left behind by @tokuhirom in #6845
- docs(todo): record t/promise-supply-coercion-async-drive.t load-sensitivity by @tokuhirom in #6846
- docs: lead xml.md's dependency note with the general principle by @tokuhirom in #6848
- docs(adr-0058): the residual try-cell divergences are eager
.map, not a mis-placed LazyList force by @tokuhirom in #6849 - docs: select XML as the XML battery, file bundling follow-up ticket by @tokuhirom in #6851
- docs: cap concurrent build agents at 3, with the evidence for why by @tokuhirom in #6853
- docs(todo): track the EVAL constant-preseed narrowing #6840 left open by @tokuhirom in #6856
- docs: link doc-diff-backlog findings to filed tickets, file 9 new ones by @tokuhirom in #6858
- docs: file batch-2 doc-diff findings across 10 core files by @tokuhirom in #6861
- docs: refresh doc-diff-backlog full-corpus survey (2026-08-22) by @tokuhirom in #6863
- docs: file 17 tickets from doc-diff batch-3 (IO::Handle/structures/mop/independent-routines) by @tokuhirom in #6866
- docs: doc-diff batch4-B triage (Backtrace/Scalar/perl-var/ParametricRoleHOW/Lock::Async/InvalidQualifier/IO::Path::Parts/phasers/TypePretense/Notification::Change) by @tokuhirom in #6869
- docs: doc-diff batch5-B findings (SetHash/Mixins/BagHash/pod/containers/hashmap/Setty/Block/io-guide/Proxy/CompUnit) by @tokuhirom in #6872
- docs: file 11 doc-diff findings from batch5-C re-run by @tokuhirom in #6874
- docs: doc-diff batch-6 re-run findings (Label/Win32/Pair/Attribute/Unicode/MustBeStarted/Proc/traits/glossary/Metamodel::Versioning/regexes-best-practices) by @tokuhirom in #6875
- docs: record ADR-0042 slice 1 as shipped and retract its stale "ready to implement" flag by @tokuhirom in #6893
- docs: move completed tickets to news by @tokuhirom in #6918
- docs(perf): bench-ctor round-3 re-examination -- S3 closed, S2 dead end re-derived, new S6 slice by @tokuhirom in #6958
- docs(todo): close 7 stale tickets, rescope 5, and stop check-value-wall counting prose by @tokuhirom in #6968
- docs: replace the builtin-membership test with one that does not cite a Perl-migration table by @tokuhirom in #7000
- docs(todo): give performance findings their own todo/perf/ directory by @tokuhirom in #7008
- docs(todo): reclassify two architectural findings from tickets/ to deep/ by @tokuhirom in #7017
- docs(todo): record the advent2014-day05 SIGSEGV recurrence, and that it wrote no crash report by @tokuhirom in #7020
- docs(todo): fold the slurpy-hash .raku shorthand finding into todo/deep/ by @tokuhirom in #7024
- docs: link other independent Raku implementations in README by @tokuhirom in #7030
- docs: file the reduce-metaop zero-arg-meaning divergence as a ticket by @tokuhirom in #7046
- docs: record that Proc::Async output chunks do not hold back their final grapheme by @tokuhirom in #7055
- docs: regenerate todo/TRIAGE.md with ticket-blocker and deep/ policy sections by @tokuhirom in #7057
- docs(todo): re-measure two Tier S findings; both were filed under the wrong root cause by @tokuhirom in #7067
- docs(test-vendoring): record the end-of-day composed sweep, 57 -> 40 by @tokuhirom in #7083
- docs(perf): the vendored-Test blocker is the
&-sigil parameter, isolated to one sigil by @tokuhirom in #7092 - docs(test-vendoring): re-run and classify every remaining real-Test regression by @tokuhirom in #7093
- docs: consolidate real Test module tracker by @tokuhirom in #7124
- docs: update real Test performance blockers by @tokuhirom in #7138
- docs: remove resolved selective import ticket by @tokuhirom in #7153
🔧 Maintenance
- refactor(vm): drop the blanket
start-block OTF-compilation exclusion by @tokuhirom in #6838 - refactor: split builtins_multidim_ops into three modules by @tokuhirom in #7053
- test: stabilize real Test roast sweep by @tokuhirom in #7116
- test: load Test::Util in module sweep by @tokuhirom in #7127
- test: avoid native Test todo adverb by @tokuhirom in #7128
- test: align skip dispatch tests with Rakudo by @tokuhirom in #7129
- test: match Rakudo subtest plan diagnostics by @tokuhirom in #7133
- test: tolerate unavailable Rakudo precomp cache by @tokuhirom in #7135
- test: cover sunk lazy Seq through try by @tokuhirom in #7141
Other Changes
- docs: file 16 tickets from doc-diff batch-3 (grammars/syntax/Proc::Async/nativecall/experimental/unicode) by @tokuhirom in #6867
- docs: file 18 tickets from doc-diff batch-3 (Parameter/Match/Mu/subscripts/concurrency) by @tokuhirom in #6868
- docs: file 11 doc-diff batch-4 tickets (Code/DateTime/perl-func/Metamodel/Formatter/X::Cannot::Empty/Exception/nativetypes/Compiler/ArgFiles) by @tokuhirom in #6870
- docs: doc-diff batch-4 triage (operators/MixHash/PrePost/Cygwin/quoting/classtut/ConditionVariable/newline) by @tokuhirom in #6871
- docs: file 11 tickets from doc-diff batch-5 re-run (Routine/signatures/Cool/etc.) by @tokuhirom in #6873
- docs: file doc-diff batch-6-C findings (final sub-batch) by @tokuhirom in #6876
- docs: file 13 new doc-diff findings, batch-6 (final) misc-a re-run by @tokuhirom in #6877
- parser: preserve try throw-site lines by @tokuhirom in #6886
- parser: accept parametric role expressions by @tokuhirom in #6887
- builtins: add Unicode type object by @tokuhirom in #6888
- Fix labeled next/last in repeat while loops by @tokuhirom in #6915
- Fix self-referential gather junction stack overflow by @tokuhirom in #6916
- parser: accept unicode hyper slip prefix by @tokuhirom in #6939
- Fix package rw accessor index assignment by @tokuhirom in #6952
- fix(procasync): absorb unknown nameds, inherit unclaimed streams, real X:: messages by @tokuhirom in #6980
- fix(nativecall): typed pointers, undefined/versioned libraries, lowercase repr classes by @tokuhirom in #6992
- fix: what an embedded regex code block sees, and when a block's state restarts by @tokuhirom in #7002
- fix: render uncaught exceptions with .gist, and three adjacent exception/phaser gaps by @tokuhirom in #7013
- fix(parser): raise the compile-time exception class rakudo raises by @tokuhirom in #7082
- fix(seq): the .cache List view is a List everywhere, and &infix: is the eqv operator by @tokuhirom in #7088
- fix(vm): carry a runtime-name write to the outer lexical it names by @tokuhirom in #7090
- fix(dispatch): a multi is a dispatcher even with nowhere to defer to by @tokuhirom in #7094
- fix(vm): three MUTSU_REAL_TEST=1 residue causes: filename accessor, enum rebind, unknown trait by @tokuhirom in #7098
- fix(vm): a class-decl expression pushes the type object, not a name lookup by @tokuhirom in #7102
- fix: copy sprintf format literals as UTF-8, not Latin-1 by @grondilu in #7120
New Contributors
Full Changelog: v0.22.0...v0.23.0