From f10a620c09b5a032ef488b0953a3d309c7c1f230 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Wed, 31 May 2023 21:59:21 +0100 Subject: [PATCH] v0.17.0 changelog --- CHANGELOG.md | 287 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67bc08ef22b..17287ef6fc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,293 @@ ## What's Changed +# [0.17.0 (2023-07-03)]() + +### Feature Enhancements + +- Implement `new.target` expression by @raskad in [#2299](https://github.com/boa-dev/boa/pull/2299) +- Parse static async private methods in classes by @raskad in [#2315](https://github.com/boa-dev/boa/pull/2315) +- Implement `JsDataView` by @nekevss in [#2308](https://github.com/boa-dev/boa/pull/2308) +- Upgrade clap to 4.0, add value hints for zsh and fish by @Razican in [#2336](https://github.com/boa-dev/boa/pull/2336) +- Implement `JsRegExp` by @nekevss in [#2326](https://github.com/boa-dev/boa/pull/2326) +- Create new lazy Error type by @jedel1043 in [#2283](https://github.com/boa-dev/boa/pull/2283) +- Fixed some documentation and clippy warnings in tests by @Razican in [#2362](https://github.com/boa-dev/boa/pull/2362) +- Removed the "VM Implementation" headline for Test262 by @Razican in [#2364](https://github.com/boa-dev/boa/pull/2364) +- Modified the `loadfile` example to show how Boa can read bytes by @Razican in [#2363](https://github.com/boa-dev/boa/pull/2363) +- Implement `LabelledStatement` by @jedel1043 in [#2349](https://github.com/boa-dev/boa/pull/2349) +- Split vm/opcode into modules by @nekevss in [#2343](https://github.com/boa-dev/boa/pull/2343) +- Removed some duplicate code, added `ToIndentedString` by @Razican in [#2367](https://github.com/boa-dev/boa/pull/2367) +- Document the AST by @jedel1043 in [#2377](https://github.com/boa-dev/boa/pull/2377) +- Implement member accessors in initializer of for loops by @jedel1043 in [#2381](https://github.com/boa-dev/boa/pull/2381) +- Implement `JsGenerator` and wrapper docs clean up by @nekevss in [#2380](https://github.com/boa-dev/boa/pull/2380) +- Add named evaluation of logical assignments by @raskad in [#2389](https://github.com/boa-dev/boa/pull/2389) +- Implement optional chains by @jedel1043 in [#2390](https://github.com/boa-dev/boa/pull/2390) +- Implement delete for references by @jedel1043 in [#2395](https://github.com/boa-dev/boa/pull/2395) +- Implement AST Visitor pattern (attempt #3) by @addisoncrump in [#2392](https://github.com/boa-dev/boa/pull/2392) +- Implement async arrow functions by @raskad in [#2393](https://github.com/boa-dev/boa/pull/2393) +- Pretty print promise objects by @jedel1043 in [#2407](https://github.com/boa-dev/boa/pull/2407) +- Parser Idempotency Fuzzer by @addisoncrump in [#2400](https://github.com/boa-dev/boa/pull/2400) +- Safe wrapper for `JsDate` by @anuvratsingh in [#2181](https://github.com/boa-dev/boa/pull/2181) +- Fix some Date tests by @jedel1043 in [#2431](https://github.com/boa-dev/boa/pull/2431) +- Boa Gc implementation draft by @nekevss in [#2394](https://github.com/boa-dev/boa/pull/2394) +- VM Fuzzer by @addisoncrump in [#2401](https://github.com/boa-dev/boa/pull/2401) +- Implement the `WeakRef` builtin by @jedel1043 in [#2438](https://github.com/boa-dev/boa/pull/2438) +- Refactor the `Date` builtin by @jedel1043 in [#2449](https://github.com/boa-dev/boa/pull/2449) +- Implement instruction flowgraph generator by @HalidOdat in [#2422](https://github.com/boa-dev/boa/pull/2422) +- `JsArrayBuffer` take method and docs by @nekevss in [#2454](https://github.com/boa-dev/boa/pull/2454) +- Set function names in object literal methods by @raskad in [#2460](https://github.com/boa-dev/boa/pull/2460) +- Redesign Intl API and implement some services by @jedel1043 in [#2478](https://github.com/boa-dev/boa/pull/2478) +- Cleanup `Context` APIs by @jedel1043 in [#2504](https://github.com/boa-dev/boa/pull/2504) +- Prepare `Promises` for new host hooks and job queue API by @jedel1043 in [#2528](https://github.com/boa-dev/boa/pull/2528) +- Implement host hooks and job queues APIs by @jedel1043 in [#2529](https://github.com/boa-dev/boa/pull/2529) +- First batch of `no_std` support for some sub-crates by @jedel1043 in [#2544](https://github.com/boa-dev/boa/pull/2544) +- Create `Source` to abstract JS code sources by @jedel1043 in [#2579](https://github.com/boa-dev/boa/pull/2579) +- Move increment and decrement operations to `Update` expression by @raskad in [#2565](https://github.com/boa-dev/boa/pull/2565) +- Implement binary `in` operation with private names by @raskad in [#2582](https://github.com/boa-dev/boa/pull/2582) +- Module parsing by @Razican in [#2411](https://github.com/boa-dev/boa/pull/2411) +- Implement `WeakSet` by @lupd in [#2586](https://github.com/boa-dev/boa/pull/2586) +- Implement `WeakMap` by @raskad in [#2597](https://github.com/boa-dev/boa/pull/2597) +- API to construct a `NativeFunction` from a native async function by @jedel1043 in [#2542](https://github.com/boa-dev/boa/pull/2542) +- Add `--strict` flag to cli by @HalidOdat in [#2689](https://github.com/boa-dev/boa/pull/2689) +- Add timeout to CI by @HalidOdat in [#2691](https://github.com/boa-dev/boa/pull/2691) +- Add ES5 and ES6 Conformance calculation to boa_tester by @ZackMitkin in [#2690](https://github.com/boa-dev/boa/pull/2690) +- Improve tester display for multiple editions by @jedel1043 in [#2720](https://github.com/boa-dev/boa/pull/2720) +- Implement `JsPromise` wrapper by @jedel1043 in [#2758](https://github.com/boa-dev/boa/pull/2758) +- Initial version of a JS -> Rust conversion trait. by @Razican in [#2276](https://github.com/boa-dev/boa/pull/2276) +- Implement `escape` and `unescape` by @jedel1043 in [#2768](https://github.com/boa-dev/boa/pull/2768) +- Implement debug object for CLI by @HalidOdat in [#2772](https://github.com/boa-dev/boa/pull/2772) +- Make `Realm` shareable between functions by @jedel1043 in [#2801](https://github.com/boa-dev/boa/pull/2801) +- Implement Annex-B string html methods by @HalidOdat in [#2798](https://github.com/boa-dev/boa/pull/2798) +- Implement annex-b `trimLeft` and `trimRight` string methods by @HalidOdat in [#2806](https://github.com/boa-dev/boa/pull/2806) +- Implement HTML comments and gate behind the `annex-b` feature by @jedel1043 in [#2817](https://github.com/boa-dev/boa/pull/2817) +- Implement `Intl.Segmenter` by @jedel1043 in [#2840](https://github.com/boa-dev/boa/pull/2840) +- Implement var initializers in for-in loops by @jedel1043 in [#2842](https://github.com/boa-dev/boa/pull/2842) +- Improve debug output of `JsNativeError` and `Realm` by @jedel1043 in [#2894](https://github.com/boa-dev/boa/pull/2894) +- Implement runtime limits for loops by @HalidOdat in [#2857](https://github.com/boa-dev/boa/pull/2857) +- Implement runtime limits for recursion by @HalidOdat in [#2904](https://github.com/boa-dev/boa/pull/2904) +- Implement annexB Block-Level Function Declarations by @raskad in [#2910](https://github.com/boa-dev/boa/pull/2910) +- Implement module execution by @jedel1043 in [#2922](https://github.com/boa-dev/boa/pull/2922) +- Type safe root shape by @HalidOdat in [#2940](https://github.com/boa-dev/boa/pull/2940) +- Implement dynamic imports by @jedel1043 in [#2932](https://github.com/boa-dev/boa/pull/2932) +- Implement pseudo-property `import.meta` by @jedel1043 in [#2956](https://github.com/boa-dev/boa/pull/2956) +- Implement `with` and object environments by @raskad in [#2692](https://github.com/boa-dev/boa/pull/2692) +- Add hooks to get the current time and timezone by @jedel1043 in [#2824](https://github.com/boa-dev/boa/pull/2824) +- Make `JsSymbol` thread-safe by @jedel1043 in [#2539](https://github.com/boa-dev/boa/pull/2539) +- Added a Boa runtime by @Razican in [#2743](https://github.com/boa-dev/boa/pull/2743) +- Implement `TryFromJs` for `JsObject` wrappers by @Razican in [#2809](https://github.com/boa-dev/boa/pull/2809) +- Allow passing owned `HostHooks` and `JobQueues` to `Context` by @jedel1043 in [#2811](https://github.com/boa-dev/boa/pull/2811) +- Implement `String.prototype.toLocaleUpper/LowerCase` by @jedel1043 in [#2822](https://github.com/boa-dev/boa/pull/2822) +- Implement constant folding optimization by @HalidOdat in [#2679](https://github.com/boa-dev/boa/pull/2679) +- Implement `Hidden classes` by @HalidOdat in [#2723](https://github.com/boa-dev/boa/pull/2723) + +### Bug Fixes + +- Add unicode terminator to line comment by @creampnx-x in [#2301](https://github.com/boa-dev/boa/pull/2301) +- Fix function property order by @raskad in [#2305](https://github.com/boa-dev/boa/pull/2305) +- Fix some Array spec deviations by @raskad in [#2306](https://github.com/boa-dev/boa/pull/2306) +- Fix double conversion to primitive in `ToNumeric` by @raskad in [#2310](https://github.com/boa-dev/boa/pull/2310) +- Fixing the output for the test diffs in PRs by @Razican in [#2320](https://github.com/boa-dev/boa/pull/2320) +- Fix Regex literal parsing in MemberExpression by @tunz in [#2328](https://github.com/boa-dev/boa/pull/2328) +- Fix error in `Proxy` set implementation by @raskad in [#2369](https://github.com/boa-dev/boa/pull/2369) +- Allow LineTerminator before Semicolon in `continue` by @raskad in [#2371](https://github.com/boa-dev/boa/pull/2371) +- Fix var collisions in strict eval calls by @jedel1043 in [#2382](https://github.com/boa-dev/boa/pull/2382) +- Set `in` to `true` when parsing AssignmentExpression in ConditionalExpression by @raskad in [#2386](https://github.com/boa-dev/boa/pull/2386) +- Skip prototype field definition for arrow function by @raskad in [#2388](https://github.com/boa-dev/boa/pull/2388) +- Remove invalid optimization in addition by @raskad in [#2387](https://github.com/boa-dev/boa/pull/2387) +- Fix order dependent execution in assignment. by @HalidOdat in [#2378](https://github.com/boa-dev/boa/pull/2378) +- Add early error for `yield` in `GeneratorExpression` parameters by @raskad in [#2413](https://github.com/boa-dev/boa/pull/2413) +- Handle `__proto__` fields in object literals by @raskad in [#2423](https://github.com/boa-dev/boa/pull/2423) +- Fix built-ins/Array/prototype/toString/non-callable-join-string-tag.js test case by @akavi in [#2458](https://github.com/boa-dev/boa/pull/2458) +- Fix `PartialEq` for `JsBigInt` and `f64` by @raskad in [#2461](https://github.com/boa-dev/boa/pull/2461) +- Allow class expressions without identifier by @raskad in [#2464](https://github.com/boa-dev/boa/pull/2464) +- Fix to weak_trace for `boa_tester` by @nekevss in [#2470](https://github.com/boa-dev/boa/pull/2470) +- Fix unary operations on `this` by @veera-sivarajan in [#2507](https://github.com/boa-dev/boa/pull/2507) +- Fix postfix operator line terminator parsing by @raskad in [#2520](https://github.com/boa-dev/boa/pull/2520) +- Remove `Literal::Undefined` by @veera-sivarajan in [#2518](https://github.com/boa-dev/boa/pull/2518) +- Add early errors for 'eval' or 'arguments' in parameters by @raskad in [#2515](https://github.com/boa-dev/boa/pull/2515) +- Pass a receiver value in property getter opcodes by @raskad in [#2516](https://github.com/boa-dev/boa/pull/2516) +- Add regex literal early errors by @raskad in [#2517](https://github.com/boa-dev/boa/pull/2517) +- `Break` Opcode and `ByteCompiler` changes by @nekevss in [#2523](https://github.com/boa-dev/boa/pull/2523) +- Refactor some class features by @raskad in [#2513](https://github.com/boa-dev/boa/pull/2513) +- Recognize Directive Prologues correctly by @raskad in [#2521](https://github.com/boa-dev/boa/pull/2521) +- Correctly parse consecutive semicolons by @raskad in [#2533](https://github.com/boa-dev/boa/pull/2533) +- Fix some HoistableDeclaration parsing errors by @raskad in [#2532](https://github.com/boa-dev/boa/pull/2532) +- Return the correct value from a statement list by @raskad in [#2554](https://github.com/boa-dev/boa/pull/2554) +- Fix error for static class methods named `prototype` by @raskad in [#2552](https://github.com/boa-dev/boa/pull/2552) +- Avoid creating `prototype` property on methods by @raskad in [#2553](https://github.com/boa-dev/boa/pull/2553) +- Fix double property access on assignment ops by @raskad in [#2551](https://github.com/boa-dev/boa/pull/2551) +- Add early errors for escaped identifiers by @raskad in [#2546](https://github.com/boa-dev/boa/pull/2546) +- Fix failing collator tests by @jedel1043 in [#2575](https://github.com/boa-dev/boa/pull/2575) +- fuzzer: bubble up NoInstructionsRemain error instead of trying to handle as exception by @Mrmaxmeier in [#2566](https://github.com/boa-dev/boa/pull/2566) +- Try-catch-block control flow fix/refactor by @nekevss in [#2568](https://github.com/boa-dev/boa/pull/2568) +- Fix doc tests and add CI check by @jedel1043 in [#2606](https://github.com/boa-dev/boa/pull/2606) +- Fix string to number conversion for `infinity` by @raskad in [#2607](https://github.com/boa-dev/boa/pull/2607) +- Fix exponent operator by @HalidOdat in [#2681](https://github.com/boa-dev/boa/pull/2681) +- Update `README.md` cli options by @HalidOdat in [#2678](https://github.com/boa-dev/boa/pull/2678) +- Fix incorrect `Number.MIN_VALUE` value by @HalidOdat in [#2682](https://github.com/boa-dev/boa/pull/2682) +- Correctly run async tests by @jedel1043 in [#2683](https://github.com/boa-dev/boa/pull/2683) +- Fix value to bigint conversion by @HalidOdat in [#2688](https://github.com/boa-dev/boa/pull/2688) +- Fix Object constructor by @raskad in [#2694](https://github.com/boa-dev/boa/pull/2694) +- Fix get function opcode traces by @HalidOdat in [#2708](https://github.com/boa-dev/boa/pull/2708) +- Add early errors to dynamic function constructors by @raskad in [#2716](https://github.com/boa-dev/boa/pull/2716) +- Add negative zero handling for `Map.delete` by @raskad in [#2726](https://github.com/boa-dev/boa/pull/2726) +- Fix remaining `Set` tests by @raskad in [#2725](https://github.com/boa-dev/boa/pull/2725) +- Fix update expressions getting values multiple times by @raskad in [#2733](https://github.com/boa-dev/boa/pull/2733) +- Make if statements return their completion values by @raskad in [#2739](https://github.com/boa-dev/boa/pull/2739) +- Fix super call execution order by @raskad in [#2724](https://github.com/boa-dev/boa/pull/2724) +- Fix deserialization of `SpecEdition` by @jedel1043 in [#2762](https://github.com/boa-dev/boa/pull/2762) +- Add `json-parse-with-source` feature to `boa_tester` by @HalidOdat in [#2778](https://github.com/boa-dev/boa/pull/2778) +- Fix `Symbol.prototype[@@iterator]` by @HalidOdat in [#2800](https://github.com/boa-dev/boa/pull/2800) +- Fix `String.prototype.replace()` order of `ToString` execution by @HalidOdat in [#2799](https://github.com/boa-dev/boa/pull/2799) +- Fix `ThrowTypeError` intrinsic by @HalidOdat in [#2797](https://github.com/boa-dev/boa/pull/2797) +- Fix `String.prototype.substr()` by @HalidOdat in [#2805](https://github.com/boa-dev/boa/pull/2805) +- Fix destructive for-of loop assignments by @raskad in [#2803](https://github.com/boa-dev/boa/pull/2803) +- Fix `TypedArray`s minus zero key by @HalidOdat in [#2808](https://github.com/boa-dev/boa/pull/2808) +- Fix sync generator yield expressions by @raskad in [#2838](https://github.com/boa-dev/boa/pull/2838) +- Fix async generators by @raskad in [#2853](https://github.com/boa-dev/boa/pull/2853) +- Catch 'eval' and 'arguments' in setter method parameter by @raskad in [#2858](https://github.com/boa-dev/boa/pull/2858) +- Fix `PropertyKey` index parse by @HalidOdat in [#2843](https://github.com/boa-dev/boa/pull/2843) +- Fix `Date.prototype[Symbol.primitive]` incorrect attributes by @HalidOdat in [#2862](https://github.com/boa-dev/boa/pull/2862) +- Allow `Date` object to store invalid `NativeDateTime` by @HalidOdat in [#2861](https://github.com/boa-dev/boa/pull/2861) +- Fix panic when calling toString with radix by @HalidOdat in [#2863](https://github.com/boa-dev/boa/pull/2863) +- Fix incorrect `LoopContinue` instruction in while-do loops by @HalidOdat in [#2866](https://github.com/boa-dev/boa/pull/2866) +- Initialize `var` bindings in runtime environments with `undefined` by @raskad in [#2860](https://github.com/boa-dev/boa/pull/2860) +- Bugfix/new.target is not understood by the parser as an expression #2793 by @projectnoa in [#2878](https://github.com/boa-dev/boa/pull/2878) +- Fix `RegExp` constructor return value when pattern is a regexp by @HalidOdat in [#2880](https://github.com/boa-dev/boa/pull/2880) +- `RegExp` constructor should call `IsRegExp()` by @HalidOdat in [#2881](https://github.com/boa-dev/boa/pull/2881) +- Fix `for-of` expression parsing by @HalidOdat in [#2882](https://github.com/boa-dev/boa/pull/2882) +- Disallow strict directives with escaped sequences by @jedel1043 in [#2892](https://github.com/boa-dev/boa/pull/2892) +- Make `typeof` throw when accessing uninitialized variables by @raskad in [#2902](https://github.com/boa-dev/boa/pull/2902) +- Fix wrong name of `Function.prototype[Symbol.hasInstance]` by @raskad in [#2905](https://github.com/boa-dev/boa/pull/2905) +- Fix remaining object literal tests by @raskad in [#2906](https://github.com/boa-dev/boa/pull/2906) +- Add SyntaxErrors in GlobalDeclarationInstantiation by @raskad in [#2908](https://github.com/boa-dev/boa/pull/2908) +- Fix switch `default` execution by @HalidOdat in [#2907](https://github.com/boa-dev/boa/pull/2907) +- Add loop and switch return values by @raskad in [#2828](https://github.com/boa-dev/boa/pull/2828) +- Allow escaped `let` as expression by @HalidOdat in [#2916](https://github.com/boa-dev/boa/pull/2916) +- Allow `let` name in for-in loop in non-strict mode by @HalidOdat in [#2915](https://github.com/boa-dev/boa/pull/2915) +- Fix lexical environments in for loops by @raskad in [#2917](https://github.com/boa-dev/boa/pull/2917) +- Fix `GetSubstitution` by @HalidOdat in [#2933](https://github.com/boa-dev/boa/pull/2933) +- Allow escaped `async` as binding name by @jedel1043 in [#2936](https://github.com/boa-dev/boa/pull/2936) +- Fix tagged template creation by @raskad in [#2925](https://github.com/boa-dev/boa/pull/2925) +- Implement Private Runtime Environments by @raskad in [#2929](https://github.com/boa-dev/boa/pull/2929) +- Fix remaining ES5 `built-ins/RegExp` tests by @HalidOdat in [#2957](https://github.com/boa-dev/boa/pull/2957) +- Fix remaining static module bugs by @jedel1043 in [#2955](https://github.com/boa-dev/boa/pull/2955) +- Deny Unicode Escapes in boolean and null expressions by @veera-sivarajan in [#2931](https://github.com/boa-dev/boa/pull/2931) +- Fix `Date` for dynamic timezones by @jedel1043 in [#2877](https://github.com/boa-dev/boa/pull/2877) +- Fix ES5 selector by @veera-sivaraja in [#2924](https://github.com/boa-dev/boa/pull/2924) +- Labelled ByteCompiler Fix by @nekevss in [#2534](https://github.com/boa-dev/boa/pull/2534) +- Fix verbose test display by @jedel1043 in [#2731](https://github.com/boa-dev/boa/pull/2731) + +### Internal Improvements + +- Direct conversion from `u8` to `Opcode` by @HalidOdat [#2951](https://github.com/boa-dev/boa/pull/2951) +- Fix links in readme by @raskad in [#2304](https://github.com/boa-dev/boa/pull/2304) +- Switch to workspace inherited properties by @jedel1043 in [#2297](https://github.com/boa-dev/boa/pull/2297) +- Separate JsObjectType implementors to their own module by @CalliEve in [#2324](https://github.com/boa-dev/boa/pull/2324) +- First prototype for new `JsString` using UTF-16 by @jedel1043 in [#1659](https://github.com/boa-dev/boa/pull/1659) +- Split `Node` into `Statement`, `Expression` and `Declaration` by @jedel1043 in [#2319](https://github.com/boa-dev/boa/pull/2319) +- Changes neccesary -> necessary by @nekevss in [#2370](https://github.com/boa-dev/boa/pull/2370) +- Cleanup and speed-up CI by @RageKnify in [#2376](https://github.com/boa-dev/boa/pull/2376) +- Reduce documentation size in blog by @jedel1043 in [#2383](https://github.com/boa-dev/boa/pull/2383) +- Generate `Opcode` impl using macro by @jedel1043 in [#2391](https://github.com/boa-dev/boa/pull/2391) +- Extract the ast to a crate by @jedel1043 in [#2402](https://github.com/boa-dev/boa/pull/2402) +- Replace `contains` and friends with visitors by @jedel1043 in [#2403](https://github.com/boa-dev/boa/pull/2403) +- Rewrite some patterns with let-else and ok_or_else by @jedel1043 in [#2404](https://github.com/boa-dev/boa/pull/2404) +- Fix async tests result values by @jedel1043 in [#2406](https://github.com/boa-dev/boa/pull/2406) +- Rewrite scope analysis operations using visitors by @jedel1043 in [#2408](https://github.com/boa-dev/boa/pull/2408) +- Make `JsString` conform to miri tests by @jedel1043 in [#2412](https://github.com/boa-dev/boa/pull/2412) +- Reduced boilerplate code in the parser by @Razican in [#2410](https://github.com/boa-dev/boa/pull/2410) +- Extract the parser into a crate by @jedel1043 in [#2409](https://github.com/boa-dev/boa/pull/2409) +- Switch tarpaulin to llvm engine by @RageKnify in [#2432](https://github.com/boa-dev/boa/pull/2432) +- Cleanup `boa_tester` by @jedel1043 in [#2440](https://github.com/boa-dev/boa/pull/2440) +- Restructure lint lists in `boa_ast` by @raskad in [#2433](https://github.com/boa-dev/boa/pull/2433) +- Restructure lints in multiple crates by @raskad in [#2447](https://github.com/boa-dev/boa/pull/2447) +- Restructure lint lists in `boa_engine` by @raskad in [#2455](https://github.com/boa-dev/boa/pull/2455) +- Fix rust 1.66.0 lints by @raskad in [#2486](https://github.com/boa-dev/boa/pull/2486) +- Divide byte compiler by @e-codes-stuff in [#2425](https://github.com/boa-dev/boa/pull/2425) +- Cleanup inline annotations by @jedel1043 in [#2493](https://github.com/boa-dev/boa/pull/2493) +- [profiler] Cache StringId by @tunz in [#2495](https://github.com/boa-dev/boa/pull/2495) +- Improve identifier parsing by @jedel1043 in [#2581](https://github.com/boa-dev/boa/pull/2581) +- Remove Syntax Errors from Bytecompiler by @raskad in [#2598](https://github.com/boa-dev/boa/pull/2598) +- fix: RUSTSEC-2020-0071 in boa_engine by @hanabi1224 in [#2627](https://github.com/boa-dev/boa/pull/2627) +- Migrate tests to new test API by @jedel1043 in [#2619](https://github.com/boa-dev/boa/pull/2619) +- [regexp] new tests for unicode flag by @selfisekai in [#2656](https://github.com/boa-dev/boa/pull/2656) +- Handle surrogates in `String.fromCodePoint` by @jedel1043 in [#2659](https://github.com/boa-dev/boa/pull/2659) +- Bump Test262 and add new features by @jedel1043 in [#2729](https://github.com/boa-dev/boa/pull/2729) +- Fix cross-realm construction bugs by @jedel1043 in [#2786](https://github.com/boa-dev/boa/pull/2786) +- Lift `InternalObjectMethods` from `Object` by @jedel1043 in [#2790](https://github.com/boa-dev/boa/pull/2790) +- Implement async functions using generators by @jedel1043 in [#2821](https://github.com/boa-dev/boa/pull/2821) +- Improve strictness of `GeneratorState` by @jedel1043 in [#2837](https://github.com/boa-dev/boa/pull/2837) +- Upgraded to ICU 1.2 by @Razican in [#2826](https://github.com/boa-dev/boa/pull/2826) +- Fix setting properties inside `with` blocks by @jedel1043 in [#2847](https://github.com/boa-dev/boa/pull/2847) +- Create a unique `PromiseCapability` on each async function call by @jedel1043 in [#2846](https://github.com/boa-dev/boa/pull/2846) +- Refactor binding handling APIs by @jedel1043 in [#2870](https://github.com/boa-dev/boa/pull/2870) +- Refactor guards into a `ContextCleanupGuard` abstraction by @jedel1043 in [#2890](https://github.com/boa-dev/boa/pull/2890) +- Refactor binding declarations by @raskad in [#2887](https://github.com/boa-dev/boa/pull/2887) +- Cleanup some bytecompiler code by @raskad in [#2918](https://github.com/boa-dev/boa/pull/2918) +- Fix `use_self` lints by @raskad in [#2946](https://github.com/boa-dev/boa/pull/2946) +- Remove unused lint allows by @raskad in [#2968](https://github.com/boa-dev/boa/pull/2968) +- Decouple bytecompiler from CodeBlock by @HalidOdat in [#2669](https://github.com/boa-dev/boa/pull/2669) +- Clarity changes for the VM by @nekevss in [#2531](https://github.com/boa-dev/boa/pull/2531) +- Bump bitflags to 2.0.0 by @Razican in [#2666](https://github.com/boa-dev/boa/pull/2666) +- Replace deprecated set-output command by @karol-jani in [#2500](https://github.com/boa-dev/boa/pull/2500) +- Documentation Updates by @nekevss in [#2463](https://github.com/boa-dev/boa/pull/2463) +- Fixed typo in the docs by @Razican in [#2450](https://github.com/boa-dev/boa/pull/2450) +- update tasks.json by @jasonwilliams in [#2313](https://github.com/boa-dev/boa/pull/2313) +- Updated the Code of Conduct by @Razican in [#2365](https://github.com/boa-dev/boa/pull/2365) +- Bump serde_json from 1.0.85 to 1.0.86 by @jedel1043 in [#2341](https://github.com/boa-dev/boa/pull/2341) +- Add test case for issue #2719 by @jedel1043 in [#2980](https://github.com/boa-dev/boa/pull/2980) +- Remove unneded `num_bindings` in `Opcode`s and `CodeBlock` by @HalidOdat in [#2967](https://github.com/boa-dev/boa/pull/2967) +- Added period to sentence by @nekevss in [#2939](https://github.com/boa-dev/boa/pull/2939) +- Prune collected shared shapes by @HalidOdat in [#2941](https://github.com/boa-dev/boa/pull/2941) +- Separate declarative environment kinds by @jedel1043 in [#2921](https://github.com/boa-dev/boa/pull/2921) +- Shrink environment binding locators by @HalidOdat in [#2950](https://github.com/boa-dev/boa/pull/2950) +- Extract "About Boa" section into a separate file by @jedel1043 in [#2938](https://github.com/boa-dev/boa/pull/2938) +- Remove `arguments_binding` field from `CodeBlock` by @HalidOdat in [#2969](https://github.com/boa-dev/boa/pull/2969) +- Remove redundant `param_count` field from `CallFrame` by @HalidOdat in [#2962](https://github.com/boa-dev/boa/pull/2962) +- Direct length access on arrays by @HalidOdat in [#2796](https://github.com/boa-dev/boa/pull/2796) +- Prevent allocation of field names by @HalidOdat in [#2901](https://github.com/boa-dev/boa/pull/2901) +- Added unit tests for `boa_ast::Punctuator` by @Razican in [#2884](https://github.com/boa-dev/boa/pull/2884) +- Added unit tests for `boa_ast::Keyword` by @Razican in [#2883](https://github.com/boa-dev/boa/pull/2883) +- Make update operations reuse the last found binding locator by @jedel1043 in [#2876](https://github.com/boa-dev/boa/pull/2876) +- Docs update for boa_runtime and console documentation by @nekevss in [#2891](https://github.com/boa-dev/boa/pull/2891) +- Direct array element access on `ByValue` instructions by @HalidOdat in [#2827](https://github.com/boa-dev/boa/pull/2827) +- Optimize `String.prototype.normalize` by @jedel1043 in [#2848](https://github.com/boa-dev/boa/pull/2848) +- Fix more Annex B tests by @jedel1043 in [#2841](https://github.com/boa-dev/boa/pull/2841) +- Enable github queues and remove bors.toml by @jedel1043 in [#2899](https://github.com/boa-dev/boa/pull/2899) +- Shrink size of `IndexedProperties` by @HalidOdat in [#2757](https://github.com/boa-dev/boa/pull/2757) +- Added an example usage to documentation by @Razican in [#2742](https://github.com/boa-dev/boa/pull/2742) +- Don't construct prototype if not needed by @HalidOdat in [#2751](https://github.com/boa-dev/boa/pull/2751) +- Implement `is_identifier_(start/part)` using `icu_properties` by @jedel1043 in [#2865](https://github.com/boa-dev/boa/pull/2865) +- Add boa logo to remaining hosted docs by @nekevss in [#2740](https://github.com/boa-dev/boa/pull/2740) +- Added a bunch more tests by @Razican in [#2885](https://github.com/boa-dev/boa/pull/2885) +- Updated dependencies, removes `remove_dir_all`, which is vulnerable by @Razican in [#2685](https://github.com/boa-dev/boa/pull/2685) +- Updated README by @Razican in [#2825](https://github.com/boa-dev/boa/pull/2825) +- Remove panics on module compilation by @jedel1043 in [#2730](https://github.com/boa-dev/boa/pull/2730) +- Update icu dependencies by @raskad in [#2574](https://github.com/boa-dev/boa/pull/2574) +- Pin tarpaulin version to 0.22 by @jedel1043 in [#2562](https://github.com/boa-dev/boa/pull/2562) +- Improve the design of ephemerons in our GC by @jedel1043 in [#2530](https://github.com/boa-dev/boa/pull/2530) +- Pass locale data provider by ref instead of boxing by @jedel1043 in [#2508](https://github.com/boa-dev/boa/pull/2508) +- Fast path for static property keys by @tunz in [#2604](https://github.com/boa-dev/boa/pull/2604) +- Replace `criterion::black_box` with `std::hint::black_box` by @jedel1043 in [#2494](https://github.com/boa-dev/boa/pull/2494) +- Shrink objects by using `ThinVec`s by @HalidOdat in [#2752](https://github.com/boa-dev/boa/pull/2752) +- Redesign native functions and closures API by @jedel1043 in [#2499](https://github.com/boa-dev/boa/pull/2499) +- Make the `wasmbind` feature of the `chrono` crate optional by @Razican in [#2810](https://github.com/boa-dev/boa/pull/2810) +- Use opcode table rather than match by @tunz in [#2501](https://github.com/boa-dev/boa/pull/2501) +- Align iterator loops to the spec by @jedel1043 in [#2686](https://github.com/boa-dev/boa/pull/2686) +- Add AST node for parenthesized expressions by @raskad in [#2738](https://github.com/boa-dev/boa/pull/2738) +- Optimize Get/SetPropertyByName by @tunz in [#2608](https://github.com/boa-dev/boa/pull/2608) +- Keep Integer type for inc/dec of an integer by @tunz in [#2615](https://github.com/boa-dev/boa/pull/2615) +- Implement `CompletionRecords` for the Vm by @nekevss in [#2618](https://github.com/boa-dev/boa/pull/2618) +- Feature flag on builtins console import by @nekevss in [#2584](https://github.com/boa-dev/boa/pull/2584) +- Fix documentation links by @Razican in [#2741](https://github.com/boa-dev/boa/pull/2741) +- Updated syn to 2.0.3 by @Razican in [#2702](https://github.com/boa-dev/boa/pull/2702) +- Cleanup intrinsics and move to realm by @jedel1043 in [#2555](https://github.com/boa-dev/boa/pull/2555) +- Rename `check_parser` and `Identifier` by @jedel1043 in [#2576](https://github.com/boa-dev/boa/pull/2576) +- Fix rust 1.67 lints by @raskad in [#2567](https://github.com/boa-dev/boa/pull/2567) +- Avoid unneeded bounds checks in bytecode address patching by @HalidOdat in [#2680](https://github.com/boa-dev/boa/pull/2680) +- Rust 1.68 clippy fixes by @nekevss in [#2646](https://github.com/boa-dev/boa/pull/2646) + # [0.16.0 (2022-09-25)](https://github.com/boa-dev/boa/compare/v0.15...v0.16) ### Feature Enhancements