{"id":13608433,"url":"https://github.com/glossopoeia/boba","last_synced_at":"2026-02-18T09:43:35.886Z","repository":{"id":37682179,"uuid":"382699413","full_name":"glossopoeia/boba","owner":"glossopoeia","description":"A general purpose statically-typed concatenative programming language.","archived":false,"fork":false,"pushed_at":"2023-04-28T00:56:16.000Z","size":6174,"stargazers_count":51,"open_issues_count":8,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-07T14:39:02.867Z","etag":null,"topics":["compiler","concatenative","language","programming-language","type-inference"],"latest_commit_sha":null,"homepage":"","language":"F#","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/glossopoeia.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-07-03T19:57:20.000Z","updated_at":"2024-10-02T15:15:08.000Z","dependencies_parsed_at":"2024-04-16T07:47:54.452Z","dependency_job_id":"a9733cc0-25d5-4254-81cd-ffc0bb0d3813","html_url":"https://github.com/glossopoeia/boba","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/glossopoeia%2Fboba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glossopoeia%2Fboba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glossopoeia%2Fboba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glossopoeia%2Fboba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glossopoeia","download_url":"https://codeload.github.com/glossopoeia/boba/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248605087,"owners_count":21132106,"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":["compiler","concatenative","language","programming-language","type-inference"],"created_at":"2024-08-01T19:01:27.217Z","updated_at":"2026-02-18T09:43:31.569Z","avatar_url":"https://github.com/glossopoeia.png","language":"F#","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Boba - A Structured Concatenative Language\n\nBoba is an early-stage, general purpose [concatenative](https://concatenative.org/) programming language.\n\nKey features include:\n1. Expressive, mostly implicit static types and kinds\n2. Language-incorporated unit and property tests + runners\n3. Algebraic effects via scoped effect handlers\n4. Algebraic data types and pattern matching on constructors\n5. Compile-time resolved function overloading\n6. Structurally typed tuples, records and variants\n8. Byte-code VM-in-Go backend with straight-forward first-order FFI access\n9. Familiar looping, branching, and variable definition syntax constructs\n\n## Hailstone Example\n\n```\nfunc is-even n = n 2 rem-i32 0 eq-i32\n\nabout :\n/// The `hailstone` function is sometimes named that because of how the values\n/// 'bounce' up and down (like hail in a storm cloud) as the sequence computes.\nrec func hailstone n =\n    switch {\n        | n 1 eq-i32 =\u003e []\n        | n is-even  =\u003e n 2 div-i32 hailstone\n        | else       =\u003e 3 n mul-i32 inc-i32 hailstone\n    }\n    n cons-list\n\ntest hailstone-1? = 1 hailstone is [1]\ntest hailstone-2? = 2 hailstone is [1, 2]\ntest hailstone-3? = 3 hailstone is [1, 2, 4, 8, 16, 5, 10, 3]\ntest hailstone-6? = 6 hailstone is [1, 2, 4, 8, 16, 5, 10, 3, 6]\n\nexport { hailstone }\n```\n\nSee the `test/` folder for many more examples of Boba syntactic and semantic features.\n\n## Building from source\n\nThe Boba compiler is currently implemented in F#. Recommended to have both .NET 6 and Go language version 1.18 installed on the system before building. This repository is [Gitpod](https://gitpod.io/) compatible and will automatically create a container capable of building and running the compiler.\n\nExample build-and-run command:\n\n```\ndotnet run --project Boba.Compiler compile test/while-expr\n```\n\nThis will build the compiler, then `compile` the `test/while-expr.boba` file in the tests directory into an executable and then run it.\n\nTo use Boba's inline testing features, simply replace `compile` with `test`:\n\n```\ndotnet run --project Boba.Compiler test test/ackermann\n```\n\nThis will run all the tests present in the `test/ackermann.boba` file and report on their success/failure.\n\nTo run a test or program without the current runtime debug trace, include a `release` flag:\n\n```\ndotnet run --project Boba.Compiler test test/hailstone release\n```\n\n## Installation\n\nInstallers and binary packages are not yet available while the compiler CLI further stabilizes.\n\n## License\n\nBoba is available and distributed under the terms of the MIT license. See LICENSE for details.\n\n## Roadmap\n\nIn no particular order, and missing some potential work that may take priority:\n\n- Community feature: Better showcase examples\n- Ecosystem feature: Flesh-out primitives library further\n- Codegen feature: Compile some Boba functions to Go rather than byte-code","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglossopoeia%2Fboba","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglossopoeia%2Fboba","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglossopoeia%2Fboba/lists"}