carlo 1.0.0

A simple interpreted programming language.
# 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.