Thanks that you want to contribute to Tokay. Contributions of any kind, might it be code, bug reports, bugfixes, documentation, support or advertising are always welcome!
Take a look into the bug tracker or watch for //fixme- and //todo-comments in the source code for open issues and things that need to be improved. There are plenty of them.
Feel free to contact me directly on any questions.
In case you encounter a bug, or you miss a feature, please file an issue for that.
If you created a solution for a problem or added a feature, any pull request is welcome!
This can also be made as a draft, in case you want to discuss a change or feature, aren't finished or aren't sure if your change is ready to merge.
In case your pull request is not a draft, ensure that cargo run and cargo test run without errors. When new features where added, don't miss to write some unit tests for them. Run cargo fmt before you finally commit.
Tokay uses the semantic versioning scheme.
Any major/minor/bugfix release is being published to crates.io.
As Tokay is unfinished, and under development, it currently has major version 0, with the following versioning convention:
- The minor-version defines huger milestones.
- The bugfix-version is currently not limited to bugfixes only, but might also include smaller milestones between huger milestones, to allow for continous releasing of new features.
- A bugfix version release might not include an updated CHANGELOG.md, even if it contains new features or breaking changes.
As Tokay reaches major version 1, the versioning scheme will be changed into a real semantic versioning, with backward-compatiblity, patch-levels, deprecations etc.
This section contains some useful information for Tokay maintenance.
This repository holds all required source files to provide Tokay with examples.
. # Cargo.toml, README.md, LICENSE, etc.
├── examples # Example programs
├── macros # Source of the tokay-macros crate required for building
├── src # Tokay's source code
| ├── builtin # Top-level builtins
│ ├── compiler # Compiler source
│ ├── value # Object system source
│ └── vm # Virtual machine source
└── tests # Part of the test suite with plenty of Tokay test cases
The
tokay-macroscrate is located in the foldermacros/. Preliminarily to a Tokay release, it is necessary to releasetokay-macrosin a separate version tocrates.io, in case something changed regardingtokay-macrosduring the release. During development,tokay-macroscan be a local dependency inCargo.toml, but it cannot be a local dependency within a release.
Next are some instructions on how to create a new release.
(only required when version of tokay-macros changed)
cd macros- In
Cargo.toml, check and/or bump version number cargo publish
- Make sure
CHANGELOG.mdis updated - Check for updated copyright year in
LICENSE,README.md,src/lib.rsandsrc/main.rs - Edit
Cargo.toml- Check and/or bump version number
- Uncomment line to use
tokay-macrosversion from crates.io (obviouslytokay-macros = "x.x") - Comment line to use local
tokay-macros(should be# tokay-macros = { version = "x.x", path = "macros" })
- Ensure
cargo clean && cargo run && cargo testsucceeds git committhis stategit tagthis statecargo publish