GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - runtimejs-comm/runtime: Lightweight JavaScript library operating system for the cloud

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

696 Commits
696 Commits

Folders and files

NameName
Last commit message
Last commit date
deps
deps
 
 
disk/boot
disk/boot
 
 
docs
docs
 
 
etc
etc
 
 
gen
gen
 
 
js
js
 
 
scripts
scripts
 
 
src
src
 
 
testcc
testcc
 
 
tools
tools
 
 
.eslintignore
.eslintignore
 
 
.eslintrc
.eslintrc
 
 
.gitignore
.gitignore
 
 
.npmignore
.npmignore
 
 
.runtimeignore
.runtimeignore
 
 
.travis.yml
.travis.yml
 
 
AUTHORS
AUTHORS
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile.build
Dockerfile.build
 
 
LICENSE
LICENSE
 
 
NOTICE
NOTICE
 
 
README.md
README.md
 
 
SConstruct
SConstruct
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 

Repository files navigation

runtime.js

npm

runtime.js is an open-source library operating system (unikernel) for the cloud that runs JavaScript, can be bundled up with an application and deployed as a lightweight and immutable VM image.

It's built on V8 JavaScript engine and uses event-driven and non-blocking I/O model inspired by Node.js. At the moment KVM is the only supported hypervisor.

It tries to be compatible with npm module ecosystem and supports some of the Node.js API.

WARNING: project is in development and not ready for production use.

Project goals

Short term

  • Update documentation for both the C++ kernel and the JS API and modules
  • Get Tests for the JS portion working
  • Maintain what's currently here
  • Maintain build tooling for easy development

Long term

  • Upgrade v8 to a more modern version
  • Implement threads with v8 Isolates

Installation

First thing is the command line tool runtime-cli, it will add runtime command to the shell. Type runtime to get full usage help.

npm install runtime-cli -g

Make sure QEMU is installed, it enables running applications locally.

brew install qemu           # OSX
sudo apt-get install qemu   # Ubuntu

Getting Started

Create new project and add index.js entry point file:

mkdir project
cd project
npm init
npm install runtimejs --save
echo "console.log('ok')" > index.js

Run project locally in QEMU:

runtime start

That's it, it should start and print ok in the console.

Optionally you can let it watch directory for changes and restart QEMU automatically:

runtime watch

How does it work?

There are two main components: operating system kernel and a JavaScript library.

The kernel is written in C++ and manages low-level resources like CPU and memory, runs JavaScript using embedded V8 engine. Library drives the entire system and manages hardware devices (usually virtualized by hypervisor).

Building the Kernel

Build the initial Docker image used for building the kernel, and build the kernel.

npm run build

To build the kernel in stages, assemble the Docker image used for building.

npm run prebuild

The kernel can be built without needing to run the prebuild step every time now.

npm run scons

Docs

API docs

Community

Modules and projects developed by the community for runtime.js

License

Apache License, Version 2.0

About

Lightweight JavaScript library operating system for the cloud

Resources

Readme
Apache-2.0 license

Contributing

Contributing
Activity
Custom properties

Stars

35 stars

Watchers

1 watching

Forks

5 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.