Skip to content

Commit 5504701

Browse files
authored
blog: Nova 1.0 (#59)
1 parent f01334d commit 5504701

2 files changed

Lines changed: 70 additions & 13 deletions

File tree

pages/blog/nova-1.0.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: Nova 1.0
3+
description: Entering the major release era.
4+
date: 2026-03-15
5+
authors:
6+
- name: Aapo Alasuutari
7+
url: https://github.com/aapoalas
8+
---
9+
10+
Today, Nova JavaScript engine has published its first major version 1.0.0! This
11+
marks the beginning of a new era for the engine where experimental status is
12+
shed and a relative stability and polishing takes over. This does not mean that
13+
the engine promises to stay unchanged or even that it is a perfect and
14+
fully-formed product, however.
15+
16+
## Shortcomings
17+
18+
First it is important to acknowledge some big shortcomings of the engine: if
19+
you're shopping around for a JavaScript engine for a big product or project,
20+
we'd be happy if you take a look at Nova as a prospective engine but it is very
21+
possible it is not the engine for you.
22+
23+
First, the engine's performance is acceptable or even fairly good on small
24+
datasets and quick scripts, but it is _not_ a fast engine. Performance
25+
optimisations are unfortunately being shipped on a later ship, and you'll be
26+
sorely disappointed if you are looking for a V8 killer.
27+
28+
The engine also still has some bigger gaps in its ECMAScript support: the
29+
`RegExp` object and engine especially are not specification compliant, differing
30+
on Unicode and character set matching, nor supporting lookaheads, lookbehinds,
31+
or backreferences. Arrays in the engine do not support sparse storage
32+
internally, which means that setting the `length` property of an array to be
33+
excessively large will also reserve excessive amounts of memory. Subclassing of
34+
`Promise`s also does not work, and a bug currently stops class fields from
35+
working on subclasses as well. Finally, no WebAssembly support exists at
36+
present.
37+
38+
But if what you're looking for is a lightweight, easy-to-embed engine for
39+
running scripts on the smaller side then Nova just might be the engine for you!
40+
41+
## Versioning strategy
42+
43+
Entering the major version era means that SemVer rules will be followed from now
44+
on: the 1.x family will have backwards compatibility. That doesn't mean that the
45+
API of the engine won't change, however. Rather, Nova will be following a
46+
similar versioning model to V8: small, incremental breaking changes may happen
47+
relatively frequently and in that case new major versions will be published. The
48+
intent is to publish a new version roughly every few months at least, meaning
49+
that if need be then new major versions will be published every few months as
50+
well.
51+
52+
Major versioning gives us a versioning scheme we can use to guarantee backwards
53+
compatibility with, but we do not aim to give LTS-like API stability guarantees
54+
for the foreseeable future.
55+
56+
## Onwards!
57+
58+
That's all I wanted to say: Nova is now in the major version era, don't expect
59+
miracles but do expect a little! Thank you for reading and see you in future
60+
patch, minor, and major releases!

pages/index.tsx

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,25 @@ function Index() {
2020
<h1>Welcome!</h1>
2121
<p>
2222
Nova is a JavaScript (<a href="https://tc39.es/ecma262/">ECMAScript</a>)
23-
and <a href="https://webassembly.org/">WebAssembly</a>{" "}
23+
(and in the future <a href="https://webassembly.org/">WebAssembly</a> )
2424
engine written in Rust and following{" "}
2525
<a href="https://en.wikipedia.org/wiki/Data-oriented_design">
2626
data-oriented design principles
2727
</a>
28-
. It is currently nothing more than a fun experiment to learn and to
29-
prove the viability of such an engine, but may very well become
30-
something much more in the future.
28+
. The engine is published on crates.io with SemVer versioning without
29+
particular LTS guarantees.
3130
</p>
3231
<p>
33-
The engine is still very limited in it's capabilities only passing about
34-
{" "}
32+
The engine currently passes about{" "}
3533
<a href={href(import.meta.resolve("./test262.tsx"))}>
3634
{((metrics.results.pass / metrics.total) * 100).toFixed()}% of the
37-
test262 test suite
35+
Test262 test suite
3836
</a>
39-
. However development is ongoing and we are quickly improving the
40-
engine. If you are interested in the project, please check out the{" "}
41-
<a href="https://github.com/trynova/nova">GitHub repository</a>{" "}
42-
and or join our{" "}
43-
<a href="https://discord.gg/bwY4TRB8J7">Discord server</a>{" "}
44-
where the core team resides and where we discuss development.
37+
and is considered ready for small-scale deployment. If you are
38+
interested in the project, please check out the{" "}
39+
<a href="https://github.com/trynova/nova">GitHub repository</a> and or
40+
join our <a href="https://trynova.zulipchat.com">Zulip chat</a> where
41+
the core team resides and where we discuss development.
4542
</p>
4643
<section>
4744
<h2>Latest Blog Posts</h2>

0 commit comments

Comments
 (0)