|
| 1 | +<!-- --- |
| 2 | +layout: post |
| 3 | +tags: [post] |
| 4 | +title: "Boa release v0.19" |
| 5 | +author: Boa Developers |
| 6 | +--- --> |
| 7 | + |
| 8 | +## Summary |
| 9 | + |
| 10 | +Boa v0.19 is now available! After 4 months of development we are very happy to present you the latest |
| 11 | +release of the Boa JavaScript engine. Boa makes it easy to embed a JS engine in your projects, and |
| 12 | +you can even use it from WebAssembly. See the [about](/about) page for more info. |
| 13 | + |
| 14 | +In this release, our conformance has grown from 85.03% to 86.20% in the official ECMAScript Test Suite |
| 15 | +(Test262). Interestingly, this isn't due to us passing more tests, but in fact the total number of tests from test262 |
| 16 | +[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%. |
| 17 | + |
| 18 | +You can check the full list of changes [here][changelog], and the full information on conformance |
| 19 | +[here][conformance]. |
| 20 | + |
| 21 | +## Highlights |
| 22 | + |
| 23 | +### Temporal |
| 24 | + |
| 25 | +Boa is continuing to progress on the [Temporal](https://github.com/tc39/proposal-temporal). The Temporal API is a new |
| 26 | +set of built-in objects and functions that is designed to be a more modern replacement for the `Date` |
| 27 | +object, providing a more feature-rich and flexible API for working with dates and times. |
| 28 | + |
| 29 | +It is currently a [stage 3 proposal](https://tc39.es/proposal-temporal/docs/) and we are working |
| 30 | +alongside the TC39 champions to put together a solid Rust implementation. Since Temporal is such an |
| 31 | +extensive specification, we have done most of the work outside of Boa so that it can be used in other |
| 32 | +projects. This work can be found in the [temporal_rs](https://github.com/boa-dev/temporal/) repository. |
| 33 | + |
| 34 | +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. |
| 35 | +You can also look at the [Temporal Cook Book](https://tc39.es/proposal-temporal/docs/cookbook.html) for some examples too! |
| 36 | + |
| 37 | +If you're interested in learning more or want to contribute to the native Rust implementation of |
| 38 | +Temporal, feel free to check out `temporal_rs`'s [issues](https://github.com/boa-dev/temporal/issues)! |
| 39 | + |
| 40 | +Boa's conformance on the Temporal test suite has grown from 23.99% to 27.86% in this release. |
| 41 | + |
| 42 | +### New Benchmark Suite, Faster CI and reduced repo size |
| 43 | + |
| 44 | +Boa has had an overhaul of its older criterion benchmark suite to a new [end to end benchmark suite](https://boajs.dev/benchmarks). |
| 45 | +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. |
| 46 | +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 |
| 47 | +wasn't comparable to other engines due to being so specific on how Boa works. |
| 48 | + |
| 49 | +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. |
| 50 | +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. |
| 51 | + |
| 52 | +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. |
| 53 | + |
| 54 | +## Intl updates |
| 55 | + |
| 56 | +## Builtins updates |
| 57 | + |
| 58 | +## APIs updates |
| 59 | + |
| 60 | +### Experimental features |
| 61 | + |
| 62 | +## Optimizations |
| 63 | + |
| 64 | +## Conclusion |
| 65 | + |
| 66 | +### How can you support Boa? |
| 67 | + |
| 68 | +Boa is an independent JavaScript engine implementing the ECMAScript specification, we rely on the |
| 69 | +support of the community to keep it going. If you want to support us, you can do so by donating to |
| 70 | +our [open collective]. Proceeeds here go towards this very website, the domain name, and remunerating |
| 71 | +members of the team who have worked on the features released. |
| 72 | + |
| 73 | +If financial contribution is not your strength, you can contribute by asking to be assigned to one of |
| 74 | +our [open issues], and asking for mentoring if you don't know your way around the engine. Our |
| 75 | +[contribution guide] should help you here. If you are more used to working with JavaScript or frontend |
| 76 | +web development, we also welcome help to improve our web presence, either in [our website], or in our |
| 77 | +[testing representation] page or benchmarks page. You can also contribute to our Criterion benchmark |
| 78 | +comparison GitHub [action]. |
| 79 | + |
| 80 | +We are also looking to improve the documentation of the engine, both for developers of the engine |
| 81 | +itself and for users of the engine. Feel free to contact us in [Discord]. |
| 82 | + |
| 83 | +[open collective]: https://opencollective.com/boa |
| 84 | +[open issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee |
| 85 | +[contribution guide]: https://github.com/boa-dev/boa/blob/main/CONTRIBUTING.md |
| 86 | +[our website]: https://github.com/boa-dev/boa-dev.github.io |
| 87 | +[testing representation]: https://github.com/boa-dev/boa/issues/820 |
| 88 | +[action]: https://github.com/boa-dev/criterion-compare-action |
| 89 | +[Discord]: https://discord.gg/tUFFk9Y |
| 90 | + |
| 91 | +### Thank You |
| 92 | + |
| 93 | +Once again, big thanks to [all the contributors][contributors] of this release!! |
| 94 | + |
| 95 | +[contributors]: https://github.com/boa-dev/boa/graphs/contributors?from=2023-07-08&to=2024-03-05&type=c |
| 96 | +[changelog]: https://github.com/boa-dev/boa/blob/v0.18/CHANGELOG.md |
| 97 | +[conformance]: https://boajs.dev/boa/test262/ |
| 98 | +[feed]: https://boajs.dev/blog/rss.xml |
| 99 | +[collective]: https://opencollective.com/boa |
| 100 | +[easy_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3AE-Easy |
| 101 | +[first_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 |
0 commit comments