17
17
In this release, our conformance has grown from 89.92% to 93.94% in the
18
18
official ECMAScript Test Suite (Test262). Our growth in conformance is
19
19
driven 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
23
23
aligns with the major browser engine's conformance, so future increases
24
24
in conformance will be minor or bound to the feature size going forward.
25
25
@@ -34,15 +34,13 @@ information on conformance [here][conformance].
34
34
35
35
There has been a lot of progress made on Temporal, the new Stage 3
36
36
date/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%.
40
38
41
39
The implementation is backed by the ` temporal_rs ` date/time Rust
42
40
library, which we went over briefly in our June
43
41
[ 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.
46
44
47
45
Temporal can be used from ` boa_cli ` or enabled in ` boa_engine ` with the
48
46
` experimental ` or ` temporal ` feature.
@@ -62,13 +60,19 @@ and help with `temporal_rs`.
62
60
63
61
### Span nodes and error backtraces
64
62
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.
68
68
69
69
![ backtrace-example] ( ./img/backtrace.gif )
70
70
71
- ### New Set methods
71
+ This feature will greatly help with debugging errors when using Boa.
72
+
73
+ ### Specification updates
74
+
75
+ #### Set methods
72
76
73
77
This release adds support for the new set methods added in ES2025.
74
78
@@ -85,7 +89,7 @@ The new methods are:
85
89
Thanks to [ @Hemenguelbindi ] ( https://github.com/@Hemenguelbindi ) for
86
90
their work on this feature.
87
91
88
- ### Float16 support for TypedArrays, Dataview and Math built-ins
92
+ #### Float16 support for TypedArrays, Dataview and Math built-ins
89
93
90
94
This release adds support for ` f16 ` types for the TypedArray, Dataview, and Math
91
95
built-ins.
@@ -95,15 +99,15 @@ const x = new Float16Array([37, 42.123456]);
95
99
console .log (x[1 ]); // 42.125
96
100
```
97
101
98
- ### Error.isError
102
+ #### Error.isError
99
103
100
104
This release adds support for ` Error.isError ` , which is accepted for ES2026.
101
105
102
106
``` javascript
103
107
let check = Error .isError (new Error ()); // returns true
104
108
```
105
109
106
- ### Math.sumPrecise
110
+ #### Math.sumPrecise
107
111
108
112
This release adds support for ` Math.sumPrecise ` , which is accepted for ES2026.
109
113
@@ -136,12 +140,22 @@ against the Web Platform Tests (WPT).
136
140
137
141
## Performance
138
142
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.
140
147
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.
143
151
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 ) .
145
159
146
160
## New Contributors
147
161
@@ -163,14 +177,19 @@ helping out, feel free to join our GC room on [Matrix].
163
177
### Runtime functionality
164
178
165
179
The ` 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.
169
183
170
184
Our current plan is if there is enough interest and the crate becomes
171
185
too 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.
174
193
175
194
## How can you support Boa?
176
195
0 commit comments