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, libuv as the platform layer, wasm3 as the WebAssembly engine and curl as the HTTP / WebSocket client.
It targets ECMAScript 2020 and implements many web platform features.
See it in action here:
First head over to building and build the runtime.
$ ./build/tjs eval "console.log('hello world')"
hello world
$If you want to run a script you can use tjs run:
$ ./build/tjs run examples/hello_world.js
hello world
$Explore all the options:
$ ./build/tjs --help- alert, confirm, prompt (1)
- Console
- Crypto (2)
- Encoding API
- EventTarget
- fetch
- JSON modules
- Performance
- setTimeout, setInterval
- Streams API
- URL
- URLPattern
- URLSearchParams
- WebAssembly (3)
- WebSocket
- Web Workers API
(1): All of them are async.
(2): No subtle support.
(3): No tables, globals or memory support.
- TCP and UDP sockets
- Unix sockets / named pipes
- Signal handling
- File operations
- Child processes
- DNS (getaddrinfo)
- WASI
- Miscellaneous utility functions
See the full API documentation.
Other extras:
- Import directly from HTTP(S) URLs
- Import JSON files
- BigFloat and BigDecimal extensions
- FFI
- Builtin test runner
The builtin @tjs/std module exports the following:
- GNU/Linux
- macOS
- Windows (beta)
- Other Unixes (please test!)
CMake is necessary.
NOTE: The txiki.js build depends on a number of git submodules ([liffi], libuv and wasm3).
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.
# Get the code
git clone --recursive https://github.com/saghul/txiki.js --shallow-submodules && cd txiki.js
# Compile it!
make
# Run the REPL
./build/tjsBuilding has only been tested in 64bit Windows.
First make sure you have MSYS2 installed. The mingw64 and clang64 environments are currently tested.
Then install the required dependencies:
pacman -S git make pactoys
pacboy -S curl-winssl:p toolchain:p cmake:p ninja:pThese commands must be run in a MinGW64 or clang64 shell.
makeThis will build the executable just like on Unix. Note that at this point there are a number of dynamically linked libraries, so if you want to use the executable on a different system you'll need to copy those too. Check the list with ldd build/tjs.exe.
Make sure these commands are run from Windows Terminal (mintty, what MSYS2 provides is not supported).
make testAt this time txiki.js uses calendar versioning with the form YY.MM.MICRO.
Built with ❤️ by saghul and these awesome contributors.