Skip to content

Releases: KarpelesLab/kataan

v0.0.9

Choose a tag to compare

@MagicalTux MagicalTux released this 05 Sep 23:49
f621630

Added

  • (interrupt) cooperative host interrupt for watchdog deadlines
  • (disposal) await using suspends per resource (ROADMAP §3.14)
  • (intl) per-calendar eras and month names; corpus at 99.99%
  • (module) source-phase imports; await-using owes a tick (+5)
  • (intl) intl 0.6.0 — all nine list combinations, locale separators (+14)
  • (gc) collect during execution at bounded safepoints (+2)
  • (intl) CLDR units, calendar fields, hour cycle, locale negotiation (+41)
  • (atomics) real multi-agent execution — built-ins/Atomics is green (+21)
  • (module) real asynchronous module evaluation (+6)
  • (intl) legacy constructor mode, dayPeriod, era year, formatRange (+17)
  • (web) documentation and playground published to GitHub Pages

Fixed

  • (lib) restore rope's doc comment and alloc gate, fix interrupt intra-doc link
  • (ci) repair --all-features and no_std builds, refresh stale Intl/array expectations
  • (class) super resolves over the live prototype chain, not the AST
  • (array,iterator) 38 conformance bugs; Array.prototype.sort was O(n^2)
  • (parser,expr) 19 conformance bugs in strict/expressions/lexical areas
  • (builtins) ~25 conformance bugs across Symbol/Reflect/Date/JSON/BigInt
  • (regex,string) 31 conformance bugs; bound the start-filter scan
  • (test262) resolve harness includes in subdirectories
  • (class) a using in a static block never disposed
  • (typed-array) Object.seal on a non-empty typed array must throw
  • (array) flatMap iterated a snapshot; make staging measurable
  • (rope) remove a debug print left in materialize
  • (lexer) a regex may follow the ) of a statement head
  • (intl) DateTimeFormat formatToParts was missing numbering-system digits
  • (intl) collation support is per-language, not a global name list
  • (intl) route NumberFormat formatRange through the crate's range support
  • (intl) sensitivity "case" is primary strength + case level
  • (intl) DisplayNames/supportedValuesOf agreement; -u-tz- alias names (+2)
  • (regexp) @@replace must carry WTF-8, and concatenate it canonically
  • (parser) carry program text as WTF-8 so lone surrogates survive (+9)
  • (realm/temporal) swap intrinsics on realm entry; Table 6 month-day (+17)
  • (annexB) per-realm RegExp brand check; B.3.5 for-in initializer (+7)
  • (language) const bindings, of lexing, import.meta, generator steps (+34)
  • (parse) longest valid prefix in parseFloat; ToInt32 radix in parseInt (+2)
  • (web) refresh the conformance figures and derive them all from the ledger
  • (builtins) RegExp RepeatMatcher, function metadata, realms, integrity (+31)
  • (async) PromiseResolve must observe constructor; async-generator ticks (+13)
  • (scope) Annex B.3.3 block-function hoisting is sloppy-only (+6)
  • (lexer) a class body's } ends a statement, so / after it is a regex (+4)
  • (module) evaluate a deferred import's async dependencies (+8)
  • (intl) apply the locale's collation tailoring
  • (shape) break the parent/transition reference cycle
  • (array) Array.fromAsync suspends at each Await (+4)
  • (array) Array.prototype is an Array exotic object (+4)
  • (array) ArraySetLength coercion order and [[Set]] result (+2)
  • (engine) honour replaced built-in prototype methods (+4)
  • (array) generic Array.prototype methods on typed arrays (+6)
  • (ci) drop --locked from the Pages build
  • (nbvm) sync KNOWN_GLOBALS with the installed global set (+ wasm32 support)

Other

  • (for-of) re-rooting the whole item list per iteration was O(n^2)
  • (roadmap) §3.14 await using disposal must suspend per resource
  • (roadmap) §5.1 record the constant-factor sweep and closure result
  • (nbvm) stop materializing fn name/length on every closure allocation
  • (roadmap) §5.0 string iterator drain fixed — it was a duplicate next
  • (iterator) the string iterator had a second, unfixed copy of next
  • (roadmap) array methods fixed; headline back in step with the ledger
  • (array) at/indexOf/lastIndexOf/push were O(n) per call
  • (roadmap) §5.0 array methods copy the whole array per call
  • (roadmap) §5.0 record the delete/iterator fixes and one open item
  • delete was O(n) per call; built-in iterators copied their buffer per step
  • (roadmap) §5.0 record the string cluster; name what is still unswept
  • (string) slice/substring/indexOf were O(n) per call
  • (string) rope-join concat and template literals
  • (string) O(1) indexed reads — ASCII fast path + in-place rope flattening
  • (string) every property access on a string materialized it
  • (regex) AdvanceStringIndex re-transcoded the subject on every call
  • (roadmap) §5.2 start filter now covers classes; §5.0 Map/Set is not quadratic
  • (regex) extend the start-of-match filter to character classes
  • (test262) record why each of the last three failures is not ours
  • (roadmap) refresh the headline from 287 ledgered failures to 11
  • (web) 99.98% — 51,878 of 51,890, 12 known failures
  • (web) 99.97% — 51,876 of 51,890, 14 known failures
  • (roadmap) §3.11 — @@replace closed, and the concatenation rule
  • (web) 99.96% — 51,871 of 51,890, 19 known failures
  • (web) 99.95% — 51,862 of 51,890, 28 known failures
  • (deps) intl 0.6.1 — minimumGroupingDigits (+6)
  • (intl) relative time is CLDR-backed; raise the harness idle bound
  • (web) 99.93% — 51,856 of 51,890, 34 known failures
  • (web) 99.91% — 51,842 of 51,890, 48 known failures
  • (web) 99.87% — 51,825 of 51,890, 65 known failures
  • (web) 99.86% — 51,818 of 51,890, 72 known failures
  • (web) 99.86% — 51,816 of 51,890, 74 known failures
  • (web) refresh the committed conformance figures
  • (deps) intl 0.5.3; fix our numbering-system probe (+10)
  • (roadmap) §3.7 records the global-object write-side design
  • (roadmap) §5.2 rewritten — regex algorithmic gaps are closed
  • (regex) reuse the matcher's working buffers across a scan
  • (regex) skip offsets that cannot start a match
  • (regex) memoize the subject; fix two nbvm correctness bugs found doing it
  • (roadmap) §5.2, the per-call regex subject buffer
  • (regex) stop rescanning every position for an anchored pattern
  • (deps) intl 0.5.1 -> 0.5.2
  • (test262) tell an aborted worker from a hung one; timeout back to 30s
  • (test262) raise the hang timeout from 20s to 90s

v0.0.8

Choose a tag to compare

@MagicalTux MagicalTux released this 27 Jul 20:11
aa43cb7

Added

  • (temporal) astronomical Chinese/Dangi calendars (+5, unbounds the range)
  • (intl) CLDR alias tables for BCP-47 extension subtags (+3)
  • (regex) Unicode 17 property tables, emoji string properties, spec \s (+~45)
  • (engine) per-iteration let, switch TDZ, for-of arguments, tagged-template, optional-chaining, #x in (+17)
  • (engine) yield/await in computed property keys (object literals + class members) (+8)
  • (engine) class super()/this-binding cell + Function/GeneratorFunction subclassing (+17)
  • (engine) Temporal DST duration rounding + IANA links, Array live flatten/map/filter observable order (+21)
  • (regex) reverse-lookbehind captures, lossless surrogate ToString, AnnexB legacy parse (+20)
  • (intl) wire intl-0.5.1 dangi/umalqura calendars + DateTimeFormat interval & non-Gregorian formatting + getCanonicalLocales aliases (+97)
  • (intl) BigInt-exact NumberFormat via puremp::Decimal significant-digits (+4)
  • (engine) String-exotic [[DefineOwnProperty]] + curated fixture corrections (+1)
  • (engine) lexical-env separation for eval/global declaration-instantiation (+17)
  • (engine) Array.fromAsync iterator-driven, RegExp cross-realm brand, ArrayIterator/Proxy-set, destructuring/for-in order (+42)
  • (engine) Temporal lunisolar arithmetic, Array sparse mutators, NumberFormat compact, class extends-null/heritage-TDZ (+70)
  • (engine) formatRange field-level parts, Date.UTC fp, RegExp lastIndex physical (+12)
  • (intl) DateTimeFormat IANA timezone support via the Temporal tz data (+14)
  • (realm,module) Gen/AsyncGen proto-from-ctor-realm-prototype + ShadowRealm importValue (+3)
  • (module) single-module top-level-await via suspendable coroutine (+3)
  • (shadowrealm) genuine realm isolation on the realm-global-swap foundation (+8)
  • (realm) swap global_this/global_scope at realm boundaries (+7)
  • (realm) cross-realm proto-from-ctor for dynamic Function (+1)
  • (module) %AbstractModuleSource% intrinsic (+8)
  • (engine) URI encode/decode, matchAll iterator, class constructor order (+31)
  • (tdz) for-of/for-in head lexical TDZ (+12)
  • (temporal) Duration relativeTo rounding — built-ins/Temporal now 0 fails (+10)
  • (engine) Proxy Set/Get receiver preservation + AsyncFunction tag + Object (+25)
  • (temporal) DST cross-midnight, IANA canon, NudgeToCalendarUnit, hang fix (+40)
  • (temporal) DST/timezone arithmetic — disambiguation, transitions, DST-aware diff (+26)
  • (intl) DTF hourCycle/ZDT-toLocaleString + NF exact-decimal + RTF numbering (+39)
  • (intl) Islamic/Persian dateStyle for Temporal toLocaleString (+3)
  • (language) 3rd contained grind — assignment order, for-of protocol, using decls (+18)
  • (array) precise [[Get]]/[[Set]]/[[Delete]] for hole+accessor mutators (+16)
  • (array) species-create through Proxy, prototype.length, weak-collection tag (+12)
  • (realm) proto-from-ctor-realm — per-realm Intl protos + GetPrototypeFromConstructor (+15)
  • (regex) v-flag property-of-strings (Emoji_Keycap_Sequence) + astral group names (+26)
  • (intl) smaller-services algorithmic — ListFormat, Collator, localeCompare, numbering (+36)
  • (intl) Temporal→DateTimeFormat protocol + toLocaleString + DTF algorithmic (+93)
  • (intl) NumberFormat algorithmic — decimal rounding, BigInt/coercion, accounting (+52)
  • (intl) re-wire Locale/Intl to intl-0.5 CLDR data + bounded aliases (+22)
  • (engine) Promise finally/species, static-block scope, WTF-8 surrogates (+18)
  • (engine) scattered code-tail — class extends, live collections, private-on-proxy (+25)
  • (realm) cross-realm error identity + ArraySpeciesCreate lookup (+19)
  • (atomics) virtual-clock cooperative scheduling for wait/waitAsync (+39)
  • (function) source-text .toString() for classes + computed methods (+7)
  • (typedarray) resizable-buffer OOB + length-tracking view completion (+31)
  • (async-gen) lazy yield* delegation + for-await over sync iterators (+31)
  • (language) diffuse tail — regex-literal LT, strict/global bindings, directives (+30)
  • (class) diffuse grind — direct-eval private names, private-elem invariants (+42)
  • (language) 2nd diffuse grind — lazy IteratorClose destructuring +47 (+48)
  • (builtins) diffuse tail — JSON parse-with-source +9, Set +4, unary-wrapper +2 (+18)
  • (typedarray,temporal) diffuse grind — TypedArray +19, Temporal ISO +27 (+48)
  • (object) diffuse conformance grind — built-ins/Object 67→15 (+52)
  • (language) diffuse conformance grind — statements/expressions (+34, 46 fixed)
  • (temporal,array) diffuse conformance grind — Temporal ISO +92, Array +53 (+142)
  • (temporal) widen Duration to i128 + correctly-rounded total/BigInt→Number (+14)
  • (temporal) per-calendar edge fixes — BC round-trip, era validation, month-until overshoot (+181)
  • (temporal) harden lunisolar leap-month semantics in the calendar layer (+67)
  • (temporal) calendar-aware arithmetic for PlainDateTime/ZonedDateTime/YearMonth (+286)
  • (temporal) calendar-aware arithmetic + PlainMonthDay wiring (+152)
  • (temporal) non-ISO calendar wiring for ZonedDateTime + PlainYearMonth (+410)
  • (temporal) non-ISO calendar wiring for PlainDateTime (+230)
  • (temporal) non-ISO calendar layer + PlainDate wiring (+238)
  • (async-gen) reify method-call arguments in the step machine (+3)
  • (async-gen) spec-shaped request queue + per-await microtask suspension (+7)
  • (conformance) implement Iterator.zip / Iterator.zipKeyed proposal (+33)
  • (conformance) resizable/growable ArrayBuffer + length-tracking views (§3.8)
  • (conformance) GetPrototypeFromConstructor uses newTarget's realm (proto-from-ctor-realm, +45)
  • (conformance) implement mapped arguments object ([[ParameterMap]]) (26 → 2, +24)
  • (jit) direct generic→generic calls + inline ArrayLen; retire JIT_DESIGN.md
  • (jit) direct generic JIT→JIT calls + inline ArrayLen (§2.1 / Pass 6)
  • (jit) inline property-SET + array-element GET/SET fast paths (§2.1 Pass 6)
  • (jit) inline monomorphic property-GET fast path (§2.1 Pass 6)
  • (jit) generic-tier array element access + .length — Pass 5
  • (jit) generic-tier function calls (Op::Call / Op::CallNative) — Pass 4
  • (jit) generic-tier control flow + comparisons + value arithmetic — Pass 3
  • (jit) generic-tier property access (GetProp/SetProp) — Pass 2
  • (jit) generic (NanBox) tier substrate — Pass 1, end-to-end generic Add
  • (host) §4.3 web platform globals + fix no_std build (FloatExt) (+59 tests)
  • (host) §4.5 node-compat builtins — Buffer, path, os, util, querystring, process (+23 tests)
  • (wasm) §2.2 reference types + bulk-table + JS-boundary tables (+9 tests)
  • (host) §4.1 event loop + timers (setTimeout/Interval/Immediate, nextTick, AbortController)
  • (conformance) implement proper tail calls (PTC) on both tiers — un-skip +34
  • (test262) $262.agent cooperative scheduler + Atomics.waitAsync
  • (conformance) implement $262.createRealm (cross-realm) — un-skip +77
  • (conformance) import attributes + assertions + JSON/text modules — un-skip +94
  • (conformance) implement class decorators + accessor auto-accessors — un-skip +24
  • (conformance) implement IsHTMLDDA (document.all) exotic — un-skip +34
  • (temporal) implement Duration relativeTo calendar arithmetic (+124)
  • (temporal) Temporal instances are ordinary extensible objects (+31)
  • (temporal) PlainDate.toPlainDateTime accepts a time-like (ToTemporalTime)
  • (temporal) implement toZonedDateTime on PlainDate + PlainDateTime (+26)
  • (temporal) implement Temporal.Now — Temporal fully un-skipped, 3920 pass
  • (temporal) implement Temporal.ZonedDateTime — 844/901, corpus 3003→3875 pass
  • (temporal) Date.prototype.toTemporalInstant → Temporal.Instant (+8)
  • (temporal) subclassing, subclass statics, and valueOf via ToPrimitive (+19)
  • (temporal) implement 7 Temporal types — 2984 test262 tests now pass (was 0)
  • (temporal) scaffold Temporal (ROADMAP §4) — ISO core + brand + registration + dispatch
  • (sab) make SharedArrayBuffer subclassable (class extends SharedArrayBuffer)
  • (sab) brand-check SharedArrayBuffer.prototype.slice/grow receiver
  • (sab) brand-check SharedArrayBuffer prototype getters + grow receiver
  • (sab) validate SharedArrayBuffer length + maxByteLength via ToIndex; un-skip
  • (atomics) wait requires a shared buffer — TypeError before arg coercion
  • (atomics) BigInt64Array/BigUint64Array read-modify-write
  • (atomics) throw TypeError for writing ops on an immutable ArrayBuffer
  • (atomics) implement single-agent notify/wait + fix arity/proto; un-skip Atomics
  • (tdz) hoist block/script/function let/const/class to TDZ at scope entry
  • async-generator yield Awaits its operand (AsyncGeneratorYield) (§async-generators)
  • @@asyncDispose then-chains PromiseResolve(return()) → undefined (§async-generators)
  • %AsyncIteratorPrototype%[Symbol.asyncDispose] (§async-generators)
  • generator instance prototype chain (g.prototype inherits %GeneratorPrototype%) (§generators)
  • %GeneratorFunction% / %AsyncGeneratorFunction% constructor objects (§generators)
  • distinct %AsyncGeneratorFunction.prototype% / %AsyncGeneratorPrototype% / %AsyncIteratorPrototype% (§async-generators)
  • distinct %GeneratorFunction.prototype% / %GeneratorPrototype% for sync generators (§generators)
  • Intl.Locale Info API — getCalendars/getCollations/getHourCycles/getNumberingSystems/getTimeZones/getTextInfo/getWeekInfo (§intl402)
  • Atomics.pause([N]) — spin-loop hint (§built-ins)
  • %IteratorPrototype%[Symbol.toStringTag] get/set accessor (§built-ins)
  • (intl) Intl.Locale can be subclassed (§3.9)
  • (intl) subclassing for ListFormat/RelativeTimeFormat/Segmenter + fix instance proto (§3.9)
  • (intl) Intl.PluralRules can be subclassed (§3.9)
  • (intl) Intl.Locale firstDayOfWeek option + accessor (ES2024, §3.9)
  • (intl) validate Intl.Locale language/script/region option shapes (§3.9)
  • (intl) validate Intl.Locale calendar/collation/numberingSystem options (§3.9)
  • (intl) Intl.Locale variants optio...
Read more

v0.0.7

Choose a tag to compare

@MagicalTux MagicalTux released this 04 Jul 14:21
aa866fa

Added

  • (promise) Promise[Symbol.species] getter → subclass then/catch chaining (§3.6)
  • (promise) Promise subclassing — class P extends Promise (§3.6)

Fixed

  • (string) String-exotic getOwnPropertyDescriptor + getOwnPropertyNames (§3.6)
  • (string) String index properties are enumerable (propertyIsEnumerable) (§3.6)
  • (string) String exotic objects expose own index/length to has_own (§3.6)
  • (bigint) a BigInt primitive's [[Prototype]] is %BigInt.prototype% (§3.6)
  • (typedarray) array-like constructor uses ToLength (empty, not RangeError) (§3.6)
  • (array) toSpliced coerces start/deleteCount via ToIntegerOrInfinity (§3.6)
  • (array) slice coerces start/end via ToIntegerOrInfinity (§3.6)
  • (array) fill/flat/copyWithin coerce index args via ToIntegerOrInfinity (§3.6)
  • (array) splice coerces start/deleteCount via ToIntegerOrInfinity (§3.6)
  • (array) copyWithin runs spec-precise algorithm for hole/accessor arrays (§3.6)
  • (array) reverse runs spec-precise algorithm for hole/accessor arrays (§3.6)
  • (array) sort runs spec-precise SortIndexedProperties for hole/accessor arrays (§3.6)
  • (arraybuffer) slice allocates via SpeciesConstructor (§3.6)
  • (arraybuffer) install ArrayBuffer[Symbol.species] getter (§3.6)
  • (proxy) Reflect.set trapless chain to an ordinary getter-only accessor → false (§3.6)
  • (string) split ToStrings separator before limit-0; nbvm faults object sep (§3.6)
  • (string) String.raw validates template/raw with throwing ToObject (§3.6)
  • (string) replace/replaceAll ToString the replacement value (§3.6)
  • (functions) Function constructor ToString's its arguments (§3.6)
  • (proxy) computed [[Set]] runs parent.[[Set]] through a proxy/setter proto (§3.6)
  • (proxy) Reflect.set on a proxy target returns the real [[Set]] boolean (§3.6)
  • (with) with-statement HasBinding consults the proxy has trap (§3.5)
  • (array) flat/flatMap use ArraySpeciesCreate + CreateDataPropertyOrThrow (§3.6)
  • (array) flat/flatMap skip absent array-like indices (HasProperty) (§3.6)
  • (array) array holes are absent to in/HasProperty; flat skips holes (§3.6)
  • (array) Array.of honors a constructor this (§3.7)
  • (proxy) Reflect.set with a proxy receiver writes via [[DefineOwnProperty]] (§3.6)
  • (proxy) a proxy write target runs its own [[Set]], not the cell gate (§3.6)
  • (proxy) Reflect.ownKeys forwards trapless [[OwnPropertyKeys]] to target (§3.7)
  • (proxy) JSON.stringify + getOwnPropertyDescriptors enumerate proxies (§3.7)
  • (proxy) object-rest patterns run proxy-aware CopyDataProperties (§3.7)
  • (proxy) object spread enumerates a proxy source via its traps (§3.7)
  • (proxy) route HasProperty through the proxy trap in array-like iteration (§3.7)

Other

  • record the puremp BigInt-backend migration (CHANGELOG + ROADMAP §8)
  • (bignum) back BigInt with puremp::Int (§8 reused-crate)
  • fix string_exotic_own test — in on a string primitive throws
  • (test262) remove 33 now-passing ledger entries (array precise mutators + ArrayBuffer species)
  • (test262) remove 30 now-passing ledger entries (Promise subclassing + species)
  • fix public->private intra-doc link in promise_state
  • (roadmap) note puremp as the BigInt-layer backend candidate (§8)
  • lower MSRV to Rust 1.88
  • (test262) remove 31 more now-passing ledger entries (49 total this batch)
  • (test262) remove 18 now-passing ledger entries (proxy/Array.of/JSON)
  • (roadmap) record proxy-conformance progress + refresh pass-rate (§3.7)

Added

  • (promise) class P extends Promise {} subclassing — super(executor) now
    runs the executor and backs the (ordinary-object) subclass instance with a
    hidden [[PromiseState]] cell that promise_state follows, so construction,
    the static combinators (P.resolve/all/race/allSettled/…), then/catch,
    await, and microtask delivery all work on a subclass instance (a non-callable
    executor is a TypeError).
  • (promise) Promise[Symbol.species] — Promise now carries the shared species
    getter (returns this), so Promise[Symbol.species] === Promise, a subclass
    inherits it (class P extends Promise {} → P[Symbol.species] === P), and
    then/catch produce subclass instances via SpeciesConstructor (an explicit
    @@species override is still honored) (ROADMAP §3.6 Promise).

Changed

  • (bignum) BigInt is now backed by puremp
    (the Karpelès Lab pure-Rust multi-precision maths crate) instead of the
    in-house arbitrary-precision integer: src/bignum.rs is a thin wrapper
    (pub struct BigInt(puremp::Int)) preserving the prior API, so Cell::BigInt
    and every call site are unchanged. Added default-features = false, features = ["int"] (no_std + alloc, MSRV 1.88). Truncated div_rem,
    two's-complement bit ops, mod_2k (BigInt64Array wrapping), and write_radix
    map directly; verified against the full bignum test module and the BigInt
    Test262 semantics (ROADMAP §8).

Fixed

  • (array) Array.prototype.sort runs the spec-precise SortIndexedProperties
    when the array has hole or accessor-override indices: it collects present
    elements via [[Get]] (index getters fire), sorts them, writes the sorted
    values back via [[Set]] (setters fire), and DeletePropertyOrThrows the
    trailing indices. Dense arrays and typed arrays keep the fast in-memory sort
    (ROADMAP §3.6).
  • (arraybuffer) ArrayBuffer[Symbol.species] getter is installed (returns
    this, so a subclass inherits it), and ArrayBuffer.prototype.slice allocates
    its result via SpeciesConstructor(O, %ArrayBuffer%) — a subclass instance for
    a subclass receiver, a non-constructor species is a TypeError, and the result
    is validated as a distinct ArrayBuffer of sufficient length (ROADMAP §3.6).
  • (string) String.prototype.split runs ToString(separator) before the
    limit === 0 short-circuit (a throwing separator toString throws even at
    limit 0), and the bytecode VM faults an object/Symbol/wrapper separator (or an
    object limit) to the tree-walker so a custom toString/@@split and RegExp
    delegation are honored — previously "axbxc".split({toString:()=>"x"}) did not
    split under nbvm (ROADMAP §3.6, §6 two-engines-one-truth).
  • (string) String.raw uses throwing ToObject on the template and on
    Get(template, "raw") (a null/undefined or a non-object raw throws
    TypeError), and reads raw via Get so an inherited getter fires and its
    throw propagates — previously all silently succeeded (ROADMAP §3.6).
  • (string) String.prototype.replace/replaceAll ToString the replacement
    value and the function-replacer's result (a custom toString/@@toPrimitive
    runs and a thrown value propagates) instead of rendering "[object Object]"
    (ROADMAP §3.6).
  • (functions) the Function constructor ToStrings each argument
    (CreateDynamicFunction): a custom toString/valueOf runs and a thrown value
    propagates — new Function({toString(){throw 1}}, "") throws 1 instead of
    stringifying to "[object Object]" and failing to parse (ROADMAP §3.6).
  • (proxy) a computed write (o[k]=v, arr[i]=v) whose own slot is absent
    now runs parent.[[Set]] — an inherited setter, or a proxy on the prototype
    chain, handles it (with Receiver = the object) — matching the dot-key
    assign_member path. So Object.setPrototypeOf(arr, proxyWithSetTrap); arr[0]=v
    fires the trap instead of silently creating an own index. Default-%Array. prototype% arrays and present indices keep the dense fast path (ROADMAP §3.6).
  • (with) the with object-environment HasBinding is a proxy-aware
    HasProperty, so with (new Proxy(o, {has(){…}})) { name } consults the has
    trap (a trapless proxy forwards to its target) instead of throwing a spurious
    ReferenceError; @@unscopables still applies (ROADMAP §3.5).
  • (array) sparse-array holes are absent to in / HasProperty: the proxy-
    aware [[HasProperty]] used a bare i < length test that reported a hole as
    present, so 1 in [2,,3], 0 in new Array(3), [2,,3].hasOwnProperty(1),
    and the generic array-like iteration (forEach/map/… presence probe) all
    counted holes. Now hole-aware (via has_own). Array.prototype.flat/
    flatMap also skip holes (FlattenIntoArray uses HasProperty) (ROADMAP §3.6).
  • (array) Array.prototype.flat/flatMap on a generic array-like skip absent
    indices per FlattenIntoArray's HasProperty check (so a poisoned getter past
    length is never read), and flatMap passes the source object as the
    callback's 3rd argument (ROADMAP §3.6).
  • (array) Array.prototype.flat/flatMap build the result with
    ArraySpeciesCreate(O, 0) + CreateDataPropertyOrThrow — a non-constructor
    @@species (or a non-extensible/non-configurable target) now throws a
    TypeError, and a subclass species is honored (ROADMAP §3.6).
  • (array) Array.of honors a constructor this (Array.of.call(C, …) /
    subclass C.of(…)) — Construct(C, «len») + CreateDataPropertyOrThrow —
    instead of always building a plain %Array% (ROADMAP §3.7).
  • (proxy) route HasProperty through the proxy has trap in generic
    array-like iteration, so [...new Proxy([1,2,3],{})], Array.from(proxy),
    and Array.prototype.*.call(proxy, …) observe the proxied elements instead
    of reading holes (ROADMAP §3.7).
  • (proxy) object spread ({...proxy}, CopyDataProperties) enumerates a proxy
    source through its ownKeys/getOwnPropertyDescriptor/get traps (strings
    and symbols, enumerable only) instead of copying nothing (ROADMAP §3.7).
  • (proxy) object-rest patterns ({...rest} in a binding, assignment target,
    function parameter, or generator step) run the same proxy-aware
    CopyDataProperties, sharing one copy_data_properties helper; this also fixes
    symbol own keys being dropped from object rest on ordinary objects.
  • (proxy) JSON.stringify enumerates a proxy through i...
Read more

v0.0.6

Choose a tag to compare

@MagicalTux MagicalTux released this 04 Jul 10:48
5a9fb8c

Added

  • (embed) host-function registration API — register_fn + Ctx (§4.0 M1)

Other

  • (roadmap) plan the host-function registration / embedding API (§4.0)
  • add CI, crates.io, docs.rs, and MIT license badges to README

Added

  • (embed) host-function registration API — Interp::register_fn /
    register_global_fn + Ctx (ROADMAP §4.0 milestone 1): register a Rust
    closure as a first-class JS function with spec-shaped name/length, build
    values, read/write properties, throw catchable errors, coerce arguments, and
    re-enter JS. Backed by a new Cell::HostFn registry cell; self-reentrancy is
    a clean TypeError.

v0.0.5

Choose a tag to compare

@MagicalTux MagicalTux released this 03 Jul 14:37

Added

  • (generator) suspend on yield in for-of/for-in assignment-target patterns
  • (generator) suspend on yield in a destructuring member-target key
  • (generator) suspend on yield in destructuring-assignment defaults
  • (generator) suspend on yield inside object literals
  • (generator) suspend on yield inside array literals
  • (builtins) Array and Object are real callable function cells
  • (modules) import-defer — exotic-object edges, super/this fixes (+ general)
  • (modules) import-defer proposal (core: static import defer * as ns)
  • (arraybuffer) immutable-arraybuffer proposal
  • (promise) Promise.allKeyed / allSettledKeyed (await-dictionary proposal)
  • (object) Symbol/BigInt wrapper objects (ToObject)
  • (eval) new.target valid in direct eval inside function code
  • (iterators) real %RegExpStringIteratorPrototype% for matchAll
  • (iterators) real per-kind iterator prototypes (Array/String/Map/Set)
  • (class) TDZ for this in derived constructors (must call super)
  • (functions) formal-parameter TDZ (self/forward default reference)
  • (functions) separate parameter and body environments
  • (eval) EvalDeclarationInstantiation param/arguments conflict
  • (eval) direct eval inherits the caller's super (home object)
  • (eval) completion values carried through break/continue
  • (eval) proper statement completion values (UpdateEmpty)
  • (intl) Intl.PluralRules conformance
  • (intl) Intl.DurationFormat conformance (+ NumberFormat -0/option fixes)
  • (intl) Intl.RelativeTimeFormat conformance
  • (intl) Intl.ListFormat conformance
  • (class) lexically-scoped private names (#x)
  • (modules) module completeness pass (parser, async, namespace, early errors)
  • (modules) ES module system + dynamic import()
  • (language) explicit resource management (using / await using)
  • (builtins) complete getOrInsert/getOrInsertComputed (upsert)
  • (builtins) Promise.try (ES2025)
  • (builtins) Error.prototype.stack accessor
  • (builtins) FinalizationRegistry, WeakRef.prototype.deref, Symbol.prototype
  • (builtins) Math.sumPrecise + fix no_std build
  • (regex) early errors for inline modifier groups (?ims-ims:)
  • (array) property descriptors on indices + length (ArraySetLength)
  • (builtins) Error.isError (ES2025) with [[ErrorData]] brand
  • (regex) reject invalid \p{…} property escapes as SyntaxError
  • (regex) parse-time literal validation + structural early errors
  • (builtins) Uint8Array base64/hex (ES2025)
  • RegExp.escape + async yield* requires Object iterator
  • (async) async yield* delegation (async-iterator protocol)
  • (builtins) Array.fromAsync
  • (builtins) batch 13 part 2b — Array/RegExp/TypedArray conformance
  • (builtins) batch 13 part 2a — Promise/JSON/Object conformance
  • (builtins) batch 12 part 2 — String/TypedArray/DataView/Date conformance
  • (builtins) sparse-array holes + ES2025 Map/Set conformance
  • (nbexec) true lazy async/await with microtask ordering
  • (nbexec) wire lazy generators into call/dispatch/iteration
  • (nbexec) true lazy generators — explicit-stack suspension engine
  • (nbexec) DisposableStack, AsyncDisposableStack, ShadowRealm + SuppressedError
  • (intl) real branded .prototype for every Intl service + Locale/DurationFormat
  • (intl) realm prototype cache + dispatch wiring for Intl branding
  • (nbexec) native subclassing — class extends Map/Array/typed/Date/…
  • (nbexec) GetPrototypeFromConstructor for built-in constructors
  • (intl) spec-accurate option validation + resolvedOptions for NumberFormat/DateTimeFormat
  • (intl) add Intl.getCanonicalLocales + Intl.supportedValuesOf
  • (regex) inline modifiers, v-flag unicodeSets, CI word/property + XID
  • (builtins) Array/Function/arguments conformance sweep (batch 9 part 2)
  • (annexB) escape/unescape, String HTML methods, Date legacy, RegExp compile + legacy statics
  • (builtins) Object/Iterator/Proxy/Reflect conformance sweep (batch 8 part 2)
  • (typedarray) detachArrayBuffer native + ArrayBuffer/DataView/TypedArray conformance
  • (regexp) ES2022 d-flag match indices (MakeIndicesArray)
  • (regexp) first-class RegExp.prototype + spec-compliant exec/symbol methods (nbexec)
  • (builtins) TypedArray of/from prototype link + spec-faithful from
  • (builtins) spec-compliant TypedArray set + subarray (offset ToInteger, species)
  • (builtins) TypedArraySpeciesCreate for map/filter/slice; fix construct return
  • (builtins) DataView/TypedArray/ArrayBuffer prototype & ctor conformance
  • (class) support extending an ordinary function (class X extends fn)
  • (super) computed super member access, assignment, and delete
  • (assignment) NamedEvaluation for plain identifier assignment
  • (global) unify global-object properties and global var bindings
  • (class) own name/length + static members as real own properties
  • (builtins) Promise/Map/Set/Function/Reflect/Proxy sweep + regression cleanup (batch 6)
  • (with) implement the with statement (object environment record)
  • (destructuring) NamedEvaluation for binding/param defaults
  • (class) inherit methods via prototype + VM prototype-chain reads
  • (class) materialize class .prototype with methods/accessors
  • (builtins) Array/Object/TypedArray conformance sweep (batch 5)
  • (date) Date.prototype[Symbol.toPrimitive] + OrdinaryToPrimitive helper
  • (iterator) add the Iterator global, %IteratorPrototype%, and helpers
  • (typed-arrays) add BigInt64Array and BigUint64Array
  • (nbexec) real eval() and the Function constructor (dynamic code)
  • (regex) reject quantifiers on non-quantifiable assertions
  • (regex) SyntaxError for invalid group names, duplicate names, bad refs, and u-mode strictness
  • (parser) optional-chain tagged template + new.target placement
  • (parser) destructuring-target early errors
  • (parser) illegal break/continue/return early errors
  • (parser) invalid assignment/update targets + strict binding names
  • (parser) early-error validation pass for class & private-name rules
  • (regex) full Unicode property escapes \p{…}/\P{…} (u-flag)
  • (typedarray) add shared %TypedArray% intrinsic constructor hierarchy
  • (engine) typed-error API for conformance checking
  • (limits) add dedicated max_eval_depth knob (C2 follow-up)

Fixed

  • (yield)* propagate an abrupt IteratorClose when forwarding throw to a throw-less iterator
  • (yield)* pass the inner result object through; don't read value when incomplete
  • (super) RequireObjectCoercible on the super base for object methods
  • (proxy) forward trapless has/delete to a proxy target recursively
  • (proto) validate the proto setter like SetPrototypeOf
  • (Object.prototype) ToObject(this) in hasOwnProperty/propertyIsEnumerable/isPrototypeOf
  • (JSON.parse) reject unescaped control characters in strings
  • (compound-assign) capture the identifier reference before the RHS
  • (with) lexically scope the with-statement object environment
  • (parser) allow let as identifier in for-in left-hand side
  • (promise) Promise.resolve/reject use NewPromiseCapability for custom C
  • (parser) array/object literal contents are [+In] inside a for-header
  • (regex) properties of strings are an early error in invalid positions
  • (parser/eval) strict-reserved words as sloppy ident refs; direct eval inherits caller strictness
  • (Object.assign) spec CopyDataProperties — key order, enumerability, errors
  • (Object.assign) Set with Throw + read-only string indices
  • (class) PrivateSet on a private method/accessor throws TypeError
  • (assignment) ToPropertyKey before RHS in compound member assignment
  • (annexB) spec-correct defineGetter/Setter & lookupGetter/Setter
  • (iterator) tag boxed String wrapper's @@iterator prototype
  • (class) evaluate computed member keys eagerly at class definition
  • (nbvm) no-init var re-declaration must not clobber the binding
  • (with) bare-name delete + NaN/undefined/Infinity resolve via with-object
  • (regex) reject \p{…} property class as a range endpoint under u
  • (regex) reject character-class range with low > high
  • (regex) reject braced quantifier with nothing to repeat (Annex B)
  • (annexB/global) preserve existing global binding + non-configurable decls
  • (annexB) B.3.4 if/else function gets its own block binding
  • (annexB) B.3.3 block-function hoisting through catch + switch
  • (array) spec-conformant Array.prototype.concat
  • (async) await adopts thenables (PromiseResolve semantics)
  • (async) class async methods + async-generator promise results
  • (class) super in static/field initializers + static field/method redecl
  • (annexB) spec-accurate B.3.3/B.3.4 block-level function semantics
  • (nbvm) route for await to the tree-walker (no bytecode await machinery)
  • (destructuring,with) array GetIterator honors Symbol.iterator; with-statement var initializer
  • (operators,names) ToNumber via ToPrimitive for update/unary-plus; accessor & class property names
  • (fn) scope %ThrowTypeError% caller/arguments poison to restricted functions
  • (intl) spec-accurate useGrouping + currency/unit/fraction-digit validation
  • (nbexec) computed property keys use ToPropertyKey (throws on uncoercible)
  • (nbexec) computed-key method call on a primitive boxes the receiver
  • (nbexec) with-binding call this + method-call nullish-base order
  • (nbexec) arrow functions capture lexical this/new.target/home at definition
  • (nbexec) object-literal proto primitive ignored + super getter receiver this
  • (nbexec) BigInt operators unwrap object operands before type-mixing check
  • (nbexec) spec evaluation order for compound assignment to member targets
  • (nbexec) unresolvable compound-assignment / identifier read throws ReferenceError
  • (nbexec) destructuring-assignment target reference evaluated before iterator step
  • (nbexec) object-destructuring boxing + delete on globals/non-references
  • (nbexec) spec-correct IteratorClose + array-destructuring iterator pro...
Read more

v0.0.4

Choose a tag to compare

@MagicalTux MagicalTux released this 15 Jun 00:00

Fixed

  • (typed-array) validate view/DataView bounds + checked offset math
  • (nbexec) L1 — ArrayBuffer.prototype.transfer(n) caps length via validate_alloc_len
  • (nbexec) C2 — guard tree-walk recursion depth to avoid native stack overflow
  • (arrays) C1 — throw RangeError on oversized array element write / length set
  • (realm) C1 cap dense-array growth; M3 skip frozen-set probes

Other

  • (typed-array) bulk byte ops for fill/copyWithin/set + alloc-free encode
  • (regex) build the scalar adapter program lazily (RE-P2)
  • (regex) cache the compiled Regex on the RegExp cell (RE-P1)
  • (string) P1/P3/P5/P6 — stop double-flattening strings, borrow leaf bytes, run UTF-16 counts
  • (wasm) cache decoded Module + cut per-call memory copies at JS↔wasm boundary
  • (nbvm) M4 — borrow array backing for pure-scan builtins; tests
  • (nbvm) H2 — gate regexp probe on key in GetProp hot path
  • (realm) P4 byte-exact string comparison; add tests for C1/H3/P4/P2
  • (realm) H3 truthy tests emptiness without materializing the string
  • (rope/realm) P2 zero-copy leaf-byte borrow fast path
  • (bytecode) verifier rejects LoadConst with a raw heap handle (M3)

v0.0.3

Choose a tag to compare

@MagicalTux MagicalTux released this 14 Jun 19:29

Added

  • (strings) B5 — surrogate-aware case + normalize (#12)
  • (strings) B4 — wire regex builtins to the UTF-16 code-unit engine (#12)
  • (strings) B2/B3 — surrogate-correct string evaluation and UTF-16 ops
  • (strings) B2 — carry string-literal cooked values as WTF-8 bytes
  • (ffi) embedder buffer-creation API — owned + external (A6, #11)
  • (wasm) WebAssembly.Memory shares one byte store with JS (A5, #11)
  • (wtf8) WTF-8 string-storage foundation (B1)
  • (cell) add Cell::Bytes byte store + TypedArray view variant (A1)

Fixed

  • (typedarrays) stable/shared .buffer object + restore wasm_bytes over byte stores

Other

  • (regex) fix broken intra-doc links in module docs
  • (regex) match over UTF-16 code units with JS u-flag semantics [B4-engine]
  • (wtf8) fix broken intra-doc links in rope/atom/wtf8 module docs
  • (typedarrays) real byte-backed ArrayBuffer/TypedArray/DataView (A2/A3/A4)

v0.0.2

Choose a tag to compare

@MagicalTux MagicalTux released this 14 Jun 16:36

Added

  • (object) dictionary-mode objects to bound shape-tree growth (MEM-3)
  • (limits) add configurable Limits; migrate caps to read from Realm
  • (math) drop fixed Math.random seed; entropy-mix the fallback
  • (math) seed Math.random from purecrypto's OS CSPRNG
  • (math) back Math.random with xorshift128+ (was xorshift64)

Fixed

  • (wasm) configurable limits, fuel metering, multi-byte blocktype (WASM-6/7/9)
  • (nbvm) collect subject chars once in regex match/split loops (RE-7)
  • (regex) collect subject chars once per match/replace/split loop (RE-7)
  • (rng) don't let OsRng panic abort Interp::new; fall back to entropy mix (RNG-1)
  • (bigint) cap asUintN/asIntN/** bit-size to prevent allocation bomb (MEM-6)
  • (regex) tighten backtracking budget + share it across starts; add char-slice match API (RE-8, RE-7)
  • (regex) avoid exponential compile-time blowup for nested unbounded quantifiers (RE-9)
  • (nbvm) cap repeat + guard compiler register overflow (NBVM-1/NBVM-2)
  • (flatbc) read untrusted program via fs::read, drop mmap (VM-9)
  • (bytecode) verify untrusted load paths, bound allocs, drop mmap (VM-7/8/9)
  • (snapshot) SNAP-3 read snapshot file instead of mmap (SIGBUS hazard)
  • (wasm) use checked_add for element-segment slot index (WASM-8)
  • (heap) clamp free-path generation below compaction range (MEM-4)
  • (parser) guard recursion in parse_new/parse_exponent/parse_class (PARSE-2/3/4)
  • (date) parse_iso_date panics on malformed/non-ASCII input (EXEC-7)
  • (lint) satisfy clippy + rustdoc + rustfmt gates

Other

  • (limits) end-to-end config-override regression test
  • (snapshot) validate restored func_id against a recorded bound (SNAP-2)

v0.0.1

Choose a tag to compare

@MagicalTux MagicalTux released this 12 Jun 01:44
chore: Release package kataan version 0.0.1