{"id":21675067,"url":"https://github.com/thaliaarchi/nebula","last_synced_at":"2026-02-28T13:07:12.508Z","repository":{"id":57510743,"uuid":"190671395","full_name":"thaliaarchi/nebula","owner":"thaliaarchi","description":"Compiler for the stack-based Whitespace language with LLVM back end.","archived":false,"fork":false,"pushed_at":"2020-08-30T19:06:23.000Z","size":442,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-19T01:28:51.770Z","etag":null,"topics":["compiler","go","llvm","llvm-ir","programming-languages","whitespace-language"],"latest_commit_sha":null,"homepage":"","language":"Go","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/thaliaarchi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-07T01:13:55.000Z","updated_at":"2025-02-15T13:43:42.000Z","dependencies_parsed_at":"2022-09-26T17:01:02.534Z","dependency_job_id":null,"html_url":"https://github.com/thaliaarchi/nebula","commit_stats":null,"previous_names":["andrewarchi/wspace","andrewarchi/nebula"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thaliaarchi/nebula","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliaarchi%2Fnebula","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliaarchi%2Fnebula/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliaarchi%2Fnebula/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliaarchi%2Fnebula/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thaliaarchi","download_url":"https://codeload.github.com/thaliaarchi/nebula/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliaarchi%2Fnebula/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29935000,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:00:17.143Z","status":"ssl_error","status_checked_at":"2026-02-28T12:59:13.669Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","go","llvm","llvm-ir","programming-languages","whitespace-language"],"created_at":"2024-11-25T13:50:52.759Z","updated_at":"2026-02-28T13:07:12.482Z","avatar_url":"https://github.com/thaliaarchi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nebula\n\nNebula is an optimizing compiler for stack-oriented programming\nlanguages that targets LLVM IR.\n\n## Requirements\n\n- Go 1.13 or later\n- LLVM source\n- Graphviz to render graphs\n\n## Project Goals\n\n### Compilation\n\n- Nebula IR\n  - Operations\n    - Arithmetic - add, sub, mul, div, mod\n    - Stack - push registers, pop length\n    - Heap - load, store\n    - I/O - read, print\n    - Control flow - jmp, conditional jmp, call, ret\n    - Assertions - zero divisor, stack underflow, ret underflow\n  - Memory\n    - Stack\n    - Heap - partitioned\n    - Call stack\n  - Static single assignment form\n    - [x] Stack access converted to indexed variables\n    - [x] Connected graph of basic blocks\n    - [x] Minimize stack pointer updates to once per block\n  - Interprocedural analysis\n    - [x] Constant stack folding and propagation\n    - [x] String concatenation\n    - [x] Dead code elimination\n    - [x] Call stack underflow detection\n    - [ ] Trap eliding\n    - [ ] Register allocation\n    - [ ] Reduction of arbitrary precision integers to fixed width\n    - [ ] Tail call optimization\n    - [ ] Heap access analysis\n      - [ ] Lifetime analysis\n      - [ ] Constant folding and propagation\n    - [ ] Contract assertions\n      - [ ] Using an SMT solver\n      - [ ] Abstract interpretation\n  - Targets\n    - [x] LLVM IR\n    - [ ] WebAssembly via Emscripten\n\n### Languages\n\n- High level language\n  - Abstracted away from the WS stack and heap\n  - Compiles to WS instruction set\n  - Memory safe\n- Assembly syntax language\n  - Very close to WS instruction set\n  - Assembly-like syntax\n  - Allows additional metadata for compiler\n  - Special compiler treatment of standard library functions\n- Whitespace language\n  - Direct representation of WS instruction set\n  - Follows WS language spec syntax\n\n## License\n\nThe Nebula project is licensed under the [MIT License](LICENSE.md).\nSubdirectories with code under differing licenses are marked with\nseparate license files.\n\n## Naming\n\nNebula's name is derived from the stellar gas clouds, nebulae. Nebulae\nare incredibly diffuse, yet form some of the most beautiful astronomical\nlandscapes. Similarly, of all programming languages, Whitespace is the\nleast dense in visible characters and despite its simplicity, is Turing\ncomplete. The name is also a call-out to the star-forming region\n[IC 1396](https://nitarp.ipac.caltech.edu/system/media_files/binaries/191/original/johnson2017sci.pdf)\nthat contains many nebulae including the famous Elephant's Trunk Nebula.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthaliaarchi%2Fnebula","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthaliaarchi%2Fnebula","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthaliaarchi%2Fnebula/lists"}