From 94285dfff76c92097f3bf4d350e66c4a83828c71 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Mon, 8 Jul 2024 23:45:23 +0100 Subject: [PATCH 01/15] release v0.19 --- blog/2024-07-09-boa-release-19.md | 101 ++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 blog/2024-07-09-boa-release-19.md diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md new file mode 100644 index 00000000..439a174d --- /dev/null +++ b/blog/2024-07-09-boa-release-19.md @@ -0,0 +1,101 @@ + + +## Summary + +Boa v0.19 is now available! After 4 months of development we are very happy to present you the latest +release of the Boa JavaScript engine. Boa makes it easy to embed a JS engine in your projects, and +you can even use it from WebAssembly. See the [about](/about) page for more info. + +In this release, our conformance has grown from 85.03% to 86.20% in the official ECMAScript Test Suite +(Test262). Interestingly, this isn't due to us passing more tests, but in fact the total number of tests from test262 +[reducing by around 2000](https://github.com/tc39/test262/commit/ea2268aa4382013f5533b91f9ef50366ad065a86) from the [removal of custom calendars and timezones](https://github.com/tc39/proposal-temporal/issues/2826). Overall, Boa's conformance in real terms has improved by ~6%. + +You can check the full list of changes [here][changelog], and the full information on conformance +[here][conformance]. + +## Highlights + +### Temporal + +Boa is continuing to progress on the [Temporal](https://github.com/tc39/proposal-temporal). The Temporal API is a new +set of built-in objects and functions that is designed to be a more modern replacement for the `Date` +object, providing a more feature-rich and flexible API for working with dates and times. + +It is currently a [stage 3 proposal](https://tc39.es/proposal-temporal/docs/) and we are working +alongside the TC39 champions to put together a solid Rust implementation. Since Temporal is such an +extensive specification, we have done most of the work outside of Boa so that it can be used in other +projects. This work can be found in the [temporal_rs](https://github.com/boa-dev/temporal/) repository. + +We hope to release a full blog post on Temporal in the future, but for now you can see the previous release notes for some examples on how to use it. +You can also look at the [Temporal Cook Book](https://tc39.es/proposal-temporal/docs/cookbook.html) for some examples too! + +If you're interested in learning more or want to contribute to the native Rust implementation of +Temporal, feel free to check out `temporal_rs`'s [issues](https://github.com/boa-dev/temporal/issues)! + +Boa's conformance on the Temporal test suite has grown from 23.99% to 27.86% in this release. + +### New Benchmark Suite, Faster CI and reduced repo size + +Boa has had an overhaul of its older criterion benchmark suite to a new [end to end benchmark suite](https://boajs.dev/benchmarks). +We had finally outgrown the old benchmark suite and needed a new one that could handle the new features and improvements we were making to the engine. +The former benchmark suite has been there almost since the beginning, and was created as a way to keep an eye on certain functions and routines within Boa itself. Although useful, it +wasn't comparable to other engines due to being so specific on how Boa works. + +The new suite is taken from [V8's old benchmark suite](https://github.com/mozilla/arewefastyet/tree/master/benchmarks/v8-v7) which, despite being deprecated, is still for comparative performance. +Over time we will eventually need to work with other engines to have a more advanced benchmarking suite which can take into account modern JavaScript, but for now this is a good start. + +This change also offered a nice side effect of not having benchmark or test262 data in the main repository anymore. Last time we released we had [reports](https://www.reddit.com/r/rust/comments/1b91ora/comment/ktue8rf/) of the repository being too large, so we've taken steps to reduce the size of the repository by moving this data to a separate repository and building a nightly version for reporting. Not only this makes it easier for anyone cloning Boa today but pushes to `main` are now much faster due to us not having to run test262 or Benchmarks each time. + +## Intl updates + +## Builtins updates + +## APIs updates + +### Experimental features + +## Optimizations + +## Conclusion + +### How can you support Boa? + +Boa is an independent JavaScript engine implementing the ECMAScript specification, we rely on the +support of the community to keep it going. If you want to support us, you can do so by donating to +our [open collective]. Proceeeds here go towards this very website, the domain name, and remunerating +members of the team who have worked on the features released. + +If financial contribution is not your strength, you can contribute by asking to be assigned to one of +our [open issues], and asking for mentoring if you don't know your way around the engine. Our +[contribution guide] should help you here. If you are more used to working with JavaScript or frontend +web development, we also welcome help to improve our web presence, either in [our website], or in our +[testing representation] page or benchmarks page. You can also contribute to our Criterion benchmark +comparison GitHub [action]. + +We are also looking to improve the documentation of the engine, both for developers of the engine +itself and for users of the engine. Feel free to contact us in [Discord]. + +[open collective]: https://opencollective.com/boa +[open issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee +[contribution guide]: https://github.com/boa-dev/boa/blob/main/CONTRIBUTING.md +[our website]: https://github.com/boa-dev/boa-dev.github.io +[testing representation]: https://github.com/boa-dev/boa/issues/820 +[action]: https://github.com/boa-dev/criterion-compare-action +[Discord]: https://discord.gg/tUFFk9Y + +### Thank You + +Once again, big thanks to [all the contributors][contributors] of this release!! + +[contributors]: https://github.com/boa-dev/boa/graphs/contributors?from=2023-07-08&to=2024-03-05&type=c +[changelog]: https://github.com/boa-dev/boa/blob/v0.18/CHANGELOG.md +[conformance]: https://boajs.dev/boa/test262/ +[feed]: https://boajs.dev/blog/rss.xml +[collective]: https://opencollective.com/boa +[easy_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3AE-Easy +[first_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 From bb6bf666725ee0c9a5b88f68ce4dfe15fd5a354d Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Mon, 8 Jul 2024 23:46:15 +0100 Subject: [PATCH 02/15] remove comment --- blog/2024-07-09-boa-release-19.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 439a174d..77fee92c 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -1,9 +1,9 @@ - +--- ## Summary From c944db1ba5c398ddf5330aef67c0310b44a667a3 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Tue, 9 Jul 2024 00:19:31 +0100 Subject: [PATCH 03/15] release binary stripping and dense array variants --- blog/2024-07-09-boa-release-19.md | 45 ++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 77fee92c..be012139 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -1,9 +1,9 @@ ---- + ## Summary @@ -51,6 +51,45 @@ Over time we will eventually need to work with other engines to have a more adva This change also offered a nice side effect of not having benchmark or test262 data in the main repository anymore. Last time we released we had [reports](https://www.reddit.com/r/rust/comments/1b91ora/comment/ktue8rf/) of the repository being too large, so we've taken steps to reduce the size of the repository by moving this data to a separate repository and building a nightly version for reporting. Not only this makes it easier for anyone cloning Boa today but pushes to `main` are now much faster due to us not having to run test262 or Benchmarks each time. +## Optimizations + +### Release binary stripping + +Boa's binaries are on the larger side by default due to including ICU data. We may eventually move to a system where this needs to be fed from the host. However, until then there are other tricks we can employ to bring down our size, one of those is binary stripping. We can remove debug information from the release binary to reduce the size. + +| crate | v0.18 | v0.19 | +| ---------- | ----- | ----- | +| boa | 26MB | 25MB | +| boa_tester | 27MB | 25MB | + +### Dense array storage variants for i32 and f64 + +This release adds [dense array storage](https://github.com/boa-dev/boa/pull/3760) variants for `i32` and `f64` types. This allows us to store arrays of these types more efficiently, and also allows us to optimize certain operations on these arrays. + +If you want to inspect the storage type of an array in Boa you can use the `$boa.object.indexedStorageType()` APi. Here are [some examples](https://github.com/boa-dev/boa/blob/d3e539593fe206f18d44f20498cb54be15477a58/docs/boa_object.md#function-boaobjectindexedstoragetypeobject): + +```js +let a = [1, 2]; + +$boa.object.indexedStorageType(a); // 'DenseI32' + +a.push(0xdeadbeef); +$boa.object.indexedStorageType(a); // 'DenseI32' + +a.push(0.5); +$boa.object.indexedStorageType(a); // 'DenseF64' + +a.push("Hello"); +$boa.object.indexedStorageType(a); // 'DenseElement' + +a[100] = 100; // Make a hole +$boa.object.indexedStorageType(a); // 'SparseElement' +``` + +Much of this work is possible thanks to our implementation of [Object Shapes](https://github.com/boa-dev/boa/blob/main/docs/shapes.md) + +### + ## Intl updates ## Builtins updates @@ -59,8 +98,6 @@ This change also offered a nice side effect of not having benchmark or test262 d ### Experimental features -## Optimizations - ## Conclusion ### How can you support Boa? From c93032de00e6accc5b834adb885651577687379e Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Tue, 9 Jul 2024 22:53:55 +0100 Subject: [PATCH 04/15] migration to Matrix --- blog/2024-07-09-boa-release-19.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index be012139..e565882b 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -51,6 +51,12 @@ Over time we will eventually need to work with other engines to have a more adva This change also offered a nice side effect of not having benchmark or test262 data in the main repository anymore. Last time we released we had [reports](https://www.reddit.com/r/rust/comments/1b91ora/comment/ktue8rf/) of the repository being too large, so we've taken steps to reduce the size of the repository by moving this data to a separate repository and building a nightly version for reporting. Not only this makes it easier for anyone cloning Boa today but pushes to `main` are now much faster due to us not having to run test262 or Benchmarks each time. +## Migration to Matrix + +The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the `#boa:matrix.org` room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com) We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. + +Boa has long been a user of Discord, pretty much since the beginning of the project, but as it has grown we have chosen to move closer to other communities using Matrix such as TC39 who work on JavaScript standard, our closer ties with them (when implementing Temporal plus other specs) mean working on the same platform makes sense. + ## Optimizations ### Release binary stripping @@ -115,7 +121,7 @@ web development, we also welcome help to improve our web presence, either in [ou comparison GitHub [action]. We are also looking to improve the documentation of the engine, both for developers of the engine -itself and for users of the engine. Feel free to contact us in [Discord]. +itself and for users of the engine. Feel free to contact us in [Matrix]. [open collective]: https://opencollective.com/boa [open issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee @@ -123,7 +129,7 @@ itself and for users of the engine. Feel free to contact us in [Discord]. [our website]: https://github.com/boa-dev/boa-dev.github.io [testing representation]: https://github.com/boa-dev/boa/issues/820 [action]: https://github.com/boa-dev/criterion-compare-action -[Discord]: https://discord.gg/tUFFk9Y +[Matrix]: https://matrix.to/#/#boa:matrix.org ### Thank You From d0eafdc293850ef29fe5fc99f4916398c088a881 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Tue, 9 Jul 2024 22:59:25 +0100 Subject: [PATCH 05/15] add link to #boa:matrix.org --- blog/2024-07-09-boa-release-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index e565882b..466a6469 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -53,7 +53,7 @@ This change also offered a nice side effect of not having benchmark or test262 d ## Migration to Matrix -The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the `#boa:matrix.org` room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com) We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. +The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the [`#boa:matrix.org`](https://matrix.to/#/#boa:matrix.org) room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com) We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. Boa has long been a user of Discord, pretty much since the beginning of the project, but as it has grown we have chosen to move closer to other communities using Matrix such as TC39 who work on JavaScript standard, our closer ties with them (when implementing Temporal plus other specs) mean working on the same platform makes sense. From ac8d5b9a21d389cfa4154a10b61e3d0595351295 Mon Sep 17 00:00:00 2001 From: Jason Williams <936006+jasonwilliams@users.noreply.github.com> Date: Thu, 11 Jul 2024 14:40:11 +0100 Subject: [PATCH 06/15] Update blog/2024-07-09-boa-release-19.md Co-authored-by: Kevin Ness <46825870+nekevss@users.noreply.github.com> --- blog/2024-07-09-boa-release-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 466a6469..81d0a7a7 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -37,7 +37,7 @@ You can also look at the [Temporal Cook Book](https://tc39.es/proposal-temporal/ If you're interested in learning more or want to contribute to the native Rust implementation of Temporal, feel free to check out `temporal_rs`'s [issues](https://github.com/boa-dev/temporal/issues)! -Boa's conformance on the Temporal test suite has grown from 23.99% to 27.86% in this release. +Boa's conformance on the Temporal test suite has grown from 19.35% to 24.61% in this release. ### New Benchmark Suite, Faster CI and reduced repo size From 134493ac6dc65c17bc23e10f892f01206fe96e45 Mon Sep 17 00:00:00 2001 From: Jason Williams <936006+jasonwilliams@users.noreply.github.com> Date: Thu, 11 Jul 2024 23:08:34 +0100 Subject: [PATCH 07/15] Update blog/2024-07-09-boa-release-19.md Co-authored-by: Kevin Ness <46825870+nekevss@users.noreply.github.com> --- blog/2024-07-09-boa-release-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 81d0a7a7..579eeb42 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -53,7 +53,7 @@ This change also offered a nice side effect of not having benchmark or test262 d ## Migration to Matrix -The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the [`#boa:matrix.org`](https://matrix.to/#/#boa:matrix.org) room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com) We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. +The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the [`#boa:matrix.org`](https://matrix.to/#/#boa:matrix.org) room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms on future development in areas such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com). We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. Boa has long been a user of Discord, pretty much since the beginning of the project, but as it has grown we have chosen to move closer to other communities using Matrix such as TC39 who work on JavaScript standard, our closer ties with them (when implementing Temporal plus other specs) mean working on the same platform makes sense. From bf76e56c0ca5d956e21353b5fff4b4c0cb386de6 Mon Sep 17 00:00:00 2001 From: Jason Williams <936006+jasonwilliams@users.noreply.github.com> Date: Thu, 11 Jul 2024 23:08:50 +0100 Subject: [PATCH 08/15] Update blog/2024-07-09-boa-release-19.md Co-authored-by: Kevin Ness <46825870+nekevss@users.noreply.github.com> --- blog/2024-07-09-boa-release-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 579eeb42..58d0db0e 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -55,7 +55,7 @@ This change also offered a nice side effect of not having benchmark or test262 d The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the [`#boa:matrix.org`](https://matrix.to/#/#boa:matrix.org) room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms on future development in areas such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com). We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. -Boa has long been a user of Discord, pretty much since the beginning of the project, but as it has grown we have chosen to move closer to other communities using Matrix such as TC39 who work on JavaScript standard, our closer ties with them (when implementing Temporal plus other specs) mean working on the same platform makes sense. +Boa has long been a user of Discord, pretty much since the beginning of the project, but as the project has grown and matured, we have chosen to move more in line to other communities who use Matrix for communication, such as TC39 who work on ECMAScript standard. With Boa's increased conformance and ability to work closer with the standard committee when implementing Temporal and other new specifications meant that a migration to Matrix was the most natural choice to ease communication with the broader JavaScript implementer communities. ## Optimizations From 17679ca5969f2f3bfc49b64864ad1e40989c6bbe Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Fri, 12 Jul 2024 21:49:37 +0100 Subject: [PATCH 09/15] add new contributors --- blog/2024-07-09-boa-release-19.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 58d0db0e..e5d5f6e3 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -55,7 +55,7 @@ This change also offered a nice side effect of not having benchmark or test262 d The Boa team will be migrating to Matrix from our Discord servers over the course of this year. This means we will hang out in the [`#boa:matrix.org`](https://matrix.to/#/#boa:matrix.org) room and will be available for questions and discussions there. We will also be using Matrix for other break-out rooms on future development in areas such as [Performance](https://matrix.to/#/!odQJQiuPFJtUBzgoXY:matrix.org?via=matrix.org&via=mozilla.org), [Intl](https://matrix.to/#/!rsWLMsIzfquQAbDoak:matrix.org?via=matrix.org) and [Temporal](https://matrix.to/#/!DeQjFAUjAPAffIsCgq:matrix.org?via=matrix.org&via=mozilla.org&via=igalia.com). We will be keeping the Discord server open for a while to allow people to migrate over, but we will eventually close it down sometime in 2025. -Boa has long been a user of Discord, pretty much since the beginning of the project, but as the project has grown and matured, we have chosen to move more in line to other communities who use Matrix for communication, such as TC39 who work on ECMAScript standard. With Boa's increased conformance and ability to work closer with the standard committee when implementing Temporal and other new specifications meant that a migration to Matrix was the most natural choice to ease communication with the broader JavaScript implementer communities. +Boa has long been a user of Discord, pretty much since the beginning of the project, but as the project has grown and matured, we have chosen to move more in line to other communities who use Matrix for communication, such as TC39 who work on ECMAScript standard. With Boa's increased conformance and ability to work closer with the standard committee when implementing Temporal and other new specifications meant that a migration to Matrix was the most natural choice to ease communication with the broader JavaScript implementer communities. ## Optimizations @@ -94,17 +94,17 @@ $boa.object.indexedStorageType(a); // 'SparseElement' Much of this work is possible thanks to our implementation of [Object Shapes](https://github.com/boa-dev/boa/blob/main/docs/shapes.md) -### +## New Contributors -## Intl updates +Thank you to the new contributors to Boa for this release, you can find their contributions below: -## Builtins updates - -## APIs updates - -### Experimental features - -## Conclusion +- @robot-head made their first contribution in https://github.com/boa-dev/boa/pull/3730 +- @hansl made their first contribution in https://github.com/boa-dev/boa/pull/3755 +- @NickTomlin made their first contribution in https://github.com/boa-dev/boa/pull/3793 +- @linusg made their first contribution in https://github.com/boa-dev/boa/pull/3800 +- @getong made their first contribution in https://github.com/boa-dev/boa/pull/3836 +- @leoflalv made their first contribution in https://github.com/boa-dev/boa/pull/3867 +- @CrazyboyQCD made their first contribution in https://github.com/boa-dev/boa/pull/3898 ### How can you support Boa? @@ -135,8 +135,8 @@ itself and for users of the engine. Feel free to contact us in [Matrix]. Once again, big thanks to [all the contributors][contributors] of this release!! -[contributors]: https://github.com/boa-dev/boa/graphs/contributors?from=2023-07-08&to=2024-03-05&type=c -[changelog]: https://github.com/boa-dev/boa/blob/v0.18/CHANGELOG.md +[contributors]: https://github.com/boa-dev/boa/graphs/contributors?from=2024-03-05&to=2024-07-11&type=c +[changelog]: https://github.com/boa-dev/boa/blob/v0.19/CHANGELOG.md [conformance]: https://boajs.dev/boa/test262/ [feed]: https://boajs.dev/blog/rss.xml [collective]: https://opencollective.com/boa From 122f6f0e32e4849243f2603e4d23f0d280f67428 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Fri, 12 Jul 2024 21:58:11 +0100 Subject: [PATCH 10/15] changes --- blog/2024-07-09-boa-release-19.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index e5d5f6e3..fc44e949 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -11,8 +11,8 @@ Boa v0.19 is now available! After 4 months of development we are very happy to p release of the Boa JavaScript engine. Boa makes it easy to embed a JS engine in your projects, and you can even use it from WebAssembly. See the [about](/about) page for more info. -In this release, our conformance has grown from 85.03% to 86.20% in the official ECMAScript Test Suite -(Test262). Interestingly, this isn't due to us passing more tests, but in fact the total number of tests from test262 +In this release, our conformance has grown from 85.03% to 87.3% in the official ECMAScript Test Suite +(Test262). Interestingly, not all of this is due to us passing more tests, but in fact the total number of tests from test262 [reducing by around 2000](https://github.com/tc39/test262/commit/ea2268aa4382013f5533b91f9ef50366ad065a86) from the [removal of custom calendars and timezones](https://github.com/tc39/proposal-temporal/issues/2826). Overall, Boa's conformance in real terms has improved by ~6%. You can check the full list of changes [here][changelog], and the full information on conformance @@ -22,7 +22,7 @@ You can check the full list of changes [here][changelog], and the full informati ### Temporal -Boa is continuing to progress on the [Temporal](https://github.com/tc39/proposal-temporal). The Temporal API is a new +Boa is continuing to progress on [Temporal](https://github.com/tc39/proposal-temporal). The Temporal API is a new set of built-in objects and functions that is designed to be a more modern replacement for the `Date` object, providing a more feature-rich and flexible API for working with dates and times. @@ -106,6 +106,8 @@ Thank you to the new contributors to Boa for this release, you can find their co - @leoflalv made their first contribution in https://github.com/boa-dev/boa/pull/3867 - @CrazyboyQCD made their first contribution in https://github.com/boa-dev/boa/pull/3898 +## Looking Forward + ### How can you support Boa? Boa is an independent JavaScript engine implementing the ECMAScript specification, we rely on the From dfc285601464a08b71e9a2869a5f00b37fa19f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Juli=C3=A1n=20Espina?= Date: Fri, 12 Jul 2024 15:46:10 -0600 Subject: [PATCH 11/15] Fill looking forward section --- blog/2024-07-09-boa-release-19.md | 62 +++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index fc44e949..609f31a7 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -12,8 +12,10 @@ release of the Boa JavaScript engine. Boa makes it easy to embed a JS engine in you can even use it from WebAssembly. See the [about](/about) page for more info. In this release, our conformance has grown from 85.03% to 87.3% in the official ECMAScript Test Suite -(Test262). Interestingly, not all of this is due to us passing more tests, but in fact the total number of tests from test262 -[reducing by around 2000](https://github.com/tc39/test262/commit/ea2268aa4382013f5533b91f9ef50366ad065a86) from the [removal of custom calendars and timezones](https://github.com/tc39/proposal-temporal/issues/2826). Overall, Boa's conformance in real terms has improved by ~6%. +(Test262). Interestingly, this was partly because around 2000 tests +were [removed from test262](https://github.com/tc39/test262/commit/ea2268aa4382013f5533b91f9ef50366ad065a86) +as part of the [removal of custom calendars and timezones](https://github.com/tc39/proposal-temporal/issues/2826). +Overall, Boa's conformance in real terms has improved by ~6%. You can check the full list of changes [here][changelog], and the full information on conformance [here][conformance]. @@ -108,9 +110,63 @@ Thank you to the new contributors to Boa for this release, you can find their co ## Looking Forward +Before finishing this blog post, we wanted to give a special shoutout to @hansl, one of our new +contributors for this release! He's been working on improving the ergonomics around exposing +Rust functions and types as ECMAScript functions and classes with a lot of nice API enhancements. +Some notable PRs are: + +- [Add a boa_interop crate](https://github.com/boa-dev/boa/pull/3772) +- [Add a new type Convert<> to convert values](https://github.com/boa-dev/boa/pull/3786) +- [Add a ContextData struct to inject host defined types from the context](https://github.com/boa-dev/boa/pull/3802) +- [Add a js_class to implement the Class trait without boilerplate](https://github.com/boa-dev/boa/pull/3872) + +Unfortunately, the aforementioned `boa_interop` crate was not published for this version, and that's +because we would like to polish it first and integrate it within the other crates of the project. +However, we can give you a sneak peek of what some of the new APIs will allow you to do. Hopefully +this will make you look forward for v0.20! + +``` +use boa_interop::{js_class, Ignore, JsClass}; + +#[derive(Clone, Trace, Finalize, JsData)] +pub enum Animal { + Cat, + Dog, + Other, +} + +js_class! { + // Implements the [`Class`] trait for the `Animal` enum. + class Animal { + // This sets a field on the JavaScript object. The arguments to + // `init` are the arguments passed to the constructor. + public age(_name: Ignore, age: i32) -> i32 { + age + } + // This is called when a new instance of the class is created in + // JavaScript, e.g. `new Animal("cat")`. + constructor(name: String) { + match name.as_str() { + "cat" => Ok(Animal::Cat), + "dog" => Ok(Animal::Dog), + _ => Ok(Animal::Other), + } + } + // Declare a function on the class itself. + fn speak(this: JsClass) -> JsString { + match *this.borrow() { + Animal::Cat => js_string!("meow"), + Animal::Dog => js_string!("woof"), + Animal::Other => js_string!(r"¯\_(ツ)_/¯"), + } + } + } +} +``` + ### How can you support Boa? -Boa is an independent JavaScript engine implementing the ECMAScript specification, we rely on the +Boa is an independent JavaScript engine implementing the ECMAScript specification, and we rely on the support of the community to keep it going. If you want to support us, you can do so by donating to our [open collective]. Proceeeds here go towards this very website, the domain name, and remunerating members of the team who have worked on the features released. From 5a36ac9e73b7ee9ca855232fd1bbb8c43b1ac5da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Juli=C3=A1n=20Espina?= Date: Fri, 12 Jul 2024 15:48:52 -0600 Subject: [PATCH 12/15] fix build --- blog/2024-07-09-boa-release-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 609f31a7..58f13ba6 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -116,7 +116,7 @@ Rust functions and types as ECMAScript functions and classes with a lot of nice Some notable PRs are: - [Add a boa_interop crate](https://github.com/boa-dev/boa/pull/3772) -- [Add a new type Convert<> to convert values](https://github.com/boa-dev/boa/pull/3786) +- [Add a new type Convert\<\> to convert values](https://github.com/boa-dev/boa/pull/3786) - [Add a ContextData struct to inject host defined types from the context](https://github.com/boa-dev/boa/pull/3802) - [Add a js_class to implement the Class trait without boilerplate](https://github.com/boa-dev/boa/pull/3872) From ca1774efd0e640ffb7bd41a180f67ac221df60cc Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Sat, 13 Jul 2024 14:15:49 +0100 Subject: [PATCH 13/15] looking forward updates --- blog/2024-07-09-boa-release-19.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 58f13ba6..5b11dace 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -110,6 +110,8 @@ Thank you to the new contributors to Boa for this release, you can find their co ## Looking Forward +### API ergonomics + Before finishing this blog post, we wanted to give a special shoutout to @hansl, one of our new contributors for this release! He's been working on improving the ergonomics around exposing Rust functions and types as ECMAScript functions and classes with a lot of nice API enhancements. @@ -164,6 +166,12 @@ js_class! { } ``` +### Performance + +Now that our conformance is farily high (87.3% in Test262), we will be focusing on improving the performance of the engine. This will involve re-writing the Garbage Collector from the one we have now which was a fork of [rust-gc](https://github.com/Manishearth/rust-gc) and modified heavily, to something which will work better for the engine and allow us to have paritioning, snapshots and other features which are not possible with the current GC. If this interests you, you can join the effort in our Matrix GC chat (see [Migration To Matrix](#migration-to-matrix) above). + +Boa will also be working on [migrating](https://github.com/boa-dev/boa/pull/3798) from a stack VM to a register-based VM. This will allow us to optimize the engine further and make it more competitive with other engines. We will also be working on improving the performance of the engine in general, and we will be looking at ways to make the engine faster and more efficient. + ### How can you support Boa? Boa is an independent JavaScript engine implementing the ECMAScript specification, and we rely on the From 71eadd9e962309b946266eea1503c3fc5cf4dcf1 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Sat, 13 Jul 2024 14:21:40 +0100 Subject: [PATCH 14/15] add links to contributors --- blog/2024-07-09-boa-release-19.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 5b11dace..682e66a3 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -100,19 +100,19 @@ Much of this work is possible thanks to our implementation of [Object Shapes](ht Thank you to the new contributors to Boa for this release, you can find their contributions below: -- @robot-head made their first contribution in https://github.com/boa-dev/boa/pull/3730 -- @hansl made their first contribution in https://github.com/boa-dev/boa/pull/3755 -- @NickTomlin made their first contribution in https://github.com/boa-dev/boa/pull/3793 -- @linusg made their first contribution in https://github.com/boa-dev/boa/pull/3800 -- @getong made their first contribution in https://github.com/boa-dev/boa/pull/3836 -- @leoflalv made their first contribution in https://github.com/boa-dev/boa/pull/3867 -- @CrazyboyQCD made their first contribution in https://github.com/boa-dev/boa/pull/3898 +- [@robot-head](https://github.com/robot-head) made their first contribution in https://github.com/boa-dev/boa/pull/3730 +- [@hansl](https://github.com/hansl) made their first contribution in https://github.com/boa-dev/boa/pull/3755 +- [@NickTomlin](https://github.com/NickTomlin) made their first contribution in https://github.com/boa-dev/boa/pull/3793 +- [@linusg](https://github.com/linusg) made their first contribution in https://github.com/boa-dev/boa/pull/3800 +- [@getong](https://github.com/getong) made their first contribution in https://github.com/boa-dev/boa/pull/3836 +- [@leoflalv](https://github.com/leoflalv) made their first contribution in https://github.com/boa-dev/boa/pull/3867 +- [@CrazyboyQCD](https://github.com/CrazyboyQCD) made their first contribution in https://github.com/boa-dev/boa/pull/3898 ## Looking Forward ### API ergonomics -Before finishing this blog post, we wanted to give a special shoutout to @hansl, one of our new +Before finishing this blog post, we wanted to give a special shoutout to [@hansl](https://github.com/hansl), one of our new contributors for this release! He's been working on improving the ergonomics around exposing Rust functions and types as ECMAScript functions and classes with a lot of nice API enhancements. Some notable PRs are: From 7dc889472b7820661a0e55e3205a1e6e179a9954 Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Sat, 13 Jul 2024 14:23:49 +0100 Subject: [PATCH 15/15] add v1.0 stuff --- blog/2024-07-09-boa-release-19.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/blog/2024-07-09-boa-release-19.md b/blog/2024-07-09-boa-release-19.md index 682e66a3..c4587b04 100644 --- a/blog/2024-07-09-boa-release-19.md +++ b/blog/2024-07-09-boa-release-19.md @@ -172,6 +172,10 @@ Now that our conformance is farily high (87.3% in Test262), we will be focusing Boa will also be working on [migrating](https://github.com/boa-dev/boa/pull/3798) from a stack VM to a register-based VM. This will allow us to optimize the engine further and make it more competitive with other engines. We will also be working on improving the performance of the engine in general, and we will be looking at ways to make the engine faster and more efficient. +### v1.0 + +We hope that the changes mentioned above will bring us closer to a v1.0 release. We are still some way off, but we are making progress and we are confident that we will be able to release a v1.0 version of Boa in the future. + ### How can you support Boa? Boa is an independent JavaScript engine implementing the ECMAScript specification, and we rely on the