{"id":16936519,"url":"https://github.com/jonhoo/simio","last_synced_at":"2025-04-11T19:07:01.166Z","repository":{"id":21995482,"uuid":"25320516","full_name":"jonhoo/simio","owner":"jonhoo","description":"I/O Automata Simulator","archived":false,"fork":false,"pushed_at":"2020-07-16T12:41:22.000Z","size":120,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-11T01:48:31.349Z","etag":null,"topics":["automata","distributed-systems","simulation","visualization"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonhoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-16T20:33:16.000Z","updated_at":"2024-07-17T23:19:34.000Z","dependencies_parsed_at":"2022-08-20T04:21:46.187Z","dependency_job_id":null,"html_url":"https://github.com/jonhoo/simio","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Fsimio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Fsimio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Fsimio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhoo%2Fsimio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonhoo","download_url":"https://codeload.github.com/jonhoo/simio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248465313,"owners_count":21108244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automata","distributed-systems","simulation","visualization"],"created_at":"2024-10-13T20:57:12.590Z","updated_at":"2025-04-11T19:07:01.144Z","avatar_url":"https://github.com/jonhoo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"simio is an [I/O Automata](http://groups.csail.mit.edu/tds/papers/Lynch/ioa-leavens.pdf)\nsimulator, that aims to provide students of distributed systems with\ntools for visualizing the behaviour of I/O automata in arbitrary\nnetworks.\n\nTo build the toolkit, run `make` in the root of the repository.\n\n## Writing automata\n\nThe simulator expects automata definitions to be written in a thin\nDomain-Specific Language that wraps Python. Example implementations of\ncommon distributed algorithms can be seen in\n[`examples/specs`](examples/specs/). The language and simulation is more\nthoroughly described in the tech report, which can be generated in the\n`doc/` directory using `make report.pdf`.\n\nWhen writing specifications, there are a few special pieces of state\navailable to you:\n\n - `self.i` is a unique per-node identifier\n - in outgoing transitions (i.e., those defined as tasks that have a\n   `Transition-Output`), a variable named `to` holds the unique\n   identifier of the neighbour currently being sent to.\n - in incoming transitions (i.e., those that appear in\n   `Signature-Input`, and `connect` with an outgoing transition), a\n   variable named `fr` holds the unique identifier of the neighbour that\n   sent the current message.\n\nIn addition, an automata can, at any point, call the `mark` function to\nchange the color of the current node in the visualization, or the\n`label` function to change the textual annotation for that node.\n\nThe simio parser, `src/parser/parser.py`, should be invoked on the\nautomaton specification to generate an executable automaton file:\n\n    # Note that the output file *must* currently be called wtf.py\n    ./src/parser/parser.py -f examples/specs/paxos.ioa \u003e wtf.py\n\n## Defining network graphs\n\nA network graph should first be defined using the Graphviz [DOT\nformat](http://www.graphviz.org/content/dot-language). All edges\nrepresent a FIFO channel, and all nodes in the graph will be running a\nsingle instance of the automaton. Example graphs can be seen in\n[`examples/graphs`](examples/graphs/).\n\n## Visualizing behavior\n\nTo visualize how a given automaton behaves on a given graph, invoke the\nsimulator using:\n\n    ./src/simulator/simulator.py -s .2 -g examples/graphs/complete.gv\n\nThis will open up a live view of the simulation in a new window, powered\nby the simio [renderer](src/renderer/src/renderer/). If nothing opens,\nyou're probably missing `python2-pyinotify`. The `-s` option specifies\nthe time delay between each step of the simulation, and allows speeding\nup or slowing down the visualization. `-t` can be used to keep every\nintermediate visualization of the run.\n\nThe simulator's `STDOUT` will contain anything printed inside the\nrunning automaton instances, while `STDERR` will contain messages from\nthe simulator.\n\n## Included examples\n\nTo run one of the included examples, call `make`, and then run one of\nthe scripts in [`examples/demos`](examples/demos). Demos for\nBellman-Ford, Paxos, Peterson's leader-election algorithm, and Luby\nMaximal Independent Set are given. You might want to run the examples\nwith `-s .2` so the simulation does not run too quickly to follow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhoo%2Fsimio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonhoo%2Fsimio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhoo%2Fsimio/lists"}