JavaScript Runtime
Jump to navigation
Jump to search
Built on the V8 JavaScript engine, using a single-threaded event loop with non-blocking I/O for main execution, and supporting optional Worker threads for parallel tasks.
Supported operating systems
FullJS is designed to run exclusively on Linux-based systems.
- Debian 12 or newer
- Ubuntu (and other Debian-based derivatives)
Supported architectures
- amd64
- arm64
- riscv64
- arm
Event System
- Uses epoll as the backend event notification facility for scalable, high-performance I/O.
- Optimized for large numbers of concurrent I/O operation.
Module System
- Supports only ES6 import/export syntax.
- Supports .js modules and native .so modules
Global Scope
Default global scope mimics a Web API-like environment but only relevant server-side features are exposed:
- Events (Event, EventTarget, CustomEvent)
- Timers (setTimeout, setInterval, etc.)
- Console (Console, console.log, console.error)
- Base64 utilities (atob, btoa)
- Encoding (TextEncoder, TextDecoder)
- Storage API (Storage, localStorage, sessionStorage)
- URL API (URL, URLSearchParams)
- Fetch API (fetch, Response, Request)
- Web Crypto API (crypto.getRandomValues, subtle.digest)
- Streams API (ReadableStream, WritableStream, TransformStream)
- Web Workers (Worker)
- Performance (performance.now)
- AbortController, AbortSignal
- DOMException
Directory Structure
FullJS follows the Linux Filesystem Hierarchy Standard (FHS) with specific locations for binaries, libraries, modules, and JavaScript files:
- /usr/bin/ – FullJS JavaScript binary (js), V8 snapshot (snapshot_blob.bin), and ICU data file (icudtl.dat)
- /usr/lib/fulljs/ – V8 shared libraries (e.g., libv8.so)
- /usr/lib/fulljs_modules/ – Dynamically loadable native .so C++ modules (e.g., fs, process, v4l2, etc.)
- /usr/lib/fulljs_scope/ – JavaScript file defining the scope (e.g. globalscope, workerglobalscope)
- /usr/share/javascript/fulljs/ – Dynamically loadable .js JavaScript modules (e.g., path, Dialog, etc.)