{"id":50798154,"url":"https://github.com/trevorswan11/ghoti","last_synced_at":"2026-06-12T16:30:51.291Z","repository":{"id":322321600,"uuid":"1089008552","full_name":"trevorswan11/ghoti","owner":"trevorswan11","description":"A modern, compiled systems language powered by C++23, Zig, and LLVM","archived":false,"fork":false,"pushed_at":"2026-06-12T02:07:13.000Z","size":6341,"stargazers_count":17,"open_issues_count":50,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T04:07:13.614Z","etag":null,"topics":["compiler","cpp23","llvm","zig"],"latest_commit_sha":null,"homepage":"","language":"C++","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/trevorswan11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-03T18:58:52.000Z","updated_at":"2026-06-10T12:02:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/trevorswan11/ghoti","commit_stats":null,"previous_names":["trevorswan11/conch","trevorswan11/porpoise","trevorswan11/ghoti"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trevorswan11/ghoti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trevorswan11%2Fghoti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trevorswan11%2Fghoti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trevorswan11%2Fghoti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trevorswan11%2Fghoti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trevorswan11","download_url":"https://codeload.github.com/trevorswan11/ghoti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trevorswan11%2Fghoti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34253927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","cpp23","llvm","zig"],"created_at":"2026-06-12T16:30:44.438Z","updated_at":"2026-06-12T16:30:46.343Z","avatar_url":"https://github.com/trevorswan11.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eghoti\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/C%2B%2B-23-blue?logo=c%2B%2B\u0026logoColor=white\" alt=\"C++23\" /\u003e \u003cimg src=\"https://img.shields.io/badge/Zig-0.16.0-orange?logo=zig\" alt=\"Zig 0.16.0\" /\u003e \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/trevorswan11/ghoti\" alt=\"License\" /\u003e\u003c/a\u003e \u003ca href=\"https://github.com/trevorswan11/ghoti/actions/workflows/format.yml\"\u003e\u003cimg src=\"https://github.com/trevorswan11/ghoti/actions/workflows/format.yml/badge.svg\" alt=\"Formatting\" /\u003e\u003c/a\u003e \u003ca href=\"https://github.com/trevorswan11/ghoti/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/trevorswan11/ghoti/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e \u003cimg src=\"https://raw.githubusercontent.com/trevorswan11/ghoti/coverage/coverage.svg\" alt=\"Coverage\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nA hand-crafted systems programming language.\n\u003cbr /\u003e\n\u003ca href=\"https://github.com/trevorswan11/ghoti/tree/main/doc\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003ca href=\"https://github.com/trevorswan11/ghoti/issues/new?labels=bug\u0026template=bug-report.md\"\u003eReport Bug\u003c/a\u003e\n\u0026middot;\n\u003ca href=\"https://github.com/trevorswan11/ghoti/issues/new?labels=enhancement\u0026template=feature-request.md\"\u003eRequest Feature\u003c/a\u003e\n\u003c/p\u003e\n\n## About the Project\n\nGhoti is a compiled systems language powered by LLVM, C++, and Zig. It attempts to combine select features from its more popular predecessors (i.e. Zig, Rust, C, C++) into a performant low-level language.\n\n### What's With the Name?\n\nThe name 'ghoti' was largely inspired by VSauce's short about [forbidden spellings](https://youtube.com/shorts/3ipFdRfFvK4?si=0cdgxtmpbaFZtFHM). With the help of some abuse of the English language, **'ghoti'** is pronounced **'fish'**:\n- gh pronounced as the /f/ in enough\n- o pronounced as the /ɪ/ in women\n- ti pronounced as the /ʃ/ in nation\n\n### Built With Zig!\n\nZig is used as the primary orchestrator for all things ghoti. Ghoti uses Zig's `build.zig` to provide a hermetic build. Necessary dependencies are automatically fetched and all required dependencies are built from source. This unified build system manages LLVM compilation (including tools like clang-format), kcov coverage reporting (on supported platforms), and core maintainer tools such as a custom archiver for releases. Ghoti aims to be reproducible anywhere that has a valid and correctly versioned Zig. **No manual linking or hoop-jumping is required to build ghoti, ever, on any platform**.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFull dependency breakdown\u003c/b\u003e\u003c/summary\u003e\n\nThe following are \"standalone\" dependencies, required and manually fetched by ghoti's build system.\n1. [Catch2](https://github.com/catchorg/Catch2)'s amalgamated source code is compiled from source for test running. It is automatically configured in the project's build script and links statically to the test builds.\n2. [cppcheck](https://cppcheck.sourceforge.io/) is compiled from source for static analysis. It is licensed under the GNU GPLv3, but the associated compiled artifacts are neither linked with output artifacts nor shipped with releases.\n3. [magic_enum](https://github.com/Neargye/magic_enum) is used as a utility to reflect on enum values. Is is licensed under the permissive MIT License.\n4. [fmt](https://github.com/fmtlib/fmt) is used as a formatting utility in place of std::format, which is not as performant or feature-full. Is is licensed under the permissive MIT License.\n5. [unordered_dense](https://github.com/martinus/unordered_dense) provides a vastly improved hash map/set implementation that is used over the inefficient C++ standard implementation. Is is licensed under the permissive MIT License.\n6. [gsl](https://github.com/microsoft/gsl) is used for enforcing best practices and supporting the standard template library. Is is licensed under the permissive MIT License.\n7. [CLI11](https://github.com/CLIUtils/CLI11) is a command line parser for C++ that provides a rich feature set with a simple and intuitive interface. Is is licensed under the permissive 3-Clause BSD License.\n8. [replxx](https://github.com/AmokHuginnsson/replxx) is a read evaluate print loop (REPL) library that provides a cross platform interactive shell that powers terminal debugging support. Is is licensed under the permissive BSD License.\n9. [LLVM 21.1.8](https://releases.llvm.org/21.1.0/docs/ReleaseNotes.html) is used as ghoti's compilation backend. It is manually compiled and statically linked against ghoti through the build system. It is licensed under the permissive Apache License 2.0, and has the following dependencies:\n    - [libxml2](https://gitlab.gnome.org/GNOME/libxml2), licensed under the MIT License\n    - [zlib](https://github.com/madler/zlib), licensed under the MIT License\n    - [zstd](https://github.com/facebook/zstd), licensed under the BSD License\n10. [libarchive](https://github.com/libarchive/libarchive) is used for packaging releases, making use of zlib and zstd to create `zip` and `zst` archives. It is license under the BSD 2-Clause License, but the associated compiled artifacts are neither linked with output artifacts nor shipped with releases.\n11. [kcov](https://github.com/SimonKagstrom/kcov) is used for test coverage reporting. The licensing of this tool and its dependencies are not explicitly listed here as they are not shipped with releases of ghoti. It has multiple dependencies, but they are all fetched lazily as kcov is only supported on Linux, MacOS, and FreeBSD:\n    - [curl](https://github.com/curl/curl) is required by all builds of kcov and is used for pulling the resulting badge. It has a single extra dependency which is chosen for cross-platform support:\n        - [mbedtls](https://github.com/Mbed-TLS/mbedtls)\n    - [binutils](https://sourceware.org/pub/binutils) is required for all kcov builds\n    - [elfutils](https://github.com/Techatrix/elfutils) is required on linux only. It has a single extra dependency:\n        - [argp-standalone](https://github.com/argp-standalone/argp-standalone)\n    - [libdwarf-code](https://github.com/davea42/libdwarf-code) is required on MacOS only.\n\nMany build functions heavily reference [allyourcodebase](https://github.com/allyourcodebase)'s implementations. Links to specific repositories can be found as a documentation comment above respective `build` functions.\n\n\u003c/details\u003e\n\n### Core Principles\n- Learn for the sake of learning\n- Experiment freely\n- KISS \u0026 DRY\n\nDevelopment speed is _not_ and _will never be_ a core principle of ghoti.\n\n### Hello, World!\n```ghoti\nimport std;\n\npub const main := fn(args: [][:0]u8): void {\n    const message := \"Hello, world!\";\n    std::io::println(message);\n};\n```\n\n## Getting Started\n### For Nix Users\nThis is by far the easiest way to get started with development. Just run `nix develop` to get started and automatically get the correct Zig version and some important development tools. Note that this provides optional preconfigured tools such as LLDB, Clangd, and ZLS to further enhance the developer experience.\n\n### For Others\nAll you need to get started with ghoti development is git and a valid 0.16.0 Zig installation, which can be found [here](https://ziglang.org/download/).\n\nIn either case, assuming you have the git and Zig prerequisites on your system, building ghoti is as easy as running:\n```sh\ngit clone https://github.com/trevorswan11/ghoti\ncd ghoti\nzig build --release\n```\n\n## Roadmap\n\n- [x] Lexical analysis\n- [x] Pratt parsing\n    - [x] Syntax documentation\n- [ ] Multi-pass Semantic Analysis (to support order independent declarations)\n    - [x] Symbol registration pass\n    - [x] Type resolution pass\n    - [ ] Type checking pass\n- [ ] LLVM Integration\n    - [ ] Build system integration\n        - [x] Compilation rules for Clang, LLD, and LLVM\n        - [x] In-house clang-format\n        - [x] Kaleidoscope examples\n        - [ ] Test parity through the build system\n    - [ ] Compiler backend integration\n\nSee the [open issues](https://github.com/trevorswan11/ghoti/issues) for a full list of proposed features (and known issues).\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\". Don't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feat/AmazingFeature`)\n3. Commit your Changes (`git commit -m '[feat]: Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feat/AmazingFeature`)\n5. Open a Pull Request against `dev`\n\n### Top contributors:\n\n\u003ca href=\"https://github.com/trevorswan11/ghoti/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=trevorswan11/ghoti\" alt=\"contrib.rocks image\" /\u003e\n\u003c/a\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n## Contact\n\n[![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/trevorswan11/) [![Gmail](https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white)](mailto:trevor.swan@case.edu)\n\nProject Link: [https://github.com/trevorswan11/ghoti](https://github.com/trevorswan11/ghoti)\n\n## Acknowledgments\n\n- [Zig](https://ziglang.org/)'s community, language features, and compiler source code\n- [Rust](https://rust-lang.org/)'s language features and philosophy\n- [cppreference](https://www.cppreference.com/)'s extensive C++ language documentation\n- [Thorsten Ball](https://thorstenball.com/)'s \"Writing an Interpreter/Compiler in Go\" two-book series\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrevorswan11%2Fghoti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrevorswan11%2Fghoti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrevorswan11%2Fghoti/lists"}