Cwerg
The best C-like language that can be implemented in 10kLOC.
Install / Use
/learn @robertmuth/CwergREADME
██████╗██╗ ██╗███████╗██████╗ ██████╗
██╔════╝██║ ██║██╔════╝██╔══██╗██╔════╝
██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ███╗
██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║
╚██████╗╚███╔███╔╝███████╗██║ ██║╚██████╔╝
╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝
To try out Cwerg, please follow quick_start_user.md
The best C-like language that can be implemented in 10kLOC
Cwerg aims to be a complete, compact and fast "from-scratch" compiler for a C-like language. It has no dependencies and consists of the following components:
-
Frontend (FE): Overview, Additional Docs, Code
A low-level C-like language with a Python inspired concrete syntax. Still under active development
-
Intermediate Representation (IR): Overview, Code
Defines an IR that serves as the interface between frontend and backend.
-
Backend (BE): Overview, Additional Docs, Code
Muti-target (currently: X86-64, Aarch64, Arm32).
Also suitable for other compilers and as a JIT.
To get started hacking on Cwerg please read quick_start_developer.md.
Philosophy
Most components are implemented twice (see rationale):
- spec/reference implementation: Python 3.10
- high performance implementation: C++20 (with limited STL usage)
Re-implementations in other languages are explicitly encouraged. A lot of code is table driven to facilitate that.
Cwerg de-emphasizes quality of the generated code (the hope is to come within 50% of state of the art compilers) in favor of a small code base that can be understood by a single developer and very fast translation times.
Explicit line number targets are in place to prevent feature creep:
- frontend: 10kLOC (current counts)
- backend 10kLOC (target independent code) + 5kLOC(per target (current counts) (We cheat a little bit and do not include various tables in these numbers.)
The translation speed target is 1000k LOC per sec using at most 4 cores on a 2020 era midrange desktop or high end laptop.
Inspirations
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
