6 releases (3 breaking)
0.4.0 | Jul 2, 2023 |
---|---|
0.3.1 | Mar 14, 2023 |
0.2.0 | Mar 5, 2023 |
0.0.1 | Feb 24, 2023 |
#540 in Programming languages
35 downloads per month
455KB
16K
SLoC
Hebi
This repository hosts a dynamically typed language, its compiler, and VM.
🚧 This branch contains a rewrite of the language. It is currently heavily WIP! 🚧
Usage
Install the library (currently only available via git):
$ cargo add --git https://github.com/jprochazk/hebi.git --branch v2
Import it, and run some code:
use hebi::Hebi;
fn main() {
let mut hebi = Hebi::new();
println!("1 + 1 = {}", hebi.eval("1 + 1").unwrap());
}
Hebi can do much more than this, though! Here are some of its features:
- Syntax similar to Python, including significant indentation
- First-class functions
- Classes with single inheritance
- Easy Rust function and struct binding
- Async support
Visit the examples directory to see Hebi in action.
You can run an example using cargo run --example <name>
:
$ cargo run --example basic
Development
The first step is to install Rust and Cargo via rustup.
xtask
This repository uses cargo-xtask for various utilities, scripts, and tasks. That means you don't need anything other than Rust and Cargo. No makefiles, Python, or Bash.
To see all available tasks, run:
$ cargo xtask
To run one of them, use:
$ cargo xtask <task>
Or the slightly shorter:
$ cargo x <task>
For example:
# Run all tests and examples
$ cargo xtask test
Some tasks use tools which you'll have to install, though these are kept to just a select few, and ideally always installed through either rustup
or cargo
.
- Miri (
rustup +nightly component add miri
) - Insta (
cargo install --locked cargo-insta
) - mdBook (
cargo install --locked mdbook
)
Why Hebi?
I thought it was appropriate, because the language is in the Python family, and Hebi (蛇) means snake in Japanese.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~5MB
~75K SLoC