Giter Site home page Giter Site logo

fizzbee-io / fizzbee Goto Github PK

View Code? Open in Web Editor NEW
106.0 5.0 6.0 623 KB

Easiest-ever formal methods language! Designed for developers crafting distributed systems, microservices, and cloud applications

Home Page: https://fizzbee.io

License: Apache License 2.0

Starlark 1.54% Shell 0.13% Go 33.82% Python 60.71% ANTLR 3.80%
formal-languages formal-methods formal-verification ltl tla tla-plus tlaplus alloy alloy-analyzer pluscal

fizzbee's Introduction

fizzbee

A Formal specification language and model checker to specify distributed systems. Try out now at Fizzbee Online Playground. No installation needed.

Docs

If you are familiar with TLA+, this would be a quick start From TLA+ to Fizz

Run a model checker

For now, no prebuilt binaries. But you can try without installation at https://fizzbee.io/play

Or Install from source.

  • Bazel: You need bazel installed to build. Bazelisk is the recommended way to use bazel. Rename the binary to bazel and put it part of your PATH.
  • gcc: This project uses protobuf. Bazel proto_library does not use precompiled protoc, and it builds from scratch. It requires g++ compiler. sudo apt update; sudo apt install g++
./fizz path_to_spec.fizz  

Example:

./fizz examples/tutorials/19-for-stmt-serial-check-again/ForLoop.fizz 

Note: Generally, you won't need to rebuild the binary, but most likely will be required after each git pull.

Development

Bazel build

To run all tests:

bazel test //...

To regenerate BUILD.bazel files,

bazel run //:gazelle

To add a new dependency,

bazel run //:gazelle -- update-repos github.com/your/repo

or

gazelle update-repos github.com/your/repo

When making grammar changes, run

antlr4 -Dlanguage=Python3 -visitor *.g4

and commit the py files. TODO: Automate this using gen-rule, so the generated files are not required in the repository

Cross compilation to linux

Only the go model checker is cross compiled to linux.

On local machine, run bazel build //:fizzbee

To dockerize or to run on the linux server:

bazel build --platforms=//:linux_arm  //:fizzbee

or

bazel build --platforms=//:linux_x86  //:fizzbee

Python seems to work without platforms flag but unfortunately, passing platforms flag actually breaks the build.

fizzbee's People

Contributors

jp-fizzbee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fizzbee's Issues

Where are the doc files located?

Where are the files that contain the tutorials/blog posts that appear in the website? I didn't find them in this repo using text search so I'm assuming they are somewhere else.

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.