Skip to content

v0.23.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Aug 01:58
· 117 commits to main since this release

What's Changed

🚀 Features

  • feat(parser,grammar): support bare-identifier adverb declaration names by @tokuhirom in #6835
  • feat(vm): an is rw routine 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-rw call 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 rw loop (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/.sort hand 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 array type smiley in term position, and array is not Array by @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 when matcher 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 %h by 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 grammar onto the real identifier class, and stop a named anon class colliding 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 $s resolves to its package cell, not the caller's my $s by @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 mainline my $x by @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 $proc works 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 honour method ^parameterize by @tokuhirom in #7063
  • fix(scope): give a user lexical $self its 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 %h by @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 %h by @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 .Str is what a regex match and a coercion parameter see by @tokuhirom in #7086
  • fix(signature): scope a where constraint 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 fatal by @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 gather body 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

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