Skip to content

Commit 5c7ff1b

Browse files
committed
A few more changes / updates
1 parent 954c870 commit 5c7ff1b

File tree

1 file changed

+43
-24
lines changed

1 file changed

+43
-24
lines changed

blog/boa-release-21/index.md

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ info.
1717
In this release, our conformance has grown from 89.92% to 93.94% in the
1818
official ECMAScript Test Suite (Test262). Our growth in conformance is
1919
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
2323
aligns with the major browser engine's conformance, so future increases
2424
in conformance will be minor or bound to the feature size going forward.
2525

@@ -34,15 +34,13 @@ information on conformance [here][conformance].
3434

3535
There has been a lot of progress made on Temporal, the new Stage 3
3636
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%.
4038

4139
The implementation is backed by the `temporal_rs` date/time Rust
4240
library, 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

4745
Temporal 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

7377
This release adds support for the new set methods added in ES2025.
7478

@@ -85,7 +89,7 @@ The new methods are:
8589
Thanks to [@Hemenguelbindi](https://github.com/@Hemenguelbindi) for
8690
their 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

9094
This release adds support for `f16` types for the TypedArray, Dataview, and Math
9195
built-ins.
@@ -95,15 +99,15 @@ const x = new Float16Array([37, 42.123456]);
9599
console.log(x[1]); // 42.125
96100
```
97101

98-
### Error.isError
102+
#### Error.isError
99103

100104
This release adds support for `Error.isError`, which is accepted for ES2026.
101105

102106
```javascript
103107
let check = Error.isError(new Error()); // returns true
104108
```
105109

106-
### Math.sumPrecise
110+
#### Math.sumPrecise
107111

108112
This 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

165179
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.
169183

170184
Our current plan is if there is enough interest and the crate becomes
171185
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.
174193

175194
## How can you support Boa?
176195

0 commit comments

Comments
 (0)