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.
├── build # Build scripts to generate parts of Tokay using Tokay itself
├── examples # Example programs
├── macros # Source of the tokay-macros crate required for building
├── src # Tokay's source code
│ ├── 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-macros
crate is located in the foldermacros/
. Preliminarily to a Tokay release, it is necessary to releasetokay-macros
in a separate version tocrates.io
, in case something changed regardingtokay-macros
during the release. During development,tokay-macros
can 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.md
is updated - Check for updated copyright year in
LICENSE
,README.md
,src/lib.rs
andsrc/main.rs
- Edit
Cargo.toml
- Check and/or bump version number
- Uncomment line to use
tokay-macros
version 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 test
succeeds git commit
this stategit tag
this statecargo publish