首先,感謝你考慮為 Zen C 做貢獻!正是像你這樣的人讓這個項目變得偉大。
我們歡迎各類貢獻!無論是修復 Bug、完善文檔,還是提出新功能建議。
貢獻的一般工作流程如下:
- Fork 倉庫:使用標準的 GitHub 工作流程將倉庫 Fork 到你自己的賬戶。
- 創建功能分支:為你的功能或 Bug 修復創建一個新分支。這有助於保持你的更改井然有序,並與主分支分離。
git checkout -b feature/NewThing
- 進行更改:編寫你的代碼或文檔更改。
- 驗證:確保你的更改按預期工作,並且沒有破壞現有功能(參見 運行測試)。
- 提交拉取請求:將你的分支推送到你的 Fork,並向 Zen C 主倉庫提交拉取請求 (PR)。
我們使用 GitHub Issues 和 Pull Requests 來追蹤錯誤和功能。為了幫助我們保持品質:
- 使用模板: 打開 Issue 或 PR 時,請使用提供的模板。
- 錯誤報告: 用於報告錯誤。
- 功能請求: 用於建議新功能。
- 拉取請求: 用於提交程式碼更改。
- 描述詳細: 請提供儘可能多的細節。
- 自動檢查: 我們有一個自動工作流程,用於檢查新 Issues 和 PRs 的描述長度。如果描述太短(< 50 個字元),它將自動關閉。這是為了確保我們有足夠的資訊來幫助您。
- 遵循代碼庫中現有的 C 風格。保持一致性是關鍵。
- 你可以使用提供的
.clang-format文件來格式化你的代碼。 - 保持代碼整潔可讀。
如果你想擴展編譯器,這里有一個代碼庫的快速導覽:
- 解析器 (Parser):
src/parser/- 包含遞歸下降解析器的實現。 - 代碼生成 (Codegen):
src/codegen/- 包含將 Zen C 轉換為 GNU C/C11 的轉譯邏輯。 - 標準庫 (Standard Library):
std/- 標準庫模塊,使用 Zen C 本身編寫。
在開發過程中,測試套件是你最好的朋友。請在提交 PR 之前確保所有測試通過。
使用默認編譯器(通常是 GCC)運行完整的測試套件:
make test為了在開發過程中節省時間,可以運行單個測試文件:
./zc run tests/test_match.zcZen C 支持多種 C 編譯器作為後端。你可以專門針對它們運行測試:
Clang:
./tests/run_tests.sh --cc clangZig (cc):
./tests/run_tests.sh --cc zigTCC (Tiny C Compiler):
./tests/run_tests.sh --cc tcc- 確保你為任何新功能添加了測試。
- 確保所有現有測試通過。
- 如果合適,更新文檔(
docs/、translations/或README.md中的 Markdown 文件)。 - 在 PR 描述中清晰地描述你的更改。鏈接到任何相關的問題。
感謝你的貢獻!