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
|
||||
[ECMAScript] specification.
|
||||
|
||||
This project is a _fork_ of the [original QuickJS project] by Fabrice Bellard, after it went
|
||||
dormant for several years, with the intent of reigniting its development.
|
||||
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.
|
||||
|
||||
In October 2023 [@bnoordhuis] and [@saghul] decided to fork the original project with
|
||||
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):
|
||||
This project is focused on (but not limited to):
|
||||
|
||||
- Community development
|
||||
- Testing
|
||||
- Cross-platform support
|
||||
- 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.
|
||||
:::
|
||||
|
||||
|
@ -42,7 +31,3 @@ for installing it from prebuilt binaries.
|
|||
|
||||
[ECMAScript]: https://tc39.es/ecma262/
|
||||
[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