Crates.io | turtle-build |
lib.rs | turtle-build |
version | 0.4.8 |
source | src |
created_at | 2022-01-10 07:09:33.894547 |
updated_at | 2023-12-07 11:44:28.470316 |
description | Ninja-compatible build system for high-level programming languages |
homepage | |
repository | https://github.com/raviqqe/turtle |
max_upload_size | |
id | 511251 |
size | 184,602 |
Ninja-compatible build system for high-level programming languages written in Rust
unsafe
) and fast implementation of the Ninja build system in RustTurtle is originally written for the Pen programming language. Therefore, we support only dynamic dependencies but not C/C++ header dependencies currently. Your contribution is welcome! 😄
cargo install turtle-build
turtle
For more information, see turtle --help
.
srcdep
variables defined in build
directives to make them understandable to end-users.--log-prefix
option
--log-prefix my-build-system
for a log of my-build-system: build failed
.)--quiet
option
Turtle aims to support full syntax of the Ninja build files. It also supports basic command line arguments but is not going to implement all the original options (e.g. -t
option.)
build
statement
phony
rulerule
statementdefault
statementinclude
statementsubninja
statementpool
statementin
and out
special variable-f
custom build file option-j
job limit option-k
keep-going option-C
change-directory optionbuilddir
special variabledepfile
optiondeps
optionSomething different from the traditional build systems and notable in Turtle is that it solves parallel builds similar to parallel graph reduction naturally, where you modify graph structures in parallel and reduce it into a solution, thanks to an ecosystem of futures and stackless coroutines in Rust.
Here is how parallel builds work in Turtle:
Currently, Turtle uses a topological sort algorithm only to detect dependency cycles but not for scheduling of build jobs.
Turtle is powered by the following neat projects and others!
Dual-licensed under MIT and Apache 2.0.