Skip to content

Contributing

Neo DevPack for Solidity is an open-source project, and we welcome contributions from the community! Whether you're fixing bugs in the Rust compiler, improving the EVM-to-NeoVM semantic mapping, or writing documentation, your help is appreciated.

How to Report Issues

If you find a bug, an unhandled EVM feature, or have a feature request, please open an issue on the Neo DevPack for Solidity GitHub Repository.

When reporting an issue, please include:

  1. The exact version of neo-solc you are using (neo-solc --version).
  2. The Solidity source code that triggered the issue.
  3. The exact command-line arguments used.
  4. The expected behavior (usually what standard EVM solc does) vs the actual behavior on NeoVM.

Workflow for Pull Requests

We use the standard GitHub Pull Request workflow:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/my-new-feature).
  3. Commit your changes (git commit -am 'Add some feature').
  4. Push to the branch (git push origin feature/my-new-feature).
  5. Create a new Pull Request.

Running the Compiler Tests

Before submitting a PR, ensure the layered Rust, runtime, conformance, E2E, fuzz, and tooling suites that cover your change still pass.

To run the Rust compiler workspace tests:

bash
cargo test --workspace

To run the full production suite (including Node.js tooling tests):

bash
make test-all

Documentation Style Guide

This documentation site is built using VitePress. When contributing to the docs:

  • Ensure your page fits within the existing taxonomy (Basics, Language Description, Internals, etc.).
  • Use the ::: tip 💡 NeoVM Difference blockquote specifically to highlight areas where Neo's execution model diverges from Ethereum.
  • Check for dead links locally before submitting your PR by running npm run docs:build.

MIT Licensed