Released: 2026-03-25. Diff.
Version rationale: patch for runtime security fixes plus maintainer/workflow hardening without import-model or runtime floor changes.
Security
- Hardened
php/var/unserializeagainst__proto__/constructor/prototypekey injection by defining those keys as plain own properties instead of letting them mutate the returned object's prototype. - Hardened
php/strings/parse_stragainst dangerous key-path prototype pollution without relying onRegExp.prototype.test, so__proto__andconstructor[prototype]payloads are skipped even if regex guards are tampered with earlier in the process.
Inventory
- Added a separate canonical upstream-surface scope manifest and made enumeration/checking fail on missing expected namespaces, unexpected namespaces, and source-ref drift before triage policy is applied.
- Upgraded canonical namespace discovery from a bare name list into a self-describing namespace-catalog contract, so scope audit now validates namespace names, target version, source kind, and source ref together.
- Added an explicit
enumerate:upstream-surfacemaintainer flow that materializes the full tracked catalog across runtime, docs/source, and manual snapshots, while keepingrefresh:upstream-surfaceas the live-discovery-only alias. - Broadened canonical namespace-audit coverage across the runtime-backed languages by adding catalog discovery for Go, Julia, R, Elixir, Ruby, PHP, and Tcl, and made the maintainer flow treat
docs/upstream-surface-scope.ymlas the planning source of truth before new expansion work begins. - Made runtime catalog discovery safer and more reliable by excluding Python's side-effectful
antigravitymodule from canonical scope and by batching Go package discovery inside one container run with a larger Docker output buffer. - Broadened the upstream-surface inventory beyond the first curated slice, adding new tracked namespaces for Python, Ruby, Elixir, Lua, Tcl, and Perl while keeping the catalog at
untriaged: 0. - Added language-level scope notes and tracked-namespace counts to the website inventory panel so language pages no longer imply they cover an entire upstream language when they still track a deliberate subset.
- Added Python
builtins, Tcldictand standalone value commands, PowerShellSystem.Math, Ruststd::cmp, JuliaStatistics, Rstats, the remaining Lua core libraries, and PerlList::Util/Scalar::Utilto the tracked upstream catalog so the language pages now reflect a much broader and more honest core-runtime roadmap. - Continued broadening the same inventory in-flight with Python
heapq/textwrap, RubyInteger/Float, Goslices, ElixirTuple, PowerShellSystem.Char, and Rust primitivechar, plus a Go generic-symbol normalization fix so those inventories stay clean and comparable. - Closed the last structural gaps in the current project surface by adding upstream tracking for Haskell
list, Kotlincollections/text, and SwiftString, so every language/category currently shipped undersrc/is now represented in the upstream inventory. - Continued the same breadth wave toward official core/stdlib scope with Python
cmath/collections/decimal/random/unicodedata, RubyComparable/Range/Regexp/Symbol/Time, ElixirBase/Date/Keyword/NaiveDateTime/URI, PowerShellSystem.Convert/System.Array, Rust primitivef32/f64, Kotlincomparisons/math/ranges, and SwiftArray/Character. - Continued broadening toward official core/stdlib scope with Python
base64/calendar/html/json/urllib.parse, Gobytes/cmp/maps/unicode/utf8, Tcl's broader core command and ensemble surface, R recommended packages (utils,graphics,grDevices,methods,stats4,tools), JuliaRandom/Printf/Unicode, ElixirDateTime/MapSet/Regex/Time/Version, and additional docs-backed Haskell, Perl, PowerShell, Rust, and Swift core namespaces. - Continued the same breadth push with Python
csv/hashlib/hmac, RubyDir/File/MatchData/Numeric, Goencoding/base64/encoding/hex/math/math/bits, Rcompiler/grid/parallel/splines, JuliaDelimitedFiles/LinearAlgebra, Clojurewalk/zip, and more docs-backed core namespaces for PowerShell, Rust, Swift, Kotlin, Haskell, and Perl while dropping empty runtime-only catalogs like Rdatasets. - Extended the same R breadth wave across the official recommended packages with
class,cluster,foreign,KernSmooth,lattice,MASS,Matrix,mgcv,nlme,nnet,rpart,spatial, andsurvival, keeping the policy sparse through namespace defaults rather than per-function bookkeeping. - Tightened the discovery contract again so every supported language now exposes both a canonical namespace catalog and a deterministic
discover()path, withenumerate:upstream-surfacerunning one unified codepath across runtime-backed and snapshot-backed languages instead of silently bypassing the latter. - Replaced the last snapshot-reuse discovery paths with real canonical extraction for AWK, C, Perl, PowerShell, Rust, Haskell, Kotlin, and Swift, so checked-in upstream snapshots are now discovery artifacts rather than hidden inputs.
- Patched the website build dependency tree against open
fast-xml-parseradvisories by overriding Hexo feed generation's transitivefast-xml-parserdependency to5.5.9, keeping the fix scoped to the website-only build surface. - Hardened the GitHub Actions workflow so PR validation runs with read-only repository permissions, while npm release and website deploy now happen in separate write-scoped jobs only on tags or
main.