Giter Club home page Giter Club logo

nuscr's Introduction

𝝼Scr (nuScr) CI status

A toolkit to manipulate Scribble-style multiparty protocols, based on classical multiparty session type theory. The toolkit provides means to define global protocols, project to local protocols, convert local protocols to a CFSM representation, and generate OCaml code for protocol implementations.

You can quickly try the live version here.

How to install

The easiest way to install is to use opam via

  opam install nuscr

then you can check your installation via

  nuscr --help

which prints help and usage information.

Development

We use the dune build system. To contribute, clone the repo and run

  opam pin . --with-version=dev

to pin the nuscr version to dev, and then run

  dune build

to build.

You can run the executable by

  dune exec nuscr -- [args]

where [args] are the arguments to the main CLI program.

You can run the tests via

  dune runtest

When you submit a pull request, the continuous integration system will build, run tests and check the code formatting. You may find utils/fmt.sh helpful for formatting the code.

Please also remember to update the CHANGES.md file in order to keep track of the changes in each version.

Goals and Non-goals

Our vision of nuScr is to provide a simple and lightweight implementation based on multiparty session types (MPST). We aim to make it easy for researchers to extend the original MPST, and to prototype implementations. A future goal is to provide a certified implementation (extracted from Coq).

With that said, nuScr is not ready for production (better use Scribble), and it will not be compatible with Scribble. Scribble has been extended beyond the original MPST to model checking with automata, whereas we wish to stick to the top-down approach of original MPST. NuScr is likely to be not so user-friendly in the current form, and may remain so in the future.

nuscr's People

Contributors

becharrens avatar fangyi-zhou avatar fferreira avatar kit-ty-kate avatar

Stargazers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.