First off, thank you for considering contributing to Coderive! It's people like you that make Coderive a great language.
Before creating a bug report, please check the existing issues to avoid duplicates.
When creating a bug report, include:
- Coderive version (
coderive --versionor from VERSION file) - Java version (
java -version) - Operating system (Android, Linux, macOS, Windows)
- Minimal code example that reproduces the issue
- Expected behavior vs actual behavior
Use the bug report template when submitting issues.
Enhancement suggestions are welcome! Please include:
- A clear use case (not just "add feature X")
- How it fits with Coderive's principles (Safe. Fast. Clear.)
- Example syntax if applicable
Use the feature request template when submitting suggestions.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests to ensure nothing breaks:
./gradlew test - Commit with a clear message:
git commit -m "Add amazing feature that does X" - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request against
main
Looking for something to work on? Check issues labeled good-first-issue or help-wanted. Feel free to ask questions on Discord or in the issue comments.
- Java 7 or later (Java 8+ recommended for development)
- Gradle (wrapper included, no manual install needed)
Build everything:
./gradlew build
Create runnable JAR:
./gradlew fatJar
Run all tests:
./gradlew test
Run parity validation suite:
java -cp build/libs/Coderive.jar cod.runner.CodPTACParityRunner
src/main/java/cod/
├── lexer/ # Targeted lexers (zero-copy, perfect hash)
├── parser/ # Pratt parser with backtracking
├── ast/ # Abstract syntax tree nodes
├── semantic/ # Type checking, policies, validation
├── interpreter/ # Runtime interpreter
├── ir/ # CodP-TAC IR container
├── ptac/ # Pattern TAC optimizer
└── runner/ # CLI runners (Command, REPL, Test)
- 2 spaces indentation (no tabs)
- ALL_CAPS for constants
- PascalCase for classes
- camelCase for methods and variables
- Javadoc for public APIs
- Add tests for new features
- Ensure all 53+ parity tests pass
- Invalid syntax should produce clear error messages
- Update README.md for user-facing changes
- Update website docs for language changes
- Add examples for new features
- Join Discord for questions and discussion
- Be respectful and follow the Code of Conduct
- Help others when you can
By contributing, you agree that your contributions will be licensed under the MIT License.