Skip to content

just-js/just

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
September 4, 2022 23:21
July 18, 2021 05:01
November 15, 2020 07:56
October 15, 2020 22:38
September 4, 2022 23:21
August 15, 2021 17:59
August 15, 2021 17:59
December 18, 2020 07:39
July 18, 2021 09:53
September 4, 2022 23:21
September 4, 2022 23:21
September 4, 2022 23:21
September 4, 2022 23:21
December 19, 2020 10:33
December 14, 2020 18:19

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