Releases: locutusjs/locutus
v3.0.34
v3.0.33
Released: 2026-03-30. Diff.
Version rationale: patch for additive Python runtime expansion plus nightly refresh reliability hardening, without import-model or runtime floor changes.
Expansion
- Added a first
python/bisectharvest coveringbisect,bisect_left, andbisect_right.
Fixes
- Restored PHP-style scalar coercion for
strtotime()numeric input and alignedbcscale()with modern PHP getter/setter semantics, including shared defaultbcmathscale acrossbc*helpers. - Hardened nightly Perl upstream-surface refresh by feeding the discovered namespace catalog through Docker stdin instead of a giant
perl -eargv payload, and improvedrunInDocker()diagnostics when a container exits non-zero without stderr. - Marked Perl upstream-surface discovery as Docker-backed so refresh/enumeration pre-pulls
perl:5.40instead of letting the firstdocker runfail on implicit pull output in nightly CI. - Enabled arm64 emulation in
Nightly Parityso Swift upstream-surface refresh can execute theswift:6.0arm64 symbolgraph extraction path on GitHub’s x64 runners. - Made upstream-surface Docker prewarming platform-aware, so Swift refresh now pre-pulls
swift:6.0forlinux/arm64instead of warming the host-arch image and forcing a failing implicit repull atdocker runtime.
v3.0.32
Released: 2026-03-27. Diff.
Version rationale: patch for additive Python runtime expansion without import-model or runtime floor changes.
Maintenance
- Stopped publishing website pages for internal
src/*/_helpers/*implementation details.
Expansion
- Added a first
python/itertoolsharvest focused on parity-friendly iterable combinatorics:
accumulate,batched,chain,combinations,combinations_with_replacement,compress,islice,pairwise,permutations,product, andzip_longest.
v3.0.31
Released: 2026-03-27. Diff.
Version rationale: patch for PHP runtime parity fixes without import-model or runtime floor changes.
Fixes
- Aligned
php/bc/bcscalewith PHP 8 getter/setter semantics and persisted shared default bcmath scale acrossbc*helpers. - Fixed
php/datetime/strtotimeso numeric input follows the same string-coercion parse path as PHP.
v3.0.30
Released: 2026-03-26. Diff.
Version rationale: patch for additive Python runtime expansion plus workflow reliability hardening, without import-model or runtime floor changes.
Maintenance
- Fixed the CI/nightly Yarn cache-directory lookup to use
corepack yarn config get cacheFolder, so GitHub Actions no longer trips over the global Yarn 1 binary before Corepack activates Yarn 4.
Expansion
- Added a second
python/calendarharvest focused on formatting helpers:
calendar,formatstring,month, andweek.
v3.0.28
Released: 2026-03-26. Diff.
Version rationale: patch for additive Python runtime expansion without import-model or runtime floor changes.
Expansion
- Added a first
python/operatorharvest focused on plain-value operator helpers:
abs,add,and_,concat,contains,countOf,eq,floordiv,ge,getitem,gt,indexOf,inv,invert,is_,is_not,le,lshift,lt,mod,mul,ne,neg,not_,or_,pos,pow,rshift,sub,truediv,truth, andxor.
v3.0.27
Released: 2026-03-25. Diff.
Version rationale: patch for additive Python runtime expansion without import-model or runtime floor changes.
Expansion
- Completed the tracked
python/statisticsmodule with a second harvest focused on advanced statistical helpers:
correlation,covariance,geometric_mean,harmonic_mean,linear_regression,median_grouped, andquantiles.
v3.0.26
Released: 2026-03-25. Diff.
Version rationale: patch for additive Python runtime expansion plus a scoped C runtime-correctness fix, without import-model or runtime floor changes.
Fixes
- Restored the long-standing JS numeric coercion in
c/math/frexpwhile keeping the cleaner labeled tuple return type, so plain JS callers likefrexp("1")andfrexp(true)keep working instead of regressing to non-numeric fraction output.
Expansion
- Added a first
python/statisticsharvest focused on plain-value aggregation helpers:
fmean,mean,median,median_high,median_low,mode,multimode,pstdev,pvariance,stdev, andvariance.
Inventory
- Removed the remaining hidden
defaultNamespacefallback from every supported upstream-surface language by expanding the last implicit namespaces into explicit policy rules, so accepted core/stdlib target definition is now inspectable end-to-end instead of partially inherited from a language-wide default.
v3.0.25
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.
v3.0.24
Released: 2026-03-16. Diff.
Version rationale: patch for a large additive Python math expansion plus the upstream-inventory groundwork that now drives broader namespace harvests.
Inventory
- Reworked the upstream-surface inventory into a compact triage model with namespace defaults and wildcard rules, so we can classify large upstream catalogs without per-function noise.
- Drove the checked-in upstream inventory to
untriaged: 0across all current languages and namespaces, and surfaced the resulting keep/skip/wanted state more clearly on the website.
Expansion
- Added a first
python/mathharvest focused on trigonometric and angle-conversion helpers:
acos,acosh,asin,asinh,atan,atan2,atanh,copysign,cos,cosh,degrees,expm1,hypot,radians,sin,sinh,tan, andtanh.