Tagline: Trạng Mèo — ngôn ngữ mèo tự nuôi: đủ mạnh để viết chính mình.
Ngôn ngữ lập trình là cách con người mô tả ý tưởng bằng cú pháp chặt chẽ để máy tính hiểu và thực thi. Thay vì làm việc trực tiếp với dãy số 0–1, lập trình viên viết bằng ngôn ngữ bậc cao hơn; compiler và VM sẽ dịch xuống dạng máy hiểu được.
Self-hosting nghĩa là ngôn ngữ đủ trưởng thành để viết compiler (và thường là toolchain) của chính nó. Với Trạng Mèo, toàn bộ compiler và VM đều được viết bằng Trạng Mèo — vừa là bài toán kỹ thuật (vòng lặp gà-và-trứng), vừa là bằng chứng rằng ngôn ngữ đủ mạnh để “tự nuôi sống mình”.
Trạng Mèo là một ngôn ngữ lập trình self-hosting: compiler và VM đều bằng .meow. Dự án đang được refactor để tối ưu hóa register-based VM và bootstrap-interpreter (meow-alpha) — mục tiêu: khi đã chạy thì phải nhanh hơn, mạnh hơn.
Lưu ý:
meow-alphanằm ở repo riênggithub.zerozr99.workers.dev/LazyPaws/meow-alpha(hiện private) — README này mô tả workflow và cách bạn sẽ dùngmeow-alphakhi có access/binary.
- Self-hosted 100%: tất cả code compiler + VM bằng
.meow. - Đang refactor để tối ưu register allocator, instruction encoding, inline caches, và dispatch performance.
meow-alpha(bootstrap interpreter) —github.com/LazyPaws/meow-alpha— private (đang refactor).meow-vm(register-based virtual machine) —github.com/LazyPaws/meow-vm— hiện cũng private.
Ý tưởng chung:
meow-alpha(bootstrap interpreter) chạysrc/main.meow— đây là compiler viết bằng Trạng Mèo — và dùng compiler đó để dịch file.meowmục tiêu thành.meowb(Meow bytecode).meow-vmchạy trực tiếp file.meowb(nhanh hơn vì là bytecode).
+--------------+ runs +------------+ emits +-----------+ runs
| meow-alpha | ---------> | compiler | ---------> | .meowb | --------->
| (interpreter)| | (src/main) | | (bytecode)| meow-vm
+--------------+ +------------+ +-----------+
(optionally runs target) (fast execution)
- Biên dịch (chỉ build):
meow-alpha src/main.meow tests/test.meow
# Kết quả: build/test.meowb- Biên dịch rồi chạy ngay:
meow-alpha src/main.meow tests/test.meow --run
# Kết quả: build/test.meowb → meow-vm chạy build/test.meowb- Self-hosting (dùng compiler Trạng Mèo để dịch chính nó):
meow-alpha src/main.meow src/main.meow
# Kết quả: build/main.meowb- Dùng compiler đã biên dịch (bytecode) để compile/rerun file khác:
meow-vm build/main.meowb any_file.meow
# Kết quả: build/any_file.meowb (hoặc chạy tuỳ flag)
# Tái biên dịch compiler bằng meow-vm:
meow-vm build/main.meowb src/main.meow
# Kết quả: build/main.meowb- Clone Trạng Mèo repo như bình thường.
- Nếu bạn có access tới
meow-alpha(private):
# clone meow-alpha (SSH) - cần quyền truy cập
git clone [email protected]:LazyPaws/meow-alpha.git third_party/meow-alpha
# hoặc thêm như submodule
git submodule add [email protected]:LazyPaws/meow-alpha.git third_party/meow-alpha- Build hoặc copy binary
meow-alphavào PATH hoặc đặt ở repo root để dùng theo Quickstart.
Nếu không có quyền truy cập: chờ repo meow-alpha public hoặc yêu cầu tác giả (LazyPaws) cung cấp binary tạm.
Một số lựa chọn để đồng bộ Trạng Mèo và meow-alpha:
- Git submodule: dễ dev cục bộ; hoạt động nếu SSH key có quyền truy cập.
- Release artifacts:
meow-alphapublish binary trong GitHub Releases;Trạng MèoCI tải artifact. - GitHub Actions + permissions: dùng
actions/checkout@v4với token cócontents: readđể checkout repo private trong workflow. - Repository dispatch / workflow triggers: trigger cross-repo khi
meow-alphabuild xong.
.
├── README.md
├── src
│ ├── backend
│ │ ├── bytecodeStringifier.meow
│ │ ├── codeGenerator.meow
│ │ ├── compiler.meow
│ │ ├── constantPool.meow
│ │ ├── emitter.meow
│ │ ├── opCodes.meow
│ │ ├── registerAllocator.meow
│ │ ├── utils
│ │ │ └── makeCacheFile.meow
│ │ └── visitor
│ │ ├── expression.meow
│ │ ├── literal.meow
│ │ ├── statement.meow
│ │ └── visitor.meow
│ ├── frontend
│ │ ├── ast.meow
│ │ ├── checkType.meow
│ │ ├── diagnostic.meow
│ │ ├── lexer.meow
│ │ ├── parser.meow
│ │ └── token.meow
│ └── main.meow
└── tests
├── math.meow
├── meow.meow
├── simple.meow
├── super_test.meow
├── test_closure.meow
├── test_function.meow
├── test_has.meow
├── test_lexer.meow
├── test_lib.meow
├── test.meow
├── test_switch.meow
└── test_unless.meow
- Hoàn thiện refactor
meow-alpharồi public repo hoặc publish binary release. - Tối ưu register allocator, instruction combining, và inline caches cho VM.
- Thêm CI để build
meow-alphavà upload release artifact;Trạng MèoCI tải artifact để chạy test. - Thêm test coverage & benchmarks để theo dõi hiệu năng (micro-benchmarks cho instruction dispatch, inline cache hits, v.v.).
Tác giả (LazyPaws) vẫn chưa nghĩ ra nên chọn LICENSE nào
Nếu bạn muốn đóng góp:
- Mở issue nếu bạn gặp bug hoặc có feature request.
- PR cho tests, docs, hoặc tối ưu hóa nhỏ (register allocator, emitter).
- Nếu bạn có access
meow-alpha, test workflow self-hosting và report bootstrap edge-cases.
Tác giả: LazyPaws — (GitHub: github.com/LazyPaws).
- Tác giả: LazyPaws hiện đang là học sinh lớp 9
- GitHub: https://github.com/LazyPaws
- Note: Tác giả là người cầu toàn nên thấy meow-alpha, meow-vm vẫn chưa được tối ưu nên hơi khó chịu nên chưa public