版本发布 7
This is a rolling release from the top of main.
This is a rolling release containing the newest build from the main branch.
## What's Changed ### Features * Property lookup caches (https://github.com/trynova/nova/pull/810, https://github.com/trynova/nova/pull/819, https://github.com/trynova/nova/pull/822) * Support `undefined` in property descriptor object's get/set fields (https://github.com/trynova/nova/pull/815) * Support TypeScript enums (https://github.com/trynova/nova/pull/811) * Support TypeScript declare keyword (https://github.com/trynova/nova/pull/814) * `Promise.prototype.finally` (https://github.com/trynova/nova/pull/823) ### Bugfixes * Fix bugs in Array [[DefineOwnProperty]], [[Get]], and [[HasProperty]] internal methods, and a bug with `thisArray` parameter in `Array.prototype.every` (https://github.com/trynova/nova/pull/816, https://github.com/trynova/nova/pull/817) ### Performance * Remove Allocator Boxing in SourceCode (https://github.com/trynova/nova/pull/813) **Full Changelog**: https://github.com/trynova/nova/compare/latest...0.3.0
## What's Changed ### Features * Property lookup caches (https://github.com/trynova/nova/pull/810, https://github.com/trynova/nova/pull/819, https://github.com/trynova/nova/pull/822) * Support `undefined` in property descriptor object's get/set fields (https://github.com/trynova/nova/pull/815) * Support TypeScript enums (https://github.com/trynova/nova/pull/811) * Support TypeScript declare keyword (https://github.com/trynova/nova/pull/814) * `Promise.prototype.finally` (https://github.com/trynova/nova/pull/823) ### Bugfixes * Fix bugs in Array [[DefineOwnProperty]], [[Get]], and [[HasProperty]] internal methods, and a bug with `thisArray` parameter in `Array.prototype.every` (https://github.com/trynova/nova/pull/816, https://github.com/trynova/nova/pull/817) ### Performance * Remove Allocator Boxing in SourceCode (https://github.com/trynova/nova/pull/813) **Full Changelog**: https://github.com/trynova/nova/compare/latest...0.3.0
## Changes from 0.2.0 * Fix String interning. ## Changes from 0.1.0 * Expect Strings to be WTF-8 instead of UTF-8. * Implement Object Shapes. * Implement basic RegExp support.
This is the first pre-release of Nova.
## What's Changed * feat: basic tokenizer by @sno2 in https://github.com/trynova/nova/pull/1 * Add FatArrow, LAngle and RAngle tokens by @aapoalas in https://github.com/trynova/nova/pull/2 * Write readme in https://github.com/trynova/nova/pull/3 * chore: Add the `.vscode` folder to gitignore by @andreubotella in https://github.com/trynova/nova/pull/7 * chore: Add Github Actions CI by @andreubotella in https://github.com/trynova/nova/pull/8 * add basic wasm decoder by @MierenManz in https://github.com/trynova/nova/pull/9 * Remove leb128 dep by @MierenManz in https://github.com/trynova/nova/pull/10 * fix: Overflow when length == 32 or when length == 64 by @MierenManz in https://github.com/trynova/nova/pull/11 * remove unneeded types by @MierenManz in https://github.com/trynova/nova/pull/12 * Link Discord server to README in https://github.com/trynova/nova/pull/15 * fix(tokenizer): Allow multi-line comments that aren't followed by a space by @andreubotella in https://github.com/trynova/nova/pull/6 * feat: ast crate by @load1n9 in https://github.com/trynova/nova/pull/19 * feat(heap): Component based heap by @aapoalas in https://github.com/trynova/nova/pull/22 * Fix/ci by @aapoalas in https://github.com/trynova/nova/pull/27 * feat(heap): Remove heap bits, move elements to heap-controlled data structures, ... by @aapoalas in https://github.com/trynova/nova/pull/25 * feat: engine rework (rebase) by @aapoalas in https://github.com/trynova/nova/pull/28 * feat(heap): ArrayBuffer by @aapoalas in https://github.com/trynova/nova/pull/23 * feat(realm): Implement initialize_host_defined_realm function by @aapoalas in https://github.com/trynova/nova/pull/29 * chore: Remove duplicate PropertyKey enum by @aapoalas in https://github.com/trynova/nova/pull/30 * feat: Move ObjectHeapData to types/language/object/data by @aapoalas in https://github.com/trynova/nova/pull/31 * Feat/move object heap data by @aapoalas in https://github.com/trynova/nova/pull/32 * feat(nova_vm): Reorganize folder structure by @aapoalas in https://github.com/trynova/nova/pull/33 * chore(heap): Move ArrayHeapData to builtins by @aapoalas in https://github.com/trynova/nova/pull/34 * chore(heap): Move BigIntHeapData to ecmascript/types/language/bigint by @aapoalas in https://github.com/trynova/nova/pull/35 * chore(ecmascript): Unify heap data struct publication by @aapoalas in https://github.com/trynova/nova/pull/36 * chore(heap): Move NumberHeapData to ecmascript/types/language/number by @aapoalas in https://github.com/trynova/nova/pull/37 * chore(heap): Move FunctionHeapData to ecmascript/types/language/function by @aapoalas in https://github.com/trynova/nova/pull/38 * feat(ecmascript): Move ArrayBufferHeapData to ecmascript folder, implement abstract operations by @aapoalas in https://github.com/trynova/nova/pull/39 * feat(ecmascript): abstract_operations module by @aapoalas in https://github.com/trynova/nova/pull/40 * feat(ecmascript): Implement OrdinaryObjectInternalSlots trait by @aapoalas in https://github.com/trynova/nova/pull/42 * feat(ecmascript): more builtins by @sno2 in https://github.com/trynova/nova/pull/43 * feat(ecmascript): Implement ArrayBuffer Object sub-type by @aapoalas in https://github.com/trynova/nova/pull/44 * feat(ecmascript): Implement Drop for DataBlock by @aapoalas in https://github.com/trynova/nova/pull/41 * chore(ecmascript): Run clippy by @aapoalas in https://github.com/trynova/nova/pull/46 * refactor(number): remove value conversion indirection by @sno2 in https://github.com/trynova/nova/pull/45 * chore: move bigint to languages folder by @sno2 in https://github.com/trynova/nova/pull/47 * fix(ecmascript) fix Number::is_odd_integer in https://github.com/trynova/nova/pull/49 * fix(ecmascript) Fix Number::is_nonzero in https://github.com/trynova/nova/pull/51 * Finish Number::SameValue in https://github.com/trynova/nova/pull/52 * chore: fix typos by @lino-levan in https://github.com/trynova/nova/pull/56 * fix(ecmascript): Fix `Value::is_*` operations that didn't take all alternative variants into account by @andreubotella in https://github.com/trynova/nova/pull/55 * feat(ecmascript): Move ArrayBuffer abstract operations to a separate folder by @aapoalas in https://github.com/trynova/nova/pull/54 * chore(ecmascript): Align PropertyKey discriminants with Value by @aapoalas in https://github.com/trynova/nova/pull/57 * fix(vm): Fix the ranges for `SmallInteger` by @andreubotella in https://github.com/trynova/nova/pull/58 * feat(vm): Add conversions from integer types to `SmallInteger` by @andreubotella in https://github.com/trynova/nova/pull/59 * ci: add typo checker by @lino-levan in https://github.com/trynova/nova/pull/61 * feat(heap): Make number and string allocation functions unsafe by @aapoalas in https://github.com/trynova/nova/pull/60 * feat(ecmascript): is_loosely_equal and is_strictly_equal by @eliassjogreen in https://github.com/trynova/nova/pull/53 * feat(language): implement more bigint ops by @sno2 in https://github.com/trynova/nova/pull/63 * fix(bigint): use correct operator for bitwise not by @sno2 in https://github.com/trynova/nova/pull/65 * feat(ecmascript): operations on iterator objects by @eliassjogreen in https://github.com/trynova/nova/pull/70 * fix(idk) make to_boolean return a bool in https://github.com/trynova/nova/pull/72 * chore: bump deps and fix README by @load1n9 in https://github.com/trynova/nova/pull/75 * feat(execution): implement more environments logic by @sno2 in https://github.com/trynova/nova/pull/64 * feat(builtins): more `Number` constructor methods by @sno2 in https://github.com/trynova/nova/pull/66 * fix(builtins): make ordinary methods use `SameValue` by @sno2 in https://github.com/trynova/nova/pull/67 * fix(webassembly) fix varint decoding message in https://github.com/trynova/nova/pull/62 * feat: better Agent <=> Realm relationship by @sno2 in https://github.com/trynova/nova/pull/69 * feat(vm): more abstract operations by @lino-levan in https://github.com/trynova/nova/pull/50 * feat: working basic bytecode by @sno2 in https://github.com/trynova/nova/pull/71 * Update README.md to include active development ideas by @aapoalas in https://github.com/trynova/nova/pull/77 * feat(ecmascript): Split function types by @aapoalas in https://github.com/trynova/nova/pull/78 * feat(heap): Remove self-referential lifetimes by @aapoalas in https://github.com/trynova/nova/pull/79 * feat: Clippy by @aapoalas in https://github.com/trynova/nova/pull/80 * feat(gc): Implement heap sweep and compaction by @aapoalas in https://github.com/trynova/nova/pull/82 * feat(vm): CreateObject by @aapoalas in https://github.com/trynova/nova/pull/81 * feat(cli): `eval` command by @eliassjogreen in https://github.com/trynova/nova/pull/83 * fix(ub): Fix undefined behaviour by @aapoalas in https://github.com/trynova/nova/pull/84 * Add Linus Groh copyright to relevant locations by @aapoalas in https://github.com/trynova/nova/pull/86 * feat(vm): Complete GlobalDeclarationInstantiation and partially handle EvaluateCall by @aapoalas in https://github.com/trynova/nova/pull/85 * Fix invalid statement about Boa engine's gc being reference counting by @aapoalas in https://github.com/trynova/nova/pull/87 * feat(ecmascript): Increase ArrayBuffer max size to usize by @aapoalas in https://github.com/trynova/nova/pull/88 * feat(vm): Implement function calling by @aapoalas in https://github.com/trynova/nova/pull/89 * feat(ecmascript): Implement BuiltinFunction [[Call]] method by @aapoalas in https://github.com/trynova/nova/pull/90 * feat(vm): Implement if-else statement by @aapoalas in https://github.com/trynova/nova/pull/91 * feat(vm): implement `ComputedMemberExpression` and `StaticMemberExpression` by @eliassjogreen in https://github.com/trynova/nova/pull/92 * feat(vm): for loop by @aapoalas in https://github.com/trynova/nova/pull/93 * feat(vm): Lexical declarations by @aapoalas in https://github.com/trynova/nova/pull/94 * chore: Update deps by @aapoalas in https://github.com/trynova/nova/pull/95 * chore(deps): remove `gc` crate by @sno2 in https://github.com/trynova/nova/pull/96 * chore(deps): use Cargo workspace by @sno2 in https://github.com/trynova/nova/pull/98 * chore(ci): faster toolchain setup and clippy by @sno2 in https://github.com/trynova/nova/pull/97 * feat: support getter logic, `SameValueNonNumber(String, String)`, `+`, `!`, and `~` by @sno2 in https://github.com/trynova/nova/pull/99 * feat(vm): ArrayCreate by @aapoalas in https://github.com/trynova/nova/pull/101 * feat(ecmascript): BuiltinFunctionBuilder by @aapoalas in https://github.com/trynova/nova/pull/102 * feat(ecmascript): Intrinsics creation by @aapoalas in https://github.com/trynova/nova/pull/104 * Move BuiltinFunctionBuilder and PropertyBuilder to nova_vm/src/ecmascript/builders by @aapoalas in https://github.com/trynova/nova/pull/105 * feat(vm): Start building integration test capabilities by @aapoalas in https://github.com/trynova/nova/pull/106 * feat(ecmascript): Fundamental objects by @aapoalas in https://github.com/trynova/nova/pull/107 * feat(vm): Create BUILTIN_STRINGS list for build-time static string generation by @aapoalas in https://github.com/trynova/nova/pull/108 * feat(heap): Static strings by @aapoalas in https://github.com/trynova/nova/pull/109 * feat(ecmascript): Implement NumberPrototype by @aapoalas in https://github.com/trynova/nova/pull/110 * feat(ecmascript): More of numbers and dates by @aapoalas in https://github.com/trynova/nova/pull/111 * feat(ecmascript): String Objects by @aapoalas in https://github.com/trynova/nova/pull/112 * feat(ecmascript): Fill out Value enum by @aapoalas in https://github.com/trynova/nova/pull/113 * feat(ecmascript): Primitive and Numeric enums by @aapoalas in https://github.com/trynova/nova/pull/114 * feat(ecmascript): Indexed Collections by @aapoalas in https://github.com/trynova/nova/pull/115 * feat(ecmascript): Keyed Collections by @aapoalas in https://github.com/trynova/nova/pull/116 * feat(ecmascript): Structured Data by @aapoalas in https://github.com/trynova/nova/pull/117 * feat(ecmascript): Managing Memory and Control Abstraction Objects by @aapoalas in https://github.com/trynova/nova/pull/118 * feat(ecmascript): Reflection by @aapoalas in https://github.com/trynova/nova/pull/119 * fix(ecmascript): Various errors around intrinsics creation by @aapoalas in https://github.com/trynova/nova/pull/165 * feat(ecmascript): Cleanup intrinsic function creation with extra traits/functions by @aapoalas in https://github.com/trynova/nova/pull/166 * feat(heap): Add PrimitiveObjectHeapData by @aapoalas in https://github.com/trynova/nova/pull/167 * feat(ecmascript): Map and Set heap data by @aapoalas in https://github.com/trynova/nova/pull/168 * feat(ecmascript): Implement dummy HeapData for most remaining types by @aapoalas in https://github.com/trynova/nova/pull/169 * fix(ecmascript): Fix invalid prototype in Set object's internal methods by @aapoalas in https://github.com/trynova/nova/pull/170 * feat(ecmascript): Handle most intrinsic objects in ordinary_create_from_constructor by @aapoalas in https://github.com/trynova/nova/pull/171 * chore(vm): Update oxc version by @aapoalas in https://github.com/trynova/nova/pull/172 * chore(ecmasript): Rename internal method and slot APIs with `internal_` prefix by @aapoalas in https://github.com/trynova/nova/pull/173 * feat(ecmascript): Module object internal methods by @aapoalas in https://github.com/trynova/nova/pull/174 * feat(ecmascript): Fine-tune (Weak)Map/Set internal methods by @aapoalas in https://github.com/trynova/nova/pull/175 * chore(nova): Update README.md, add CONTRIBUTING.md and ARCHITECTURE.md by @aapoalas in https://github.com/trynova/nova/pull/176 * chore(ecmascript): Use Index and IndexMut trait instead of custom GetHeapData by @aapoalas in https://github.com/trynova/nova/pull/177 * feat(ecmascript): Add object property assignment by @andreubotella in https://github.com/trynova/nova/pull/179 * chore(vm): Refactor `Vm::execute` to allow for try-catch by @andreubotella in https://github.com/trynova/nova/pull/181 * feat(vm): Implement try-catch by @andreubotella in https://github.com/trynova/nova/pull/182 * feat(ecmascript): implement array constructor builtins by @eliassjogreen in https://github.com/trynova/nova/pull/180 * feat(ecmascript): Function argument bindings for simple parameter lists by @andreubotella in https://github.com/trynova/nova/pull/184 * feat(ecmascript): Implement logical expressions and nullish coalescing by @andreubotella in https://github.com/trynova/nova/pull/185 * feat(ecmascript): Implement comparison and `in` operators by @andreubotella in https://github.com/trynova/nova/pull/186 * feat(ecmascript): String concatenation by @andreubotella in https://github.com/trynova/nova/pull/187 * doc(contributing): Pull Request Code of Conduct by @aapoalas in https://github.com/trynova/nova/pull/188 * feat(ecmascript): Property access and assignment on ECMAScript functions by @andreubotella in https://github.com/trynova/nova/pull/189 * feat(ecmascript): `name` and `prototype` properties of ECMAScript functions by @andreubotella in https://github.com/trynova/nova/pull/190 * feat(ecmascript): Support getters and setters in `PropertyStorage` by @andreubotella in https://github.com/trynova/nova/pull/191 * fix(ecmascript): Fix native error instances to have the right `kind` by @andreubotella in https://github.com/trynova/nova/pull/192 * fix(ecmascript): Make sure built-in functions have `name` and `length` by @andreubotella in https://github.com/trynova/nova/pull/193 * fix(ecmascript): Add a missing `#[test]` annotation by @andreubotella in https://github.com/trynova/nova/pull/194 * feat(ecmascript): Allow object creation with a different prototype by @andreubotella in https://github.com/trynova/nova/pull/195 * feat(ecmascript): Allow constructing ECMAScript functions by @andreubotella in https://github.com/trynova/nova/pull/196 * feat(ecmascript): Implement the `this` keyword by @andreubotella in https://github.com/trynova/nova/pull/197 * chore: Update oxc by @aapoalas in https://github.com/trynova/nova/pull/198 * chore(nova_cli): Don't print debug information by default by @andreubotella in https://github.com/trynova/nova/pull/199 * fix(nova_cli): Fix the `--verbose` flag by @andreubotella in https://github.com/trynova/nova/pull/201 * feat(nova_cli): Add a `print` global function by @andreubotella in https://github.com/trynova/nova/pull/200 * feat(nova_vm): Add symbol descriptive strings by @andreubotella in https://github.com/trynova/nova/pull/202 * feat(nova_cli): Print uncaught exceptions by @andreubotella in https://github.com/trynova/nova/pull/203 * feat(nova_cli): Allow running multiple files by @andreubotella in https://github.com/trynova/nova/pull/204 * feat(nova_cli): Print parse errors by @andreubotella in https://github.com/trynova/nova/pull/205 * Feat/heap types cleanup by @aapoalas in https://github.com/trynova/nova/pull/206 * chore(ecmascript): Colocate all heap impls by @aapoalas in https://github.com/trynova/nova/pull/207 * feat(ecmascript): Add Promise Reaction and Capability Records by @aapoalas in https://github.com/trynova/nova/pull/208 * feat(ecmascript): Add Promise Reaction and Capability Records by @aapoalas in https://github.com/trynova/nova/pull/209 * fix(cli): Make sure parse errors don't have color escapes on non-TTYs by @andreubotella in https://github.com/trynova/nova/pull/210 * chore: Update heap README.md by @aapoalas in https://github.com/trynova/nova/pull/213 * feat(vm): instanceof by @aapoalas in https://github.com/trynova/nova/pull/214 * feat(ecmascript): Implement basic parts of RegExp creation by @aapoalas in https://github.com/trynova/nova/pull/215 * feat(ecmascript): Unify InternalSlots and InternalMethods trait default implementations to remove redundancy by @aapoalas in https://github.com/trynova/nova/pull/211 * feat(ecmascript): Miscellaneous work by @aapoalas in https://github.com/trynova/nova/pull/212 * fix(ecmascript): Array [[Get]] method does not access prototype properties by @aapoalas in https://github.com/trynova/nova/pull/217 * feat(ecmascript): Implement getting String properties through reference by @aapoalas in https://github.com/trynova/nova/pull/218 * feat(vm): Limited array destructuring support by @aapoalas in https://github.com/trynova/nova/pull/216 * feat(vm): do-while loop by @aapoalas in https://github.com/trynova/nova/pull/219 * feat(vm): Support break and continue statements by @aapoalas in https://github.com/trynova/nova/pull/220 * feat(wasm): remove wasm by @MierenManz in https://github.com/trynova/nova/pull/222 * chore(repo): Add minimal version of toolchain used by @MierenManz in https://github.com/trynova/nova/pull/223 * feat(vm): Assignment Expressions by @aapoalas in https://github.com/trynova/nova/pull/224 * chore(readme): Add talk links by @aapoalas in https://github.com/trynova/nova/pull/225 * Update README.md by @aapoalas in https://github.com/trynova/nova/pull/226 * feat(vm): InstantiateArrowFunctionExpression by @aapoalas in https://github.com/trynova/nova/pull/227 * fix(ecmascript): InstantiateArrowFunctionExpression lexical this mode by @aapoalas in https://github.com/trynova/nova/pull/228 * chore(readme): Link to the standalone Web Engines Hackfest video by @andreubotella in https://github.com/trynova/nova/pull/230 * fix(vm): Properly pass this value to EvaluateCall by @aapoalas in https://github.com/trynova/nova/pull/231 * feat(tests): Add test262 test runner by @andreubotella in https://github.com/trynova/nova/pull/229 * chore(ci): Do not print test262 progress messages by @aapoalas in https://github.com/trynova/nova/pull/233 * feat(ecmascript): Handle indexed keys in value references by @aapoalas in https://github.com/trynova/nova/pull/232 * feat(ecmascript): Array reserve and assign index by @aapoalas in https://github.com/trynova/nova/pull/234 * feat(ecmascript): Number::divide by @aapoalas in https://github.com/trynova/nova/pull/235 * fix(vm): Var declarations in scopes by @aapoalas in https://github.com/trynova/nova/pull/236 * fix(small_string): Support null-terminated small strings by @andreubotella in https://github.com/trynova/nova/pull/237 * fix(vm): TopLevelVarDeclaredNames by @aapoalas in https://github.com/trynova/nova/pull/238 * fix(ecmascript): Function internal methods by @aapoalas in https://github.com/trynova/nova/pull/239 * fix(ecmascript): Invert ArraySetLength step 5 condition by @aapoalas in https://github.com/trynova/nova/pull/240 * feat(ecmascript): Object constructor methods by @aapoalas in https://github.com/trynova/nova/pull/241 * fix(vm): Invalid continue jump logic by @aapoalas in https://github.com/trynova/nova/pull/242 * fix(ecmascript): Array length assignment by @aapoalas in https://github.com/trynova/nova/pull/243 * fix(ecmascript): ElementArray reserve indexing by @aapoalas in https://github.com/trynova/nova/pull/244 * feat(ecmascript): Implement Object.getOwnPropertyDescriptor and Object.getOwnPropertyDescriptors by @aapoalas in https://github.com/trynova/nova/pull/245 * feat(ecmascript): Finish Object constructor methods by @aapoalas in https://github.com/trynova/nova/pull/246 * fix(repo): Make `cargo run` on the root directory run `nova_cli` by @andreubotella in https://github.com/trynova/nova/pull/249 * feat(ecmascript): Boolean constructor and ThisBooleanValue for boolean objects by @aapoalas in https://github.com/trynova/nova/pull/247 * feat(ecmascript): isFinite and isNaN by @aapoalas in https://github.com/trynova/nova/pull/251 * feat(tests): Add `eval-test` subcommand to the test262 runner by @andreubotella in https://github.com/trynova/nova/pull/248 * feat(ecmascript): String constructor by @aapoalas in https://github.com/trynova/nova/pull/253 * feat(vm): ConditionalExpression by @aapoalas in https://github.com/trynova/nova/pull/254 * feat(vm): SequenceExpression by @aapoalas in https://github.com/trynova/nova/pull/255 * fix: Various issues around function calls by @aapoalas in https://github.com/trynova/nova/pull/256 * feat(ecmascript): Implement string less/greater-than comparison by @andreubotella in https://github.com/trynova/nova/pull/257 * feat(tests): Make the test262 runner parallel by @andreubotella in https://github.com/trynova/nova/pull/250 * feat(ecmascript): TemplateLiteral by @aapoalas in https://github.com/trynova/nova/pull/258 * feat(vm): delete Operator by @aapoalas in https://github.com/trynova/nova/pull/259 * feat(ecmascript): Implement internal methods for string exotic objects by @andreubotella in https://github.com/trynova/nova/pull/260 * fix(ecmascript): Throw a `TypeError` when `PutValue` fails, not a `ReferenceError` by @andreubotella in https://github.com/trynova/nova/pull/262 * fix(ecmascript): Fix bugs related to negative zero by @andreubotella in https://github.com/trynova/nova/pull/263 * feat(vm): EnumerateObjectProperties by @aapoalas in https://github.com/trynova/nova/pull/261 * feat(ecmascript): Array prototype methods, and fixes by @aapoalas in https://github.com/trynova/nova/pull/265 * fix(ecmascript): Only implicit return in concise arrow functions by @andreubotella in https://github.com/trynova/nova/pull/264 * refactor(heap): Implement Index traits on heap vectors by @aapoalas in https://github.com/trynova/nova/pull/267 * feat(ecmascript): Implement `delete` for object properties by @andreubotella in https://github.com/trynova/nova/pull/273 * fix(bytecode): Assignments should return the right-hand side by @andreubotella in https://github.com/trynova/nova/pull/269 * fix(ecmascript): Fix `Object.is{Extensible,Sealed,Frozen}` by @andreubotella in https://github.com/trynova/nova/pull/270 * feat(ecmascript): Add `Reflect` static methods by @andreubotella in https://github.com/trynova/nova/pull/271 * fix(ecmascript): Fix string length and indexing in non-ASCII strings by @andreubotella in https://github.com/trynova/nova/pull/266 * fix(vm): If-else, Array.of, ECMASCriptFunction.prototype.toString by @aapoalas in https://github.com/trynova/nova/pull/274 * fix(ecmascript): Bad conversions in Number conversions by @aapoalas in https://github.com/trynova/nova/pull/275 * feat(ecmascript): implement bigint to string coercion by @eliassjogreen in https://github.com/trynova/nova/pull/276 * feat(ecmascript): remainder and shift operators by @eliassjogreen in https://github.com/trynova/nova/pull/272 * feat(test262): Add a set of skipped tests by @andreubotella in https://github.com/trynova/nova/pull/277 * feat(ecmascript): Implement `eval` by @eliassjogreen in https://github.com/trynova/nova/pull/278 * feat(vm): Implement direct `eval` by @andreubotella in https://github.com/trynova/nova/pull/280 * refactor(ecmascript): Improve conversions between Number and Rust numeric types by @andreubotella in https://github.com/trynova/nova/pull/281 * fix(ecmascript): Make `Value::is_object()` support all object types by @andreubotella in https://github.com/trynova/nova/pull/283 * fix(ecmascript): Fix `length` & `name` deletion in built-in functions by @andreubotella in https://github.com/trynova/nova/pull/285 * feat(ecmascript): Make `{Boolean,String,Number}.prototype` primitive objects by @andreubotella in https://github.com/trynova/nova/pull/284 * feat(ecmascript): Implement a number of String prototype methods by @andreubotella in https://github.com/trynova/nova/pull/282 * chore: Add license by @aapoalas in https://github.com/trynova/nova/pull/286 * fix(ecmascript): Enforce the spec's limits on string length by @andreubotella in https://github.com/trynova/nova/pull/287 * feat(vm): Lexical for loops by @aapoalas in https://github.com/trynova/nova/pull/290 * fix/feat: Improve harness test pass rate by @aapoalas in https://github.com/trynova/nova/pull/291 * feat: More harness tests by @aapoalas in https://github.com/trynova/nova/pull/292 * feat(ecmascript): Map.prototype and some others by @aapoalas in https://github.com/trynova/nova/pull/293 * feat(ecmascript): Set constructor and some prototype methods by @aapoalas in https://github.com/trynova/nova/pull/294 * feat(ecmascript): More Array.prototype methods by @aapoalas in https://github.com/trynova/nova/pull/296 * refactor(ecmascript): Add default implementations to `HostHooks` by @andreubotella in https://github.com/trynova/nova/pull/298 * refactor(ecmascript): Refactor `PromiseCapability` and `PromiseState` by @andreubotella in https://github.com/trynova/nova/pull/297 * refactor(ecmascript): Refactor the promise resolving functions by @andreubotella in https://github.com/trynova/nova/pull/299 * feat(ecmascript): Basic (synchronous) `Promise` implementation by @andreubotella in https://github.com/trynova/nova/pull/300 * feat(tests): Support async tests in the test262 runner by @andreubotella in https://github.com/trynova/nova/pull/302 * feat(ecmascript, cli): Implement promise jobs by @andreubotella in https://github.com/trynova/nova/pull/303 * fix(nova_cli): The promise job queue should be a queue, not a stack by @andreubotella in https://github.com/trynova/nova/pull/304 * feat(ecmascript): Array.prototype.some and fixes by @aapoalas in https://github.com/trynova/nova/pull/306 * fix(ecmascript): Fix bug with already-resolved promise determination by @andreubotella in https://github.com/trynova/nova/pull/305 * refactor(ecmascript): Return Option<Function> from IsCallable and IsConstructable by @aapoalas in https://github.com/trynova/nova/pull/301 * chore(rust): Update Rust toolchain to 1.79.0 by @aapoalas in https://github.com/trynova/nova/pull/308 * chore(nova_vm): bump deps by @load1n9 in https://github.com/trynova/nova/pull/312 * feat(vm): for-of iteration by @aapoalas in https://github.com/trynova/nova/pull/310 * fix(ecmascript): Array.prototype is an Array by @aapoalas in https://github.com/trynova/nova/pull/307 * perf(vm): Remove an extra heap allocation from element arrays growing by @aapoalas in https://github.com/trynova/nova/pull/309 * feat(vm): Object accessors by @aapoalas in https://github.com/trynova/nova/pull/311 * chore: move all deps to workspace deps + small_string to no-std by @load1n9 in https://github.com/trynova/nova/pull/313 * fix(vm): Fix bugs with increment and decrement operators by @andreubotella in https://github.com/trynova/nova/pull/315 * fix(ecmascript): Various function names and lengths were wrong, typeof operator didn't handle unresolvable references by @aapoalas in https://github.com/trynova/nova/pull/314 * feat(ecmascript): Implement strict vs. non-strict code distinction by @andreubotella in https://github.com/trynova/nova/pull/319 * fix(vm): Missing `GetValue` for property key expressions in object literals by @andreubotella in https://github.com/trynova/nova/pull/322 * feat(ecmascript): Support strict mode in bindings and references by @andreubotella in https://github.com/trynova/nova/pull/320 * feat: repl command by @load1n9 in https://github.com/trynova/nova/pull/323 * feat(ecmascript): Implement the rest of `Math` by @eliassjogreen in https://github.com/trynova/nova/pull/318 * fix(cli): Remove workaround for non-TTY color escapes for parse errors by @andreubotella in https://github.com/trynova/nova/pull/325 * chore: bump test262 by @eliassjogreen in https://github.com/trynova/nova/pull/326 * feat: ignore typescript types by @load1n9 in https://github.com/trynova/nova/pull/328 * chore(test262): Remove unnecessary expectations by @andreubotella in https://github.com/trynova/nova/pull/330 * fix: Remove unnecessary dot when settings the binary extension for Windows in the test262 runner by @marc2332 in https://github.com/trynova/nova/pull/332 * feat: Support `toLowerCase` & `toUpperCase` in StringPrototype by @marc2332 in https://github.com/trynova/nova/pull/331 * fix: Canonicalize the base path of tests in test262_runner by @marc2332 in https://github.com/trynova/nova/pull/333 * feat(vm): Semantic analysis by @aapoalas in https://github.com/trynova/nova/pull/329 * fix(tests): Windows-related fixes to the test262 runner by @andreubotella in https://github.com/trynova/nova/pull/337 * feat(ecmascript): `Date.prototype[Symbol.toPrimitive]` by @aapoalas in https://github.com/trynova/nova/pull/339 * fix(ecmascript) `TypedArray.prototype.toString` by @aapoalas in https://github.com/trynova/nova/pull/340 * feat(ecmascript): `RegExp.prototype.toString` by @aapoalas in https://github.com/trynova/nova/pull/341 * refactor(vm): Implement a SmallF64 variant to replace Float by @aapoalas in https://github.com/trynova/nova/pull/324 * feat(ecmascript): Array indexed descriptors by @aapoalas in https://github.com/trynova/nova/pull/321 * feat: Built-in functions with Storage by @marc2332 in https://github.com/trynova/nova/pull/347 * feat(heap): Expose Agent GC by @aapoalas in https://github.com/trynova/nova/pull/268 * feat(agent): Change Agent::throw_exception to take String parameter by @aapoalas in https://github.com/trynova/nova/pull/335 * feat(ecmascript): implement `iterator_step_value` by @eliassjogreen in https://github.com/trynova/nova/pull/346 * fix(vm): Check validity of ElementArrays after push and reserve by @aapoalas in https://github.com/trynova/nova/pull/336 * feat(vm): Implement `Global` to enable rooting of Values by @marc2332 in https://github.com/trynova/nova/pull/348 * fix(heap): Keep parsed source code in the heap by @aapoalas in https://github.com/trynova/nova/pull/343 * feat(vm): Migrate to `ahash` by @marc2332 in https://github.com/trynova/nova/pull/351 * feat(ecmascript): Symbol prototype `get description` by @eliassjogreen in https://github.com/trynova/nova/pull/355 * feat(tests): Introduce `--update-metrics` flag by @eliassjogreen in https://github.com/trynova/nova/pull/356 * feat(vm): Support `ArrayLike` argument in `Function.prototype.apply` by @marc2332 in https://github.com/trynova/nova/pull/357 * feat(ecmascript): String prototype `repeat` by @eliassjogreen in https://github.com/trynova/nova/pull/354 * refactor: Allow storing VM and execution state in GC'd types by @andreubotella in https://github.com/trynova/nova/pull/363 * fix(tests): Behaviour of `--update` flag by @eliassjogreen in https://github.com/trynova/nova/pull/365 * refactor: Refactor promise reactions in preparation for `await` by @andreubotella in https://github.com/trynova/nova/pull/362 * fix(ecmascript): Fix prototypes for async and generator functions by @andreubotella in https://github.com/trynova/nova/pull/316 * feat(ecmascript): Array prototype `reduce` and `reduceRight` by @eliassjogreen in https://github.com/trynova/nova/pull/353 * feat(ecmascript): Basic support for async functions by @andreubotella in https://github.com/trynova/nova/pull/361 * fix(repl): restore terminal cursor on Ctrl-C signal by @littledivy in https://github.com/trynova/nova/pull/369 * feat(cli): Allow replacing `print` by @marc2332 in https://github.com/trynova/nova/pull/358 * refactor(ecmascript): Add the spec's `PromiseResolve` algorithm by @andreubotella in https://github.com/trynova/nova/pull/373 * feat(ecmascript): Implement `await` by @andreubotella in https://github.com/trynova/nova/pull/364 * feat(tests): Check that metrics are as expected after test run by @eliassjogreen in https://github.com/trynova/nova/pull/367 * refactor(ecmascript): Allow Symbol keys in function `Builtin`s by @andreubotella in https://github.com/trynova/nova/pull/375 * fix(ci): Do not error out on metrics mismatch by @aapoalas in https://github.com/trynova/nova/pull/376 * feat(ecmascript): `String.prototype.trim`, `String.prototype.trimEnd`, `String.prototype.trimStart` by @marc2332 in https://github.com/trynova/nova/pull/372 * feat(ecmascript): String prototype `padStart` and `padEnd` by @eliassjogreen in https://github.com/trynova/nova/pull/352 * feat(ecmascript): Unmapped arguments objects by @aapoalas in https://github.com/trynova/nova/pull/366 * feat(vm): Expose useful APIs by @marc2332 in https://github.com/trynova/nova/pull/371 * feat(ecamscript): Basic generator implementation by @andreubotella in https://github.com/trynova/nova/pull/377 * feat(ecmascript): Implement `JSON.parse` by @eliassjogreen in https://github.com/trynova/nova/pull/379 * feat(ecmascript): Implement `yield` by @andreubotella in https://github.com/trynova/nova/pull/378 * fix(vm): Handle declarations where not all variables have Initializers by @andreubotella in https://github.com/trynova/nova/pull/383 * feat: `Number.prototype.toPrecision` by @marc2332 in https://github.com/trynova/nova/pull/381 * feat(ecmascript): Array iterator objects by @andreubotella in https://github.com/trynova/nova/pull/385 * fix(ecmascript): Make unmapped arguments objects iterable by @andreubotella in https://github.com/trynova/nova/pull/386 * feat(vm): basic chain expressions by @littledivy in https://github.com/trynova/nova/pull/370 * feat(vm): Build array destructuring on top of `VmIterator` by @andreubotella in https://github.com/trynova/nova/pull/387 * feat(vm): Support the rest pattern in array destructuring by @andreubotella in https://github.com/trynova/nova/pull/388 * feat(ecmascript): Add initial version of `Object.groupBy` by @thegreatercurve in https://github.com/trynova/nova/pull/389 * feat(ecmascript): Implement `Promise.{try,withResolvers}` by @andreubotella in https://github.com/trynova/nova/pull/391 * fix(ecmascript): Make Map, Set actual hashmaps by @aapoalas in https://github.com/trynova/nova/pull/392 * chore(ecmascript): Remove unsafe usage in Map and Set constructors and methods, implement rehashing of primitives if needed by @aapoalas in https://github.com/trynova/nova/pull/393 * feat(vm): Support default values in array destructuring by @andreubotella in https://github.com/trynova/nova/pull/394 * feat(vm): Support __proto__ literal key in object construction by @aapoalas in https://github.com/trynova/nova/pull/395 * refactor(vm): Refactor simple object patterns by @andreubotella in https://github.com/trynova/nova/pull/398 * feat(ecmascript): Support rest bindings in object destructuring by @andreubotella in https://github.com/trynova/nova/pull/399 * feat(vm): Implement complex object binding patterns by @andreubotella in https://github.com/trynova/nova/pull/400 * refactor(vm): Allow nested binding patterns to be simple by @andreubotella in https://github.com/trynova/nova/pull/401 * feat(vm): Reimplement FunctionDeclarationInstantiation as part of function compilation by @andreubotella in https://github.com/trynova/nova/pull/402 * feat(vm): Support the spread operator on array and object literals by @andreubotella in https://github.com/trynova/nova/pull/403 * chore: bump deps by @load1n9 in https://github.com/trynova/nova/pull/396 * refactor(ecmascript): Reserve space on the target object in `copy_data_properties` by @andreubotella in https://github.com/trynova/nova/pull/404 * refactor(ecmascript): Move `ContainsExpression` to `syntax_directed_operations` by @andreubotella in https://github.com/trynova/nova/pull/405 * feat(vm): Basic class support by @aapoalas in https://github.com/trynova/nova/pull/406 * feat(vm): Support the spread operator in function arguments by @andreubotella in https://github.com/trynova/nova/pull/407 * fix(ecmascript): Invalid logic in DefineOwnProperty for Array by @aapoalas in https://github.com/trynova/nova/pull/408 * feat(ecmascript): Implement the `Function` constructor by @andreubotella in https://github.com/trynova/nova/pull/409 * fix(ecmascript): Fix invalid search logic in String.prototype.lastIndexOf by @aapoalas in https://github.com/trynova/nova/pull/410 * feat(cli): readTextFile by @aapoalas in https://github.com/trynova/nova/pull/411 * feat(ecmascript): Implement Set and Map iterators by @andreubotella in https://github.com/trynova/nova/pull/413 * feat(ecmascript): ClassStaticBlocks by @aapoalas in https://github.com/trynova/nova/pull/412 * feat(vm): implement missing BigInt functions by @load1n9 in https://github.com/trynova/nova/pull/384 * feat(array): Implement `from_slice` to array by @load1n9 in https://github.com/trynova/nova/pull/382 * feat(ecmascript): `Array.prototype.sort` by @aapoalas in https://github.com/trynova/nova/pull/414 * feat(ecmascript): `String.fromCharCode` by @DonIsaac in https://github.com/trynova/nova/pull/416 * feat(vm): Store compiled bytecode in ECMAScriptFunctionHeapData by @aapoalas in https://github.com/trynova/nova/pull/419 * feat(vm): Reduce Executable bytecode memory footprint by @aapoalas in https://github.com/trynova/nova/pull/420 * feat(ecmascript): Initial support for class field initializers by @aapoalas in https://github.com/trynova/nova/pull/421 * feat(ecmascript): ArrayBuffer Constructor and Prototype by @aapoalas in https://github.com/trynova/nova/pull/418 * feat(ecmascript): `String.prototype.split()` by @oscarotero in https://github.com/trynova/nova/pull/417 * chore: Update dependencies by @aapoalas in https://github.com/trynova/nova/pull/422 * feat(ecmascript): `Function.prototype.bind` by @aapoalas in https://github.com/trynova/nova/pull/423 * chore(engine): Move function internal methods into helper fucntions to reduce duplication by @aapoalas in https://github.com/trynova/nova/pull/425 * `String.prototype.replace` by @oscarotero in https://github.com/trynova/nova/pull/424 * feat: Math as a feature by @load1n9 in https://github.com/trynova/nova/pull/429 * feat: json as a feature by @load1n9 in https://github.com/trynova/nova/pull/430 * feat(ecmascript): Builtin class constructors and field initializers by @aapoalas in https://github.com/trynova/nova/pull/426 * feat: date as feature by @load1n9 in https://github.com/trynova/nova/pull/431 * feat: array buffer feature by @load1n9 in https://github.com/trynova/nova/pull/433 * chore: Update CONTRIBUTING.md by @aapoalas in https://github.com/trynova/nova/pull/435 * chore: Update CONTRIBUTING.md by @aapoalas in https://github.com/trynova/nova/pull/437 * String/replaceall by @oscarotero in https://github.com/trynova/nova/pull/428 * perf(vm): Reduce suspended Vm memory footprint by @aapoalas in https://github.com/trynova/nova/pull/434 * Chore/contributing updates by @aapoalas in https://github.com/trynova/nova/pull/438 * feat: shared arraybuffer as feature by @load1n9 in https://github.com/trynova/nova/pull/436 * chore(test262): Update test262 submodule by @aapoalas in https://github.com/trynova/nova/pull/439 * feat(engine): Add Register and Local Value wrappers by @aapoalas in https://github.com/trynova/nova/pull/440 * feat: WeakMap, WeakSet, WeakRef behind the `weak-refs` feature by @load1n9 in https://github.com/trynova/nova/pull/442 * feat(string): add normalize method by @ivandevp in https://github.com/trynova/nova/pull/441 * feat(array): add reverse prototype method by @ivandevp in https://github.com/trynova/nova/pull/445 * feat: atomics behind atomics feature to complete atomic things by @load1n9 in https://github.com/trynova/nova/pull/444 * feat(engine): Implement interleaved garbage collection by @aapoalas in https://github.com/trynova/nova/pull/443 * feat(engine): Implement Rootable trait and use it to implement Local (now Scoped) and Global by @aapoalas in https://github.com/trynova/nova/pull/449 * fix(engine): Rootable features usage by @aapoalas in https://github.com/trynova/nova/pull/450 * feat: regexp feature by @load1n9 in https://github.com/trynova/nova/pull/448 * feat(ecmascript): Implement `DataView` constructor by @eliassjogreen in https://github.com/trynova/nova/pull/447 * fix(gc): Map GC incorrectly rehashes non-objects by @aapoalas in https://github.com/trynova/nova/pull/454 * chore: bump oxc -> 0.34 by @load1n9 in https://github.com/trynova/nova/pull/453 * feat(engine): GcScope by @aapoalas in https://github.com/trynova/nova/pull/452 * feat(array): add to_reversed prototype method by @ivandevp in https://github.com/trynova/nova/pull/446 * typo in contributing by @aapoalas in https://github.com/trynova/nova/pull/458 * feat(ecmascript): Implement dataview `get` and `set` methods by @eliassjogreen in https://github.com/trynova/nova/pull/455 * feat(ecmascript): Implement `parseInt` by @eliassjogreen in https://github.com/trynova/nova/pull/456 * feat(ecmascript): Implement `parseFloat` by @eliassjogreen in https://github.com/trynova/nova/pull/459 * feat(array-prototype): add splice method by @ivandevp in https://github.com/trynova/nova/pull/451 * fix Discord link by @aapoalas in https://github.com/trynova/nova/pull/463 * docs(contributing): Add test runner example by @Andoryuuta in https://github.com/trynova/nova/pull/464 * feat(ecmascript): Array.prototype.unshift by @JinWeiTan in https://github.com/trynova/nova/pull/461 * chore: bump deps + miette -> oxc-miette by @load1n9 in https://github.com/trynova/nova/pull/466 * feat(engine): Require NoGcScope to create Strings by @aapoalas in https://github.com/trynova/nova/pull/462 * feat(ecmascript): Implement `TypedArray` constructors by @eliassjogreen in https://github.com/trynova/nova/pull/460 * feat(ecmascript): StringToBigInt by @JamesPatrickGill in https://github.com/trynova/nova/pull/468 * feat(ecmascript): Array.prototype.toSorted by @JinWeiTan in https://github.com/trynova/nova/pull/467 * fix(ecmascript): Set proto in `typed_array_create` if it's `Some` by @eliassjogreen in https://github.com/trynova/nova/pull/469 * feat(ecmascript): Array.prototype.with by @JinWeiTan in https://github.com/trynova/nova/pull/470 * chore(build): Turn on LTO for release profile by @aapoalas in https://github.com/trynova/nova/pull/473 * chore(ecmascript): Make TypedArray and DataView memory work take NoGcScope by @aapoalas in https://github.com/trynova/nova/pull/472 * feat(ecmascript): `TypedArray.prototype.join` by @aapoalas in https://github.com/trynova/nova/pull/471 * feat(gc): Number lifetime by @aapoalas in https://github.com/trynova/nova/pull/475 * chore: bump to oxc 0.39 by @load1n9 in https://github.com/trynova/nova/pull/476 * feat(gc): BigInt and Numeric lifetime by @aapoalas in https://github.com/trynova/nova/pull/477 * feat: improve package metadata for future crate discoverability by @load1n9 in https://github.com/trynova/nova/pull/478 * feat(gc): Symbol and Primitive lifetime by @aapoalas in https://github.com/trynova/nova/pull/479 * fix: breaking gc stuff with arraybuffer and regexp disabled by @load1n9 in https://github.com/trynova/nova/pull/480 * feat(ecmascript): Infallible internal method variants by @aapoalas in https://github.com/trynova/nova/pull/482 * feat(ecmascript): Try methods for environments by @aapoalas in https://github.com/trynova/nova/pull/483 * feat: implement PartialEq for ValueRootRepr by @load1n9 in https://github.com/trynova/nova/pull/484 * feat(gc): PropertyKey lifetime by @aapoalas in https://github.com/trynova/nova/pull/486 * chore: Move GcScope ZST to be last parameter by @aapoalas in https://github.com/trynova/nova/pull/487 * chore: TryResult by @aapoalas in https://github.com/trynova/nova/pull/488 * feat(ecmascript): String.prototype toLocaleLowerCase and toLocalUpperCase by @yossydev in https://github.com/trynova/nova/pull/489 * fix(engine): eval string literal by @aapoalas in https://github.com/trynova/nova/pull/491 * feat(ecmascript): OrdinaryObject lifetime by @aapoalas in https://github.com/trynova/nova/pull/492 * feat(ecmascript): BoundFunction lifetime by @aapoalas in https://github.com/trynova/nova/pull/493 * feat(ecmascript): proxy internal get prototype of by @yossydev in https://github.com/trynova/nova/pull/494 * feat(ecmascript): proxy internal_is_extensible and internal_prevent_extensions by @yossydev in https://github.com/trynova/nova/pull/495 * feat(test262): Implement the `detachArrayBuffer` test harness function by @eliassjogreen in https://github.com/trynova/nova/pull/498 * chore(ecmascript): Rename behaviour fns to constructors to better match JavaScript semantics by @aapoalas in https://github.com/trynova/nova/pull/499 * feat(ecmascript): BuiltinFunction lifetime by @aapoalas in https://github.com/trynova/nova/pull/500 * feat(ecmascript): ECMAScriptFunction lifetime by @aapoalas in https://github.com/trynova/nova/pull/501 * feat(ecmascript): BuiltinConstructorFunction lifetime by @aapoalas in https://github.com/trynova/nova/pull/502 * feat(ecmascript): Function lifetime by @aapoalas in https://github.com/trynova/nova/pull/503 * feat(ecmascipt): is_reg_exp by @yossydev in https://github.com/trynova/nova/pull/497 * feat(ecmascript): regexp get flags by @yossydev in https://github.com/trynova/nova/pull/496 * feat(ecmascript): proxy internal has prototype by @yossydev in https://github.com/trynova/nova/pull/504 * feat(ecmascript): RegExp lastIndex property by @aapoalas in https://github.com/trynova/nova/pull/505 * feat(engine): BlockDeclarationInstantiation by @aapoalas in https://github.com/trynova/nova/pull/506 * feat(ecmascript): proxy set method by @yossydev in https://github.com/trynova/nova/pull/507 * fix(engine): Binding of variables in destructor patterns and anonymous class names by @aapoalas in https://github.com/trynova/nova/pull/508 * fix(engine): Exit declarative environments on continue and break by @aapoalas in https://github.com/trynova/nova/pull/509 * feat(engine): Support destructuring in catch parameter bindings by @aapoalas in https://github.com/trynova/nova/pull/511 * feat(ecmascript): Support bigint and string less than comparison by @eliassjogreen in https://github.com/trynova/nova/pull/512 * feat(ecmascript): Add support for proxies in `is_array` abstract operation by @eliassjogreen in https://github.com/trynova/nova/pull/513 * feat(ecmascript): proxy call method by @yossydev in https://github.com/trynova/nova/pull/510 * feat(ecmascript): Implement array iterator next for typed arrays by @eliassjogreen in https://github.com/trynova/nova/pull/514 * feat(ecmascript): proxy set prototype of by @yossydev in https://github.com/trynova/nova/pull/515 * feat(ecmascript): async generator function constructor by @yossydev in https://github.com/trynova/nova/pull/516 * feat(ecmascript): InstantiateAsyncGeneratorFunctionObject by @aapoalas in https://github.com/trynova/nova/pull/519 * feat(ecmascript): Proxy defineOwnProperty by @yossydev in https://github.com/trynova/nova/pull/518 * feat(ecmascript): Proxy delete by @yossydev in https://github.com/trynova/nova/pull/521 * feat(ecmascript): Proxy getOwnProperty by @yossydev in https://github.com/trynova/nova/pull/517 * feat(ecmascript): PrimitiveObject lifetime by @aapoalas in https://github.com/trynova/nova/pull/523 * feat(gc): Array lifetime by @aapoalas in https://github.com/trynova/nova/pull/524 * feat(gc): ArrayBuffer lifetime by @aapoalas in https://github.com/trynova/nova/pull/525 * feat(gc): DataView lifetime by @aapoalas in https://github.com/trynova/nova/pull/526 * feat(gc): Date lifetime by @aapoalas in https://github.com/trynova/nova/pull/529 * feat(gc): FinalizationRegistry lifetime by @aapoalas in https://github.com/trynova/nova/pull/531 * feat(gc): Error lifetime by @aapoalas in https://github.com/trynova/nova/pull/530 * feat(gc): Map lifetime by @aapoalas in https://github.com/trynova/nova/pull/532 * feat(gc): Promise lifetime by @aapoalas in https://github.com/trynova/nova/pull/533 * feat(gc): Sub-Object lifetimes by @aapoalas in https://github.com/trynova/nova/pull/534 * feat(gc): Proxy lifetime by @aapoalas in https://github.com/trynova/nova/pull/535 * feat(ecmascript): Proxy constract by @yossydev in https://github.com/trynova/nova/pull/528 * chore: bump to oxc 0.46 by @load1n9 in https://github.com/trynova/nova/pull/537 * feat(gc): Object lifetime by @aapoalas in https://github.com/trynova/nova/pull/536 * chore(contributing): Update CONTRIBUTING.md and add GARBAGE_COLLECTOR.md by @aapoalas in https://github.com/trynova/nova/pull/538 * feat(ecmascript): aggregate error construtor by @yossydev in https://github.com/trynova/nova/pull/541 * feat(ecmascript): Make JobInner contain Globals by @aapoalas in https://github.com/trynova/nova/pull/540 * feat(ecmascript): Proxy ownKeys by @yossydev in https://github.com/trynova/nova/pull/522 * chore(test262): Update test262 submodule by @yossydev in https://github.com/trynova/nova/pull/542 * feat(ecmascript): %TypedArray%.prototype.some by @yossydev in https://github.com/trynova/nova/pull/545 * feat: set as a feature by @load1n9 in https://github.com/trynova/nova/pull/546 * feat(ecmascript): Implement Annex-B string prototype methods by @eliassjogreen in https://github.com/trynova/nova/pull/544 * feat(ecmascript): %TypedArray%.prototype.every by @yossydev in https://github.com/trynova/nova/pull/547 * fix(ecmascript): `anchor` function length by @eliassjogreen in https://github.com/trynova/nova/pull/549 * fix(ecmascript): `trimLeft` and `trimRight` property descriptors by @eliassjogreen in https://github.com/trynova/nova/pull/548 * feat(ecmascript): %TypedArray%.prototype.at by @yossydev in https://github.com/trynova/nova/pull/550 * chore(ecmascript): Use ValidateTypedArray return value's Object data by @aapoalas in https://github.com/trynova/nova/pull/555 * feat(ecmascript): String fromCodePoints by @yossydev in https://github.com/trynova/nova/pull/543 * feat(ecmascript): AsyncGenerator by @aapoalas in https://github.com/trynova/nova/pull/520 * feat(ecmascript): Implement `Float16Array` proposal by @eliassjogreen in https://github.com/trynova/nova/pull/551 * feat(heap): String interning by @eliassjogreen in https://github.com/trynova/nova/pull/557 * feat(ecmascript): Implement `Math.sumPrecise` proposal by @eliassjogreen in https://github.com/trynova/nova/pull/552 * feat(ecmascript): TypedArray internal methods by @aapoalas in https://github.com/trynova/nova/pull/558 * feat(ecmascript): %TypedArray%.prototype.forEach by @yossydev in https://github.com/trynova/nova/pull/553 * perf: String hashing, creation and concatenating by @aapoalas in https://github.com/trynova/nova/pull/560 * feat(ecmascript): %TypedArray%.prototype.includes by @yossydev in https://github.com/trynova/nova/pull/554 * fix(ecmascript): Do not expose uninitialized data through ArrayBuffer resizing by @aapoalas in https://github.com/trynova/nova/pull/563 * feat: treat stds by @load1n9 in https://github.com/trynova/nova/pull/564 * chore(ecmascript): used try and Assert Determination by @yossydev in https://github.com/trynova/nova/pull/565 * chore: bump oxc 0.51.0 by @load1n9 in https://github.com/trynova/nova/pull/569 * Add an `--expose-internals` CLI flag by @andreubotella in https://github.com/trynova/nova/pull/566 * feat: improve repl and prettify by @load1n9 in https://github.com/trynova/nova/pull/570 * Support realms in test262 by @andreubotella in https://github.com/trynova/nova/pull/567 * chore: update rust toolchain version by cargo 1.85 by @yossydev in https://github.com/trynova/nova/pull/572 * feat(linter): Create `nova_lint` and implement three basic rules by @eliassjogreen in https://github.com/trynova/nova/pull/574 * feat(gc): Value lifetime by @aapoalas in https://github.com/trynova/nova/pull/562 * chore: update rust edition 2024 by @yossydev in https://github.com/trynova/nova/pull/576 * chore(engine): Use Bindable trait everywhere by @aapoalas in https://github.com/trynova/nova/pull/577 * chore: Update and cleanup README.md by @aapoalas in https://github.com/trynova/nova/pull/578 * Chore/scopable cleanup by @aapoalas in https://github.com/trynova/nova/pull/579 * feat(ecmascript): %TypedArray%.prototype.indexOf by @yossydev in https://github.com/trynova/nova/pull/556 * feat(ecmascript): Map.groupBy by @yossydev in https://github.com/trynova/nova/pull/559 * feat(ecmascript): %TypedArray%.prototype.find by @yossydev in https://github.com/trynova/nova/pull/568 * feat(ecmascript): %TypedArray%.prototype.findIndex by @yossydev in https://github.com/trynova/nova/pull/571 * fix(engine): Initialize lexical function bindings in block scopes by @aapoalas in https://github.com/trynova/nova/pull/580 * fix(ecmascript): AsyncGenerator prototype by @aapoalas in https://github.com/trynova/nova/pull/581 * chore(engine): IteratorRecord lifetime by @aapoalas in https://github.com/trynova/nova/pull/582 * chore(ecmascript): AsyncGeneratorRequest lifetime by @aapoalas in https://github.com/trynova/nova/pull/583 * feat(ecmascript): %TypedArray%.prototype.findLast by @yossydev in https://github.com/trynova/nova/pull/584 * fix(ecmascript): Use euclidian remainder in asIntN and asUintN BigInt constructor methods by @aapoalas in https://github.com/trynova/nova/pull/587 * feat(ecmascript): %TypedArray%.prototype.lastIndexOf by @yossydev in https://github.com/trynova/nova/pull/585 * feat(ecmascript): implement Iterator.prototype.forEach by @r58Playz in https://github.com/trynova/nova/pull/588 * feat(ecmascript): %TypedArray%.prototype.findLastIndex by @yossydev in https://github.com/trynova/nova/pull/590 * feat(ecmascript): implement `Date` constructor and prototype methods by @kermanx in https://github.com/trynova/nova/pull/586 * feat(ecmascript): array and object assignment pattern by @kermanx in https://github.com/trynova/nova/pull/592 * fix(ecmascript): FlattenIntoArray increment targetIndex by @aapoalas in https://github.com/trynova/nova/pull/594 * feat(engine): GetNewTarget by @aapoalas in https://github.com/trynova/nova/pull/595 * chore(ecmascript): Revoked callable Proxy should remember callability by @aapoalas in https://github.com/trynova/nova/pull/596 * chore(engine): Simplify compile_class_static_field by @aapoalas in https://github.com/trynova/nova/pull/597 * feat(ecmascript): Implement Iterator functions that don't need a helper by @r58Playz in https://github.com/trynova/nova/pull/591 * feat(ecmascript): %TypedArray%.prototype.reverse by @yossydev in https://github.com/trynova/nova/pull/593 * feat(gc): ArgumentsList scoping by @aapoalas in https://github.com/trynova/nova/pull/599 * fix(gc): Fix more GC usage by @aapoalas in https://github.com/trynova/nova/pull/600 * feat(ecmascript): TypedArrayCreateFromConstructor and %TypedArray%.of by @yossydev in https://github.com/trynova/nova/pull/601 * feat(ecmascript): Array.prototype.toSpliced by @yossydev in https://github.com/trynova/nova/pull/603 * feat(ecmascript): %TypedArray%.from by @yossydev in https://github.com/trynova/nova/pull/604 * chore(ecmascript): remove TypedArray toSpliced by @yossydev in https://github.com/trynova/nova/pull/606 * feat(gc): Environment lifetimes by @aapoalas in https://github.com/trynova/nova/pull/608 * feat(ecmascript): %TypedArray%.prototype.copyWithin by @yossydev in https://github.com/trynova/nova/pull/605 * feat(ecmascript): %TypedArray%.prototype.fill by @yossydev in https://github.com/trynova/nova/pull/607 * fix(ecmascript): AggregateError constructor prototype and length by @aapoalas in https://github.com/trynova/nova/pull/614 * fix(gc): GlobalEnvironment GC safety by @aapoalas in https://github.com/trynova/nova/pull/615 * feat(gc): Script lifetime by @aapoalas in https://github.com/trynova/nova/pull/651 * feat(gc): SourceCode lifetime by @aapoalas in https://github.com/trynova/nova/pull/652 * feat(gc): Executable lifetime by @aapoalas in https://github.com/trynova/nova/pull/653 * feat(ecmascript): %TypedArray%.prototype.reduce by @yossydev in https://github.com/trynova/nova/pull/609 * feat(ecmascript): Error.isError by @yossydev in https://github.com/trynova/nova/pull/612 * feat(gc): PromiseReaction lifetime by @aapoalas in https://github.com/trynova/nova/pull/654 * feat(gc): ElementsIndex lifetime by @aapoalas in https://github.com/trynova/nova/pull/656 * feat(ecmascript): %TypedArray%.prototype.toReversed by @yossydev in https://github.com/trynova/nova/pull/611 * feat(gc): Add lifetimes to heap records by @aapoalas in https://github.com/trynova/nova/pull/657 * Fix main build by @aapoalas in https://github.com/trynova/nova/pull/658 * feat(ecmascript): %TypedArray%.prototype.reduceRight by @yossydev in https://github.com/trynova/nova/pull/655 * feat(ecmascript): Implement `JSON.stringify` by @eliassjogreen in https://github.com/trynova/nova/pull/527 * feat(gc): PropertyDescriptor lifetime by @aapoalas in https://github.com/trynova/nova/pull/661 * fix(gc): Improve GC safety, nearly fully GC-safe now by @aapoalas in https://github.com/trynova/nova/pull/662 * feat(gc): JsResult lifetime by @aapoalas in https://github.com/trynova/nova/pull/664 * feat(gc): Scoped collections by @aapoalas in https://github.com/trynova/nova/pull/666 * feat(gc): Scoped VM iterators by @aapoalas in https://github.com/trynova/nova/pull/667 * feat(ecmascript): `BigInt.prototype.toString` by @eliassjogreen in https://github.com/trynova/nova/pull/669 * feat(engine): compile for-in/of bodies for non-assignment destructures by @DonIsaac in https://github.com/trynova/nova/pull/668 * feat(ecmascript): `Number.prototype.toString` by @eliassjogreen in https://github.com/trynova/nova/pull/670 * chore(rust): Update to rust 1.86.0 and nightly-2025-04-25 by @aapoalas in https://github.com/trynova/nova/pull/672 * feat(ecmascript): `BigInt::leftShift`, `BigInt::signedRightShift` and `BigInt::unsignedRightShift` by @eliassjogreen in https://github.com/trynova/nova/pull/671 * feat(ecmascript): %TypedArray%.prototype.sort by @yossydev in https://github.com/trynova/nova/pull/610 * feat(ecmascript): `BigInt::bitwiseAND`, `BigInt::bitwiseXOR` and `BigInt::bitwiseOR` by @eliassjogreen in https://github.com/trynova/nova/pull/673 * chore(test262): Update metrics by @aapoalas in https://github.com/trynova/nova/pull/674 * feat(gc): Interleaved GC by @aapoalas in https://github.com/trynova/nova/pull/675 * feat(vm): Use 32-bit integers for jump slots by @aapoalas in https://github.com/trynova/nova/pull/676 * feat(gc): Count more allocations by @aapoalas in https://github.com/trynova/nova/pull/677 * feat(ecmascript): %TypedArray%.prototype.filter by @yossydev in https://github.com/trynova/nova/pull/660 * chore: bump oxc -> 0.67 by @load1n9 in https://github.com/trynova/nova/pull/679 * chore(ecmascript): Throw not implemented errors by @aapoalas in https://github.com/trynova/nova/pull/678 * feat(ecmascript): String iterators by @aapoalas in https://github.com/trynova/nova/pull/680 * fix(vm): Handle empty `for` test expression by @eliassjogreen in https://github.com/trynova/nova/pull/681 * chore: auto-impl `IntoValue` for `Into<Value>` by @DonIsaac in https://github.com/trynova/nova/pull/683 * build: run test262 with new dev-fast profile by @DonIsaac in https://github.com/trynova/nova/pull/685 * feat(vm): Labelled statements by @aapoalas in https://github.com/trynova/nova/pull/684 * chore: auto-impl `IntoPrimitive`, `IntoNumeric`, `IntoObject` and `IntoFunction` by @eliassjogreen in https://github.com/trynova/nova/pull/688 * chore: `with_typed_array_viewable` macro to reduce duplicate code by @eliassjogreen in https://github.com/trynova/nova/pull/689 * fix(engine): peek last instruction should never return non-instruction bytes by @DonIsaac in https://github.com/trynova/nova/pull/687 * feat(heap): Separate key and value storage by @aapoalas in https://github.com/trynova/nova/pull/691 * feat(ecmascript): WeakRef by @aapoalas in https://github.com/trynova/nova/pull/692 * feat(ecmascript): WeakSet by @aapoalas in https://github.com/trynova/nova/pull/693 * fix(ecmascript): WeakKey::Symbol discriminant by @aapoalas in https://github.com/trynova/nova/pull/694 * feat(ecmascript): IteratorClose and IteratorCloseAsync, for-of loop assignments and so forth by @aapoalas in https://github.com/trynova/nova/pull/696 * feat(vm): Finally blocks and iterator closing by @aapoalas in https://github.com/trynova/nova/pull/697 * chore(test262): Update tests by @aapoalas in https://github.com/trynova/nova/pull/698 * feat(ecmascript): %TypedArray%.prototype.with by @yossydev in https://github.com/trynova/nova/pull/663 * feat(ecmascript): Implement `Atomics.pause` proposal by @eliassjogreen in https://github.com/trynova/nova/pull/699 * feat(ecmascript): %TypedArray%.prototype.map by @yossydev in https://github.com/trynova/nova/pull/695 * chore(ecmascript): refactor reverse and copy_within by @yossydev in https://github.com/trynova/nova/pull/682 * feat(ecmascript): Implement `decodeURI` and `decodeURIComponent` by @eliassjogreen in https://github.com/trynova/nova/pull/700 * feat(ecmascript): %TypedArray%.prototype.toSorted by @yossydev in https://github.com/trynova/nova/pull/701 * feat(ecmascript): Implement `String.raw` by @eliassjogreen in https://github.com/trynova/nova/pull/702 * feat(ecmascript): Private properties by @aapoalas in https://github.com/trynova/nova/pull/703 * chore(tests): Fix test262.fyi failures by @aapoalas in https://github.com/trynova/nova/pull/704 * fix(ecmascript): Handle empty strings in `StringToNumber` type conversion by @eliassjogreen in https://github.com/trynova/nova/pull/726 * fix(ecmascript): Three minor crash issues by @aapoalas in https://github.com/trynova/nova/pull/728 * fix(ecmascript): Behaviour of `Array.prototype.includes` larger than length `fromIndex` argument by @eliassjogreen in https://github.com/trynova/nova/pull/729 * fix(ecmascript): Behaviour of `Array.prototype.indexOf` larger than length `fromIndex` argument by @eliassjogreen in https://github.com/trynova/nova/pull/730 * fix(vm): PopExceptionJumpTarget unwraps None by @aapoalas in https://github.com/trynova/nova/pull/732 * feat(ecmascript): %TypedArray%.prototype.subarray by @yossydev in https://github.com/trynova/nova/pull/733 * feat(vm): Support yield return points and fix errors around iterator closing in destructuring by @aapoalas in https://github.com/trynova/nova/pull/734 * fix(ecmascript): Add max size (4gb) to array buffer by @eliassjogreen in https://github.com/trynova/nova/pull/731 * perf(vm): Skip unreachable code, remove redundant Jumps, avoid Push/PopReference when binding literals to variables by @aapoalas in https://github.com/trynova/nova/pull/735 * feat(vm): PrivateInExpression by @aapoalas in https://github.com/trynova/nova/pull/737 * feat(vm): AssignmentPattern and BindingInitialization compilation by @aapoalas in https://github.com/trynova/nova/pull/738 * fix(ecmascript): Fix invalid internal assertion that private methods are unconfigurable by @aapoalas in https://github.com/trynova/nova/pull/739 * fix(ecmascript,vm): Fix crashes around BigInt and Number handling by @aapoalas in https://github.com/trynova/nova/pull/740 * chore: bump oxc 0.72.0 by @load1n9 in https://github.com/trynova/nova/pull/741 * fix(test262): Include Annex-B and Intl in skipped tests by @eliassjogreen in https://github.com/trynova/nova/pull/747 * feat(vm): Basic yield* support by @aapoalas in https://github.com/trynova/nova/pull/746 * feat(vm): super keyword by @aapoalas in https://github.com/trynova/nova/pull/748 * feat(typescript): non-null assertion support by @load1n9 in https://github.com/trynova/nova/pull/749 * fix(vm): Handle more anonymous function names by @aapoalas in https://github.com/trynova/nova/pull/750 * fix(ecmascript): Minor crash issues by @aapoalas in https://github.com/trynova/nova/pull/751 * feat(typescript): implement the `as` keyword by @load1n9 in https://github.com/trynova/nova/pull/753 * [WIP] feat(ecmascript): Support ECMAScript module execution by @aapoalas in https://github.com/trynova/nova/pull/752 * feat(ecmascript): ExportDeclaration by @aapoalas in https://github.com/trynova/nova/pull/754 * fix: Number.greaterThan by @DonIsaac in https://github.com/trynova/nova/pull/756 * feat(ecmascript): Synchronous ECMAScript module imports by @aapoalas in https://github.com/trynova/nova/pull/757 * feat(typescript): implement `satisfies` by @load1n9 in https://github.com/trynova/nova/pull/755 * feat(ecmascript): %TypedArray%.prototype.slice by @yossydev in https://github.com/trynova/nova/pull/736 * feat(ecmascript): Array and TypedArray prototype toLocaleString by @yossydev in https://github.com/trynova/nova/pull/745 * feat(ecmascript): Indirect, namespace, and cyclical ECMAScript module imports by @aapoalas in https://github.com/trynova/nova/pull/759 * feat(ecmascript): AsyncFromSyncIterators by @aapoalas in https://github.com/trynova/nova/pull/761 * fix(ecmascript): Various minor crashes and whatnot. by @aapoalas in https://github.com/trynova/nova/pull/762 * docs(contributing): fix GARBAGE_COLLECTOR.md link by @GeoffreyParrier in https://github.com/trynova/nova/pull/764 * chore(CONTRIBUTING): wrong conventional comment prefix by @aapoalas in https://github.com/trynova/nova/pull/765 * fix(ecmascript): More crashes by @aapoalas in https://github.com/trynova/nova/pull/763 * feat(ecmascript): Implement `Math.clamp` proposal by @eliassjogreen in https://github.com/trynova/nova/pull/760 * fix(vm): Fix element deletion when reducing array length by @edwinlzs in https://github.com/trynova/nova/pull/766 * fix(vm): use correct value for Number.MIN_VALUE by @lino-levan in https://github.com/trynova/nova/pull/767 * fix(ecmascript): Even more crashes by @aapoalas in https://github.com/trynova/nova/pull/768 * feat(ecmascript): Contains, and a myriad of fixes by @aapoalas in https://github.com/trynova/nova/pull/769 * feat(vm): UpdateEmpty for loops, SwitchStatement fixes by @aapoalas in https://github.com/trynova/nova/pull/770 * feat(vm): TaggedTemplates by @aapoalas in https://github.com/trynova/nova/pull/771 * Implement Object ...rest Assignment in for of loop by @komyg in https://github.com/trynova/nova/pull/758 * fix(vm): for-of statement remaining failures by @aapoalas in https://github.com/trynova/nova/pull/772 * fix(vm): Handle negative numbers correctly in `Number::is_odd_integer` by @simonwuelker in https://github.com/trynova/nova/pull/773 * refactor(vm): Iterator and statement completion overhaul by @aapoalas in https://github.com/trynova/nova/pull/774 * fix(ecmascript): Run generator's FunctionDeclarationInstantiation on first call by @aapoalas in https://github.com/trynova/nova/pull/775 * refactor(vm): Reference struct minification, Generator object creation order by @aapoalas in https://github.com/trynova/nova/pull/776 * fix(vm): try-catch-finally completion value by @aapoalas in https://github.com/trynova/nova/pull/777 * feat(ecmascript): ImportCalls by @aapoalas in https://github.com/trynova/nova/pull/779 * fix(ecmascript): Propagate 'use strict' directives to script execution contexts by @aapoalas in https://github.com/trynova/nova/pull/780 * chore(test262): Expose GC by @aapoalas in https://github.com/trynova/nova/pull/781 * chore: bump oxc to 0.75 by @load1n9 in https://github.com/trynova/nova/pull/782 * feat(ecmascript): Top-level Await by @aapoalas in https://github.com/trynova/nova/pull/783 * ci: Add Build&Release workflow by @aapoalas in https://github.com/trynova/nova/pull/784 ## New Contributors * @sno2 made their first contribution in https://github.com/trynova/nova/pull/1 * @andreubotella made their first contribution in https://github.com/trynova/nova/pull/7 * @MierenManz made their first contribution in https://github.com/trynova/nova/pull/9 * @load1n9 made their first contribution in https://github.com/trynova/nova/pull/19 * @lino-levan made their first contribution in https://github.com/trynova/nova/pull/56 * @eliassjogreen made their first contribution in https://github.com/trynova/nova/pull/53 * @marc2332 made their first contribution in https://github.com/trynova/nova/pull/332 * @littledivy made their first contribution in https://github.com/trynova/nova/pull/369 * @thegreatercurve made their first contribution in https://github.com/trynova/nova/pull/389 * @DonIsaac made their first contribution in https://github.com/trynova/nova/pull/416 * @oscarotero made their first contribution in https://github.com/trynova/nova/pull/417 * @ivandevp made their first contribution in https://github.com/trynova/nova/pull/441 * @Andoryuuta made their first contribution in https://github.com/trynova/nova/pull/464 * @JinWeiTan made their first contribution in https://github.com/trynova/nova/pull/461 * @JamesPatrickGill made their first contribution in https://github.com/trynova/nova/pull/468 * @yossydev made their first contribution in https://github.com/trynova/nova/pull/489 * @r58Playz made their first contribution in https://github.com/trynova/nova/pull/588 * @kermanx made their first contribution in https://github.com/trynova/nova/pull/586 * @GeoffreyParrier made their first contribution in https://github.com/trynova/nova/pull/764 * @edwinlzs made their first contribution in https://github.com/trynova/nova/pull/766 * @komyg made their first contribution in https://github.com/trynova/nova/pull/758 * @simonwuelker made their first contribution in https://github.com/trynova/nova/pull/773 **Full Changelog**: https://github.com/trynova/nova/commits/main