• Stars
    star
    3,640
  • Rank 12,155 (Top 0.3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

the only javascript runtime to hit no.1 on techempower πŸ”₯

Just Gitpod ready-to-code

A very small v8 javascript runtime for linux only

Binder

Build and Run

Currently working on modern linux (debian/ubuntu and alpine tested) on x86_64

# download and run the build script
sh -c "$(curl -sSL https://raw.githubusercontent.com/just-js/just/current/install.sh)"
# install just binary to /usr/local/bin
make -C just install
# export the just home directory
export JUST_HOME=$(pwd)/just
export JUST_TARGET=$JUST_HOME
# if you don't want to install, add JUST_HOME to SPATH
export PATH=$PATH:$JUST_HOME
# run a shell
just

Create a new Application

# initialise a new application in the hello directory
just init hello
cd hello
# build hello app
just build hello.js --clean --static
./hello

Command Line Options

Run a Just shell/repl

just

Pipe a script to stdin

cat hello.js | just --

Eval some Javascript passed as an argument

just eval "just.print(just.memoryUsage().rss)"

Run a script

just hello.js

Initialise a new project and build it

just init hello
cd hello
just build

Clean a built project

just clean

Documentation

Coming soon...

Philosophy/Goals

  • small, secure, robust and performant js runtime for linux
  • small codebase. easy to understand and hack
  • very simple layer on top of system calls, v8 and c/c++ standard libraries
  • minimal use of classes/function templates and OO - "c" in javascript
  • favour return codes over exceptions
  • platform for building system software on linux in javascript
  • as close to native performance as possible
  • secure by default
  • avoid abstraction as much as possible. abstractions can be built in userland
  • commonjs modules, no support for ES modules
  • non-async by default - can do blocking calls and not use the event loop
  • event loop in JS-land. full control over epoll api
  • small standard library - leave as much to userland as possible. focus on primitives needed to build higher level abstractions
  • useful as a teaching/learning platform for linux system programming and learning more about javascript and v8 internals
  • small number of source files
  • minimal dependencies - g++ and make only
  • keep LOC as small as possible < 5k
  • allocate as little as possible on v8 heap