All Projects → nuscr → nuscr

nuscr / nuscr

Licence: GPL-3.0 License
A toolkit to manipulate Scribble-style multiparty protocols, based on classical multiparty session type theory.

Programming Languages

ocaml
1615 projects
Raku
181 projects
perl
6916 projects
shell
77523 projects
HTML
75241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to nuscr

gpool
gpool - a generic context-aware resizable goroutines pool to bound concurrency based on semaphore.
Stars: ✭ 84 (+425%)
Mutual labels:  concurrency
syncs
Concurrency and synchronization primitives
Stars: ✭ 81 (+406.25%)
Mutual labels:  concurrency
esm
Lightweight communicating state machine framework for embedded systems
Stars: ✭ 21 (+31.25%)
Mutual labels:  concurrency
Sworm
CoreData based Swift ORM
Stars: ✭ 70 (+337.5%)
Mutual labels:  concurrency
swoole-futures
⏳ Futures, Streams & Async/Await for PHP's Swoole asynchronous run-time.
Stars: ✭ 100 (+525%)
Mutual labels:  concurrency
concurrency-kit
🚄 Concurrency abstractions framework for Apple Platforms [Task, Atomic, Lock, Operation, etc.].
Stars: ✭ 17 (+6.25%)
Mutual labels:  concurrency
gotopus
Gotopus is a minimalistic tool that runs arbitrary commands concurrently.
Stars: ✭ 17 (+6.25%)
Mutual labels:  concurrency
torrent client
A Bit Torrent downloader written in Crystal.
Stars: ✭ 23 (+43.75%)
Mutual labels:  concurrency
AtomicKit
Concurrency made simple in Swift.
Stars: ✭ 88 (+450%)
Mutual labels:  concurrency
trading sim
📈📆 Backtest trading strategies concurrently using historical chart data from various financial exchanges.
Stars: ✭ 21 (+31.25%)
Mutual labels:  concurrency
drone-cortexm
ARM® Cortex®-M platform crate for Drone, an Embedded Operating System.
Stars: ✭ 31 (+93.75%)
Mutual labels:  concurrency
context-propagation
Propagate snapshots of ThreadLocal values to another thread
Stars: ✭ 15 (-6.25%)
Mutual labels:  concurrency
orc
Orc programming language implementation
Stars: ✭ 34 (+112.5%)
Mutual labels:  concurrency
piker
#nontina, #paperhands,, #pwnzebotz, #tradezbyguille
Stars: ✭ 63 (+293.75%)
Mutual labels:  concurrency
async-oneshot
A fast, small, full-featured, no-std compatible oneshot channel
Stars: ✭ 55 (+243.75%)
Mutual labels:  concurrency
JTK
JTK is a library designed for writing applications and libraries in C. It provides core utilities such as collections, unit testing, I/O streams, threads and much more.
Stars: ✭ 25 (+56.25%)
Mutual labels:  concurrency
MultiHttp
This is a high performance , very useful multi-curl tool written in php. 一个超级好用的并发CURL工具!!!(httpful,restful, concurrency)
Stars: ✭ 79 (+393.75%)
Mutual labels:  concurrency
gotp
(Experimental) Actors and an OTP clone, implemented in Go
Stars: ✭ 21 (+31.25%)
Mutual labels:  concurrency
awaitchannel
Go-style concurrency and channels with Python 3.5 and asyncio
Stars: ✭ 21 (+31.25%)
Mutual labels:  concurrency
vercors
The VerCors verification toolset for verifying parallel and concurrent software
Stars: ✭ 30 (+87.5%)
Mutual labels:  concurrency

𝝼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.

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].