A tiny JavaScript runtime built on QuickJS-ng and libuv, targeting modern ECMAScript and WinterTC compliance.
txiki.js is a tiny JavaScript runtime built on the QuickJS-ng engine and libuv platform layer. It provides a lightweight environment for running JavaScript code with support for modern ECMAScript standards, Web Platform APIs, and system-level operations like networking and file I/O. It aims to be WinterTC compliant and can compile scripts into standalone executables.
Developers needing a minimal, embeddable JavaScript runtime for scripting, tooling, or lightweight server applications, especially those prioritizing small footprint and modern JavaScript features.
It offers a compact alternative to larger runtimes like Node.js, with a focus on performance, standards compliance, and the ability to create standalone binaries, making it ideal for resource-constrained or specialized use cases.
A tiny JavaScript runtime
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built on QuickJS-ng, it supports state-of-the-art JavaScript features and aims for WinterTC compliance, as stated in the README, ensuring up-to-date language support.
Described as 'tiny' and 'small', it offers a compact runtime with reduced memory footprint and faster startup times compared to larger alternatives like Node.js.
Includes file I/O, child processes, signal handling, and low-level networking (TCP, UDP, Unix sockets), enabling robust system scripting and integration tasks.
The `tjs compile` command allows compiling JavaScript scripts into standalone binaries, simplifying deployment and distribution without external runtime dependencies.
Provides fetch, WebSocket, Console, and other web APIs, facilitating web-like development in a minimal environment, as highlighted in the features list.
Unlike Node.js, it lacks a vast npm library, restricting access to third-party modules and potentially increasing development time for complex functionality.
Getting started requires cloning and compiling from source using make, which is more involved than installing pre-packaged binaries from package managers.
As a niche project, it has fewer contributors and resources, leading to slower issue resolution and limited tutorials or community-driven help.
While efficient for I/O via libuv, QuickJS-ng may not match V8's performance in compute-heavy tasks, given its focus on minimalism over raw speed.