JavaScript Runtime: Difference between revisions

From FullJS
Jump to navigation Jump to search
(Created page with "A JavaScript runtime 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) A working '''systemd''' installation is required, as the runtime integrates with systemd for service m...")
 
No edit summary
Line 1: Line 1:
A JavaScript runtime 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.
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 =
= Supported operating systems =

Revision as of 07:05, 31 August 2025

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)

A working systemd installation is required, as the runtime integrates with systemd for service management.

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/ – Native C++ modules (.so), such as fs, process, v4l2, etc.
  • /usr/lib/fulljs_scope/ – JavaScript file defining the default global scope (globalscope.js)
  • /usr/share/javascript/fulljs/ – Path for dynamically loadable JavaScript modules (e.g., path, Dialog, etc.)