{"id":16661246,"url":"https://github.com/snowleopard/stroll","last_synced_at":"2025-12-26T21:53:34.191Z","repository":{"id":50749503,"uuid":"184743689","full_name":"snowleopard/stroll","owner":"snowleopard","description":"Stroll: an experimental build system","archived":false,"fork":false,"pushed_at":"2023-05-27T22:08:38.000Z","size":99,"stargazers_count":40,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-01-19T13:44:55.165Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TeX","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/snowleopard.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.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-05-03T11:23:43.000Z","updated_at":"2024-12-19T02:25:27.000Z","dependencies_parsed_at":"2024-11-20T13:31:20.854Z","dependency_job_id":null,"html_url":"https://github.com/snowleopard/stroll","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Fstroll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Fstroll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Fstroll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Fstroll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowleopard","download_url":"https://codeload.github.com/snowleopard/stroll/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243293794,"owners_count":20268142,"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":[],"created_at":"2024-10-12T10:34:18.383Z","updated_at":"2025-12-26T21:53:34.145Z","avatar_url":"https://github.com/snowleopard.png","language":"TeX","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"# Stroll\n\n[![Build status](https://img.shields.io/github/actions/workflow/status/snowleopard/stroll/ci.yml?branch=master)](https://github.com/snowleopard/stroll/actions)\n\nStroll is an experiment in developing a language-agnostic build system that does\nnot require the user to specify dependencies between individual build tasks. By \"language-agnostic\" I mean the user does not need to learn a new language or\nspecial file format for describing build tasks -- existing scripts or\nexecutable files can be used as build tasks directly without modification.\n\nI call this build system Stroll because its build algorithm reminds me of\nstrolling through a park where you've never been before, trying to figure out an\noptimal path to your target destination, and likely going in circles\noccasionally until you've built up a complete mental map of the park.\n\nSee an introductory blog post here: https://blogs.ncl.ac.uk/andreymokhov/stroll/.\n\nI also gave a talk about Stroll at the IFL 2021 conference:\n[[pdf](https://github.com/snowleopard/stroll/releases/download/ifl-2021-abstract/ifl-2021-abstract.pdf)],\n[[video](https://www.youtube.com/watch?v=OTc8hLds800)].\n\n## How to try\n\nFirst, build and install Stroll, e.g. using Stack:\n\n```bash\nstack install\n```\n\nStroll uses the [`fsatrace` utility](https://github.com/jacereda/fsatrace) for\ntracking file-system operations when executing build tasks. You therefore need\nto have `fsatrace` on your `PATH`.\n\nNow you can try the included example:\n\n```bash\n$ cd examples/windows # or examples/linux\n$ stroll build\nExecuting build/lib.bat...\nExecuting build/main.bat...\nDone\n```\n\nStroll will create `.stroll` files when executing build scripts. For example,\nthe file `build/lib.bat.stroll` might look like this:\n\n```\nexit-code: ExitSuccess\noperations:\n  bin/lib/lib.o:\n    write: 16b8739d090e7c2ccd1bf38130c2d3b82071182bd4a53177c7bde08fcb0a719e\n  build/lib.bat:\n    read: 4e0ec561c9a00e3184f8cc3ad847cdecb0e7174ddb51144f81eb18c779927df5\n  src/lib/lib.h:\n    read: aea5eaf14b630a535e0d6ddd15adc721a43a112c2ef645d8a02d2e55cd5ce231\n  src/lib/lib.c:\n    read: 244f7e2a4de64201b6a44637de36d6dba9225c58d5f29debaf0f39f53ea770cf\n```\n\nTo visualise the dependency graph you can run Stroll with the `-g` flag,\nredirecting the output to a program that can render `dot` files:\n\n```bash\n$ stroll -g build | dot -Tpng -Gdpi=600 -o graph.png\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowleopard%2Fstroll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnowleopard%2Fstroll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowleopard%2Fstroll/lists"}