1717In this release, our conformance has grown from 89.92% to 93.94% in the
1818official ECMAScript Test Suite (Test262). Our growth in conformance is
1919driven by increased conformance for Temporal (discussed further below)
20- with the rest of the development effort being focused on performance and
21- runtime features. We will continue to implement more of the
22- specification; however, as of the current moment, Boa's conformance
20+ with the rest of the development effort being focused on performance,
21+ internal improvements, and runtime features. We will continue to implement
22+ more of the specification; however, as of the current moment, Boa's conformance
2323aligns with the major browser engine's conformance, so future increases
2424in conformance will be minor or bound to the feature size going forward.
2525
@@ -34,15 +34,13 @@ information on conformance [here][conformance].
3434
3535There has been a lot of progress made on Temporal, the new Stage 3
3636date/time proposal. With this release, Boa's conformance on Temporal
37- grew from 40.67% to 97.06%. As of this moment, Boa is the second most
38- conformant Temporal implementation behind SpiderMonkey with others soon
39- to follow.
37+ grew from 40.67% to ~ 97%.
4038
4139The implementation is backed by the ` temporal_rs ` date/time Rust
4240library, which we went over briefly in our June
4341[ blog post] ( ./2025-06-15-temporal-impl-1.md ) with hopefully another post
44- in the not too distant future. So far, ` temporal_rs ` has been used in
45- both V8 and Keisel to implement Temporal as well .
42+ in the not too distant future. So far, ` temporal_rs ` has also been used in
43+ both V8 and Keisel to implement Temporal.
4644
4745Temporal can be used from ` boa_cli ` or enabled in ` boa_engine ` with the
4846` experimental ` or ` temporal ` feature.
@@ -62,13 +60,19 @@ and help with `temporal_rs`.
6260
6361### Span nodes and error backtraces
6462
65- We also closed an outstanding issue of supporting span nodes in our parser and AST. This
66- allowed us to implement backtraces to provide better debugging information when using
67- Boa.
63+ We also add support for span nodes in our parser and AST. Span nodes mark the start and
64+ end index in the source code for a specific token.
65+
66+ As a result, this release of Boa supports error backtraces when an exception is thrown
67+ as seen below.
6868
6969![ backtrace-example] ( ./img/backtrace.gif )
7070
71- ### New Set methods
71+ This feature will greatly help with debugging errors when using Boa.
72+
73+ ### Specification updates
74+
75+ #### Set methods
7276
7377This release adds support for the new set methods added in ES2025.
7478
@@ -85,7 +89,7 @@ The new methods are:
8589Thanks to [ @Hemenguelbindi ] ( https://github.com/@Hemenguelbindi ) for
8690their work on this feature.
8791
88- ### Float16 support for TypedArrays, Dataview and Math built-ins
92+ #### Float16 support for TypedArrays, Dataview and Math built-ins
8993
9094This release adds support for ` f16 ` types for the TypedArray, Dataview, and Math
9195built-ins.
@@ -95,15 +99,15 @@ const x = new Float16Array([37, 42.123456]);
9599console .log (x[1 ]); // 42.125
96100```
97101
98- ### Error.isError
102+ #### Error.isError
99103
100104This release adds support for ` Error.isError ` , which is accepted for ES2026.
101105
102106``` javascript
103107let check = Error .isError (new Error ()); // returns true
104108```
105109
106- ### Math.sumPrecise
110+ #### Math.sumPrecise
107111
108112This release adds support for ` Math.sumPrecise ` , which is accepted for ES2026.
109113
@@ -136,12 +140,22 @@ against the Web Platform Tests (WPT).
136140
137141## Performance
138142
139- ### Register VM
143+ ### NaN Boxing
144+
145+ With this release, Boa's ` JsValue ` will use nan-boxing by default. The NaN boxing of ` JsValue `
146+ increased memory and runtime performance over the older enum.
140147
141- With this release, Boa's virtual machine (VM) moved from a stack based
142- VM to a register based VM.
148+ As a note, the current implementation is not compatible with all platforms. While we hope
149+ to address this in the future. The legacy enum JsValue will be available via the ` jsvalue-enum `
150+ feature flag.
143151
144- TODO: Potentially add more here
152+ Unfamiliar with NaN Boxing? We won't go over it in depth here, but we recommend
153+ [ this article] ( https://piotrduperas.com/posts/nan-boxing ) to learn more.
154+
155+ ### Register VM
156+
157+ Boa's virtual machine (VM) moved from a stack based VM to a register based VM in
158+ [ PR #3798 ] ( https://github.com/boa-dev/boa/pull/3798 ) .
145159
146160## New Contributors
147161
@@ -163,14 +177,19 @@ helping out, feel free to join our GC room on [Matrix].
163177### Runtime functionality
164178
165179The ` boa_runtime ` crate was initially meant to contain functionality
166- that was not meant to exist in the core engine, primarily our console
167- implementation. Noticeably, we have since added more runtime features to
168- the crate with more expected in the next release.
180+ that was not meant to exist in the core ECMAScript implementation, for instance
181+ the console implementation. Noticeably, we have since added more runtime
182+ features to the crate with even more features expected in the next release.
169183
170184Our current plan is if there is enough interest and the crate becomes
171185too large, we will split ` boa_runtime ` into it's own repository. If you
172- are interested in implementing any runtime features, feel free to reach
173- out.
186+ are interested in implementing any runtime features or contributing to
187+ a runtime, feel free to reach out.
188+
189+ ### Continuing improvement of performance
190+
191+ As mentioned on previous release posts, we will continue to further work
192+ on improving Boa's overall performance.
174193
175194## How can you support Boa?
176195
0 commit comments