/diatom

The diatom programming language

Primary LanguageRustApache License 2.0Apache-2.0

The Diatom Programming Language

Unit Tests doc Crates.io license

dependency status issue pr coverage

A dynamic typed scripting language for embedded use in applications.

Warning: Project is under development and not useable now.

Features

  • Gradual Typing: Support for optional type hint.
  • Security: Diatom is completely isolated and is only able to interact with its host.
  • ADT: Diatom use algebraic data type.
  • No Null, No Exceptions: Diatom encourages the use of Maybe functor and monad. The concept of null and exception in other languages like Java is completely useless in Diatom.
  • Impure Functional: Diatom makes everything mutable and public like Python. We also support a little OOP in data(aka class in OOP languages) declaration.
  • Native Speed: Given every variable is marked, diatom is able to theoretically reach C/C++ level speed.

Try Diatom

You can try diatom at the online playground.

Quick Start

Make sure you have Rust and Cargo installed.

cargo install diatom
diatom # Run interactive console

Installing from source

Run the following script:

git clone https://github.com/diatom-lang/diatom.git
cd diatom
cargo run --release # Run interactive console

Reference

The Diatom Reference is available at here.

Embedding in Application

Rust Application

Diatom is available at crates.io.

To use latest build, add this repo to your Cargo.toml. Latest build documentation is available here.

Use C bindings

Work in progress.