diff --git a/CHANGELOG.md b/CHANGELOG.md index 7706544eee..ee856cdc95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,138 @@ # CHANGELOG +## What's Changed + +# [0.14.0 (2022-03-15) - Virtual Machine](https://github.com/boa-dev/boa/compare/v0.13...v0.14) + + + +### Feature Enhancements + +- Implement functions for vm by @HalidOdat in [#1433](https://github.com/boa-dev/boa/pull/1433) +- Implement Object.getOwnPropertyNames and Object.getOwnPropertySymbols by @kevinputera in [#1606](https://github.com/boa-dev/boa/pull/1606) +- Implement `Symbol.prototype.valueOf` by @hle0 in [#1618](https://github.com/boa-dev/boa/pull/1618) +- Implement Array.prototype.at() by @nekevss in [#1613](https://github.com/boa-dev/boa/pull/1613) +- Implement Array.from by @nrabulinski [#1831](https://github.com/boa-dev/boa/pull/1831) +- Implement String.fromCharCode by @hle0 in [#1619](https://github.com/boa-dev/boa/pull/1619) +- Implement `Typed Array` built-in by @Razican in [#1552](https://github.com/boa-dev/boa/pull/1552) +- Implement arguments exotic objects by @jedel1043 in [#1522](https://github.com/boa-dev/boa/pull/1522) +- Allow `BindingPattern`s as `CatchParameter` by @lowr in [#1628](https://github.com/boa-dev/boa/pull/1628) +- Implement `Symbol.prototype[ @@toPrimitive ]` by @Nimpruda in [#1634](https://github.com/boa-dev/boa/pull/1634) +- Implement Generator parsing by @raskad in [#1575](https://github.com/boa-dev/boa/pull/1575) +- Implement Object.hasOwn and improve Object.prototype.hasOwnProperty by @kevinputera in [#1639](https://github.com/boa-dev/boa/pull/1639) +- Hashbang lexer support by @nekevss in [#1631](https://github.com/boa-dev/boa/pull/1631) +- Implement `delete` operator in the vm by @raskad in [#1649](https://github.com/boa-dev/boa/pull/1649) +- Implement Object.fromEntries by @kevinputera in [#1660](https://github.com/boa-dev/boa/pull/1660) +- Initial implementation for increment/decrement in VM by @abhishekc-sharma in [#1621](https://github.com/boa-dev/boa/pull/1621) +- Implement `Proxy` object by @raskad in [#1664](https://github.com/boa-dev/boa/pull/1664) +- Implement object literals for vm by @raskad in [#1668](https://github.com/boa-dev/boa/pull/1668) +- Implement Array findLast and findLastIndex by @bsinky in [#1665](https://github.com/boa-dev/boa/pull/1665) +- Implement `DataView` built-in object by @Nimpruda in [#1662](https://github.com/boa-dev/boa/pull/1662) +- Clean-up contribution guidelines, dependencies, Test262, MSRV by @Razican in [#1683](https://github.com/boa-dev/boa/pull/1683) +- Implement Async Generator Parsing by @nekevss in [#1669](https://github.com/boa-dev/boa/pull/1669) +- Implement prototype of `Intl` built-in by @hle0 in [#1622](https://github.com/boa-dev/boa/pull/1622) +- Add limited console.trace implementation by @osman-turan in [#1623](https://github.com/boa-dev/boa/pull/1623) +- Allow `BindingPattern` in function parameters by @am-a-man in [#1666](https://github.com/boa-dev/boa/pull/1666) +- Small test ux improvements by @orndorffgrant in [#1704](https://github.com/boa-dev/boa/pull/1704) +- Implement missing vm operations by @raskad in [#1697](https://github.com/boa-dev/boa/pull/1697) +- Added fallible allocation to data blocks by @Razican in [#1728](https://github.com/boa-dev/boa/pull/1728) +- Document CodeBlock by @TheDoctor314 in [#1691](https://github.com/boa-dev/boa/pull/1691) +- Generic `JsResult` in `context.throw_` methods by @HalidOdat in [#1734](https://github.com/boa-dev/boa/pull/1734) +- Implement `String.raw( template, ...substitutions )` by @HalidOdat in [#1741](https://github.com/boa-dev/boa/pull/1741) +- Updated test262 suite and dependencies by @Razican in [#1755](https://github.com/boa-dev/boa/pull/1755) +- Lexer string interning by @Razican in [#1758](https://github.com/boa-dev/boa/pull/1758) +- Adjust `compile` and `execute` to avoid clones by @Razican in [#1778](https://github.com/boa-dev/boa/pull/1778) +- Interner support in the parser by @Razican in [#1765](https://github.com/boa-dev/boa/pull/1765) +- Convert `Codeblock` variables to `Sym` by @raskad in [#1798](https://github.com/boa-dev/boa/pull/1798) +- Using production builds for WebAssembly by @Razican in [#1825](https://github.com/boa-dev/boa/pull/1825) +- Give the arrow function its proper name by @rumpl in [#1832](https://github.com/boa-dev/boa/pull/1832) +- Unwrap removal by @Razican in [#1842](https://github.com/boa-dev/boa/pull/1842) +- Feature `JsArray` by @HalidOdat in [#1746](https://github.com/boa-dev/boa/pull/1746) +- Rename "Boa" to boa_engine, moved GC and profiler to their crates by @Razican in [#1844](https://github.com/boa-dev/boa/pull/1844) +- Added conversions from and to serde_json's Value type by @Razican in [#1851](https://github.com/boa-dev/boa/pull/1851) +- Toggleable `JsValue` internals displaying by @HalidOdat in [#1865](https://github.com/boa-dev/boa/pull/1865) +- Implement generator execution by @raskad in [#1790](https://github.com/boa-dev/boa/pull/1790) +- Feature arrays with empty elements by @HalidOdat in [#1870](https://github.com/boa-dev/boa/pull/1870) +- Removed reference counted pointers from `JsValue` variants by @Razican in [#1866](https://github.com/boa-dev/boa/pull/1866) +- Implement `Object.prototype.toLocaleString()` by @HalidOdat in [#1875](https://github.com/boa-dev/boa/pull/1875) +- Implement `AggregateError` by @HalidOdat in [#1888](https://github.com/boa-dev/boa/pull/1888) +- Implement destructing assignments for assignment expressions by @raskad in [#1895](https://github.com/boa-dev/boa/pull/1895) +- Added boa examples by @elasmojs in [#1161](https://github.com/boa-dev/boa/pull/1161) + +### Bug Fixes + +- Fix BigInt and Number comparison by @HalidOdat [#1887](https://github.com/boa-dev/boa/pull/1887) +- Fix broken structure links in the documentation by @abhishekc-sharma in [#1612](https://github.com/boa-dev/boa/pull/1612) +- Use function name from identifiers in assignment expressions by @raskad [#1908](https://github.com/boa-dev/boa/pull/1908) +- Fix integer parsing by @nrabulinski in [#1614](https://github.com/boa-dev/boa/pull/1614) +- Fix `Number.toExponential` and `Number.toFixed` by @nrabulinski in [#1620](https://github.com/boa-dev/boa/pull/1620) +- Badge updates by @atouchet in [#1638](https://github.com/boa-dev/boa/pull/1638) +- refactor: fix construct_error functions by @RageKnify in [#1703](https://github.com/boa-dev/boa/pull/1703) +- Fix internal vm tests by @raskad in [#1718](https://github.com/boa-dev/boa/pull/1718) +- Removed a bunch of warnings and clippy errors by @Razican in [#1754](https://github.com/boa-dev/boa/pull/1754) +- Fix some broken links in the profiler documentation by @Razican in [#1762](https://github.com/boa-dev/boa/pull/1762) +- Add proxy handling in `isArray` method by @raskad in [#1777](https://github.com/boa-dev/boa/pull/1777) +- Copy/paste fix in Proxy error message by @icecream17 in [#1787](https://github.com/boa-dev/boa/pull/1787) +- Fixed #1768 by @Razican in [#1820](https://github.com/boa-dev/boa/pull/1820) +- Fix string.prototype methods and add static string methods by @jevancc in [#1123](https://github.com/boa-dev/boa/pull/1123) +- Handle allocation errors by @y21 in [#1850](https://github.com/boa-dev/boa/pull/1850) +- Fix wasm use outside browsers by @Razican in [#1846](https://github.com/boa-dev/boa/pull/1846) +- Add assertion to check that a break label is identified at compile-time by @VTCAKAVSMoACE in [#1852](https://github.com/boa-dev/boa/pull/1852) +- Correct reference error message by @aaronmunsters in [#1855](https://github.com/boa-dev/boa/pull/1855) +- Fixing main branch workflows by @Razican in [#1858](https://github.com/boa-dev/boa/pull/1858) +- Correct pop_on_return behaviour by @VTCAKAVSMoACE in [#1853](https://github.com/boa-dev/boa/pull/1853) +- Fix equality between objects and `undefined` or `null` by @HalidOdat in [#1872](https://github.com/boa-dev/boa/pull/1872) +- Removing the panic in favour of an error result by @Razican in [#1874](https://github.com/boa-dev/boa/pull/1874) +- Make `Object.getOwnPropertyDescriptors` spec compliant by @HalidOdat in [#1876](https://github.com/boa-dev/boa/pull/1876) +- Make `Error` and `%NativeError%` spec compliant by @HalidOdat in [#1879](https://github.com/boa-dev/boa/pull/1879) +- Fix `Number.prototype.toString` when passing `undefined` as radix by @HalidOdat in [#1877](https://github.com/boa-dev/boa/pull/1877) +- Cleanup vm stack on function return by @raskad in [#1880](https://github.com/boa-dev/boa/pull/1880) +- `%NativeError%.[[prototype]]` should be `Error` constructor by @HalidOdat in [#1883](https://github.com/boa-dev/boa/pull/1883) +- Make `StringToNumber` spec compliant by @HalidOdat in [#1881](https://github.com/boa-dev/boa/pull/1881) +- Fix `PropertyKey` to `JsValue` conversion by @HalidOdat in [#1886](https://github.com/boa-dev/boa/pull/1886) +- Make iterator spec complaint by @HalidOdat in [#1889](https://github.com/boa-dev/boa/pull/1889) +- Implement `Number.parseInt` and `Number.parseFloat` by @HalidOdat in [#1894](https://github.com/boa-dev/boa/pull/1894) +- Fix unreachable panics in compile_access by @VTCAKAVSMoACE in [#1861](https://github.com/boa-dev/boa/pull/1861) +- Continue panic fixes by @VTCAKAVSMoACE in [#1896](https://github.com/boa-dev/boa/pull/1896) +- Deny const declarations without initializer inside for loops by @jedel1043 in [#1903](https://github.com/boa-dev/boa/pull/1903) +- Fix try/catch/finally related bugs and add tests by @jedel1043 in [#1901](https://github.com/boa-dev/boa/pull/1901) +- Compile StatementList after parse passes on negative tests by @raskad in [#1906](https://github.com/boa-dev/boa/pull/1906) +- Prevent breaks without loop or switch from causing panics by @VTCAKAVSMoACE in [#1860](https://github.com/boa-dev/boa/pull/1860) +- Fix postfix increment and decrement return values by @raskad in [#1913](https://github.com/boa-dev/boa/pull/1913) + +### Internal Improvements + +- Rewrite initialization of builtins to use the `BuiltIn` trait by @jedel1043 in [#1586](https://github.com/boa-dev/boa/pull/1586) +- Unify object creation with `empty` and `from_proto_and_data` methods by @jedel1043 in [#1567](https://github.com/boa-dev/boa/pull/1567) +- VM Tidy Up by @jasonwilliams in [#1610](https://github.com/boa-dev/boa/pull/1610) +- Fix master refs to main by @jasonwilliams in [#1637](https://github.com/boa-dev/boa/pull/1637) +- Refresh vm docs and fix bytecode trace output by @raskad [#1921](https://github.com/boa-dev/boa/pull/1921) +- Change type of object prototypes to `Option` by @jedel1043 in [#1640](https://github.com/boa-dev/boa/pull/1640) +- Refactor `Function` internal methods and implement `BoundFunction` objects by @jedel1043 in [#1583](https://github.com/boa-dev/boa/pull/1583) +- change that verbosity comparison to > 2 by @praveenbakkal in [#1680](https://github.com/boa-dev/boa/pull/1680) +- Respect rust 1.56 by @RageKnify in [#1681](https://github.com/boa-dev/boa/pull/1681) +- Add bors to CI by @RageKnify in [#1684](https://github.com/boa-dev/boa/pull/1684) +- Adding VM conformance output to PR checks by @Razican in [#1685](https://github.com/boa-dev/boa/pull/1685) +- Start removing non-VM path by @jasonwilliams in [#1747](https://github.com/boa-dev/boa/pull/1747) +- Using upstream benchmark action by @Razican in [#1753](https://github.com/boa-dev/boa/pull/1753) +- Fix bors hanging by @RageKnify in [#1767](https://github.com/boa-dev/boa/pull/1767) +- add more timers on object functions by @jasonwilliams in [#1775](https://github.com/boa-dev/boa/pull/1775) +- Update the PR benchmarks action by @Razican in [#1774](https://github.com/boa-dev/boa/pull/1774) +- General code clean-up and new lint addition by @Razican in [#1809](https://github.com/boa-dev/boa/pull/1809) +- Reduced the size of AST nodes by @Razican in [#1821](https://github.com/boa-dev/boa/pull/1821) +- Using the new formatting arguments from Rust 1.58 by @Razican in [#1834](https://github.com/boa-dev/boa/pull/1834) +- Rework RegExp struct to include bitflags field by @aaronmunsters in [#1837](https://github.com/boa-dev/boa/pull/1837) +- Ignore wastefull `RegExp` tests by @raskad in [#1840](https://github.com/boa-dev/boa/pull/1840) +- Refactor the environment for runtime performance by @raskad in [#1829](https://github.com/boa-dev/boa/pull/1829) +- Refactor mapped `Arguments` object by @raskad in [#1849](https://github.com/boa-dev/boa/pull/1849) +- Fixed dependabot for submodule by @Razican in [#1856](https://github.com/boa-dev/boa/pull/1856) +- Refactorings for Rust 1.59 by @RageKnify in [#1867](https://github.com/boa-dev/boa/pull/1867) +- Removing internal deprecated functions by @HalidOdat in [#1854](https://github.com/boa-dev/boa/pull/1854) +- Remove `toInteger` and document the `string` builtin by @jedel1043 in [#1884](https://github.com/boa-dev/boa/pull/1884) +- Extract `Intrinsics` struct from `Context` and cleanup names by @jedel1043 in [#1890](https://github.com/boa-dev/boa/pull/1890) + +**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.13...v0.14 + # [0.13.0 (2021-09-30) - Many new features and refactors](https://github.com/boa-dev/boa/compare/v0.12.0...v0.13.0) Feature Enhancements: diff --git a/Cargo.lock b/Cargo.lock index 54915d0c47..229aa0b0c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "boa_cli" -version = "0.13.0" +version = "0.14.0" dependencies = [ "boa_engine", "boa_interner", @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "boa_engine" -version = "0.13.0" +version = "0.14.0" dependencies = [ "bitflags", "boa_gc", @@ -121,7 +121,7 @@ dependencies = [ [[package]] name = "boa_gc" -version = "0.13.0" +version = "0.14.0" dependencies = [ "gc", "measureme", @@ -129,7 +129,7 @@ dependencies = [ [[package]] name = "boa_interner" -version = "0.13.0" +version = "0.14.0" dependencies = [ "gc", "serde", @@ -138,7 +138,7 @@ dependencies = [ [[package]] name = "boa_profiler" -version = "0.13.0" +version = "0.14.0" dependencies = [ "measureme", "once_cell", @@ -146,7 +146,7 @@ dependencies = [ [[package]] name = "boa_tester" -version = "0.13.0" +version = "0.14.0" dependencies = [ "bitflags", "boa_engine", @@ -168,14 +168,14 @@ dependencies = [ [[package]] name = "boa_unicode" -version = "0.13.0" +version = "0.14.0" dependencies = [ "unicode-general-category", ] [[package]] name = "boa_wasm" -version = "0.13.0" +version = "0.14.0" dependencies = [ "boa_engine", "getrandom", diff --git a/boa_cli/Cargo.toml b/boa_cli/Cargo.toml index 4532dcacae..b1b2705947 100644 --- a/boa_cli/Cargo.toml +++ b/boa_cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_cli" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_engine/Cargo.toml b/boa_engine/Cargo.toml index d6e93d752b..b1a07af041 100644 --- a/boa_engine/Cargo.toml +++ b/boa_engine/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_engine" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] @@ -36,11 +36,11 @@ deser = ["boa_interner/serde"] console = [] [dependencies] -boa_unicode = { path = "../boa_unicode", version = "0.13.0" } -boa_interner = { path = "../boa_interner", version = "0.13.0" } -boa_gc = { path = "../boa_gc", version = "0.13.0" } +boa_unicode = { path = "../boa_unicode", version = "0.14.0" } +boa_interner = { path = "../boa_interner", version = "0.14.0" } +boa_gc = { path = "../boa_gc", version = "0.14.0" } gc = { version = "0.4.1" } -boa_profiler = { path = "../boa_profiler", version = "0.13.0" } +boa_profiler = { path = "../boa_profiler", version = "0.14.0" } serde = { version = "1.0.136", features = ["derive", "rc"] } serde_json = "1.0.79" rand = "0.8.5" diff --git a/boa_gc/Cargo.toml b/boa_gc/Cargo.toml index 7cbd5672af..6a74593988 100644 --- a/boa_gc/Cargo.toml +++ b/boa_gc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_gc" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_interner/Cargo.toml b/boa_interner/Cargo.toml index d25da2e06b..0ce22a2f93 100644 --- a/boa_interner/Cargo.toml +++ b/boa_interner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_interner" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_profiler/Cargo.toml b/boa_profiler/Cargo.toml index 1bb148d453..ebcc40ddac 100644 --- a/boa_profiler/Cargo.toml +++ b/boa_profiler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_profiler" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_tester/Cargo.toml b/boa_tester/Cargo.toml index 4495180e2d..0b22c3f464 100644 --- a/boa_tester/Cargo.toml +++ b/boa_tester/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_tester" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_unicode/Cargo.toml b/boa_unicode/Cargo.toml index 4127aff7b4..1052514f1a 100644 --- a/boa_unicode/Cargo.toml +++ b/boa_unicode/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_unicode" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"] diff --git a/boa_wasm/Cargo.toml b/boa_wasm/Cargo.toml index de3a58d2d7..ea6cf2f650 100644 --- a/boa_wasm/Cargo.toml +++ b/boa_wasm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "boa_wasm" -version = "0.13.0" +version = "0.14.0" edition = "2021" rust-version = "1.58" authors = ["boa-dev"]