This repository contains the full DATEX Runtime including networking, compiler and decompiler, written in Rust. The DATEX Core crate is used in DATEX Core JS, which provides a JavaScript interface to the DATEX Runtime. The DATEX CLI is also built on top of this crate and provides a command line interface for the DATEX Runtime.
- src/ - Contains the source code of the crate
- compiler/ - Contains the compiler for the DATEX language
- crypto/ - Contains the cryptographic trait and a native implementation
- values/ - Contains the value types and traits
- global/ - Contains global constants and structures
- network/ - Contains the network protocol implementation and interfaces
- parser/ - Contains the DXB parser
- runtime/ - Contains the runtime for executing scripts
- utils/ - Contains utility functions and traits
- benches/ - Contains benchmarks for the crate for performance testing
- tests/ - Contains integration tests for the crate
- macros/ - Contains procedural macros for the crate
- docs/ - Contains the documentation for the crate
- guide/ - Contains a collection of guides for contributing to the crate
- DATEX Specification - The specification of DATEX, including protocols, syntax, and semantics. The specification is work in progress and is not yet complete. It is being developed in parallel with the implementation of the DATEX Core. The repository is currently private, but will be made public in the future and is available to contributors on request.
- DATEX Core JS - A JavaScript interface to the DATEX Core, built on top of this crate. Includes a WebAssembly build for running DATEX in the browser or server-side with Deno, Node.js, and Bun and trait implementations using standard web APIs such as WebCrypto and WebSocket.
- DATEX CLI - A command line interface for the DATEX Core, built on top of this crate. Provides a simple way to run DATEX scripts and interact with the DATEX Runtime in a REPL-like environment.
- DATEX Core ESP32 - A port of the DATEX Core to the ESP32 platform, allowing you to run DATEX on microcontrollers of the Espressif family.
- DATEX Core CPP - A C++ port of the DATEX Core, allowing you to run DATEX on platforms that support C++. This port is still in development and not functional.
- DATEX Core JS (legacy) - A legacy version of the DATEX Core JS, implemented in TypeScript. This version will be replaced by the new DATEX Core JS implementation.
The project is build with Rust Nightly (rustc 1.88.0-nightly
).
To build the project, run:
cargo build
Tests must be run with the debug
feature enabled. You can either run the tests with
cargo test --features debug
or use the alias cargo test-debug
.
To apply clippy fixes, run the following command:
cargo clippy-debug
The benchmarks in the benches
directory can be run with the following command:
cargo bench
Benchmarks are also run automatically in the GitHub CI on every push to the main branch or a pull request branch.
We welcome every contribution!
Please take a look at the DATEX Core contribution guidelines and the unyt.org contribution guidlines.