All Projects → agoric-labs → jessica

agoric-labs / jessica

Licence: Apache-2.0 license
Jessica - Jessie (secure distributed Javascript) Compiler Architecture

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
Batchfile
5799 projects
HTML
75241 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to jessica

rce
Distributed, workflow-driven integration environment
Stars: ✭ 42 (+55.56%)
Mutual labels:  distributed-computing
dcf
Yet another distributed compute framework
Stars: ✭ 48 (+77.78%)
Mutual labels:  distributed-computing
high-assurance-legacy
Legacy code connected to the high-assurance implementation of the Ouroboros protocol family
Stars: ✭ 81 (+200%)
Mutual labels:  distributed-computing
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (+3.7%)
Mutual labels:  distributed-computing
hydra-hpp
Hydra Hot Potato Player (game)
Stars: ✭ 12 (-55.56%)
Mutual labels:  distributed-computing
plinycompute
A system for development of high-performance, data-intensive, distributed computing, applications, tools, and libraries.
Stars: ✭ 27 (+0%)
Mutual labels:  distributed-computing
protoactor-python
Proto Actor - Ultra fast distributed actors
Stars: ✭ 78 (+188.89%)
Mutual labels:  distributed-computing
rust-threshold-secret-sharing
A pure-Rust implementation of various threshold secret sharing schemes
Stars: ✭ 129 (+377.78%)
Mutual labels:  secure-computation
pycondor
Build and submit workflows to HTCondor in Python
Stars: ✭ 23 (-14.81%)
Mutual labels:  distributed-computing
rust-paillier
A pure-Rust implementation of the Paillier encryption scheme
Stars: ✭ 78 (+188.89%)
Mutual labels:  secure-computation
gordo
An API-first distributed deployment system of deep learning models using timeseries data to predict the behaviour of systems
Stars: ✭ 25 (-7.41%)
Mutual labels:  distributed-computing
machinaris
An easy-to-use WebUI for crypto plotting and farming. Offers Plotman, MadMax, Chiadog, Bladebit, Farmr, and Forktools in a Docker container. Supports Chia, MMX, Chives, Flax, HDDCoin, and BPX among others.
Stars: ✭ 324 (+1100%)
Mutual labels:  distributed-computing
Archived-SANSA-Query
SANSA Query Layer
Stars: ✭ 31 (+14.81%)
Mutual labels:  distributed-computing
raven-distribution-framework
Decentralized Computing Backend for Artificial Intelligence, Web3, Metaverse, and Gaming Application
Stars: ✭ 31 (+14.81%)
Mutual labels:  distributed-computing
marsjs
Label images from Unsplash in browser - using MobileNet on Tensorflow.Js
Stars: ✭ 53 (+96.3%)
Mutual labels:  distributed-computing
ShadowClone
Unleash the power of cloud
Stars: ✭ 224 (+729.63%)
Mutual labels:  distributed-computing
tutorial
Tutorials to help you build your first Swim app
Stars: ✭ 27 (+0%)
Mutual labels:  distributed-computing
PPML-Resource
Materials about Privacy-Preserving Machine Learning
Stars: ✭ 93 (+244.44%)
Mutual labels:  secure-computation
dask-pytorch-ddp
dask-pytorch-ddp is a Python package that makes it easy to train PyTorch models on dask clusters using distributed data parallel.
Stars: ✭ 50 (+85.19%)
Mutual labels:  distributed-computing
nebula
A distributed block-based data storage and compute engine
Stars: ✭ 127 (+370.37%)
Mutual labels:  distributed-computing

Jessica - Jessie (secure distributed Javascript) Compiler Architecture

CircleCI

NOTE: Not yet production ready. Jessica is still being bootstrapped now, but you are welcome to contribute and discuss!

This directory contains Jessica, a compiler architecture implementing Jessie. In short, Jessie is a secure subset of Javascript that enables interconnected distributed applications running on different targets (such as other threads, OS processes, device drivers, networked hosts). It does this without granting excess authority to any Jessie submodule.

Jessica is a metacircular Jessie: it is a library designed to compile or interpret itself. Jessica consists of its own Jessie submodules in lib, and language platform-specific sources in lang/*. For each target, Jessica is an extension language library, as well as jesspipe, an executable (based on the Jessica library) for running Jessie modules.

The goal of Jessica is to be broad: providing the minimal Jessie environment for as many different language platforms as possible.

Grammar

For those coming to Jessica in search of the specific Jessie grammar, the sources can be found in (from bottom layer to top layer):

  • JSON the base object grammar.
  • Justin the pure expression grammar (no loops).
  • Jessie the top-level module grammar.

All of these grammars are written in a flavour of PEG (Parsing Expression Grammar), which is specified in its own syntax.

Implementations

It is intended for you to use Jessica's extension language library in your favourite language to add Jessie scripting capabilities in an idiomatic way.

Try running check.bat to verify all the combinations of Jessica that are supported by your operating system and build tools.

Here are notes for how to use the Jessica API for a given language platform, including how to develop the Jessica library using its source code and the jesspipe interpreter.

Node.js 8.5+

Node.js 8.5 and above can use Jessica directly as ES Modules (since Jessie is a subset of Javascript, with some additional endowed modules).

Until Node.js API documents are completed, you can read lang/nodejs/jesspipe.js for an example of how to use the Jessie API.

To run a jesspipe module, do:

$ ./lang/nodejs/jesspipe.bat MODULE -- INFILES...

or on Windows:

C:\> lang\nodejs\jesspipe.bat MODULE -- INFILES...

C99

FIXME: not yet

The C programming language, (ISO standard C 9899:1999) is a target language for the Jessica library.

Read lang/c/jessica.h for information on the C programming API provided by lang/c/jessica.c.

To run a jesspipe module, do:

$ ./lang/c/jesspipe.bat MODULE -- INFILES...

Another language not listed

See the next sections for instructions on how to bootstrap Jessica for a new language.

Bootstrapping Jessica for Interpreted Languages

This is how to bootstrap Jessica for an interpreted language:

  1. Create a new ./lang/NEWLANG directory, and adapt all the files in a similar ./lang/OLDLANG directory.

  2. Edit the main entry point, ./lang/NEWLANG/jesspipe.bat.

  3. Run the combinatorial check.bat to verify that your new implementation works with all the Jessica features:

$ ./check.bat NEWLANG
  1. Commit all the files in ./lang/NEWLANG to version control.

Bootstrapping Jessica for Compiled Languages

This is how to bootstrap Jessica for a compiled language implementation from a related language (or itself):

  1. Create a new ./lib/emit-NEWLANG.js.ts file, based off of an existing similar ./lib/emit-OLDLANG.js.ts. If you really don't want to use Typescript, you can just create ./lib/emit-NEWLANG.js directly.

  2. Run your existing jesspipe to execute your emitter to translate the Jessica ./lib master sources into a library in your new language's syntax, where SRC is the source file suffix for your language:

$ mkdir ./lang/NEWLANG
$ ./lang/OLDLANG/jesspipe.bat ./lib/emit-NEWLANG.js -- ./lib/*.js > ./lang/NEWLANG/jessica.SRC
  1. Write a ./lang/NEWLANG/jesspipe.SRC main program, along with any support files in ./lang/NEWLANG designed for linking against ./lang/NEWLANG/jessica.SRC.

  2. Create an executable ./lang/NEWLANG/jesspipe.bat script to compile and link the./lang/NEWLANG/jesspipe.exe main program from ./lang/NEWLANG/*.SRC using your new language's default compiler if the executable it is out-of-date, and then have jesspipe.bat run it.

  3. Run the combinatorial check.bat to verify that your new implementation works with all the Jessica features:

$ ./check.bat
  1. Be sure to commit all the ./lang/NEWLANG/*.SRC source files into version control (including jessica.SRC but not compiler output files), so that you can provide these bootstrap files to people who only have your language's compiler to bootstrap Jessica.

Acknowledgements

Much appreciation to Mark S. Miller (@erights) and the Agoric team for spearheading the work on secure Javascript standards and Jessie in particular.

Inspiration and a lot of implementation ideas taken from Ian Piumarta's Maru project, as well as other work from the Viewpoints Research Institute team.

Have fun! Michael FIG, 2019-01-03

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].