Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 3.25 KB

CONTRIBUTING.md

File metadata and controls

80 lines (63 loc) · 3.25 KB

Contributing to winnow

Thanks for wanting to contribute! There are many ways to contribute and we appreciate any level you're willing to do.

Feature Requests

Need some new functionality to help? You can let us know by opening an issue. It's helpful to look through all issues in case its already being talked about.

Bug Reports

Please let us know about what problems you run into, whether in behavior or ergonomics of API. You can do this by opening an issue. It's helpful to look through all issues in case its already being talked about.

Pull Requests

Looking for an idea? Check our issues. If it's look more open ended, it is probably best to post on the issue how you are thinking of resolving the issue so you can get feedback early in the process. We want you to be successful and it can be discouraging to find out a lot of re-work is needed.

Already have an idea? It might be good to first create an issue to propose it so we can make sure we are aligned and lower the risk of having to re-work some of it and the discouragement that goes along with that.

Combinators

Design guidelines

  • Generally grammar-level combinators are free-functions and output/error conversion are inherent functions on Parser. Parser::verify is an example of some nuance as the logic is coupled to the Parser its applied to.
  • Combinators that directly process tokens must support complete vs streaming parsing.
  • Combinators that process 0.. tokens have a 0 suffix, 1.. tokens have a 1 suffix, and ranged parsers have a _m_n suffix.

Process

When you first post a PR, we request that the the commit history get cleaned up. We recommend avoiding this during the PR to make it easier to review how feedback was handled. Once the commit is ready, we'll ask you to clean up the commit history. Once you let us know this is done, we can move forward with merging! If you are uncomfortable with these parts of git, let us know and we can help.

For commit messages, we use Conventional style. If you already wrote your commits and don't feel comfortable changing them, don't worry and go ahead and create your PR. We'll work with you on the best route forward. You can check your branch locally with committed.

As a heads up, we'll be running your PR through the following gauntlet:

  • warnings turned to compile errors
  • cargo test
  • rustfmt
  • clippy
  • rustdoc
  • committed
  • typos

Releasing

Pre-requisites

  • Running cargo login
  • A member of winnow-rs:Maintainers
  • Push permission to the repo
  • cargo-release

When we're ready to release, a project owner should do the following

  1. Update the changelog (see cargo release changes for ideas)
  2. Determine what the next version is, according to semver
  3. Run cargo release -x <level>