Contributing to V++
Yes contributions are welcome. V++ is MIT licensed and open source. Issues and pull requests are accepted on GitHub.
This is a young project (small maintainer team, fast moving main). We review PRs as we can; small, focused changes merge faster than large rewrites.
Good first contributions
| Area | Examples |
| Docs | Fix typos, clarify guides, add examples |
| Tests | .vpp test cases, cargo test coverage |
| Stdlib | std/* modules, registry packages |
| Extension | editor/vscode-vpp/ UX, snippets, docs |
| Examples | examples/, projects/ |
| Bug fixes | Link a repro in the issue first |
Language design changes (new syntax, breaking SPEC) open an issue first so we can discuss before you invest time.
Quick links
How to contribute
1. Issues first open an issue for bugs or feature ideas before large PRs
2. Fork & branch work on a feature branch off main
3. Test cargo test --all-targets; if touching codegen, cargo test --features codegen
4. Format cargo fmt, vpp fmt on any .vpp examples you change
5. PR describe what changed and why; link the issue
Code areas
| Area | Path |
| Lexer / parser | src/lexer, src/parser |
| Type checker | src/types |
| Interpreter | src/interp |
| Codegen | src/codegen |
| LSP | src/lsp, src/bin/vppls.rs |
| VS Code extension | editor/vscode-vpp/ |
| Docs | docs/ |
Commit messages
Use clear summaries: Fix …, Add …, Docs: … same style as existing history.
Releases (maintainers)
1. Bump the same version in Cargo.toml and editor/vscode-vpp/package.json
2. Update CHANGELOG.md and editor/vscode-vpp/CHANGELOG.md
3. Tag and push: git tag vX.Y.Z && git push origin main && git push origin vX.Y.Z
4. Confirm the Release workflow succeeds on GitHub Releases
License
By contributing, you agree your work is licensed under the project MIT license.
Building from source
Requirements
- Rust (stable) rustup.rs
- LLVM 22 + clang (for
codegenfeature) - Git (for git dependencies in tests)
Build
git clone https://github.com/shauryaR790/V-.git
cd V-
cargo build --release --features codegen,lsp
# Verify install: vpp doctor
# Restart the terminal after PATH changes
Windows:
$env:LLVM_SYS_221_PREFIX = "C:\Program Files\LLVM"
# Restart terminal after updating PATH
vpp --version
vpp doctor
vpp run examples/hello.vpp
Binaries: target/release/vpp.exe, target/release/vppls.exe.
Features
| Feature | Enables |
| *(default)* | Interpreter, checker, fmt, CLI |
codegen |
Native vpp build, LLVM |
lsp |
vppls language server |
Install locally
cargo install --path . --features codegen,lsp
# Verify install: vpp doctor
# Restart the terminal after PATH changes
# Type-check: vpp check main.vpp
# Format source: vpp fmt main.vpp
Running tests
# Interpreter + parser + typecheck (no LLVM)
cargo test --all-targets
# Native codegen (local LLVM required)
cargo test --features codegen -- --test-threads=1
# Parity: interpreter vs native stdout
cargo test --features codegen parity
# Stress script (Windows)
.\stress.ps1
CI runs on every push to main see GitHub Actions.
Security Policy
Supported versions
| Version | Supported |
| 0.5.x | Yes |
| < 0.5 | No |
Reporting a vulnerability
Do not open public GitHub issues for security vulnerabilities.
Email shauryajiku@gmail.com with:
- Description of the issue
- Steps to reproduce
- Impact assessment
- Affected version (e.g. v0.5.0)
We aim to respond within 7 days.
Scope
Reports about the V++ compiler, language server, VS Code extension, and official release binaries are in scope.
General language design feedback belongs in GitHub Issues.
Safe harbor
We appreciate responsible disclosure and will credit reporters in release notes when fixes ship (unless you prefer anonymity).
Contributor Covenant Code of Conduct
Our pledge
We pledge to make participation in the V++ project a harassment free experience for everyone.
Our standards
Positive: respectful feedback, welcoming newcomers, focusing on what is best for the community.
Unacceptable: harassment, trolling, personal attacks, publishing others' private information.
Enforcement
Report conduct concerns to shauryajiku@gmail.com. Maintainers may remove contributions or ban repeat offenders.
Attribution
Adapted from the Contributor Covenant, version 2.1.
