{"id":24092684,"url":"https://github.com/splo/life","last_synced_at":"2025-08-24T01:13:06.892Z","repository":{"id":37180041,"uuid":"218022106","full_name":"splo/life","owner":"splo","description":"Game of Life in Rust.","archived":false,"fork":false,"pushed_at":"2024-04-05T15:08:39.000Z","size":95,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-10T08:39:53.388Z","etag":null,"topics":["life","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/splo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-28T10:32:04.000Z","updated_at":"2022-10-19T15:33:57.000Z","dependencies_parsed_at":"2025-01-10T08:47:52.923Z","dependency_job_id":null,"html_url":"https://github.com/splo/life","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Flife","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Flife/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Flife/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splo%2Flife/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/splo","download_url":"https://codeload.github.com/splo/life/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240995346,"owners_count":19890717,"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":["life","rust"],"created_at":"2025-01-10T08:36:26.260Z","updated_at":"2025-02-27T08:28:45.301Z","avatar_url":"https://github.com/splo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Life\n\nA simple [Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) written in Rust.\n\n![Web UI Screenshot](./screenshot.png)\n\n## Features\n\n- [x] Continuously update the grid of cells.\n- [x] Beautifully display grids in the console!\n- [x] Serve a web page that displays the current grid in HTML.\n- [x] Start with a new randomized grid.\n- [x] Customize starting grid width, height and amount of living cells.\n- [x] Customize grid update frequency.\n\n## Usage\n\n- Download \u0026 unzip the [latest release](https://github.com/splo/life/releases/latest).\n- Then just run the single binary file:\n\n```bash\n./bin/life\n```\n\nExample output:\n\n```\nServer running at http://localhost:8090/\n/--------------------\\\n|   o   o            |\n|oo     o  o   o  o o|\n| o o o oooo ooo  oo |\n| o       o     o    |\n|oo  o   o  o    oo  |\n|  oo   oo       oooo|\n| o oo      o o    o |\n| o o  o o o  o o   o|\n|o          oo   o   |\n|    o oo o o ooo    |\n\\--------------------/\n```\n\n- Press `Ctrl-C` to stop the game.\n\nYou can specify the following options:\n\n```\nUSAGE:\n    life [OPTIONS]\n\nFLAGS:\n        --help       Prints help information\n    -V, --version    Prints version information\n\nOPTIONS:\n    -a, --alive \u003calive-ratio\u003e             Starting grid ratio of alive cells, between 0 and 1 [default: 0.3]\n    -h, --height \u003cgrid-height\u003e            Starting grid height, at least 3 [default: 10]\n    -w, --width \u003cgrid-width\u003e              Starting grid width, at least 3 [default: 20]\n    -p, --port \u003cport\u003e                     Web server port to listen to [default: 8090]\n    -f, --frequency \u003cupdate-frequency\u003e    Cell generation update frequency in Hz [default: 1.0]\n```\n\n## Development\n\n### Requirements\n\n- [Rust](https://rustup.rs/) 2018 edition.\n- [`git-chglog`](https://github.com/git-chglog/git-chglog) to generate a changelog.\n\n### Building, Testing and Running\n\nJust run standard [cargo](https://doc.rust-lang.org/cargo/) commands.\n\n```bash\n# Build and test\ncargo test\n# Build and run the debug version\ncargo run\n# Build and run the release version\ncargo run --release\n```\n\n### Committing\n\nThis project adheres to the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specifications.\n\nAll commit messages should follow the following template:\n\n```\n[optional type: ]\u003cdescription\u003e\n\n[optional body]\n```\n\n- No need for a `scope` part.\n- Only the `feat` and `fix` types are used.\n- Description should start with an upper case character and should **not** finish with a period.\n\n### Generating Changelog\n\nThis project follows the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) principle.\n\nIn order to generate a changelog, after committing your latest changes, run the following commands.\n\n```bash\ngit-chglog -c .chglog/changelog.yml \u003e ./CHANGELOG.md\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplo%2Flife","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsplo%2Flife","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplo%2Flife/lists"}