- Build out Temporal's
ZonedDateTimeandNowby @nekevss in boa-dev#4068 - Add valueOf methods to the Temporal builtins by @nekevss in boa-dev#4079
- Add more
ZonedDateTimemethod implementations by @nekevss in boa-dev#4095 - Cleanup CLI to use eyre + refactor patterns by @jedel1043 in boa-dev#4108
- Move methods of
JsStringtoJsStrby @jedel1043 in boa-dev#4106 - Implement
Error.isErrorby @jedel1043 in boa-dev#4114 - Improve implementation of example
JobQueues by @jedel1043 in boa-dev#4111 - Implement
PlainDatestring methods by @nekevss in boa-dev#4119 - Revamp
JobQueueintoJobExecutorand introduceNativeAsyncJobby @jedel1043 in boa-dev#4118 - Add
From<Cow<'a, str>>forJsStringby @CrazyboyQCD in boa-dev#4134 - Implement more
toStringandtoJSONmethods on Temporal builtins by @nekevss in boa-dev#4126 - Implement
Array.fromAsyncby @jedel1043 in boa-dev#4115 - Implement
toStringandtoJSONmethods for the remaining builtinsDuration,PlainMonthDay, andPlainYearMonthby @nekevss in boa-dev#4135 - Bump temporal_rs and fix instant return by @nekevss in boa-dev#4142
- Implement toLocaleString and some general cleanup by @nekevss in boa-dev#4156
- add macos arm64 by @ahaoboy in boa-dev#4160
- Use NaN-boxing on value::InnerValue by @hansl in boa-dev#4091
- Split
Tagged<T>into a utility crate by @HalidOdat in boa-dev#3849 - Update JsValue::to_json to support undefined by @jamesthurley in boa-dev#4212
- Change signature of
from_async_fnto allow capturing the context by @jedel1043 in boa-dev#4215 - Implement Set methods from ECMAScript Specification Features/#4128 by @Hemenguelbindi in boa-dev#4145
- Add a
#[boa_module]macro to automatically implement a Module by @hansl in boa-dev#4277 - Implement small changes from Intl's 2026 spec by @jedel1043 in boa-dev#4290
- Bump rustc edition to 2024 and version to 1.88 by @jedel1043 in boa-dev#4315
- Implement backtrace information for errors by @HalidOdat in boa-dev#4292
- Add WPT as optional tests for boa_runtime by @hansl in boa-dev#4008
- Simplify SourcePositionGuard creation by @hansl in boa-dev#4327
- Make
JobExecutor::run_jobs_asynca plain async method by @jedel1043 in boa-dev#4331 - Introduce async
ModuleLoaders by @jedel1043 in boa-dev#4328 - Use
AsyncFnOncein constructors ofNativeAsyncJobby @jedel1043 in boa-dev#4333 - Add (optionally) Float16Array and f16round() support and add JsUint8ClampedArray by @hansl in boa-dev#4364
- Implement
Atomics.waitAsyncby @jedel1043 in boa-dev#4339 - Implement
Math.sumPreciseby @nekevss in boa-dev#4383 - Add
Date.prototype.toTemporalInstantfrom the Temporal proposal by @nekevss in boa-dev#4382 - Implement upsert methods for Map by @jasonmilad in boa-dev#4436
- Change JsObject default method to take
Instrinsicsparameter by @mdrokz in boa-dev#4466 - Cleanup
BuiltInConstructorconstants to ensure no additional allocations by @jedel1043 in boa-dev#4464 - Implement Upsert methods for weakMap: getOrInsert and getOrInsertComputed by @rrogerc in boa-dev#4459
- Fix #4051, parse Arguments should expect
)not}by @zzzdong in boa-dev#4058 - bug fix: ops that stay strictly at the EOF after assigns ops are ignored by @Nikita-str in boa-dev#4047
- Patch Temporal.PlainTime and Temporal.Duration constructors by @nekevss in boa-dev#4078
- Fix bugs on ephemeron and TypedArray.prototype.slice by @jedel1043 in boa-dev#4107
- Allow bool and null literals in export aliases by @jedel1043 in boa-dev#4113
- Allow referencing
superwithin initializer of static private property by @jedel1043 in boa-dev#4121 - Fix truncation on max microseconds and nanoseconds by @nekevss in boa-dev#4139
- Fix issues with
to_temporal_timeandZonedDateTime.prototype.withPlainTimeby @nekevss in boa-dev#4154 - Some cleanup + order of operations fixes by @nekevss in boa-dev#4190
- Fix JsValue::to_json with cyclic values by @changhc in boa-dev#4176
- Fixed logo in documentation by @Razican in boa-dev#4208
- Enable
wasm_jsfeature of getrandom in boa_engine crate by @HalidOdat in boa-dev#4241 - Fix panics on staging TypedArray.slice tests by @jedel1043 in boa-dev#4289
- Add the legacy enum-based JsValue implementation behind a flag by @hansl in boa-dev#4281
- Allow non-reserved keywords to be used as identifiers by @cijiugechu in boa-dev#4307
- Avoid fully awaiting futures in async event loops by @jedel1043 in boa-dev#4332
- Prevent evalutation of code with
--dump-astflag by @HalidOdat in boa-dev#4337 - Some general bug fixes for Temporal implementation by @nekevss in boa-dev#4349
- Fix UB in implementation of
NanBoxedValueby @jedel1043 in boa-dev#4346 - fix(regexp): fix the capture group count assert to have the correct upper limit by @BDeuDev in boa-dev#4419
- Fix
contains_direct_evalfor ordinary function by @hpp2334 in boa-dev#4453 - Fix test262 comments on new PR by @jedel1043 in boa-dev#4465
- Remove
try_breakmacro in favour of question mark operator by @jedel1043 in boa-dev#4112 - Use cow-utils instead by @heygsc in boa-dev#4133
- Register VM by @HalidOdat in boa-dev#3798
- Bump MSRV to 1.84 by @jedel1043 in boa-dev#4165
- Avoid unnecessary calls of
to_stringincow_*by @CrazyboyQCD in boa-dev#4166 - Apply rustc 1.85 lints by @jedel1043 in boa-dev#4170
- Some string cleanups by @CrazyboyQCD in boa-dev#4090
- Refactor bytecode representation by @raskad in boa-dev#4220
- Refactor registers to use the stack by @raskad in boa-dev#4263
- Bump Test262 hash commit and cleanup test features by @jedel1043 in boa-dev#4288
- Replace inner
Gc<T>withRc<T>forSourceTextby @HalidOdat in boa-dev#4293 - Fix more Intl tests for latest ECMA402 spec by @jedel1043 in boa-dev#4304
- Fix lints for rustc 1.88 by @jedel1043 in boa-dev#4309
- Migrate
temporal_rsfrom0.0.9to0.0.10by @HalidOdat in boa-dev#4318 - Mark the error path in
Call::operationas cold. by @cijiugechu in boa-dev#4319 - Add arm64 linux nightly build by @nekevss in boa-dev#4321
- extract small_map as separate utility crate by @countradooku in boa-dev#4214
- Remove
Box<T>fromJsValueforJsStringby @HalidOdat in boa-dev#4329 - Add
repr(C)onObjectto prevent field reordering by @HalidOdat in boa-dev#4343 - Fix clippy lints for Rust 1.89 by @nekevss in boa-dev#4368
- Add Nix flake by @xubaiwang in boa-dev#4381
- Apply clippy fixes for Rust 1.90 by @hansl in boa-dev#4423
- Fix UB on unaligned ArrayBuffers by @jedel1043 in boa-dev#4427
- Use same cache key for builds and tests by @jasonwilliams in boa-dev#4426
- Bug fix: regex started with
/=parsed asAssignDivby @Nikita-str in boa-dev#4048 - Add fast path for number to
JsStringconversion by @CrazyboyQCD in boa-dev#4054 - Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4069
- Add
fjcvtzsinstruction forARMv8.3target by @CrazyboyQCD in boa-dev#4084 - Add a stress test to the parser to parser multi-millions tokens by @hansl in boa-dev#4086
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4088
- Privatize
JsValue's internals and expose it through a JsVariant (with immutable reference) by @hansl in boa-dev#4080 - Skip creation of arguments object if possible by @raskad in boa-dev#4087
- Allow resizing of underlying ArrayBuffer from Rust by @hansl in boa-dev#4082
- Add inline cache for getting bindings from the global object by @raskad in boa-dev#4067
- Update Temporal ToIntegerIfIntegral, ToIntegerWithTruncation, and ToPositiveIntegerWithTruncation implementation by @nekevss in boa-dev#4081
- Adjust call to correct method for
PlainDateTime.prototype.sinceby @nekevss in boa-dev#4096 - fix very minor typo shift -> unshift by @albertleigh in boa-dev#4097
- Bump the
temporal_rsversion and related changes by @nekevss in boa-dev#4098 - Bump test262 commit and changes to
boa_testerto support sm changes by @nekevss in boa-dev#4099 - Bump the rust-dependencies group across 1 directory with 6 updates by @dependabot[bot] in boa-dev#4103
- Remove some clones and branches in hot
PropertyDescriptorfunctions by @raskad in boa-dev#4104 - Bump syn from 2.0.93 to 2.0.95 in the rust-dependencies group by @dependabot[bot] in boa-dev#4109
- Fix CI with the latest linter errors introduced in 1.84 by @hansl in boa-dev#4117
- Use
cow_to_ascii_uppercaseinstead by @heygsc in boa-dev#4124 - Bump the rust-dependencies group across 1 directory with 7 updates by @dependabot[bot] in boa-dev#4131
- Set the array "length" property in
[[DefineOwnProperty]]based on the array shape by @raskad in boa-dev#4101 - Bump the rust-dependencies group with 5 updates by @dependabot[bot] in boa-dev#4137
- Implement since and until methods for ZonedDateTime by @nekevss in boa-dev#4136
- Bump baptiste0928/cargo-install from 3.1.1 to 3.3.0 in the ci-dependencies group by @dependabot[bot] in boa-dev#4138
- Make the HostHooks shareable between app and context by @hansl in boa-dev#4141
- Bump the rust-dependencies group across 1 directory with 3 updates by @dependabot[bot] in boa-dev#4148
- Implement an internal time type and Clock trait by @hansl in boa-dev#4149
SourceTextcollection &toString()for fns and methods by @Nikita-str in boa-dev#4038setTimeout,setIntervalandclearInterval(and the sameclearTimeout) implementations by @hansl in boa-dev#4130- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4151
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in boa-dev#4157
- Add trace function to Logger trait by @jamesthurley in boa-dev#4155
- Allow local parameters if mapped arguments object is not used by @raskad in boa-dev#4092
- Bump temporal_rs to Feb. 15 version + adjustments by @nekevss in boa-dev#4162
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4163
- Add
PlainDateTime.prototype.roundimplementation fromtemporal_rsby @nekevss in boa-dev#4164 - Fix some engine specific bugs and bump version by @nekevss in boa-dev#4167
- Simplify date parser by @CrazyboyQCD in boa-dev#4143
- Build out remaining method stubs for temporal by @nekevss in boa-dev#4172
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4174
- Prioritize drop of common types for nan-boxed
JsValueby @HalidOdat in boa-dev#4178 - Add changes from YearMonth parsing update and MonthCode addition by @nekevss in boa-dev#4173
- implementation of static method compare for duration from temporal.rs by @lockels in boa-dev#4189
- Unify release workflows by @HalidOdat in boa-dev#4192
- Temporal bump and fixes by @nekevss in boa-dev#4193
- Bump ring from 0.17.9 to 0.17.13 by @dependabot[bot] in boa-dev#4201
- Bump the rust-dependencies group across 1 directory with 20 updates by @dependabot[bot] in boa-dev#4204
- feat(examples): Add comprehensive JsPromise example by @created-by-varun in boa-dev#4198
- Temporal bump and implementation of toPlainYearMonth and toPlainMonthDay by @lockels in boa-dev#4207
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in boa-dev#4209
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4216
- Fix Rust 1.86.0 lints and update dependencies by @raskad in boa-dev#4228
- Move interop and module utilities from boa_interop into boa_engine by @hansl in boa-dev#4218
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4229
- Temporal bump by @lockels in boa-dev#4231
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in boa-dev#4232
- Enable
PlainDate.prototype.toZonedDateTimemethod by @nekevss in boa-dev#4233 PlainDateTime::toZonedDateTime&PlainDateTime::toPlainDateimplementations by @nekevss in boa-dev#4234- Bump temporal_rs and add ZonedDateTime.prototype.round impl by @nekevss in boa-dev#4236
- Bump the rust-dependencies group across 1 directory with 6 updates by @dependabot[bot] in boa-dev#4239
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in boa-dev#4242
- Bump temporal_rs and remove dead code by @nekevss in boa-dev#4248
- Fix Rust 1.87.0 lints by @raskad in boa-dev#4249
- Avoid range checks in nan-boxing by @raskad in boa-dev#4251
- Update README.md to new version. by @tomoverlund in boa-dev#4254
- Fix the Set methods to pass the 262 tests by @hansl in boa-dev#4260
- Add support for LZ4 compression in embedded module loader by @hansl in boa-dev#4261
- Bump the rust-dependencies group across 1 directory with 3 updates by @dependabot[bot] in boa-dev#4264
- Fix AST
containsoperation by @HalidOdat in boa-dev#4267 - Bump temporal_rs and fix some order of operation issues by @nekevss in boa-dev#4268
- Escape analyze function scopes on non-arrow functions by @HalidOdat in boa-dev#4266
- Remove local binding's initialized state in
CallFrameby @HalidOdat in boa-dev#4269 - Improve
README.mdby @HalidOdat in boa-dev#4270 - Add a #[boa_class] proc macro attribute by @hansl in boa-dev#4271
- Bump ICU4X to 2.0 by @jedel1043 in boa-dev#4274
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in boa-dev#4278
- Add
Spans to expression nodes by @HalidOdat in boa-dev#4273 - Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4283
- Bump temporal_rs to v0.0.9 by @nekevss in boa-dev#4285
- remove boa_profiler and profiler calls. update docs. (#4272) by @Timkarx in boa-dev#4276
- Add a #[boa(rename = ...)] attribute to TryFromJs and TryIntoJs derive macros by @hansl in boa-dev#4286
- Add a js_value! macro to allow creation of JsValue from JSON-like DSL by @hansl in boa-dev#4282
- Bump baptiste0928/cargo-install from 3.3.0 to 3.3.1 in the ci-dependencies group by @dependabot[bot] in boa-dev#4295
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4296
- Update phf requirement from 0.11.2 to 0.12.1 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in boa-dev#4297
- Fix
JsValue::multo handle zero times a negative integer by @Rafferty97 in boa-dev#4303 - Move the URL class to using the boa_class macro by @hansl in boa-dev#4294
- Hint branch predictor that surrogate pairs are rare by @cijiugechu in boa-dev#4312
- cli: use
mimallocas global allocator on windows by @cijiugechu in boa-dev#4314 - Refactor the
Bindingmodifiers to use bitflags by @cijiugechu in boa-dev#4316 - Implement type erased
Gc<T>by @HalidOdat in boa-dev#4291 - inline
Gc::inner_ptrby @cijiugechu in boa-dev#4317 - Shrink
JsStrfrom 24 to 16 bytes by @HalidOdat in boa-dev#4322 - Bump tokio from 1.45.1 to 1.46.1 in the rust-dependencies group by @dependabot[bot] in boa-dev#4324
- Refactor
JsObjectto always be size 8 by @raskad in boa-dev#4287 - Add a new
Nullable<T>type that deserialize null toNullable::<T>::Nullby @hansl in boa-dev#4325 - Refactor
JsString's static string tagging by @HalidOdat in boa-dev#4334 - Bump the rust-dependencies group with 6 updates by @dependabot[bot] in boa-dev#4335
- Implement native backtrace positions by @HalidOdat in boa-dev#4306
- Fix documentation for NativeFunction::from_async_fn by @jedel1043 in boa-dev#4344
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in boa-dev#4347
- Bump temporal_rs version to v0.0.11 by @nekevss in boa-dev#4348
- Add an empty EmbeddedModuleLoader default by @hansl in boa-dev#4351
- Fix a camel case bug by @hansl in boa-dev#4352
- Temporal documentation update, part 1 by @nekevss in boa-dev#4353
- Temporal documentation update, part 2 by @nekevss in boa-dev#4354
- Temporal documentation, part 3 by @nekevss in boa-dev#4355
- Temporal documentation update, part 4 by @nekevss in boa-dev#4356
- Bump tokio from 1.46.1 to 1.47.0 in the rust-dependencies group by @dependabot[bot] in boa-dev#4357
FetchAPI (beta) by @hansl in boa-dev#4338- Remove
BoxfromObject's data member by @HalidOdat in boa-dev#4342 - Bump the rust-dependencies group with 6 updates by @dependabot[bot] in boa-dev#4361
- Add support for utf16(-le|be) and use the class API by @hansl in boa-dev#4358
- Bump temporal_rs version to v0.0.12 by @nekevss in boa-dev#4367
- Allow public access to the full position of a call frame by @hansl in boa-dev#4365
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in boa-dev#4374
- Bump slab from 0.4.10 to 0.4.11 by @dependabot[bot] in boa-dev#4376
- Implement queueMicrotask() and a test for it by @hansl in boa-dev#4359
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in boa-dev#4386
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4387
- Improve object display by @xubaiwang in boa-dev#4377
- Fix broken PlainMonthDay.from tests by @nekevss in boa-dev#4389
- Fix final Temporal.Instant test in built-ins test suite by @nekevss in boa-dev#4388
- Remove alignment of property keys with identation by @hansl in boa-dev#4390
- Bump temporal_rs version to v0.0.14 by @nekevss in boa-dev#4391
- Update
Math.sumPreciseto removeSummationStateby @nekevss in boa-dev#4392 - Update phf requirement from 0.12.1 to 0.13.1 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in boa-dev#4384
- Fix index access in
JumpTableinstruction by @HalidOdat in boa-dev#4372 - Bump the rust-dependencies group with 5 updates by @dependabot[bot] in boa-dev#4395
- Fix: prevent OOB panic in decodeURI by tightening percent-decoding bounds; add test for incomplete escape %E7%9A%8 (#4404) by @hamflx in boa-dev#4405
- Implement a
JsValueStoreas well as structuredClone and tests by @hansl in boa-dev#4366 - Bump baptiste0928/cargo-install from 3.3.1 to 3.3.2 in the ci-dependencies group by @dependabot[bot] in boa-dev#4385
- Update hashbrown requirement from 0.15.5 to 0.16.0 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in boa-dev#4396
- Replace the String producing Display logic to using a Formatter by @hansl in boa-dev#4393
- Propagate AST errors to the user by @hansl in boa-dev#4408
- Remove the boa_interop module by @hansl in boa-dev#4407
- Fix final
Temporal.PlainTime.fromtests by @nekevss in boa-dev#4411 - Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4413
- Bump actions/setup-node from 4 to 5 by @dependabot[bot] in boa-dev#4412
- Various quality of life improvements to the CLI by @hansl in boa-dev#4414
- Implement
DateandRegExpJsValueStorefrom/to by @hansl in boa-dev#4415 - Use async channels for Atomics.waitAsync implementation by @jedel1043 in boa-dev#4418
- Bump the rust-dependencies group across 1 directory with 7 updates by @dependabot[bot] in boa-dev#4421
- Unblock Context::run_jobs when no timeouts need to be run by @hansl in boa-dev#4416
- Fix 2 UBs, and cleanup
GcRefCellby @hansl in boa-dev#4422 - Bump temporal_rs version to v0.0.16 by @nekevss in boa-dev#4425
- Fix the CLI when it is not attached to a TTY by @hansl in boa-dev#4424
- Bump the rust-dependencies group with 6 updates by @dependabot[bot] in boa-dev#4429
- Implement
JsValueStoreforSharedArrayBufferandpostMessageby @hansl in boa-dev#4417 - fix: comment typo by @jasonmilad in boa-dev#4430
- Editorconfig: specify indentation and dont overrule Makefile by @hansl in boa-dev#4446
- Add a simple cargo-make to the project by @hansl in boa-dev#4437
- Update to temporal_rs to 0.1 release by @nekevss in boa-dev#4433
- Add minimal CI task to cargo-make by @nekevss in boa-dev#4448
- Improve regular expression flags parsing by @hansl in boa-dev#4434
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in boa-dev#4449
- Only validate the RegExp, do not optimize/compile it by @hansl in boa-dev#4451
- Bump peter-evans/create-or-update-comment from 4 to 5 by @dependabot[bot] in boa-dev#4456
- Bump peter-evans/find-comment from 3 to 4 by @dependabot[bot] in boa-dev#4457
- Bump bytemuck from 1.23.2 to 1.24.0 in the rust-dependencies group by @dependabot[bot] in boa-dev#4458
- Allow printing test262 comment on PRs from forks by @jedel1043 in boa-dev#4428
- perf: Improve
Math.sumPrecisePerformance by @Gumichocopengin8 in boa-dev#4462 - Bump the rust-dependencies group with 3 updates by @dependabot[bot] in boa-dev#4467
- @zzzdong made their first contribution in boa-dev#4058
- @albertleigh made their first contribution in boa-dev#4097
- @heygsc made their first contribution in boa-dev#4124
- @jamesthurley made their first contribution in boa-dev#4155
- @lockels made their first contribution in boa-dev#4189
- @changhc made their first contribution in boa-dev#4176
- @created-by-varun made their first contribution in boa-dev#4198
- @tomoverlund made their first contribution in boa-dev#4254
- @Hemenguelbindi made their first contribution in boa-dev#4145
- @Timkarx made their first contribution in boa-dev#4276
- @Rafferty97 made their first contribution in boa-dev#4303
- @cijiugechu made their first contribution in boa-dev#4307
- @countradooku made their first contribution in boa-dev#4214
- @xubaiwang made their first contribution in boa-dev#4381
- @hamflx made their first contribution in boa-dev#4405
- @BDeuDev made their first contribution in boa-dev#4419
- @jasonmilad made their first contribution in boa-dev#4430
- @hpp2334 made their first contribution in boa-dev#4453
- @Gumichocopengin8 made their first contribution in boa-dev#4462
- @mdrokz made their first contribution in boa-dev#4466
- @rrogerc made their first contribution in boa-dev#4459
Full Changelog: https://github.com/boa-dev/boa/compare/v0.20...v0.21
- Add a js_error! macro to create opaque errors by @hansl in boa-dev#3920
- Update
Instantfor new Temporal functionality by @nekevss in boa-dev#3928 - Add a way to add setters/getters in js_class! by @hansl in boa-dev#3911
- Fix lints from rustc 1.80.0 by @jedel1043 in boa-dev#3936
- Add a JsError::from_rust constructor to create native errors from Rust by @hansl in boa-dev#3921
- add some temporal methods by @jasonwilliams in boa-dev#3856
- Allow a custom Logger to be used as the backend for boa_runtime::Console by @hansl in boa-dev#3943
- Add more utility functions around modules and exports by @hansl in boa-dev#3937
- Allow trailing commas in js_class functions by @hansl in boa-dev#3964
- Implement
Atomics.pauseby @jedel1043 in boa-dev#3956 - Add a clone_inner method to allow cloning of inner data by @hansl in boa-dev#3968
- fix: ignore
debuggerstatement by @shurizzle in boa-dev#3976 - Add support for boa(rename = "") in TryFromJs derive by @hansl in boa-dev#3980
- Add an "iter()" method to Js*Array for convenience by @hansl in boa-dev#3986
- A simple module loader from a function by @hansl in boa-dev#3932
- Add a way for js_error! macro to create native errors with message by @hansl in boa-dev#3971
- Limit actions runs to 1 per branch and fix macos release by @jedel1043 in boa-dev#3996
- Add TextEncoder, TextDecoder implementations to boa_runtime by @hansl in boa-dev#3994
- Add TryFromJs for TypedJsFunction and more tests by @hansl in boa-dev#3981
- Add context to the console
Loggertrait by @hansl in boa-dev#4005 - Add a URL class to boa_runtime by @hansl in boa-dev#4004
- Add a display_lossy() to write a JsString lossily by @hansl in boa-dev#4023
TryIntoJstrait and derive macro for it by @Nikita-str in boa-dev#3999- console.debug() should use a debug Logger method by @hansl in boa-dev#4019
TryFromJsfromJsMapforHashMap&BtreeMapby @Nikita-str in boa-dev#3998- Add string builder to build
JsStringby @CrazyboyQCD in boa-dev#3915
- Implement
Math.powfunction according to ECMAScript specification by @magic-akari in boa-dev#3916 - Fix temporal builtin properties by @nekevss in boa-dev#3930
- Fix wrong
negoperation by @CrazyboyQCD in boa-dev#3926 - Fix destructuring assignment evaluation order by @raskad in boa-dev#3934
- Fix various parser idempotency issues and parsing errors by @raskad in boa-dev#3917
- Implement new spec changes for
AsyncGeneratorby @jedel1043 in boa-dev#3950 - Refactor ast function types by @raskad in boa-dev#3931
- Fix
js_strmacro to correctly handle latin1 strings by @jedel1043 in boa-dev#3959 - Allow dead code for code that is newly detected as unused by @hansl in boa-dev#3984
- Allow warnings when running CI on release branches by @jedel1043 in boa-dev#3990
- docs: Fix link to examples by @it-a-me in boa-dev#4007
IntegerOrInfinityeqbug fix by @Nikita-str in boa-dev#4010
- Refactor
RawJsString's representation to makeJsStrings construction from string literal heap-allocation free by @CrazyboyQCD in boa-dev#3935 - Split default icu data into lazily deserialized parts by @jedel1043 in boa-dev#3948
- Add clippy for denying print and eprints by @hansl in boa-dev#3967
- Refactor iterator APIs to be on parity with the latest spec by @jedel1043 in boa-dev#3962
- Add support for Trace, Finalize and JsData for Convert<> by @hansl in boa-dev#3970
- use with_capacity to reduce re-allocations fixes #3896 by @jasonwilliams in boa-dev#3961
- add nightly build by @jasonwilliams in boa-dev#4026
- Patch the indentation in nightly_build.yml by @nekevss in boa-dev#4028
- Update night build's rename binary step by @nekevss in boa-dev#4032
- Use upload-rust-binary-action for nightly release by @nekevss in boa-dev#4040
- Fix
refvalue in nightly and add target to nightly release by @nekevss in boa-dev#4042 - Reduce environment allocations by @raskad in boa-dev#4002
- Implement more Temporal functionality by @nekevss in boa-dev#3924
- Add a Source::with_path method to set the path on a Source by @hansl in boa-dev#3941
- Add spec edition 15 to the tester by @jedel1043 in boa-dev#3957
- Rename as_promise to as_promise_object and add as_promise -> JsPromise by @hansl in boa-dev#3965
- Build out partial record functionality, property bag construction, and
withmethods by @nekevss in boa-dev#3955 - Enable CI for release branches by @jedel1043 in boa-dev#3987
- Add a display type for JsString to allow formatting without allocations by @hansl in boa-dev#3951
- Add TryIntoJsResult for vectors by @hansl in boa-dev#3993
- Add tests from WPT and fix them in the Console by @hansl in boa-dev#3979
- Update changelog for v0.19.1 by @jedel1043 in boa-dev#3995
- Implement register allocation by @HalidOdat in boa-dev#3942
- Implement scope analysis and local variables by @raskad in boa-dev#3988
JsValue::to_jsonfix integer property keys by @Nikita-str in boa-dev#4011- Some optimizations on
Errorby @CrazyboyQCD in boa-dev#4020 - Option::None should try into Undefined, not Null by @hansl in boa-dev#4029
- Some string optimizations by @CrazyboyQCD in boa-dev#4030
- Add a JsPromise::from_result for convenience by @hansl in boa-dev#4039
- Fix misspelled permissions in nightly build action by @nekevss in boa-dev#4041
- Remove dockerfile from documentation by @4yman-0 in boa-dev#4046
- Bump dependencies with breaking changes by @jedel1043 in boa-dev#4050
- Migrate to fast-float2 by @jedel1043 in boa-dev#4052
- @magic-akari made their first contribution in boa-dev#3916
- @shurizzle made their first contribution in boa-dev#3976
- @it-a-me made their first contribution in boa-dev#4007
- @Nikita-str made their first contribution in boa-dev#4010
- @4yman-0 made their first contribution in boa-dev#4046
Full Changelog: https://github.com/boa-dev/boa/compare/v0.19...v0.20.0
- Implement new spec changes for
AsyncGeneratorby @jedel1043 in boa-dev#3950 - Allow dead code for code that is newly detected as unused by @hansl in boa-dev#3984
- Allow warnings when running CI on release branches by @jedel1043 in boa-dev#3990
- Add spec edition 15 to the tester by @jedel1043 in boa-dev#3957
- Enable CI for release branches by @jedel1043 in boa-dev#3987
Full Changelog: https://github.com/boa-dev/boa/compare/v0.19...v0.19.1
- Add release binary striping by @Razican in boa-dev#3727
- Added NPM publish workflow by @Razican in boa-dev#3725
- Remove references to dev docs and npm dependencies by @jedel1043 in boa-dev#3787
- Cleanup tester deps and patterns by @jedel1043 in boa-dev#3792
- Build docs.rs docs with all features enabled by @jedel1043 in boa-dev#3794
- Add a new type Convert<> to convert values by @hansl in boa-dev#3786
- Add functions to create modules from a JSON value by @hansl in boa-dev#3804
- Add an embed_module!() macro to boa_interop by @hansl in boa-dev#3784
- Add a ContextData struct to inject host defined types from the context by @hansl in boa-dev#3802
- Implement object keys access by @HalidOdat in boa-dev#3832
- Group dependabot updates by @jedel1043 in boa-dev#3863
- Adding TryFromJs implementations for BTreeMap and HashMap by @hansl in boa-dev#3844
- Adding TryFromJs implementations for tuples by @hansl in boa-dev#3843
- Add a js_class to implement the Class trait without boilerplate by @hansl in boa-dev#3872
- Implement lossless TryFromJs for integers from f64 by @HalidOdat in boa-dev#3907
- Close for-of iterator when the loop body throws by @raskad in boa-dev#3734
- Add default value handling for destructuring property access arrays by @raskad in boa-dev#3738
- Fix invalid syntax errors for allowed
letas variable names by @raskad in boa-dev#3743 - Fix parsing of
asyncin for-of loops by @raskad in boa-dev#3745 - Fix parsing of binding identifier in try catch parameters by @raskad in boa-dev#3752
- Add missing environment creation in initial iteration of for loop by @raskad in boa-dev#3751
- chore: Update README link to reflect new site paths by @NickTomlin in boa-dev#3793
- Fix order of
ToStringcall inFunctionconstructor by @HalidOdat in boa-dev#3820 - Fix CI for nextest step by @jedel1043 in boa-dev#3862
- Fix base objects in
withstatements by @raskad in boa-dev#3870 - Fix boa cli history by @raskad in boa-dev#3875
- Fix hashbang comments by using proper goal symbols by @raskad in boa-dev#3876
- Fix AsyncGenerator to correctly handle
returninsidethenby @jedel1043 in boa-dev#3879 - Fix HomeObject for private class methods by @raskad in boa-dev#3897
- Fix evaluation order in destructive property assignments by @raskad in boa-dev#3895
- Apply new clippy lints for rustc 1.77 by @jedel1043 in boa-dev#3759
- Change dependabot interval to weekly by @jedel1043 in boa-dev#3758
- Dense array storage variants for
i32andf64by @HalidOdat in boa-dev#3760 - Optimize number to
PropertyKeyconversion by @HalidOdat in boa-dev#3769 - don't run test262 on push by @jasonwilliams in boa-dev#3774
- Check that
min <= maxinclamp_finiteby @jedel1043 in boa-dev#3699 - Decouple
ContextfromByteCompilerby @HalidOdat in boa-dev#3829 - Implement latin1 encoded
JsStrings by @HalidOdat in boa-dev#3450 - Replace
js_strwithjs_stringin examples by @getong in boa-dev#3836 - Separate
JsStringinto its own crate by @HalidOdat in boa-dev#3837 - Bump temporal_rs to latest commit by @jedel1043 in boa-dev#3880
- Remove
FormalParameterListfromCodeBlockby @HalidOdat in boa-dev#3882
- Fix a few Duration code typos by @robot-head in boa-dev#3730
- Add a try_from_js implementation for Vec (accept any Array-like) by @hansl in boa-dev#3755
- Swap to Duration::round from temporal_rs by @robot-head in boa-dev#3731
- Cache
thisvalue by @HalidOdat in boa-dev#3771 - Allow deserialization of missing objects properties into Option<> by @hansl in boa-dev#3767
- Optimize Regex match check by @HalidOdat in boa-dev#3779
- Add a boa_interop crate by @hansl in boa-dev#3772
- Add a path to Module (and expose it in Referrer) by @hansl in boa-dev#3783
- Properly resolve paths in SimpleModuleLoader and add path to Referrer::Script by @hansl in boa-dev#3791
- Fix SimpleModuleLoader on Windows by @hansl in boa-dev#3795
- Add more utility traits and funtions to boa_interop by @hansl in boa-dev#3773
- Implement Promise.try() by @linusg in boa-dev#3800
- Implement TryFromJs for Either<L, R> by @hansl in boa-dev#3822
- Fix Rust 1.78.0 Clippy lints by @HalidOdat in boa-dev#3838
- Switch from actions-rs/toolchain to dtolnay/rust-toolchain by @raskad in boa-dev#3845
- Replace archived github actions from actions-rs by @raskad in boa-dev#3848
- Add matrix badge and update communication to include matrix by @nekevss in boa-dev#3865
- Add groupCollapsed by @leoflalv in boa-dev#3867
- Bump ICU4X to 1.5 and cleanup Intl by @jedel1043 in boa-dev#3868
- Update regress to v0.10.0 by @raskad in boa-dev#3869
- Combine
HasPropertyandGetoperations when possible by @raskad in boa-dev#3883 - Remove some environment clones by @raskad in boa-dev#3884
- Refactor call frame access to avoid panic checks by @raskad in boa-dev#3888
- Remove
Temporal.CalendarandTemporal.TimeZoneby @jedel1043 in boa-dev#3890 - Update Temporal rounding and implement additional methods by @nekevss in boa-dev#3892
- format code in comments by @jasonwilliams in boa-dev#3902
- Updates to temporal_rs version and temporal methods by @nekevss in boa-dev#3900
- Patch regression from change to to-relative-to-object by @nekevss in boa-dev#3906
- Add
get_uncheckedmethod toJsStringandJsStrby @CrazyboyQCD in boa-dev#3898 - bump gc threshold by @jasonwilliams in boa-dev#3908
- update versions and ABOUT files by @jasonwilliams in boa-dev#3903
- Cleanup README.md and contributor documentation by @jedel1043 in boa-dev#3909
- Refactor environment stack to remove some panics by @raskad in boa-dev#3893
- @robot-head made their first contribution in boa-dev#3730
- @hansl made their first contribution in boa-dev#3755
- @NickTomlin made their first contribution in boa-dev#3793
- @linusg made their first contribution in boa-dev#3800
- @getong made their first contribution in boa-dev#3836
- @leoflalv made their first contribution in boa-dev#3867
- @CrazyboyQCD made their first contribution in boa-dev#3898
Full Changelog: https://github.com/boa-dev/boa/compare/v0.18...v0.19
- Format let-else expressions by @jedel1043 in boa-dev#3102
- Add regexp indices (
dflag) support by @dirkdev98 in boa-dev#3094 - Add missing 'unscopables' to
Array.prototype[@@unscopables]by @dirkdev98 in boa-dev#3111 - Updated Fuzzer dependencies and added them to Dependabot by @Razican in boa-dev#3124
- Implement
findLastandfindLastIndexon TypedArray by @dirkdev98 in boa-dev#3135 - Implement i128/u128 to JsBigInt conversions by @AlvinKuruvilla in boa-dev#3129
- Implement
String.prototype.isWellFormedandString.prototype.toWellFormedby @raskad in boa-dev#3187 - Clarify usage section in
README.mdby @postmeback in boa-dev#3092 - Log traces even without message (boa_runtime) by @kelbazz in boa-dev#3193
- Implement ephemeron-based weak map by @jedel1043 in boa-dev#3052
- Improve bytecompiler bytecode generation. by @HalidOdat in boa-dev#3188
- Add
InstructionandInstructionIteratorby @HalidOdat in boa-dev#3201 - Add ECMAScript 14 to
boa_testerby @jedel1043 in boa-dev#3273 - Bump
rust-versionto 1.71 by @jedel1043 in boa-dev#3290 - Lazily download
test262repository by @HalidOdat in boa-dev#3214 - Implement
Gc::new_cyclicby @jedel1043 in boa-dev#3292 - Implement
Intl.PluralRulesby @jedel1043 in boa-dev#3298 - Implement step 5 in
RegExpconstructor by @HalidOdat in boa-dev#3305 - Replace #[deny] with #[warn] by @jedel1043 in boa-dev#3309
- Bump ICU4X to 1.3 by @jedel1043 in boa-dev#3306
- Migrate to workspace deps by @jedel1043 in boa-dev#3313
- Implement
[[HostDefined]]field onRealms by @HalidOdat in boa-dev#2952 - Introduce experimental features by @jedel1043 in boa-dev#3318
- Introduce a
Classmap by @jedel1043 in boa-dev#3315 - Fix
Function.prototype.toString()by @HalidOdat in boa-dev#3374 - First portion of the Temporal implementation by @nekevss in boa-dev#3277
- Update feature flags to specific feature flag by @nekevss in boa-dev#3376
- Implement
[[HostDefined]]forModuleandScriptby @arexon in boa-dev#3381 - Implement synthetic modules by @jedel1043 in boa-dev#3294
- Prevent
test262repository update if not needed by @HalidOdat in boa-dev#3386 - Implement
SharedArrayBufferby @jedel1043 in boa-dev#3384 - Add
Context::create_realmby @johnyob in boa-dev#3369 - Introduce a thread safe version of
JsErrorby @jedel1043 in boa-dev#3398 - Implement asynchronous evaluation of scripts by @jedel1043 in boa-dev#3044
- Feature
get/set $boa.limits.stackby @HalidOdat in boa-dev#3385 - Implement
change-array-by-copymethods by @jedel1043 in boa-dev#3412 - Implement the
array-groupingproposal by @jedel1043 in boa-dev#3420 - Implement
Atomicsbuiltin by @jedel1043 in boa-dev#3394 - Migrate to workspace lints by @jedel1043 in boa-dev#3334
- Bump ICU4X to 1.4 and finish Intl impls with new APIs by @jedel1043 in boa-dev#3469
- Class: Switch
make_dataparameter fromthistonew_targetby @johnyob in boa-dev#3478 - Add utility methods to the
Classtrait by @jedel1043 in boa-dev#3488 - Simplify
IcuAPI by @jedel1043 in boa-dev#3503 - Add UTF-16 input parsing by @raskad in boa-dev#3538
- Remove allocations from
HostDefined::get_many_mutby @jedel1043 in boa-dev#3606 - Implement getter for
ArrayBufferdata by @HalidOdat in boa-dev#3610 - Implement non-erased
JsObjects by @jedel1043 in boa-dev#3618 - Update regress to v0.8.0 and use UTF16 / UCS2 matching by @raskad in boa-dev#3627
- Cleanup 262 tester and stabilize some experimental features by @jedel1043 in boa-dev#3632
- Improve typing of
DataViewand related objects by @jedel1043 in boa-dev#3626 - Close sync iterator when async wrapper yields rejection by @jedel1043 in boa-dev#3633
- Implement resizable buffers by @jedel1043 in boa-dev#3634
- Implement stage 3 feature "arraybuffer-transfer" by @jedel1043 in boa-dev#3649
- Implement prototype of
NumberFormatby @jedel1043 in boa-dev#3669 - Add example for async module fetches by @jedel1043 in boa-dev#3012
- Js typed array methods by @AngeloChecked in boa-dev#3481
- Create tool to regenerate
ABOUT.mdby @jedel1043 in boa-dev#3692 - Implement RegExp
vflag by @raskad in boa-dev#3695
- Allow escaped yield and await in labelled statement by @raskad in boa-dev#3117
TypedArray.prototype.values()andTypedArray.prototype[@@iterator]should be equal by @HalidOdat in boa-dev#3096- Fix TypedArrayConstructors tests by @raskad in boa-dev#3171
- Close iterator after generator return call while array destructuring assignment by @HalidOdat in boa-dev#3164
- Fix remaining TypedArray bugs by @raskad in boa-dev#3186
- Add early errors for
LexicalDeclarationby @raskad in boa-dev#3207 - Fix switch statement
breakandcontinuereturn values by @raskad in boa-dev#3205 - Fix GitHub coverage workflow by @HalidOdat in boa-dev#3288
- Fix tagged template
thisin strict mode by @HalidOdat in boa-dev#3307 - fix: add 'static lifetime by @mattsse in boa-dev#3297
- Fix class inherit from
nullby @HalidOdat in https://github.com/boa-dev/boa/pull/3312 - Fix anonymous function name in cover assignment by @raskad in https://github.com/boa-dev/boa/pull/3325
- Add
NonMaxU32as integer variant forPropertyKeyby @raskad in https://github.com/boa-dev/boa/pull/3321 - Add missing class name binding by @raskad in https://github.com/boa-dev/boa/pull/3328
- Truncate environment stack on non-caught native error by @HalidOdat in https://github.com/boa-dev/boa/pull/3331
- Fix regular expression construction by @HalidOdat in https://github.com/boa-dev/boa/pull/3338
- Fix
super()construction with default parameters by @HalidOdat in https://github.com/boa-dev/boa/pull/3339 - Fix static class element evaluation order by @raskad in https://github.com/boa-dev/boa/pull/3327
- Fix detection of runtime limits for accessors by @jedel1043 in https://github.com/boa-dev/boa/pull/3335
- Fix
Number.prototype.toFixed()by @HalidOdat in https://github.com/boa-dev/boa/pull/2898 - Check
evalrealm before call by @HalidOdat in https://github.com/boa-dev/boa/pull/3375 - Evaluate all parts of
classin strict mode by @HalidOdat in https://github.com/boa-dev/boa/pull/3383 - Fix var declaration for deleted binding locator by @raskad in https://github.com/boa-dev/boa/pull/3387
- Fix await flag in class constructor by @raskad in https://github.com/boa-dev/boa/pull/3388
- Fix compilation for targets without
AtomicU64by @jedel1043 in https://github.com/boa-dev/boa/pull/3399 - Update
regex.matchspec and code by @raskad in https://github.com/boa-dev/boa/pull/3462 ContextindependentCodeBlocks by @HalidOdat in https://github.com/boa-dev/boa/pull/3424- Fix a Parser Idempotency Issue by @veera-sivarajan in https://github.com/boa-dev/boa/pull/3172
- Non recursive gc trace by @HalidOdat in https://github.com/boa-dev/boa/pull/3508
- Fix invalid return value when closing an iterator by @raskad in https://github.com/boa-dev/boa/pull/3567
- Implement Date parsing according to the spec by @raskad in https://github.com/boa-dev/boa/pull/3564
Daterefactor by @raskad in https://github.com/boa-dev/boa/pull/3595- Fix regexp
toStringmethod by @raskad in https://github.com/boa-dev/boa/pull/3608 - Fix escaping in
RegExp.prototype.sourceby @raskad in https://github.com/boa-dev/boa/pull/3619 - Fix line terminators in template strings by @raskad in https://github.com/boa-dev/boa/pull/3641
- Consider strict + no-strict tests as a single test by @jedel1043 in https://github.com/boa-dev/boa/pull/3675
- Preserve
.exesuffix for Windows releases by @HalidOdat in https://github.com/boa-dev/boa/pull/3680
- Move
RefCellofCompileTimeEnvironments to fieldbindingsby @HalidOdat in https://github.com/boa-dev/boa/pull/3108 - Change
namefield type inCodeBlocktoJsStringby @HalidOdat in https://github.com/boa-dev/boa/pull/3107 - Refactor
Array.prototype.find*and TypedArray variants to useFindViaPredicateby @dirkdev98 in https://github.com/boa-dev/boa/pull/3134 - Fix 1.71.0 lints by @RageKnify in https://github.com/boa-dev/boa/pull/3140
- Clippy updates: add panics and etc. by @nekevss in https://github.com/boa-dev/boa/pull/3235
- Remove unused class environments by @raskad in https://github.com/boa-dev/boa/pull/3332
- Improve highlighter performance by @jedel1043 in https://github.com/boa-dev/boa/pull/3341
- Cleanup
get_optionand calls to the function by @jedel1043 in https://github.com/boa-dev/boa/pull/3355 - Fix new lints for Rust 1.73 by @jedel1043 in https://github.com/boa-dev/boa/pull/3361
- Refactor compile time environment handling by @raskad in https://github.com/boa-dev/boa/pull/3365
- Update all dependencies by @jedel1043 in https://github.com/boa-dev/boa/pull/3400
- Optimize
shiftfor dense arrays by @jedel1043 in https://github.com/boa-dev/boa/pull/3405 - Disallow changing type of already created objects by @jedel1043 in https://github.com/boa-dev/boa/pull/3410
- Merge
CodeBlockconstant pools by @HalidOdat in https://github.com/boa-dev/boa/pull/3413 - Move ordinary function
[[ConstructorKind]]toCodeBlockby @HalidOdat in https://github.com/boa-dev/boa/pull/3439 - Move
FunctionKindtoCodeBlockby @HalidOdat in https://github.com/boa-dev/boa/pull/3440 - Unify generator and ordinary function creation by @HalidOdat in https://github.com/boa-dev/boa/pull/3441
- Move
argumentsobject creation to bytecode by @HalidOdat in https://github.com/boa-dev/boa/pull/3432 - Move parameter environment creation to bytecode by @HalidOdat in https://github.com/boa-dev/boa/pull/3433
- Prevent
DefVaropcode emit for global binding by @HalidOdat in https://github.com/boa-dev/boa/pull/3453 - Transition
Intltypes toNativeObjectAPI by @jedel1043 in https://github.com/boa-dev/boa/pull/3491 - Reduce
WeakGc<T>memory usage by @HalidOdat in https://github.com/boa-dev/boa/pull/3492 - Migrate
Temporalto its own crate. by @nekevss in https://github.com/boa-dev/boa/pull/3461 - Reestructure repo and CI improvements by @jedel1043 in https://github.com/boa-dev/boa/pull/3505
- Move
PromiseCapabilityto stack by @HalidOdat in https://github.com/boa-dev/boa/pull/3528 - Fix rust 1.75 lints by @raskad in https://github.com/boa-dev/boa/pull/3540
- Remove double indirection in module types by @jedel1043 in https://github.com/boa-dev/boa/pull/3640
- Fix clippy warnings for rustc 1.76 by @jedel1043 in https://github.com/boa-dev/boa/pull/3668
- Migrate to
temporal_rscrate by @nekevss in https://github.com/boa-dev/boa/pull/3694
- Removed time 0.1 dependency, updated dependencies by @Razican in https://github.com/boa-dev/boa/pull/3122
- Add new CLI options to usage in README by @Razican in https://github.com/boa-dev/boa/pull/3123
- Find roots when running GC rather than runtime by @tunz in https://github.com/boa-dev/boa/pull/3109
- Re-enable must_use clippy rule by @tunz in https://github.com/boa-dev/boa/pull/3180
- Refactor environment, exception handling and jumping in VM by @HalidOdat in https://github.com/boa-dev/boa/pull/3059
- Refactor
Context::run()method by @HalidOdat in https://github.com/boa-dev/boa/pull/3179 - Added examples by @postmeback in https://github.com/boa-dev/boa/pull/3141
- Use main stack for calling ordinary functions by @HalidOdat in https://github.com/boa-dev/boa/pull/3185
- Update license field following SPDX 2.1 license expression standard by @frisoft in https://github.com/boa-dev/boa/pull/3209
- Store active runnable and active function in
CallFrameby @HalidOdat in https://github.com/boa-dev/boa/pull/3197 - Added MSRV check by @Razican in https://github.com/boa-dev/boa/pull/3291
- Reintroduce publish CI job by @jedel1043 in https://github.com/boa-dev/boa/pull/3308
- Format code snippets in docs by @jedel1043 in https://github.com/boa-dev/boa/pull/3317
- Remove direct conversion from
&strtoJsValue/PropertyKey. by @jedel1043 in https://github.com/boa-dev/boa/pull/3319 icu_propertiesdefault features to true by @nekevss in https://github.com/boa-dev/boa/pull/3326- Varying length instruction operands by @HalidOdat in https://github.com/boa-dev/boa/pull/3253
- Improve CI testing by @jedel1043 in https://github.com/boa-dev/boa/pull/3333
- Refactor function internal methods by @HalidOdat in https://github.com/boa-dev/boa/pull/3322
- Make environments opcodes use varying operands by @HalidOdat in https://github.com/boa-dev/boa/pull/3340
- Bump test262 by @jedel1043 in https://github.com/boa-dev/boa/pull/3349
- Refactor ordinary VM calling by @HalidOdat in https://github.com/boa-dev/boa/pull/3295
- Fix Array.join when the array contains itself by @ahaoboy in https://github.com/boa-dev/boa/pull/3406
- Rename master workflow to main by @Razican in https://github.com/boa-dev/boa/pull/3409
- Cleaned up a couple of Github action warnings by @Razican in https://github.com/boa-dev/boa/pull/3417
- Temporal duration update and cleanup by @nekevss in https://github.com/boa-dev/boa/pull/3443
- Progress on Duration's round/total method updates by @nekevss in https://github.com/boa-dev/boa/pull/3451
- Simplify all extensions APIs of
Contextby @jedel1043 in https://github.com/boa-dev/boa/pull/3456 [[HostDefined]]Improvements by @johnyob in https://github.com/boa-dev/boa/pull/3460- Make well_known_symbols functions pub by @tj825 in https://github.com/boa-dev/boa/pull/3465
- Use
Vec<T>for keeping track of gc objects by @HalidOdat in https://github.com/boa-dev/boa/pull/3493 - Implement
Inline Cachingby @HalidOdat in https://github.com/boa-dev/boa/pull/2767 - Migrate
ISO8601parsing toboa_temporalby @nekevss in https://github.com/boa-dev/boa/pull/3500 - Implement erased objects by @jedel1043 in https://github.com/boa-dev/boa/pull/3494
- Build out ZonedDateTime, TimeZone, and Instant by @nekevss in https://github.com/boa-dev/boa/pull/3497
boa_temporalstructure changes and docs update by @nekevss in https://github.com/boa-dev/boa/pull/3504- Refactor vm calling convention to allow locals by @HalidOdat in https://github.com/boa-dev/boa/pull/3496
- Temporal Parser Cleanup/Fixes by @nekevss in https://github.com/boa-dev/boa/pull/3521
- Refactor Temporal Calendar API for
AnyCalendarand fields by @nekevss in https://github.com/boa-dev/boa/pull/3522 - Update
boa_temporalTime Zone design by @nekevss in https://github.com/boa-dev/boa/pull/3543 - Implement
DifferenceInstantand related refactor by @nekevss in https://github.com/boa-dev/boa/pull/3568 - Run
cargo updateon fuzz crate by @jedel1043 in https://github.com/boa-dev/boa/pull/3607 - Temporal
Instantmigration cont. and related changes by @nekevss in https://github.com/boa-dev/boa/pull/3601 - Temporal: Update
Datebuiltin withboa_temporaland fixes by @nekevss in https://github.com/boa-dev/boa/pull/3614 - Temporal: Build out
Timeand its methods by @nekevss in https://github.com/boa-dev/boa/pull/3613 - Temporal: Enable temporal tests by @nekevss in https://github.com/boa-dev/boa/pull/3620
- Fix tests results upload by @raskad in https://github.com/boa-dev/boa/pull/3635
- Temporal:
DateTimeandPlainDateTimefunctionality by @nekevss in https://github.com/boa-dev/boa/pull/3628 - Temporal: Initial
PlainTimebuild out by @nekevss in https://github.com/boa-dev/boa/pull/3621 - Ignore
Cargo.lockin fuzzer by @jedel1043 in https://github.com/boa-dev/boa/pull/3636 - Temporal: attribute/property and custom calendar fixes by @nekevss in https://github.com/boa-dev/boa/pull/3639
- Docs: Update boa's main README.md by @nekevss in https://github.com/boa-dev/boa/pull/3650
- Bump time from 0.3.31 to 0.3.33 by @jedel1043 in https://github.com/boa-dev/boa/pull/3652
- Temporal: Refactor Calendar protocol for
JsObjects by @nekevss in https://github.com/boa-dev/boa/pull/3651 - Simplify Temporal APIs by @jedel1043 in https://github.com/boa-dev/boa/pull/3653
- Implement inline caching tests and cleanup by @HalidOdat in https://github.com/boa-dev/boa/pull/3513
- Docs: Update README.md and add
boa_cli's README.md by @nekevss in https://github.com/boa-dev/boa/pull/3659 - Change
HostEnsureCanCompileStringsto the new spec by @jedel1043 in https://github.com/boa-dev/boa/pull/3690 - Split ICU4X data generation from
boa_icu_providerby @jedel1043 in https://github.com/boa-dev/boa/pull/3682 - Add a catch all for other categories not labelled by @jasonwilliams in https://github.com/boa-dev/boa/pull/3703
- Fix
temporal_rsin Cargo.toml by @nekevss in https://github.com/boa-dev/boa/pull/3702
- @AlvinKuruvilla made their first contribution in boa-dev#3129
- @tunz made their first contribution in https://github.com/boa-dev/boa/pull/3109
- @postmeback made their first contribution in boa-dev#3092
- @kelbazz made their first contribution in boa-dev#3193
- @frisoft made their first contribution in https://github.com/boa-dev/boa/pull/3209
- @mattsse made their first contribution in boa-dev#3297
- @arexon made their first contribution in boa-dev#3381
- @johnyob made their first contribution in boa-dev#3369
- @ahaoboy made their first contribution in https://github.com/boa-dev/boa/pull/3406
- @tj825 made their first contribution in https://github.com/boa-dev/boa/pull/3465
- @AngeloChecked made their first contribution in boa-dev#3481
Full Changelog: https://github.com/boa-dev/boa/compare/v0.17...v0.18
- Implement
new.targetexpression by @raskad in #2299 - Parse static async private methods in classes by @raskad in #2315
- Implement
JsDataViewby @nekevss in #2308 - Upgrade clap to 4.0, add value hints for zsh and fish by @Razican in #2336
- Implement
JsRegExpby @nekevss in #2326 - Create new lazy Error type by @jedel1043 in #2283
- Fixed some documentation and clippy warnings in tests by @Razican in #2362
- Removed the "VM Implementation" headline for Test262 by @Razican in #2364
- Modified the
loadfileexample to show how Boa can read bytes by @Razican in #2363 - Implement
LabelledStatementby @jedel1043 in #2349 - Split vm/opcode into modules by @nekevss in #2343
- Removed some duplicate code, added
ToIndentedStringby @Razican in #2367 - Document the AST by @jedel1043 in #2377
- Implement member accessors in initializer of for loops by @jedel1043 in #2381
- Implement
JsGeneratorand wrapper docs clean up by @nekevss in #2380 - Add named evaluation of logical assignments by @raskad in #2389
- Implement optional chains by @jedel1043 in #2390
- Implement delete for references by @jedel1043 in #2395
- Implement AST Visitor pattern (attempt #3) by @addisoncrump in #2392
- Implement async arrow functions by @raskad in #2393
- Pretty print promise objects by @jedel1043 in #2407
- Parser Idempotency Fuzzer by @addisoncrump in #2400
- Safe wrapper for
JsDateby @anuvratsingh in #2181 - Fix some Date tests by @jedel1043 in #2431
- Boa Gc implementation draft by @nekevss in #2394
- VM Fuzzer by @addisoncrump in #2401
- Implement the
WeakRefbuiltin by @jedel1043 in #2438 - Refactor the
Datebuiltin by @jedel1043 in #2449 - Implement instruction flowgraph generator by @HalidOdat in #2422
JsArrayBuffertake method and docs by @nekevss in #2454- Set function names in object literal methods by @raskad in #2460
- Redesign Intl API and implement some services by @jedel1043 in #2478
- Cleanup
ContextAPIs by @jedel1043 in #2504 - Prepare
Promisesfor new host hooks and job queue API by @jedel1043 in #2528 - Implement host hooks and job queues APIs by @jedel1043 in #2529
- First batch of
no_stdsupport for some sub-crates by @jedel1043 in #2544 - Create
Sourceto abstract JS code sources by @jedel1043 in #2579 - Move increment and decrement operations to
Updateexpression by @raskad in #2565 - Implement binary
inoperation with private names by @raskad in #2582 - Module parsing by @Razican in #2411
- Implement
WeakSetby @lupd in #2586 - Implement
WeakMapby @raskad in #2597 - API to construct a
NativeFunctionfrom a native async function by @jedel1043 in #2542 - Add
--strictflag to cli by @HalidOdat in #2689 - Add timeout to CI by @HalidOdat in #2691
- Add ES5 and ES6 Conformance calculation to boa_tester by @ZackMitkin in #2690
- Improve tester display for multiple editions by @jedel1043 in #2720
- Implement
JsPromisewrapper by @jedel1043 in #2758 - Initial version of a JS -> Rust conversion trait. by @Razican in #2276
- Implement
escapeandunescapeby @jedel1043 in #2768 - Implement debug object for CLI by @HalidOdat in #2772
- Make
Realmshareable between functions by @jedel1043 in #2801 - Implement Annex-B string html methods by @HalidOdat in #2798
- Implement annex-b
trimLeftandtrimRightstring methods by @HalidOdat in #2806 - Implement HTML comments and gate behind the
annex-bfeature by @jedel1043 in #2817 - Implement
Intl.Segmenterby @jedel1043 in #2840 - Implement var initializers in for-in loops by @jedel1043 in #2842
- Improve debug output of
JsNativeErrorandRealmby @jedel1043 in #2894 - Implement runtime limits for loops by @HalidOdat in #2857
- Implement runtime limits for recursion by @HalidOdat in #2904
- Implement annexB Block-Level Function Declarations by @raskad in #2910
- Implement module execution by @jedel1043 in #2922
- Type safe root shape by @HalidOdat in #2940
- Implement dynamic imports by @jedel1043 in #2932
- Implement pseudo-property
import.metaby @jedel1043 in #2956 - Implement
withand object environments by @raskad in #2692 - Add hooks to get the current time and timezone by @jedel1043 in #2824
- Make
JsSymbolthread-safe by @jedel1043 in #2539 - Added a Boa runtime by @Razican in #2743
- Implement
TryFromJsforJsObjectwrappers by @Razican in #2809 - Allow passing owned
HostHooksandJobQueuestoContextby @jedel1043 in #2811 - Implement
String.prototype.toLocaleUpper/LowerCaseby @jedel1043 in #2822 - Implement constant folding optimization by @HalidOdat in #2679
- Implement
Hidden classesby @HalidOdat in #2723 - show object kind, name and address when using dbg! by @jasonwilliams in #2960
- Add convenience methods to
ModuleLoaderby @jedel1043 in #3007 - Allow
JobQueueto concurrently run jobs by @jedel1043 in #3036 - Make
IntegerIndexed::byte_offsetpublic by @CryZe in #3017 - Allow awaiting
JsPromisefrom Rust code by @jedel1043 in #3011 - Cache
cargo-tarpaulinbinary by @jedel1043 in #3071 - add link to the main logo by @jasonwilliams in #3082
- Add unicode terminator to line comment by @creampnx-x in #2301
- Fix function property order by @raskad in #2305
- Fix some Array spec deviations by @raskad in #2306
- Fix double conversion to primitive in
ToNumericby @raskad in #2310 - Fixing the output for the test diffs in PRs by @Razican in #2320
- Fix Regex literal parsing in MemberExpression by @tunz in #2328
- Fix error in
Proxyset implementation by @raskad in #2369 - Allow LineTerminator before Semicolon in
continueby @raskad in #2371 - Fix var collisions in strict eval calls by @jedel1043 in #2382
- Set
intotruewhen parsing AssignmentExpression in ConditionalExpression by @raskad in #2386 - Skip prototype field definition for arrow function by @raskad in #2388
- Remove invalid optimization in addition by @raskad in #2387
- Fix order dependent execution in assignment. by @HalidOdat in #2378
- Add early error for
yieldinGeneratorExpressionparameters by @raskad in #2413 - Handle
__proto__fields in object literals by @raskad in #2423 - Fix built-ins/Array/prototype/toString/non-callable-join-string-tag.js test case by @akavi in #2458
- Fix
PartialEqforJsBigIntandf64by @raskad in #2461 - Allow class expressions without identifier by @raskad in #2464
- Fix to weak_trace for
boa_testerby @nekevss in #2470 - Fix unary operations on
thisby @veera-sivarajan in #2507 - Fix postfix operator line terminator parsing by @raskad in #2520
- Remove
Literal::Undefinedby @veera-sivarajan in #2518 - Add early errors for 'eval' or 'arguments' in parameters by @raskad in #2515
- Pass a receiver value in property getter opcodes by @raskad in #2516
- Add regex literal early errors by @raskad in #2517
BreakOpcode andByteCompilerchanges by @nekevss in #2523- Refactor some class features by @raskad in #2513
- Recognize Directive Prologues correctly by @raskad in #2521
- Correctly parse consecutive semicolons by @raskad in #2533
- Fix some HoistableDeclaration parsing errors by @raskad in #2532
- Return the correct value from a statement list by @raskad in #2554
- Fix error for static class methods named
prototypeby @raskad in #2552 - Avoid creating
prototypeproperty on methods by @raskad in #2553 - Fix double property access on assignment ops by @raskad in #2551
- Add early errors for escaped identifiers by @raskad in #2546
- Fix failing collator tests by @jedel1043 in #2575
- fuzzer: bubble up NoInstructionsRemain error instead of trying to handle as exception by @Mrmaxmeier in #2566
- Try-catch-block control flow fix/refactor by @nekevss in #2568
- Fix doc tests and add CI check by @jedel1043 in #2606
- Fix string to number conversion for
infinityby @raskad in #2607 - Fix exponent operator by @HalidOdat in #2681
- Update
README.mdcli options by @HalidOdat in #2678 - Fix incorrect
Number.MIN_VALUEvalue by @HalidOdat in #2682 - Correctly run async tests by @jedel1043 in #2683
- Fix value to bigint conversion by @HalidOdat in #2688
- Fix Object constructor by @raskad in #2694
- Fix get function opcode traces by @HalidOdat in #2708
- Add early errors to dynamic function constructors by @raskad in #2716
- Add negative zero handling for
Map.deleteby @raskad in #2726 - Fix remaining
Settests by @raskad in #2725 - Fix update expressions getting values multiple times by @raskad in #2733
- Make if statements return their completion values by @raskad in #2739
- Fix super call execution order by @raskad in #2724
- Fix deserialization of
SpecEditionby @jedel1043 in #2762 - Add
json-parse-with-sourcefeature toboa_testerby @HalidOdat in #2778 - Fix
Symbol.prototype[@@iterator]by @HalidOdat in #2800 - Fix
String.prototype.replace()order ofToStringexecution by @HalidOdat in #2799 - Fix
ThrowTypeErrorintrinsic by @HalidOdat in #2797 - Fix
String.prototype.substr()by @HalidOdat in #2805 - Fix destructive for-of loop assignments by @raskad in #2803
- Fix
TypedArrays minus zero key by @HalidOdat in #2808 - Fix sync generator yield expressions by @raskad in #2838
- Fix async generators by @raskad in #2853
- Catch 'eval' and 'arguments' in setter method parameter by @raskad in #2858
- Fix
PropertyKeyindex parse by @HalidOdat in #2843 - Fix
Date.prototype[Symbol.primitive]incorrect attributes by @HalidOdat in #2862 - Allow
Dateobject to store invalidNativeDateTimeby @HalidOdat in #2861 - Fix panic when calling toString with radix by @HalidOdat in #2863
- Fix incorrect
LoopContinueinstruction in while-do loops by @HalidOdat in #2866 - Initialize
varbindings in runtime environments withundefinedby @raskad in #2860 - Bugfix/new.target is not understood by the parser as an expression #2793 by @projectnoa in #2878
- Fix
RegExpconstructor return value when pattern is a regexp by @HalidOdat in #2880 RegExpconstructor should callIsRegExp()by @HalidOdat in #2881- Fix
for-ofexpression parsing by @HalidOdat in #2882 - Disallow strict directives with escaped sequences by @jedel1043 in #2892
- Make
typeofthrow when accessing uninitialized variables by @raskad in #2902 - Fix wrong name of
Function.prototype[Symbol.hasInstance]by @raskad in #2905 - Fix remaining object literal tests by @raskad in #2906
- Add SyntaxErrors in GlobalDeclarationInstantiation by @raskad in #2908
- Fix switch
defaultexecution by @HalidOdat in #2907 - Add loop and switch return values by @raskad in #2828
- Allow escaped
letas expression by @HalidOdat in #2916 - Allow
letname in for-in loop in non-strict mode by @HalidOdat in #2915 - Fix lexical environments in for loops by @raskad in #2917
- Fix
GetSubstitutionby @HalidOdat in #2933 - Allow escaped
asyncas binding name by @jedel1043 in #2936 - Fix tagged template creation by @raskad in #2925
- Implement Private Runtime Environments by @raskad in #2929
- Fix remaining ES5
built-ins/RegExptests by @HalidOdat in #2957 - Fix remaining static module bugs by @jedel1043 in #2955
- Deny Unicode Escapes in boolean and null expressions by @veera-sivarajan in #2931
- Fix
Datefor dynamic timezones by @jedel1043 in #2877 - Fix ES5 selector by @veera-sivaraja in #2924
- Labelled ByteCompiler Fix by @nekevss in #2534
- Fix verbose test display by @jedel1043 in #2731
- Fix WASM playground by @jedel1043 in #2992
- Correctly initialize functions inside modules by @jedel1043 in #2993
- Allow
true,falseandnullin object patterns by @jedel1043 in #2994 - Fix panic in optional expressions with private identifiers by @raskad in #2995
- Fix prompt on windows by @ShaneEverittM in #2986
- Fix panic in constructor call by @raskad in #3001
- Unify async iterators and iterators compilation by @jedel1043 in #2976
- Correctly parse
yield import(..)expressions by @jedel1043 in #3006 - Return the correct value during a labelled break by @raskad in #2996
- Fix panics on empty return values by @raskad in #3018
- Add early error for
awaitin class static blocks by @raskad in #3019 - Fix class constructor return value by @raskad in #3028
- Fix super property access by @raskad in #3026
- Skip reversing arguments in SuperCallDerived by @dirkdev98 in #3062
- Mark header of rooted ephemerons when tracing by @jedel1043 in #3049
- Copy
ABOUT.mdfile to all published crates by @jedel1043 in #3074 - Correctly handle finally..loop..break by @dirkdev98 in #3073
- Direct conversion from
u8toOpcodeby @HalidOdat #2951 - Fix links in readme by @raskad in #2304
- Switch to workspace inherited properties by @jedel1043 in #2297
- Separate JsObjectType implementors to their own module by @CalliEve in #2324
- First prototype for new
JsStringusing UTF-16 by @jedel1043 in #1659 - Split
NodeintoStatement,ExpressionandDeclarationby @jedel1043 in #2319 - Changes neccesary -> necessary by @nekevss in #2370
- Cleanup and speed-up CI by @RageKnify in #2376
- Reduce documentation size in blog by @jedel1043 in #2383
- Generate
Opcodeimpl using macro by @jedel1043 in #2391 - Extract the ast to a crate by @jedel1043 in #2402
- Replace
containsand friends with visitors by @jedel1043 in #2403 - Rewrite some patterns with let-else and ok_or_else by @jedel1043 in #2404
- Fix async tests result values by @jedel1043 in #2406
- Rewrite scope analysis operations using visitors by @jedel1043 in #2408
- Make
JsStringconform to miri tests by @jedel1043 in #2412 - Reduced boilerplate code in the parser by @Razican in #2410
- Extract the parser into a crate by @jedel1043 in #2409
- Switch tarpaulin to llvm engine by @RageKnify in #2432
- Cleanup
boa_testerby @jedel1043 in #2440 - Restructure lint lists in
boa_astby @raskad in #2433 - Restructure lints in multiple crates by @raskad in #2447
- Restructure lint lists in
boa_engineby @raskad in #2455 - Fix rust 1.66.0 lints by @raskad in #2486
- Divide byte compiler by @e-codes-stuff in #2425
- Cleanup inline annotations by @jedel1043 in #2493
- [profiler] Cache StringId by @tunz in #2495
- Improve identifier parsing by @jedel1043 in #2581
- Remove Syntax Errors from Bytecompiler by @raskad in #2598
- fix: RUSTSEC-2020-0071 in boa_engine by @hanabi1224 in #2627
- Migrate tests to new test API by @jedel1043 in #2619
- [regexp] new tests for unicode flag by @selfisekai in #2656
- Handle surrogates in
String.fromCodePointby @jedel1043 in #2659 - Bump Test262 and add new features by @jedel1043 in #2729
- Fix cross-realm construction bugs by @jedel1043 in #2786
- Lift
InternalObjectMethodsfromObjectby @jedel1043 in #2790 - Implement async functions using generators by @jedel1043 in #2821
- Improve strictness of
GeneratorStateby @jedel1043 in #2837 - Upgraded to ICU 1.2 by @Razican in #2826
- Fix setting properties inside
withblocks by @jedel1043 in #2847 - Create a unique
PromiseCapabilityon each async function call by @jedel1043 in #2846 - Refactor binding handling APIs by @jedel1043 in #2870
- Refactor guards into a
ContextCleanupGuardabstraction by @jedel1043 in #2890 - Refactor binding declarations by @raskad in #2887
- Cleanup some bytecompiler code by @raskad in #2918
- Fix
use_selflints by @raskad in #2946 - Remove unused lint allows by @raskad in #2968
- Decouple bytecompiler from CodeBlock by @HalidOdat in #2669
- Clarity changes for the VM by @nekevss in #2531
- Bump bitflags to 2.0.0 by @Razican in #2666
- Replace deprecated set-output command by @karol-jani in #2500
- Documentation Updates by @nekevss in #2463
- Fixed typo in the docs by @Razican in #2450
- update tasks.json by @jasonwilliams in #2313
- Updated the Code of Conduct by @Razican in #2365
- Bump serde_json from 1.0.85 to 1.0.86 by @jedel1043 in #2341
- Add test case for issue #2719 by @jedel1043 in #2980
- Remove unneded
num_bindingsinOpcodes andCodeBlockby @HalidOdat in #2967 - Added period to sentence by @nekevss in #2939
- Prune collected shared shapes by @HalidOdat in #2941
- Separate declarative environment kinds by @jedel1043 in #2921
- Shrink environment binding locators by @HalidOdat in #2950
- Extract "About Boa" section into a separate file by @jedel1043 in #2938
- Remove
arguments_bindingfield fromCodeBlockby @HalidOdat in #2969 - Remove redundant
param_countfield fromCallFrameby @HalidOdat in #2962 - Direct length access on arrays by @HalidOdat in #2796
- Prevent allocation of field names by @HalidOdat in #2901
- Added unit tests for
boa_ast::Punctuatorby @Razican in #2884 - Added unit tests for
boa_ast::Keywordby @Razican in #2883 - Make update operations reuse the last found binding locator by @jedel1043 in #2876
- Docs update for boa_runtime and console documentation by @nekevss in #2891
- Direct array element access on
ByValueinstructions by @HalidOdat in #2827 - Optimize
String.prototype.normalizeby @jedel1043 in #2848 - Fix more Annex B tests by @jedel1043 in #2841
- Enable github queues and remove bors.toml by @jedel1043 in #2899
- Shrink size of
IndexedPropertiesby @HalidOdat in #2757 - Added an example usage to documentation by @Razican in #2742
- Don't construct prototype if not needed by @HalidOdat in #2751
- Implement
is_identifier_(start/part)usingicu_propertiesby @jedel1043 in #2865 - Add boa logo to remaining hosted docs by @nekevss in #2740
- Added a bunch more tests by @Razican in #2885
- Updated dependencies, removes
remove_dir_all, which is vulnerable by @Razican in #2685 - Updated README by @Razican in #2825
- Remove panics on module compilation by @jedel1043 in #2730
- Update icu dependencies by @raskad in #2574
- Pin tarpaulin version to 0.22 by @jedel1043 in #2562
- Improve the design of ephemerons in our GC by @jedel1043 in #2530
- Pass locale data provider by ref instead of boxing by @jedel1043 in #2508
- Fast path for static property keys by @tunz in #2604
- Replace
criterion::black_boxwithstd::hint::black_boxby @jedel1043 in #2494 - Shrink objects by using
ThinVecs by @HalidOdat in #2752 - Redesign native functions and closures API by @jedel1043 in #2499
- Make the
wasmbindfeature of thechronocrate optional by @Razican in #2810 - Use opcode table rather than match by @tunz in #2501
- Align iterator loops to the spec by @jedel1043 in #2686
- Add AST node for parenthesized expressions by @raskad in #2738
- Optimize Get/SetPropertyByName by @tunz in #2608
- Keep Integer type for inc/dec of an integer by @tunz in #2615
- Implement
CompletionRecordsfor the Vm by @nekevss in #2618 - Feature flag on builtins console import by @nekevss in #2584
- Fix documentation links by @Razican in #2741
- Updated syn to 2.0.3 by @Razican in #2702
- Cleanup intrinsics and move to realm by @jedel1043 in #2555
- Rename
check_parserandIdentifierby @jedel1043 in #2576 - Fix rust 1.67 lints by @raskad in #2567
- Avoid unneeded bounds checks in bytecode address patching by @HalidOdat in #2680
- Rust 1.68 clippy fixes by @nekevss in #2646
- Fix rust 1.70 lints by @raskad in #2990
- Simplify/Refactor exception handling and last statement value by @HalidOdat in #3053
- Implement getter and setter of
Object.prototype.__proto__by @CYBAI in #2110 - Execution stack & promises by @Razican in #2107
- Add the
[[Done]]field to iterators by @Razican in #2125 - Fix for in/of loop initializer environment by @raskad in #2135
- Implement
Promise.allby @raskad in #2140 - Implement
Promise.anyby @raskad in #2145 - Implement
Promise.allSettledby @raskad in #2146 - Implement
superexpressions by @raskad in #2116 - Implement
async functionandawaitby @raskad in #2158 - Implementation of
JsMapWrapper by @nekevss in #2115 - Safe wrapper for
JsSetby @anuvratsingh in #2162 - Implement
JsArrayBufferby @HalidOdat in #2170 - Implement arrow function parsing based on
CoverParenthesizedExpressionAndArrowParameterListby @raskad in #2171 - Implement Generator Function Constructor by @raskad in #2174
- Parse class private async generator methods by @raskad in #2220
- Implement Async Generators by @raskad in #2200
- Add field accessors to destructing assignment by @raskad in #2213
- Added a bit more integer operation consistency to ByteDataBlock creation by @Razican in #2272
- Implement Async-from-Sync Iterator Objects by @raskad in #2234
- Add URI encoding and decoding functions by @Razican in #2267
- Implement
for await...ofloops by @raskad in #2286
- Fix
evalattributes by @raskad in #2130 - Fix
thisin function calls by @raskad in #2153 - Fix remaining
Promisebugs by @raskad in #2156 - Fix length/index in
32bitarchitectures by @HalidOdat in #2196 - Fix
yieldexpression to end on line terminator by @raskad in #2232 - Fix spread arguments in function calls by @raskad in #2216
- Fix
argumentsobject iterator function by @raskad in #2231 - check history file exist if not create it by @udhaykumarbala in #2245
- Do not auto-insert semicolon in
VariableDeclarationListby @tunz in #2266 - Fix property access of call expression by @tunz in #2273
- fix computed property methods can call super methods by @creampnx-x in #2274
- Fix regex literal
/[/]/by @tunz in #2277 - Fixed assignment expression parsing by @Razican in #2268
- Fix labelled block statement by @creampnx-x in #2285
- Implement missing global object internal methods by @raskad in #2287
- Fix spec links for some object operation methods by @CYBAI in #2111
- Only run benchmarks on PRs when a label is set by @raskad in #2114
- Refactor
constructandPromiseCapabilityto preserveJsObjectinvariants by @jedel1043 in #2136 - Remove
string-internerdependency and implement custom stringInternerby @jedel1043 in #2147 - Fix clippy 1.62.0 lints by @raskad in #2154
- Store call frames in
Vecinstead of singly-linked list by @HalidOdat in #2164 - Dense/Packed JavaScript arrays by @HalidOdat in #2167
- Fix Rust 1.63 clippy lints by @raskad in #2230
- Removed some
unsafe_empty_trace!()calls to improve performance by @Razican in #2233 - Add integer type to fast path of
to_property_keyby @tunz in #2261
Full Changelog: https://github.com/boa-dev/boa/compare/v0.14...v0.15
- Deploy playground to custom destination dir by @jedel1043 in #1943
- add README for crates.io publish by @superhawk610 in #1952
- migrated to clap 3 by @manthanabc in #1957
- Implement unscopables for Array.prototype by @NorbertGarfield in #1963
- Retrieve feature-based results for Test262 runs by @NorbertGarfield in #1980
- Added better error handling for the Boa tester by @Razican in #1984
- Add From for JsValue by @lastmjs in #1990
- Implement Classes by @raskad in #1976
- Allow
PropertyNames inBindingPropertyinObjectBindingPatternby @raskad in #2022 - Allow
InitializerafterArrayBindingPatterninFormalParameterby @raskad in #2002 - Allow unicode escaped characters in identifiers that are keywords by @raskad in #2021
- Feature
JsTypedArrays by @HalidOdat in #2003 - Allow creating object with true/false property names by @lupd in #2028
- Implement
get RegExp.prototype.hasIndicesby @HalidOdat in #2031 - Partial implementation for Intl.DateTimeFormat by @NorbertGarfield in #2025
- Allow
letas variable declaration name by @raskad in #2044 - cargo workspaces fixes #2001 by @jasonwilliams in #2026
- Move redeclaration errors to parser by @raskad in #2027
- Feature
JsFunctionby @HalidOdat in #2015 - Improve
JsStringperformance by @YXL76 in #2042 - Implement ResolveLocale helper by @NorbertGarfield in #2036
- Refactor
IdentifierReferenceparsing by @raskad in #2055 - Implement the global
eval()function by @raskad in #2041 - DateTimeFormat helpers by @NorbertGarfield in #2064
- Create
Datestandard constructor by @jedel1043 in #2079 - Implement
ProxyBuilderby @jedel1043 in #2076 - Remove
strictflag fromContextby @raskad in #2069 - Integrate ICU4X into
Intlmodule by @jedel1043 in #2083 - Implement
Functionconstructor by @raskad in #2090 - Parse private generator methods in classes by @raskad in #2092
- Fix link to the playground by @raskad in #1947
- convert inner datetime to local in
to_date_stringby @superhawk610 in #1953 - Fix panic on AST dump in JSON format by @kilotaras in #1959
- Fix panic in do while by @pdogr in #1968
- Support numbers with multiple leading zeroes by @lupd in #1979
- Fix length properties on array methods by @lupd in #1983
- Allow boolean/null as property identifier by dot operator assignment by @lupd in #1985
- fix(vm): off-by-one in code block stringification. by @tsutton in #1999
- Indicate bigint has constructor by @lupd in #2008
- Change
ArrayBufferbyteLengthto accessor property by @lupd in #2010 - Fix
ArrayBuffer.isView()by @HalidOdat in #2019 - Fix casting negative number to usize in
Array.spliceby @lupd in #2030 - Fix
SymbolandBigIntconstructors by @HalidOdat in #2032 - Make
Array.prototypean array object by @HalidOdat in #2033 - Fix early return in
for in loophead by @raskad in #2043
- docs: update README by structuring the topics by @ftonato in #1958
- Migrate to NPM and cleanup Playground by @jedel1043 in #1951
- Fix performance bottleneck in VM by @pdogr in #1973
- Remove
git2andhexdependencies by @raskad in #1992 - Fix rust 1.60 clippy lints by @raskad in #2014
- Refactor
RegExpconstructor methods by @raskad in #2049 - Fixing build for changes in clippy for Rust 1.61 by @Razican in #2082
Full Changelog: https://github.com/boa-dev/boa/compare/v0.14...v0.15
- Implement functions for vm by @HalidOdat in #1433
- Implement Object.getOwnPropertyNames and Object.getOwnPropertySymbols by @kevinputera in #1606
- Implement
Symbol.prototype.valueOfby @hle0 in #1618 - Implement Array.prototype.at() by @nekevss in #1613
- Implement Array.from by @nrabulinski #1831
- Implement String.fromCharCode by @hle0 in #1619
- Implement
Typed Arraybuilt-in by @Razican in #1552 - Implement arguments exotic objects by @jedel1043 in #1522
- Allow
BindingPatterns asCatchParameterby @lowr in #1628 - Implement
Symbol.prototype[ @@toPrimitive ]by @Nimpruda in #1634 - Implement Generator parsing by @raskad in #1575
- Implement Object.hasOwn and improve Object.prototype.hasOwnProperty by @kevinputera in #1639
- Hashbang lexer support by @nekevss in #1631
- Implement
deleteoperator in the vm by @raskad in #1649 - Implement Object.fromEntries by @kevinputera in #1660
- Initial implementation for increment/decrement in VM by @abhishekc-sharma in #1621
- Implement
Proxyobject by @raskad in #1664 - Implement object literals for vm by @raskad in #1668
- Implement Array findLast and findLastIndex by @bsinky in #1665
- Implement
DataViewbuilt-in object by @Nimpruda in #1662 - Clean-up contribution guidelines, dependencies, Test262, MSRV by @Razican in #1683
- Implement Async Generator Parsing by @nekevss in #1669
- Implement prototype of
Intlbuilt-in by @hle0 in #1622 - Add limited console.trace implementation by @osman-turan in #1623
- Allow
BindingPatternin function parameters by @am-a-man in #1666 - Small test ux improvements by @orndorffgrant in #1704
- Implement missing vm operations by @raskad in #1697
- Added fallible allocation to data blocks by @Razican in #1728
- Document CodeBlock by @TheDoctor314 in #1691
- Generic
JsResult<R>incontext.throw_methods by @HalidOdat in #1734 - Implement
String.raw( template, ...substitutions )by @HalidOdat in #1741 - Updated test262 suite and dependencies by @Razican in #1755
- Lexer string interning by @Razican in #1758
- Adjust
compileandexecuteto avoid clones by @Razican in #1778 - Interner support in the parser by @Razican in #1765
- Convert
Codeblockvariables toSymby @raskad in #1798 - Using production builds for WebAssembly by @Razican in #1825
- Give the arrow function its proper name by @rumpl in #1832
- Unwrap removal by @Razican in #1842
- Feature
JsArrayby @HalidOdat in #1746 - Rename "Boa" to boa_engine, moved GC and profiler to their crates by @Razican in #1844
- Added conversions from and to serde_json's Value type by @Razican in #1851
- Toggleable
JsValueinternals displaying by @HalidOdat in #1865 - Implement generator execution by @raskad in #1790
- Feature arrays with empty elements by @HalidOdat in #1870
- Removed reference counted pointers from
JsValuevariants by @Razican in #1866 - Implement
Object.prototype.toLocaleString()by @HalidOdat in #1875 - Implement
AggregateErrorby @HalidOdat in #1888 - Implement destructing assignments for assignment expressions by @raskad in #1895
- Added boa examples by @elasmojs in #1161
- Fix BigInt and Number comparison by @HalidOdat #1887
- Fix broken structure links in the documentation by @abhishekc-sharma in #1612
- Use function name from identifiers in assignment expressions by @raskad #1908
- Fix integer parsing by @nrabulinski in #1614
- Fix
Number.toExponentialandNumber.toFixedby @nrabulinski in #1620 - Badge updates by @atouchet in #1638
- refactor: fix construct_error functions by @RageKnify in #1703
- Fix internal vm tests by @raskad in #1718
- Removed a bunch of warnings and clippy errors by @Razican in #1754
- Fix some broken links in the profiler documentation by @Razican in #1762
- Add proxy handling in
isArraymethod by @raskad in #1777 - Copy/paste fix in Proxy error message by @icecream17 in #1787
- Fixed #1768 by @Razican in #1820
- Fix string.prototype methods and add static string methods by @jevancc in #1123
- Handle allocation errors by @y21 in #1850
- Fix wasm use outside browsers by @Razican in #1846
- Add assertion to check that a break label is identified at compile-time by @VTCAKAVSMoACE in #1852
- Correct reference error message by @aaronmunsters in #1855
- Fixing main branch workflows by @Razican in #1858
- Correct pop_on_return behaviour by @VTCAKAVSMoACE in #1853
- Fix equality between objects and
undefinedornullby @HalidOdat in #1872 - Removing the panic in favour of an error result by @Razican in #1874
- Make
Object.getOwnPropertyDescriptorsspec compliant by @HalidOdat in #1876 - Make
Errorand%NativeError%spec compliant by @HalidOdat in #1879 - Fix
Number.prototype.toStringwhen passingundefinedas radix by @HalidOdat in #1877 - Cleanup vm stack on function return by @raskad in #1880
%NativeError%.[[prototype]]should beErrorconstructor by @HalidOdat in #1883- Make
StringToNumberspec compliant by @HalidOdat in #1881 - Fix
PropertyKeytoJsValueconversion by @HalidOdat in #1886 - Make iterator spec complaint by @HalidOdat in #1889
- Implement
Number.parseIntandNumber.parseFloatby @HalidOdat in #1894 - Fix unreachable panics in compile_access by @VTCAKAVSMoACE in #1861
- Continue panic fixes by @VTCAKAVSMoACE in #1896
- Deny const declarations without initializer inside for loops by @jedel1043 in #1903
- Fix try/catch/finally related bugs and add tests by @jedel1043 in #1901
- Compile StatementList after parse passes on negative tests by @raskad in #1906
- Prevent breaks without loop or switch from causing panics by @VTCAKAVSMoACE in #1860
- Fix postfix increment and decrement return values by @raskad in #1913
- Rewrite initialization of builtins to use the
BuiltIntrait by @jedel1043 in #1586 - Unify object creation with
emptyandfrom_proto_and_datamethods by @jedel1043 in #1567 - VM Tidy Up by @jasonwilliams in #1610
- Fix master refs to main by @jasonwilliams in #1637
- Refresh vm docs and fix bytecode trace output by @raskad #1921
- Change type of object prototypes to
Option<JsObject>by @jedel1043 in #1640 - Refactor
Functioninternal methods and implementBoundFunctionobjects by @jedel1043 in #1583 - change that verbosity comparison to > 2 by @praveenbakkal in #1680
- Respect rust 1.56 by @RageKnify in #1681
- Add bors to CI by @RageKnify in #1684
- Adding VM conformance output to PR checks by @Razican in #1685
- Start removing non-VM path by @jasonwilliams in #1747
- Using upstream benchmark action by @Razican in #1753
- Fix bors hanging by @RageKnify in #1767
- add more timers on object functions by @jasonwilliams in #1775
- Update the PR benchmarks action by @Razican in #1774
- General code clean-up and new lint addition by @Razican in #1809
- Reduced the size of AST nodes by @Razican in #1821
- Using the new formatting arguments from Rust 1.58 by @Razican in #1834
- Rework RegExp struct to include bitflags field by @aaronmunsters in #1837
- Ignore wastefull
RegExptests by @raskad in #1840 - Refactor the environment for runtime performance by @raskad in #1829
- Refactor mapped
Argumentsobject by @raskad in #1849 - Fixed dependabot for submodule by @Razican in #1856
- Refactorings for Rust 1.59 by @RageKnify in #1867
- Removing internal deprecated functions by @HalidOdat in #1854
- Remove
toIntegerand document thestringbuiltin by @jedel1043 in #1884 - Extract
Intrinsicsstruct fromContextand cleanup names by @jedel1043 in #1890
Full Changelog: https://github.com/boa-dev/boa/compare/v0.13...v0.14
Feature Enhancements:
- FEATURE #1526: Implement ComputedPropertyName for accessor properties in ObjectLiteral (@raskad)
- FEATURE #1365: Implement splice method (@neeldug)
- FEATURE #1364: Implement spread for objects (@FrancisMurillo)
- FEATURE #1525: Implement Object.preventExtensions() and Object.isExtensible() (@HalidOdat)
- FEATURE #1508: Implement Object.values() (@HalidOdat)
- FEATURE #1332: Implement Array.prototype.sort (@jedel1043)
- FEATURE #1417: Implement Object.keys and Object.entries (@skyne98)
- FEATURE #1406: Implement destructuring assignments (@raskad)
- FEATURE #1469: Implement String.prototype.replaceAll (@raskad)
- FEATURE #1442: Implement closure functions (@HalidOdat)
- FEATURE #1390: Implement RegExp named capture groups (@raskad)
- FEATURE #1424: Implement Symbol.for and Symbol.keyFor (@HalidOdat)
- FEATURE #1375: Implement
atmethod for string (@neeldug) - FEATURE #1369: Implement normalize method (@neeldug)
- FEATURE #1334: Implement Array.prototype.copyWithin (@jedel1043)
- FEATURE #1326: Implement get RegExp[@@species] (@raskad)
- FEATURE #1314: Implement RegExp.prototype [ @@search ] ( string ) (@raskad)
- FEATURE #1451: Feature prelude module (@HalidOdat)
- FEATURE #1523: Allow moving NativeObject variables into closures as external captures (@jedel1043)
Bug Fixes:
- BUG #1521: Added "js" feature for getrandom for WebAssembly builds (@Razican)
- BUG #1528: Always return undefined from functions that do not return (@raskad)
- BUG #1518: Moving a JsObject inside a closure caused a panic (@jedel1043)
- BUG #1502: Adjust EnumerableOwnPropertyNames to use all String type property keys (@raskad)
- BUG #1415: Fix panic on bigint size (@neeldug)
- BUG #1477: Properly handle NaN in new Date() (@raskad)
- BUG #1449: Make Array.prototype methods spec compliant (@HalidOdat)
- BUG #1353: Make Array.prototype.concat spec compliant (@neeldug)
- BUG #1384: bitwise not operation (spec improvements) (@neeldug)
- BUG #1374: Match and regexp construct fixes (@neeldug)
- BUG #1366: Use lock for map iteration (@joshwd36)
- BUG #1360: Adjust a comment to be next to the correct module (@teymour-aldridge)
- BUG #1349: Fixes Array.protoype.includes (@neeldug)
- BUG #1348: Fixes unshift maximum size (@neeldug)
- BUG #1339: Scripts should not be considered in a block (@macmv)
- BUG #1312: Fix display for nodes (@macmv)
- BUG #1347: Fix stringpad abstract operation (@neeldug)
- BUG #1584: Refactor the Math builtin object (spec compliant) (@jedel1043)
- BUG #1535: Refactor JSON.parse (@raskad)
- BUG #1572: Refactor builtin Map intrinsics to follow more closely the spec (@jedel1043)
- BUG #1445: improve map conformance without losing perf (@neeldug)
- BUG #1488: Date refactor (@raskad)
- BUG #1463: Return function execution result from constructor if the function returned (@raskad)
- BUG #1434: Refactor regexp costructor (@raskad)
- BUG #1350: Refactor / Implement RegExp functions (@RageKnify) (@raskad)
- BUG #1331: Implement missing species getters (@raskad)
Internal Improvements:
- INTERNAL #1569: Refactor EnvironmentRecordTrait functions (@raskad)
- INTERNAL #1464: Optimize integer negation (@HalidOdat)
- INTERNAL #1550: Add strict mode flag to Context (@raskad)
- INTERNAL #1561: Implement abstract operation GetPrototypeFromConstructor (@jedel1043)
- INTERNAL #1309: Implement Display for function objects(@kvnvelasco)
- INTERNAL #1492: Implement new get_or_undefined method for
JsValue(@jedel1043) - INTERNAL #1553: Fix benchmark action in CI (@jedel1043)
- INTERNAL #1547: Replace FxHashMap with IndexMap in object properties (@raskad)
- INTERNAL #1435: Constant JsStrings (@HalidOdat)
- INTERNAL #1499: Updated the Test262 submodule (@Razican)
- INTERNAL #1458: Refactor the JS testing system (@bartlomieju)
- INTERNAL #1485: Implement abstract operation CreateArrayFromList (@jedel1043)
- INTERNAL #1465: Feature throw Error object (@HalidOdat)
- INTERNAL #1493: Rename boa::Result to JsResult (@bartlomieju)
- INTERNAL #1457: Rename Value to JsValue (@HalidOdat)
- INTERNAL #1460: Change StringGetOwnProperty to produce the same strings that the lexer produces (@raskad)
- INTERNAL #1425: Extract PropertyMap struct from Object (@jedel1043)
- INTERNAL #1432: Proposal of new PropertyDescriptor design (@jedel1043)
- INTERNAL #1383: clippy lints and cleanup of old todos (@neeldug)
- INTERNAL #1346: Implement gh-page workflow on release (@FrancisMurillo)
- INTERNAL #1422: Refactor internal methods and make some builtins spec compliant (@HalidOdat)
- INTERNAL #1419: Fix DataDescriptor Value to possibly be empty (@raskad)
- INTERNAL #1357: Add Example to Execute a Function of a Script File (@schrieveslaach)
- INTERNAL #1408: Refactor JavaScript bigint rust type (@HalidOdat)
- INTERNAL #1380: Custom JavaScript string rust type (@HalidOdat)
- INTERNAL #1382: Refactor JavaScript symbol rust type (@HalidOdat)
- INTERNAL #1361: Redesign bytecode virtual machine (@HalidOdat)
- INTERNAL #1381: Fixed documentation warnings (@Razican)
- INTERNAL #1352: Respect Rust 1.53 (@RageKnify)
- INTERNAL #1356: Respect Rust fmt updates (@RageKnify)
- INTERNAL #1338: Fix cargo check errors (@neeldug)
- INTERNAL #1329: Allow Value.set_field to throw (@raskad)
- INTERNAL #1333: adds condition to avoid triggers from dependabot (@neeldug)
- INTERNAL #1337: Fix github actions (@neeldug)
Feature Enhancements:
- FEATURE #1085: Add primitive promotion for method calls on
GetField(@RageKnify) - FEATURE #1033: Implement
Reflectbuilt-in object (@tofpie) - FEATURE #1151: Fully implement
EmptyStatement(@SamuelQZQ) - FEATURE #1158: Include name in verbose results output of
boa-tester(@0x7D2B) - FEATURE #1225: Implement
Math[ @@toStringTag ](@HalidOdat) - FEATURE #1224: Implement
JSON[ @@toStringTag ](@HalidOdat) - FEATURE #1222: Implement
Symbol.prototype.descriptionaccessor (@HalidOdat) - FEATURE #1221: Implement
RegExpflag accessors (@HalidOdat) - FEATURE #1240: Stop ignoring a bunch of tests (@Razican)
- FEATURE #1132: Implement
Array.prototype.flat/flatMap(@davimiku) - FEATURE #1235: Implement
Object.assign( target, ...sources )(@HalidOdat) - FEATURE #1243: Cross realm symbols (@HalidOdat)
- FEATURE #1249: Implement
Map.prototype[ @@toStringTag ](@wylie39) - FEATURE #1111: Implement
Setbuiltin object (@RageKnify) - FEATURE #1265: Implement
BigInt.prototype[ @@toStringTag ](@n14littl) - FEATURE #1102: Support Unicode escape in identifier names (@jevancc)
- FEATURE #1273: Add default parameter support (@0x7D2B)
- FEATURE #1292: Implement
symbol.prototype[ @@ToStringTag ](@moadmmh) - FEATURE #1291: Support
GetOwnPropertyforstringexotic object (@jarkonik) - FEATURE #1296: Added the
$262object to the Test262 test runner (@Razican) - FEATURE #1127: Implement
Array.of(@camc)
Bug Fixes:
- BUG #1071: Fix attribute configurable of the length property of arguments (@tofpie)
- BUG #1073: Fixed spelling (@vishalsodani)
- BUG #1072: Fix
get/setas short method name inobject(@tofpie) - BUG #1077: Fix panics from multiple borrows of
Map(@joshwd36) - BUG #1079: Fix lexing escapes in string literal (@jevancc)
- BUG #1075: Fix out-of-range panics of
Date(@jevancc) - BUG #1084: Fix line terminator in string literal (@jevancc)
- BUG #1110: Fix parsing floats panics and bugs (@jevancc)
- BUG #1202: Fix a typo in
gc.rs(@teymour-aldridge) - BUG #1201: Return optional value in
to_jsonfunctions (@fermian) - BUG #1223: Update cli name in Readme (@sphinxc0re)
- BUG #1175: Handle early errors for declarations in
StatementList(@0x7D2B) - BUG #1270: Fix
Context::register_global_function()(@HalidOdat) - BUG #1135: Fix of instructions.rs comment, to_precision impl and rfc changes (@NathanRoyer)
- BUG #1272: Fix
Array.prototype.filter(@tofpie & @Razican) - BUG #1280: Fix slice index panic in
add_rest_param(@0x7D2B) - BUG #1284: Fix
GcObjectto_jsonmutable borrow panic (@0x7D2B) - BUG #1283: Fix panic in regex execution (@0x7D2B)
- BUG #1286: Fix construct usage (@0x7D2B)
- BUG #1288: Fixed
Math.hypot.lengthbug (@moadmmh) - BUG #1285: Fix environment record panics (@0x7D2B)
- BUG #1302: Fix VM branch (@jasonwilliams)
Internal Improvements:
- INTERNAL #1067: Change
Realm::global_objectfield fromValuetoGcObject(@RageKnify) - INTERNAL #1048: VM Trace output fixes (@jasonwilliams)
- INTERNAL #1109: Define all property methods of constructors (@RageKnify)
- INTERNAL #1126: Remove unnecessary wraps for non built-in functions (@RageKnify)
- INTERNAL #1044: Removed duplicated code in
vm.runusing macros (@stephanemagnenat) - INTERNAL #1103: Lazy evaluation for cooked template string (@jevancc)
- INTERNAL #1156: Rework environment records (@0x7D2B)
- INTERNAL #1181: Merge
Const/Let/VarDeclListintoDeclarationList(@0x7D2B) - INTERNAL #1234: Separate
Symbolbuiltin (@HalidOdat) - INTERNAL #1131: Make environment methods take
&mut Context(@HalidOdat) - INTERNAL #1271: Make
same_valueandsame_value_zerostatic methods (@HalidOdat) - INTERNAL #1276: Cleanup (@Razican)
- INTERNAL #1279: Add test comparison to Test262 result compare (@Razican)
- INTERNAL #1293: Fix test262 comment formatting (@0x7D2B)
- INTERNAL #1294: Don't consider panic fixes as "new failures" (@Razican)
Feature Enhancements:
- FEATURE #836: Async/Await parse (@Lan2u)
- FEATURE #704: Implement for...of loops (@joshwd36)
- FEATURE #770:
Support for symbols as property keys for
Object.defineProperty(@georgeroman) - FEATURE #717: Strict Mode Lex/Parse (@Lan2u)
- FEATURE #800:
Implement
consolecrate feature - Putconsoleobject behind a feature flag (@HalidOdat) - FEATURE #804:
Implement
EvalError(@HalidOdat) - FEATURE #805:
Implement
Function.prototype.call(@RageKnify) - FEATURE #806:
Implement
URIError(@HalidOdat) - FEATURE #811: Implement spread operator using iterator (@croraf)
- FEATURE #844: Allow UnaryExpression with prefix increment/decrement (@croraf)
- FEATURE #798: Implement Object.getOwnPropertyDescriptor() and Object.getOwnPropertyDescriptors() (@JohnDoneth)
- FEATURE #847: Implement Map.prototype.entries() (@croraf)
- FEATURE #859: Implement spec compliant Array constructor (@georgeroman)
- FEATURE #874: Implement Map.prototype.values and Map.prototype.keys (@croraf)
- FEATURE #877: Implement Function.prototype.apply (@georgeroman)
- FEATURE #908:
Implementation of
instanceofoperator (@morrien) - FEATURE #935: Implement String.prototype.codePointAt (@devinus)
- FEATURE #961:
Implement the optional
spaceparameter inJSON.stringify(@tofpie) - FEATURE #962: Implement Number.prototype.toPrecision (@NathanRoyer)
- FEATURE #983: Implement Object.prototype.isPrototypeOf (@tofpie)
- FEATURE #995: Support Numeric separators (@tofpie)
- FEATURE #1013: Implement nullish coalescing (?? and ??=) (@tofpie)
- FEATURE #987: Implement property accessors (@tofpie)
- FEATURE #1018: Implement logical assignment operators (&&= and ||=) (@tofpie)
- FEATURE #1019: Implement early errors for non-assignable nodes in assignment (@tofpie)
- FEATURE #1020: Implement Symbol.toPrimitive (@tofpie)
- FEATURE #976: Implement for..in (@tofpie)
- FEATURE #1026: Implement String.prototype.split (@jevancc)
- FEATURE #1047: Added syntax highlighting for numbers, identifiers and template literals (@Razican)
- FEATURE #1003: Improve Unicode support for identifier names (@jevancc)
Bug Fixes:
- BUG #782: Throw TypeError if regexp is passed to startsWith, endsWith, includes (@pt2121)
- BUG #788: Fixing a duplicated attribute in test262 results (@Razican)
- BUG #790: Throw RangeError when BigInt division by zero occurs (@JohnDoneth)
- BUG #785: Fix zero argument panic in JSON.parse() (@JohnDoneth)
- BUG #749: Fix Error constructors to return rather than throw (@RageKnify)
- BUG #777: Fix cyclic JSON.stringify / primitive conversion stack overflows (@vgel)
- BUG #799: Fix lexer span panic with carriage return (@vgel)
- BUG #812: Fix 2 bugs that caused Test262 to fail (@RageKnify)
- BUG #826: Fix tokenizing Unicode escape sequence in string literal (@HalidOdat)
- BUG #825: calling "new" on a primitive value throw a type error (@dlemel8)
- BUG #853 Handle invalid Unicode code point in the string literals (@jevancc)
- BUG #870 Fix JSON stringification for fractional numbers (@georgeroman)
- BUG #807: Make boa::parse emit error on invalid input, not panic (@georgeroman)
- BUG #880: Support more number literals in BigInt's from string constructor (@georgeroman)
- BUG #885:
Fix
BigInt.prototype.toString()radix checks (@georgeroman) - BUG #882: Fix (panic) remainder by zero (@georgeroman)
- BUG #884: Fix some panics related to BigInt operations (@georgeroman)
- BUG #888: Fix some panics in String.prototype properties (@georgeroman)
- BUG #902: Fix Accessors panics (@HalidOdat)
- BUG #959: Fix Unicode character escape sequence parsing (@tofpie)
- BUG #964: Fix single line comment lexing with CRLF line ending (@tofpie)
- BUG #919:
Reduce the number of
Array-related panics (@jakubfijalkowski) - BUG #968: Fix unit tests that can be failed due to daylight saving time (@tofpie)
- BUG #972: Fix enumerable attribute on array length property (@tofpie)
- BUG #974: Fix enumerable attribute on string length property (@tofpie)
- BUG #981: Fix prototypes for Number, String and Boolean (@tofpie)
- BUG #999: Fix logical expressions evaluation (@tofpie)
- BUG #1001: Fix comparison with infinity (@tofpie)
- BUG #1004:
Fix panics surrounding
Object.prototype.hasOwnProperty()(@HalidOdat) - BUG #1005:
Fix panics surrounding
Object.defineProperty()(@HalidOdat) - BUG #1021: Fix spread in new and call expressions (@tofpie)
- BUG #1023: Fix attributes on properties of functions and constructors (@tofpie)
- BUG #1017: Don't panic when function parameters share names (@AnnikaCodes)
- BUG #1024: Fix delete when the property is not configurable (@tofpie)
- BUG #1027: Supress regress errors on invalid escapes for regex (@jasonwilliams
- BUG #1031: Fixed some extra regex panics (@Razican)
- BUG #1049:
Support overriding the
argumentsvariable (@AnnikaCodes) - BUG #1050: Remove panic on named capture groups (@Razican)
- BUG #1046: Remove a few different panics (@Razican)
- BUG #1051: Fix parsing of arrow functions with 1 argument (@Lan2u)
- BUG #1045: Add newTarget to construct (@tofpie)
- BUG #659: Error handling in environment (@54k1)
Internal Improvements:
- INTERNAL #735: Move exec implementations together with AST node structs (@georgeroman)
- INTERNAL #724: Ignore tests for code coverage count (@HalidOdat)
- INTERNAL #768 Update the benchmark Github action (@Razican)
- INTERNAL #722:
ConstructorBuilder,ObjectInitializer, cache standard objects and fix global object attributes (@HalidOdat) - INTERNAL #783: New test262 results format (This also reduces the payload size for the website) (@Razican)
- INTERNAL #787: Refactor ast/node/expression into ast/node/call and ast/node/new (@croraf)
- INTERNAL #802:
Make
Function.prototypea function (@HalidOdat) - INTERNAL #746: Add Object.defineProperties and handle props argument in Object.create (@dvtkrlbs)
- INTERNAL #774:
Switch from
regextoregressfor ECMA spec-compliant regex implementation (@neeldug) - INTERNAL #794:
Refactor
PropertyDescriptor(Improved performance) (@HalidOdat) - INTERNAL #824: [parser Expression] minor expression macro simplification (@croraf)
- INTERNAL #833:
Using unstable sort for sorting keys on
to_json()for GC objects (@Razican) - INTERNAL #837:
Set default-run to
boaremoving need for--bin(@RageKnify) - INTERNAL #841: Minor refactor and rename in eval() method (@croraf)
- INTERNAL #840: fix(profiler): update profiler to match current measureme api (@neeldug)
- INTERNAL #838: style(boa): minor cleanup (@neeldug)
- INTERNAL #869: Updated cache in workflows (@Razican)
- INTERNAL #873 Removed cache from MacOS builds (@Razican)
- INTERNAL #835:
Move
Objectinternal object methods toGcObject(@HalidOdat) - INTERNAL #886: Support running a specific test/suite in boa_tester (@georgeroman)
- INTERNAL #901: Added "unimplemented" syntax errors (@Razican)
- INTERNAL #911:
Change Symbol hash to
u64(@HalidOdat) - INTERNAL #912:
Feature
Context::register_global_property()(@HalidOdat) - INTERNAL #913: Added check to ignore semicolon in parser (@AngelOnFira)
- INTERNAL #915: Improve lexer by make cursor iterate over bytes (@jevancc)
- INTERNAL #952: Upgraded rustyline and test262 (@Razican)
- INTERNAL #960: Fix unresolved links in documentation (@tofpie)
- INTERNAL #979: Read file input in bytes instead of string (@tofpie)
- INTERNAL #1014:
StatementList: Rename
statementstoitems(@AnnikaCodes) - INTERNAL #860: Investigation into ByteCode Interpreter (@jasonwilliams)
- INTERNAL #1042: Add receiver parameter to object internal methods (@tofpie)
- INTERNAL #1030: VM: Implement variable declaration (var, const, and let) (@AnnikaCodes)
- INTERNAL #1010: Modify environment binding behaviour of function (@54k1)
Feature Enhancements:
- FEATURE #524:
Implement remaining
Mathmethods (@mr-rodgers) - FEATURE #562:
Implement remaining
Numbermethods (@joshwd36) - FEATURE #536:
Implement
SyntaxError(@HalidOdat) - FEATURE #543:
Implements
Object.createbuiltin method (@croraf) - FEATURE #492: Switch to rustyline for the CLI (@IovoslavIovchev & @Razican)
- FEATURE #595: Added syntax highlighting for strings in REPL (@HalidOdat)
- FEATURE #586: Better error formatting and cli color (@HalidOdat)
- FEATURE #590: Added keyword and operator colors and matching bracket validator to REPL (@HalidOdat)
- FEATURE #555: Implement Array.prototype.reduce (@benjaminflin)
- FEATURE #550: Initial implementation of Map() (@joshwd36 & @HalidOdat)
- FEATURE #579: Implement Array.prototype.reduceRight (@benjaminflin)
- FEATURE #585: Implement Well-Known Symbols (@joshwd36)
- FEATURE #589: Implement the comma operator (@KashParty)
- FEATURE #341: Ability to create multiline blocks in boa shell (@HalidOdat)
- FEATURE #252:
Implement
Date(@jcdickinson) - FEATURE #711: Add support for >>>= (@arpit-saxena)
- FEATURE #549: Implement label statements (@jasonwilliams)
- FEATURE #373: Introduce PropertyKey for field acces (@RageKnify)
- FEATURE #627:
Feature native class objects (
NativeObjectandClasstraits) (@HalidOdat) - FEATURE #694:
Feature
gcmodule (@HalidOdat) - FEATURE #656:
Feature
Context(@HalidOdat) - FEATURE #673:
Add
#[track_caller]toGcObjectmethods that can panic (@HalidOdat) - FEATURE #661:
Add documentation to
GcObjectmethods (@HalidOdat) - FEATURE #662:
Implement
std::error::ErrorforGcObjectborrow errors (@HalidOdat) - FEATURE #660:
Make
GcObject::contructnot take 'this' (@HalidOdat) - FEATURE #654:
Move
require_object_coercibletoValue(@HalidOdat) - FEATURE #603:
Index
PropertyKey,Objectiterators and symbol support (@HalidOdat) - FEATURE #637:
Feature
boa::Result<T>(@HalidOdat) - FEATURE #625:
Moved value operations from
InterpretertoValue(@HalidOdat) - FEATURE #638:
Changed to
Value::to_*int32=>Value::to_*32(@HalidOdat)
Bug Fixes:
- BUG #405: Fix json.stringify symbol handling (@n14little)
- BUG #520:
Fix all
Valueoperations and add unsigned shift right (@HalidOdat) - BUG #529: Refactor exec/expression into exec/call and exec/new (@croraf)
- BUG #510: [[Call]] calling an undefined method does not throw (@joshwd36)
- BUG #493: Use correct exponential representation for rational values (@Tropid)
- BUG #572:
Spec Compliant
Number.prototype.toString(), betterNumberobject formating and-0(@HalidOdat) - BUG #599:
Fixed
String.prototype.indexOf()bug, when the search string is empty (@HalidOdat) - BUG #615: Fix abstract relational comparison operators (@HalidOdat)
- BUG #608:
Debug::fmtCauses Causes a Stack Overflow (@jcdickinson) - BUG #532 [builtins - Object] Object.getPrototypeOf returning incorrectly (@54k1)
- BUG #533 [exec - function] function.prototype doesn't have own constructor property pointing to this function (@54k1)
- BUG #641 Test new_instance_should_point_to_prototype is not checked correctly (@54k1)
- BUG #644
undefinedconstants panic on execution (@jcdickinson) - BUG #631: Unexpected result when applying typeof to undefined value (@jcdickinson)
- BUG #667: Fix panic when calling function that mutates itself (@dvtkrlbs)
- BUG #668: Fix clippy on Nightly (@dvtkrlbs)
- BUG #582:
Make
String.prototype.repeat()ECMAScript specification compliant (@HalidOdat) - BUG #541:
Made all
Mathmethods spec compliant (@HalidOdat) - BUG #597:
Made
String.prototype.indexOfspec compliant. (@HalidOdat) - BUG #598:
Made
String.prototype.lastIndexOf()spec compliant (@HalidOdat) - BUG #583:
Fix string prototype
trimmethods (@HalidOdat) - BUG #728: Fix bug when setting the length on String objects (@jasonwilliams)
- BUG #710: Fix panic when a self mutating function is constructing an object (@HalidOdat)
- BUG #699:
Fix
Value::to_jsonorder of items in array (@sele9) - BUG #610:
Fix:
String.prototype.replacesubstitutions (@RageKnify) - BUG #645: Fix undefined constant expression evaluation (@jcdickinson)
- BUG #643: Change default return type from null to undefined (@54k1)
- BUG #642:
Missing
constructorfield in ordinary functions (@54k1) - BUG #604:
Missing
__proto__field in functions instances (@54k1) - BUG #561:
Throw a
TypeErrorwhen a non-object is called (@joshwd36) - BUG #748:
Fix parse error throwing a
TypeError, instead ofSyntaxError(@iamsaquib8) - BUG #737:
Make
Object.toString()spec compliant (@RageKnify)
Internal Improvements:
- INTERNAL #567: Add ECMAScript test suite (test262) (@Razican)
- INTERNAL #559: New Lexer (@Lan2u @HalidOdat @Razican)
- INTERNAL #712:
Refactor:
Value::to_objectto returnGcObject(@RageKnify) - INTERNAL #544:
Removed
consoles dependency ofInternalState(@HalidOdat) - INTERNAL #556: Added benchmark for goal symbol switching (@Razican)
- INTERNAL #578:
Extract
prototypefrom internal slots (@HalidOdat) - INTERNAL #553: Refactor Property Descriptor flags (@HalidOdat)
- INTERNAL #592:
RegExpspecialization (@HalidOdat) - INTERNAL #626:
Refactor
Function(@HalidOdat @Razican) - INTERNAL #564: Add benchmarks for "uglified" JS (@neeldug)
- INTERNAL #706: Cache well known symbols (@HalidOdat)
- INTERNAL #723: Add fast path for string concatenation (@RageKnify)
- INTERNAL #689:
Move
objectmodule to root (@HalidOdat) - INTERNAL #684:
Move
propertymodule to root (@HalidOdat) - INTERNAL #674:
Move
valuemodule to root (@HalidOdat) - INTERNAL #693:
Rename
Object::prototype()andObject::set_prototype()(@RageKnify) - INTERNAL #665:
approx_eq!macro forexpm1tests. (@neeldung) - INTERNAL #581: Added CLEAN_JS and MINI_JS benches (@neeldung)
- INTERNAL #640: Benchmark refactor (@neeldung)
- INTERNAL #635: Add missing ops to exec module (@jarredholman)
- INTERNAL #616:
Remove
Value::as_num_to_power()(@HalidOdat) - INTERNAL #601: Removed internal_slots from object (@HalidOdat)
- INTERNAL #560: Added benchmarks for full program execution (@Razican)
- INTERNAL #547:
Merged
createintoinitfor builtins (@HalidOdat) - INTERNAL #538:
Cleanup and added test for
String.prototype.concat(@HalidOdat) - INTERNAL #739: Add release action (@jasonwilliams)
- INTERNAL #744: Add MacOS check and test to CI (@neeldug)
Feature Enhancements:
- FEATURE #414:
Implement
Numberobject constants (@Lan2u) (@HalidOdat) - FEATURE #345:
Implement the optional
replacerparameter inJSON.stringify( value[, replacer [, space] ] )(@n14little) - FEATURE #480:
Implement global
Infinityproperty (@AnirudhKonduru) - FEATURE #410: Add support for the reviver function to JSON.parse (@abhijeetbhagat)
- FEATURE #425:
Specification compliant
ToString(to_string) (@HalidOdat) - FEATURE #442:
Added
TypeErrorimplementation (@HalidOdat) - FEATURE #450:
Specification compliant
ToBigInt(to_bigint) (@HalidOdat) - FEATURE #455: TemplateLiteral Basic lexer implementation (@croraf)
- FEATURE #447: parseInt, parseFloat implementation (@Lan2u)
- FEATURE #468: Add BigInt.asIntN() and BigInt.asUintN() functions (@Tropid)
- FEATURE #428: [Feature Request] - Create benchmark for Array manipulation (@abhijeetbhagat)
- FEATURE #439: Implement break handling in switch statements (@Lan2u)
- FEATURE #301: Implementing the switch statement in the new parser (@Lan2u)
- FEATURE #120:
Implement
globalThis(@zanayr) - FEATURE #513:
Implement
Object.is()method (@tylermorten) - FEATURE #481:
Implement global
undefinedproperty (@croraf)
Bug Fixes:
- BUG #412: Fixed parsing if statement without else block preceded by a newline (@HalidOdat)
- BUG #409: Fix function object constructable/callable (@HalidOdat)
- BUG #403
Value::to_json()does not handleundefinedcorrectly (@n14little) - BUG #443: HasOwnProperty should call GetOwnProperty and not GetProperty (@n14little)
- BUG #210: builtinfun.length undefined (@Croraf)
- BUG #466:
Change
ToPrimitive()(to_primitive()) hint to be an enum, instead of string (@HalidOdat) - BUG #421:
NaNis lexed as a number, not as an identifier (@croraf) - BUG #454:
Function declaration returns the function, it should return
undefined(@croraf) - BUG #482:
Field access should propagate the exception (
Err(_)) (@neeldug) - BUG #463: Use of undefined variable should throw an error (@croraf)
- BUG #502: Fixed global objects initialization order (@HalidOdat)
- BUG #509: JSON.stringify(undefined) panics (@n14little)
- BUG #514:
Clean up
MathMethods (@n14little) - BUG #511: [Call] Usage of "this" in methods is not supported (@jasonwilliams)
Internal Improvements
- INTERNAL #435: Optimize type comparisons (@Lan2u)
- INTERNAL #296: using measureme for profiling the interpreter (@jasonwilliams)
- INTERNAL #419: Object specialization (fast paths for many objects) (@HalidOdat)
- INTERNAL #392: Execution and Node modulization (@Razican)
- INTERNAL #465:
Refactoring Value (decouple
GcfromValue) (@HalidOdat) - INTERNAL #416 & INTERNAL #423: Update links to boa-dev (@pedropaulosuzuki)
- INTERNAL #378: Code Coverage! (@Lan2u)
- INTERNAL #431: Updates to PR Benchmarks (@Razican)
- INTERNAL #427 #429 #430: Added new benchmarks (@Razican)
v0.8.0 brings more language implementations, such as do..while, function objects and also more recent EcmaScript additions, like BigInt.
We have now moved the Web Assembly build into the wasm package, plus added a code of conduct for those contributing.
The parser has been even more modularized in this release making it easier to add new parsing rules.
Boa has migrated it's object implemention to FXHash which brings much improved results over the built-in Rust hashmaps (at the cost of less DOS Protection).
Feature Enhancements:
- FEATURE #121:
BigIntImplemented (@HalidOdat) - FEATURE #293: Improved documentation of all modules (@HalidOdat)
- FEATURE #302: Implement do..while loop (@ptasz3k)
- FEATURE #318: Added continous integration for windows (@HalidOdat)
- FEATURE #290: Added more build profiles (@Razican)
- FEATURE #323: Aded more benchmarks (@Razican)
- FEATURE #326: Rename Boa CLI (@sphinxc0re)
- FEATURE #312: Added jemallocator for linux targets (@Razican)
- FEATURE #339: Improved Method parsing (@muskuloes)
- FEATURE #352: create boa-wasm package (@muskuloes)
- FEATURE #304: Modularized parser
- FEATURE #141: Implement function objects (@jasonwilliams)
- FEATURE #365: Implement for loop execution (@Razican)
- FEATURE #356: Use Fx Hash to speed up hash maps in the compiler (@Razican)
- FEATURE #321: Implement unary operator execution (@akryvomaz)
- FEATURE #379: Automatic auditing of Boa (@n14little)
- FEATURE #264:
Implement
this(@jasonwilliams) - FEATURE #395: impl abstract-equality-comparison (@hello2dj)
- FEATURE #359: impl typeof (@RestitutorOrbis)
- FEATURE #390: Modularize try statement parsing (@abhijeetbhagat)
Bug fixes:
- BUG #308: Assignment operator not working in tests (a = a +1) (@ptasz3k)
- BUG #322: Benchmarks are failing in master (@Razican)
- BUG #325: Put JSON functions on the object, not the prototype (@coolreader18)
- BUG #331:
We only get
Const::Num, neverConst::Int(@HalidOdat) - BUG #209:
Calling
new Arraywith 1 argument doesn't work properly (@HalidOdat) - BUG #266: Panic assigning named function to variable (@Razican)
- BUG #397:
fix
NaNis lexed as identifier, not as a number (@attliaLin) - BUG #362: Remove Monaco Editor Webpack Plugin and Manually Vendor Editor Workers (@subhankar-panda)
- BUG #406: Dependency Upgrade (@Razican)
- BUG #407:
String()wasn't defaulting to empty string on call (@jasonwilliams) - BUG #404: Fix for 0 length new String(@tylermorten)
Code Of Conduct:
- COC #384: Code of conduct added (@Razican)
Security:
- SEC #391: run security audit daily at midnight. (@n14little)
v0.7.0 brings a REPL, Improved parser messages and a new parser!
This is now the default behaviour of Boa, so running Boa without a file argument will bring you into a javascript shell.
Tests have also been moved to their own files, we had a lot of tests in some modules so it was time to separate.
Most of the work in this release has been on rewriting the parser. A big task taken on by HalidOdat, Razican and myself.
The majority of the old parser was 1 big function (called parse) which had some pattern matching on each token coming in.
The easy branches could generate expressions (which were basically AST Nodes), the more involved branches would recursively call into the same function, until eventually you had an expression generated.
This only worked so far, eventually debugging parsing problems were difficult, also more bugs were being raised against the parser which couldn't be fixed.
We decided to break the parser into more of a state-machine. The initial decision for this was inspired by Fedor Indutny who did a talk at (the last) JSConf EU about how he broke up the old node-parser to make it more maintanable. He goes into more detail here https://www.youtube.com/watch?v=x3k_5Mi66sY&feature=youtu.be&t=530
The new parser has functions to match the states of parsing in the spec. For example https://tc39.es/ecma262/#prod-VariableDeclaration has a matching function read_variable_declaration. This not only makes it better to maintain but easier for new contributors to get involed, as following the parsing logic of the spec is easier than before.
Once finished some optimisations were added by HalidOdat to use references to the tokens instead of cloning them each time we take them from the lexer. This works because the tokens live just as long as the parser operations do, so we don't need to copy the tokens. What this brings is a huge performance boost, the parser is 67% faster than before!
Feature enhancements:
- FEATURE #281: Rebuild the parser (@jasonwilliams, @Razican, @HalidOdat)
- FEATURE #278: Added the ability to dump the token stream or ast in bin. (@HalidOdat)
- FEATURE #253: Implement Array.isArray (@cisen)
- FEATURE Switch to normal output instead of debugged output (stdout/stdout) (@jasonwilliams)
- FEATURE #258: Moved test modules to their own files (@Razican)
- FEATURE #267: Add print & REPL functionality to CLI (@JohnDoneth)
- FEATURE #268: Addition of forEach() (@jasonwilliams) (@xSke)
- FEATURE #262: Implement Array.prototype.filter (@Nickforall)
- FEATURE #261: Improved parser error messages (@Razican)
- FEATURE #277: Add a logo to the project (@HalidOdat)
- FEATURE #260: Add methods with f64 std equivelant to Math object (@Nickforall)
Bug fixes:
- BUG #249: fix(parser): handle trailing comma in object literals (@gomesalexandre)
- BUG #244: Fixed more Lexer Panics (@adumbidiot)
- BUG #256: Fixed comments lexing (@Razican)
- BUG #251: Fixed empty returns (@Razican)
- BUG #272: Fix parsing of floats that start with a zero (@Nickforall)
- BUG #240: Fix parser panic
- BUG #273: new Class().method() has incorrect precedence
Documentation Updates:
- DOC #297: Better user contributed documentation
The lexer has had several fixes in this release, including how it parses numbers, scientific notation should be improved. On top of that the lexer no longer panics on errors including Syntax Errors (thanks @adumbidiot), instead you get some output on where the error happened.
Boa offers both a CLI and a library, initially these were all in the same binary. The downside is those who want to embed boa as-is end up with all of the command-line dependencies. So the time has come to separate out the two, this is normal procedure, this should be analogous to ripgrep and the regex crate. Cargo has great support for workspaces, so this shouldn't be an issue.
We now have benchmarks which run against master! Thanks to Github Actions these will run automatically a commit is merged.
Feature enhancements:
- FEATURE #218: Implement Array.prototype.toString (@cisen)
- FEATURE #216: Keep accepting new array elements after spread.
- FEATURE #220: Documentation updates. (@croraf)
- FEATURE #226: add parser benchmark for expressions. (@jasonwilliams)
- FEATURE #217: String.prototype.replace() implemented
- FEATURE #247: Moved to a workspace architecture (@Razican)
Bug fixes:
- BUG #222: Fixed clippy errors (@IovoslavIovchev)
- BUG #228: [lexer: single-line-comment] Fix bug when single line comment is last line of file (@croraf)
- BUG #229: Replace error throwing with panic in "Lexer::next()" (@croraf)
- BUG #232/BUG #238: Clippy checking has been scaled right back to just Perf and Style (@jasonwilliams)
- BUG #227: Array.prototype.toString should be called by ES value (@cisen)
- BUG #242: Fixed some panics in the lexer (@adumbidiot)
- BUG #235: Fixed arithmetic operations with no space (@gomesalexandre)
- BUG #245: Fixed parsing of floats with scientific notation (@adumbidiot)
Feature enhancements:
- FEATURE #151: Implement the Rest/Spread operator (functions and arrays).
- FEATURE #193: Implement macro for setting builtin functions
- FEATURE #211: Better Display support for all Objects (pretty printing)
Feature enhancements:
- FEATURE #119: Introduce realm struct to hold realm context and global object.
- FEATURE #89: Implement exponentiation operator. Thanks @arbroween
- FEATURE #47: Add tests for comments in source code. Thanks @Emanon42
- FEATURE #137: Use Monaco theme for the demo page
- FEATURE #114: String.match(regExp) is implemented (@muskuloes)
- FEATURE #115: String.matchAll(regExp) is implemented (@bojan88)
- FEATURE #163: Implement Array.prototype.every() (@letmutx)
- FEATURE #165: Implement Array.prototype.find() (@letmutx)
- FEATURE #166: Implement Array.prototype.findIndex() (@felipe-fg)
- FEATURE #39: Implement block scoped variable declarations (@barskern)
- FEATURE #161: Enable obj[key] = value syntax.
- FEATURE #179: Implement the Tilde operator (@letmutx)
- FEATURE #189: Implement Array.prototype.includes (incl tests) (@simonbrahan)
- FEATURE #180: Implement Array.prototype.slice (@muskuloes @letmutx)
- FEATURE #152: Short Function syntax (no arguments)
- FEATURE #164: Implement Array.prototype.fill() (@bojan88)
- Array tests: Tests implemented for shift, unshift and reverse, pop and push (@muskuloes)
- Demo page has been improved, new font plus change on input. Thanks @WofWca
- FEATURE #182: Implement some Number prototype methods (incl tests) (@pop)
- FEATURE #34: Number object and Constructore are implemented (including methods) (@pop)
- FEATURE #194: Array.prototype.map (@IovoslavIovchev)
- FEATURE #90: Symbol Implementation (@jasonwilliams)
Bug fixes:
- BUG #113: Unassigned variables have default of undefined (@pop)
- BUG #61: Clippy warnings/errors fixed (@korpen)
- BUG #147: Updated object global
- BUG #154: Correctly handle all whitespaces within the lexer
- Tidy up Globals being added to Global Object. Thanks @DomParfitt
v0.4.0 brings quite a big release. The biggest feature to land is the support of regular expressions.
Functions now have the arguments object supported and we have a debugging section in the docs.
Feature enhancements:
- FEATURE #6: Support for regex literals. (Big thanks @999eagle)
- FEATURE #13: toLowerCase, toUpperCase, substring, substr and valueOf implemented (thanks @arbroween)
- Support for
argumentsobject within functions StringDatainstead ofPrimitieDatato match spec- Native function signatures changed, operations added to match spec
- Primitives can now be boxed/unboxed when methods are ran on them
- Spelling edits (thanks @someguynamedmatt)
- Ability to set global values before interpreter starts (thanks @999eagle)
- Assign operators implemented (thanks @oll3)
Bug fixes:
- BUG #57: Fixed issue with stackoverflow by implementing early returns.
- Allow to re-assign value to an existing binding. (Thanks @oll3)
- UnexpectedKeyword(Else) bug fixed https://github.com/boa-dev/boa/issues/38
- Contributing guide added
- Ability to specify file - Thanks @callumquick
- Travis fixes
- Parser Tests - Thanks @Razican
- Migrate to dyn traits - Thanks @Atul9
- Added implementations for Array.prototype: concat(), push(), pop() and join() - Thanks @callumquick
- Some clippy Issues fixed - Thanks @Razican
- Objects have been refactored to use structs which are more closely aligned with the specification
- Benchmarks have been added
- String and Array specific console.log formats - Thanks @callumquick
- isPropertyKey implementation added - Thanks @KrisChambers
- Unit Tests for Array and Strings - Thanks @GalAster
- typo fix - Thanks @palerdot
- dist cleanup, thanks @zgotsch
Some String prototype methods are implemented. Thanks to @lennartbuit we have trim/trimStart/trimEnd added to the string prototype
Feature enhancements:
- String.prototype.concat ( ...args )
- String.prototype.endsWith ( searchString [ , endPosition ] )
- String.prototype.includes ( searchString [ , position ] )
- String.prototype.indexOf ( searchString [ , position ] )
- String.prototype.lastIndexOf ( searchString [ , position ] )
- String.prototype.repeat ( count )
- String.prototype.slice ( start, end )
- String.prototype.startsWith ( searchString [ , position ] )
Bug fixes:
- Plenty
Working state reached
- Tests on the lexer, conforms with puncturators and keywords from TC39 specification
- wasm-bindgen added with working demo in Web Assembly
- snapshot of boa in a working state for the first time
