ReferenceSource · quickjs-oxide@240e8d37
Resources
New to Rust or to JavaScript engines? These links are a good place to start.
Rust
- The Rust Programming Language: the official book, from installation to ownership, traits and concurrency.
- Rust by Example: the language taught through short runnable examples.
- Learn Rust: the Rust project's index of books, guides and references.
- The Rust Performance Book: techniques for measuring and improving the speed and memory use of Rust programs.
JavaScript
- ECMAScript Language Specification: the standard that defines JavaScript, published by TC39.
- Test262: the official conformance test suite for ECMAScript; see JavaScript support for how quickjs-oxide runs it.
- MDN JavaScript reference: guides and a reference for every built-in object and statement.
QuickJS
- QuickJS: Fabrice Bellard's small embeddable JavaScript engine, the engine quickjs-oxide follows.
- QuickJS documentation: the
qjscommand line, the standard library modules and the C API. - QuickJS 2026-06-04 source: the release whose behavior quickjs-oxide matches.
- QuickJS on GitHub: the source repository.
Interpreters
- Crafting Interpreters: Robert Nystrom's book that builds a tree-walking interpreter and then a bytecode virtual machine.
- A Bytecode Virtual Machine: the book's second part, on bytecode, the dispatch loop and the value representation.
- Garbage Collection: the book's chapter on a mark-sweep collector and finding roots.
- The Garbage Collection Handbook: the standard reference on automatic memory management.
- Inline caching: an overview of the technique behind fast property access.
- Tracing garbage collection: an overview of mark-sweep and related collectors.
Profiling
- perf: the Linux profiler;
perf statcounts retired instructions for the project's benchmarks. - Valgrind: the instrumentation framework the tools below run on.
- Callgrind: exact per-function instruction counts, read with
callgrind_annotate. - Massif: a heap profiler that shows peak memory and what allocated it.
- DHAT: a heap profiler that counts allocations and how their bytes are used.
- nm: lists a binary's symbols with their sizes, used to read the size of the dispatch loop.
- Profile-guided optimization: building a Rust program with a recorded profile, with llvm-profdata to merge the profiles.
The engine's own diagnostics (qjs --gc-stats, --memory-report, --ic-stats and --disassemble) are described in the profiling guide; Optimizations explains what they count.
This project
- quickjs-oxide on GitHub: the source, the design notes under
docs/and the release history. - Issue tracker: bug reports and feature requests.
- Architecture and Embed quickjs-oxide: how the engine is built and how to use it.