Skip to content
Snippets Groups Projects
Name Last commit Last update
..
README.md
README.org

Self-stabilizing Algorithms SimulAtor (Simulation d'Algorithmes autoStAbilisants)

Contributors Guide

Compiling sasa sources

You will need:

  • make
  • a set of tools installable via opam
    • dune
    • ocamlgraph
    • lutin (not for compiling actually, but for using sasa with custom demons)

cf the test job in the Gitlab CI script: <../../.gitlab-ci.yml> for a working installation process.

Graph editor

Based on dot + custom fields (algo, init) <../../lib/sasacore/topology.mli> <../../lib/sasacore/topology.ml>

This module is also used from rdbg (<../../test/rdbg-utils/dot.ml>)

The Algo API

<../../lib/algo/algo.mli> <../../lib/algo/algo.ml>

Functions registration is based on Dynlink + (Hash)tables

Users only need to see the mli file.

Demons

built-in + custom

<../../lib/sasacore/demon.mli> <../../lib/sasacore/demon.ml>

custom in Lutin that can generated by:

<../../lib/sasacore/genLutin.mli> <../../lib/sasacore/genLutin.ml>

Dealing with Algorithm values

<../../lib/sasacore/env.mli> <../../lib/sasacore/env.ml>

Representing Processes

<../../lib/sasacore/process.mli>

CLI arguments (sasa options)

<../../lib/sasacore/sasArg.mli> <../../lib/sasacore/sasArg.ml>

The Main Simulation

Splitted into 2 modules, so that the sasa rdbg plugin can reuse the step functions <../../lib/sasacore/sasa.ml>

<../../src/sasaMain.ml>

Generating Version Numbers

The <../../lib/sasacore/sasaVersion.ml> is automatically generated

  • by <../../Makefile.version>
  • using git tags that are automatically generated using the release job of the CI script, which is based on semantic-release-gitlab

In order to generate sensible version numbers, please follow in your commit messages the conventions described here: https://www.npmjs.com/package/conventional-changelog-eslint

This also permits to generate some Releases Notes: https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/releases

Pluging sasa on Synchronous tools

RIF

http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6/#outline-container-sec-5

(* Time-stamp: <modified the 13/03/2019 (at 17:45) by Erwan Jahier> *)

(** Reads on stdin a bool *)

val bool: bool -> Process.t -> string -> bool

<../../lib/sasacore/rifRead.mli> <../../lib/sasacore/rifRead.ml>

The rdbg plugin

https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/rdbg/blob/master/src/rdbgPlugin.mli https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lutils/blob/master/src/data.mli

<../../test/rdbg-utils/dot.ml>