Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alt-romes/onory
High-level language embedded in Haskell for specifying distributed algorithms/systems
https://github.com/alt-romes/onory
Last synced: 2 months ago
JSON representation
High-level language embedded in Haskell for specifying distributed algorithms/systems
- Host: GitHub
- URL: https://github.com/alt-romes/onory
- Owner: alt-romes
- License: bsd-3-clause
- Created: 2024-06-30T17:37:12.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-24T15:47:28.000Z (5 months ago)
- Last Synced: 2024-10-12T00:55:34.733Z (3 months ago)
- Language: Haskell
- Homepage:
- Size: 197 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Onory is a high-level language embedded in Haskell for
specifying distributed algorithms/systems using common
notation seen accross papers in the area. The built-in
interpreter enables a distributed system specified in Onory
to be compiled to an executable node.
Being able to execute the high-level specification of a
distributed protocol allows faster iteration and
observability during the development of existing, or novel,
protocols. Moreover, the executable derived from the
specification is automatically able to parse protocol
configuration options from the command line interface, and
trace all events being triggered and handled by the running
protocol, making experimentation easy.# Installation (WIP)
As a pre-requisite to using `onory`, you need to have a working installation of
the Glasgow Haskell Compiler and the Haskell build tool, Cabal. The lowest
friction way to get GHC/Cabal is using [GHCup](https://www.haskell.org/ghcup/).In certain distributions there may be up-to-date packaged versions of the
compiler (typically `ghc`) and of build tool (typically listed under
`cabal-install`). Note that only GHC == 9.4.8 and GHC == 9.8.2 are actively
tested.The `onoryc` tool compiles a standalone Onory specification into an executable
protocol. Under the hood, it's invoking Cabal to fetch the onory dependency and
GHC to compile the specification (recall that an Onory specification is embedded
in Haskell).You can install the `onoryc` tool by downloading it from this repository's master branch archive into `$PATH` and making it executable:
```
curl -LO https://raw.githubusercontent.com/alt-romes/onory/main/onoryc
chmod +x onoryc
```Copy one of the examples into a standalone `.hs` file and try compiling it with
```
./onoryc
```