txikia (basque): small, tiny.
txiki.js is a small and powerful JavaScript runtime. It's built on the shoulders of giants: it uses QuickJS as its JavaScript engine and libuv as the platform layer.
It was formerly named quv.
- Console API
- URL & URLSearchParams
- TextEncoder / TextDecoder APIs
- EventTarget / Event / CustomEvent
- XMLHttpRequest & fetch (including AbortController)
- Performance API
- Worker API
- Crypto API (just getRandomValues)
- WebAssembly (no tables, globals or memory support yet)
- TCP and UDP sockets
- TTY handles
- Unix sockets / named pipes
- Timers
- Signals
- File operations
- Event loop
- High-resolution time
- Miscellaneous utility functions
- Worker threads
- Child processes
- DNS (getaddrinfo)
- WASI (no memory support yet)
See the full API.
Other extras:
- Import directly from HTTP(S) URLs
- Import JSON files
- path module
- uuid module
- hashlib module
- BigFloat and BigDecimal extensions
- GNU/Linux
- macOS
- Windows (experimental)
- Other Unixes (please test!)
CMake is necessary.
# Get the code
git clone --recursive https://github.com/saghul/txiki.js --shallow-submodules && cd txiki.js
# Compile it!
make
# Run the REPL
./build/tjs
NOTE: The txiki.js build depends on a number of git submodules (e.g. curl, libuv). If you didn't already clone this repository recursively, make sure you initialize these submodules with git submodule update --init
before proceeding to the build.
txiki.js stands on shoulders of giants. It wouldn't be what it is today without these libraries:
In addition, txiki.js has these contributors to thank for their help.
Thank you all for making this project possible!