# Developer's Guide
## Incrementing the Version
The following instructions will guide you to incrementing the Carlo language
version number.
1. Open `carlotk/src/lib.rs`. Change the `VERSION` string to the new version number.
2. Open `carlotk/Cargo.toml`. Change the version number under the `[package]` key.
3. Open `Cargo.toml` and change *both* the package version (under `[package]`) and the `carlotk` dependency version (under `[dependencies.carlotk]`) to the new version number.
As a general rule, to minimize confusion and maximally facilitate dependency resolution, *the Carlo binary and the CarloTK library must be at the same version*.
## Adding a Subcommand
The following instructions will guide you to adding a Carlo langauge subcommand.
1. Create a Cargo library package `carlo-sc`, where `sc` is your desired subcommand name.
2. Add the following to your subcommand library's `Cargo.toml` file.
```
[dependencies.carlotk]
version = "0.12.0"
```
3. Create a function in your subcommand library named `sc`. It is recommended that you import `carlotk::prelude::*` so you can use the Carlo tokenizer, parser, and environment utilities. Your function must have the following signature: `fn(CliArgs) -> ()`.
4. Create a function in your subcommand library named `helpme`. This function will print help information to the screen. Your function must have the following signature: `fn() -> !`. It is recommended you use `carlotk::prelude::printhelp`, which has signature `fn(&str) -> !`.
5. Create the following entry in `Cargo.toml`. Replace `x.x.x` with the version number of your subcommand's crate.
```
[dependencies.sc]
package = "carlo-sc"
version = "x.x.x"
```
6. In `src/main.rs`, add `subcommand sc` (on a new line) to the `include_subcommands!` macro invocation.