mirror of
https://github.com/DoneJS-Runtime/quickjs-done-nextgen.git
synced 2025-01-09 17:43:15 +00:00
Tweak intro and document differences with bellard/quickjs
This commit is contained in:
parent
a365f18c98
commit
0575d10da7
2 changed files with 69 additions and 19 deletions
65
docs/docs/diff.md
Normal file
65
docs/docs/diff.md
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
# Differences with bellard/quickjs
|
||||||
|
|
||||||
|
This project aims to be a drop-in replacement for those already using QuickJS.
|
||||||
|
Minimal API changes might be necessary.
|
||||||
|
|
||||||
|
## Community development
|
||||||
|
|
||||||
|
NG is developed in the open, interacting with the wider community and through
|
||||||
|
these interactions many improvements have already been made, including the incorporation
|
||||||
|
of patches previously maintained in other forks.
|
||||||
|
|
||||||
|
Each PR is reviewed, iterated on, and merged in GitHub.
|
||||||
|
|
||||||
|
To date, NG has had over 40 distinct contributors and over 400 PRs.
|
||||||
|
|
||||||
|
## Consistent release cadence
|
||||||
|
|
||||||
|
As the project moves forward, a steady cadence of releases has been maintained, with an
|
||||||
|
average of a new release every 2 months.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Since its inception testing has been a focus. Each PR is tested in over 50 configurations,
|
||||||
|
involving different operating systems, build types and sanitizers.
|
||||||
|
|
||||||
|
The `test262` suite is also ran for every change.
|
||||||
|
|
||||||
|
## Cross-platform support
|
||||||
|
|
||||||
|
In order to better support other platforms such as Windows the build system was
|
||||||
|
changed to use [CMake].
|
||||||
|
|
||||||
|
In addition, Windows is treated as a first class citizen, with the addition of support
|
||||||
|
for the MSVC compiler.
|
||||||
|
|
||||||
|
[CMake]: https://cmake.org/
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
While being an interpreter limits the performance in comparison with other engines which
|
||||||
|
use a JIT, several significant performance improvements have been made:
|
||||||
|
|
||||||
|
- Opcode fusion
|
||||||
|
- Polymorphic inline caching
|
||||||
|
- Memory allocation improvements
|
||||||
|
- Improved parse speeds
|
||||||
|
|
||||||
|
## New ECMAScript APIs
|
||||||
|
|
||||||
|
The main focus of NG is to deliver state-of-the-art JavaScript features. Typically once they
|
||||||
|
are stable (stage 4) but sometimes even at earlier stages. Here is a non-exhaustive list
|
||||||
|
of ES features present in NG:
|
||||||
|
|
||||||
|
- Resizable ArrayBuffer
|
||||||
|
- Float16Array
|
||||||
|
- WeakRef
|
||||||
|
- FinalizationRegistry
|
||||||
|
- Iterator Helpers
|
||||||
|
- Promise.try
|
||||||
|
- Error.isError
|
||||||
|
- Set operations
|
||||||
|
|
||||||
|
Some non-standard but widely used APIs have also been added:
|
||||||
|
|
||||||
|
- V8's `Error.prepareStackTrace` and `Error.stackTraceLimit`
|
|
@ -9,29 +9,18 @@ sidebar_label: Welcome
|
||||||
QuickJS is a small and embeddable JavaScript engine. It aims to support the latest
|
QuickJS is a small and embeddable JavaScript engine. It aims to support the latest
|
||||||
[ECMAScript] specification.
|
[ECMAScript] specification.
|
||||||
|
|
||||||
This project is a _fork_ of the [original QuickJS project] by Fabrice Bellard, after it went
|
This project is a _fork_ of the [original QuickJS project] by Fabrice Bellard and Charlie Gordon, after it went dormant, with the intent of reigniting its development.
|
||||||
dormant for several years, with the intent of reigniting its development.
|
|
||||||
|
|
||||||
In October 2023 [@bnoordhuis] and [@saghul] decided to fork the original project with
|
This project is focused on (but not limited to):
|
||||||
the aim of reigniting it. They reached out to the original authors ([@bellard] and [@chqrlie])
|
|
||||||
about their intentions.
|
|
||||||
|
|
||||||
As of December 2023 the initial goal was somewhat accomplished. [@bellard] resumed working on
|
|
||||||
the project and both parties have been pulling patches from each other since.
|
|
||||||
|
|
||||||
As of early 2024 both projects agree the proper path forward involves merging both projects
|
|
||||||
and combining the efforts. While that may take a while, since both projects diverged in certain
|
|
||||||
areas, there is willingness to go in this direction from both sides.
|
|
||||||
|
|
||||||
This fork is focused on (but not limited to):
|
|
||||||
|
|
||||||
- Community development
|
- Community development
|
||||||
- Testing
|
- Testing
|
||||||
- Cross-platform support
|
- Cross-platform support
|
||||||
- ES features
|
- ES features
|
||||||
|
|
||||||
:::note
|
You can check the differences with the original project [here.](./diff)
|
||||||
|
|
||||||
|
:::note
|
||||||
This site is under construction, the entire API is not yet documented.
|
This site is under construction, the entire API is not yet documented.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -42,7 +31,3 @@ for installing it from prebuilt binaries.
|
||||||
|
|
||||||
[ECMAScript]: https://tc39.es/ecma262/
|
[ECMAScript]: https://tc39.es/ecma262/
|
||||||
[original QuickJS project]: https://bellard.org/quickjs
|
[original QuickJS project]: https://bellard.org/quickjs
|
||||||
[@bellard]: https://github.com/bellard
|
|
||||||
[@bnoordhuis]: https://github.com/bnoordhuis
|
|
||||||
[@chqrlie]: https://github.com/chqrlie
|
|
||||||
[@saghul]: https://github.com/saghul
|
|
||||||
|
|
Loading…
Reference in a new issue