Ninja-compatible build system for high-level programming languages written in Rust

Overview

Turtle

GitHub Action crates.io License

Ninja-compatible build system for high-level programming languages written in Rust

Goals

  • Safe (no unsafe) and fast implementation of the Ninja build system in Rust
  • Frontend support for high-level programming languages
    • Modest and comprehensive output by default
    • Customizable progress/error output

Turtle 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! 😄

Install

cargo install turtle-build

Usage

turtle

For more information, see turtle --help.

Features

  • Ninja-compatible build file syntax and command line options
  • Comprehensive build output
    • Turtle doesn't show any information that is not understandable to end-users.
    • It is important for users of high-level programming languages who do not know how compilers and build systems work.
  • Console output handling
    • Turtle shows outputs of build jobs running currently. So it's easy to track what is going on during builds.
  • Log format customization
    • Log prefixes can be changed by a command line option.

Compatibility with Ninja

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.)

Syntax

  • build statement
    • Explicit outputs
    • Explicit inputs
    • Implicit outputs
    • Implicit inputs
    • Order-only inputs
    • phony rule
  • rule statement
  • default statement
  • include statement
  • subninja statement
  • pool statement
  • Global variables
  • Build-local variables
  • in and out special variable

Command line arguments

  • -f custom build file option
  • -j job limit option
  • -k keep-going option
  • -C change-directory option

Others

  • Circular build dependency detection
  • Circular build file dependency detection
  • builddir special variable
  • Dynamic dependencies
    • Implicit inputs
    • Implicit outputs
    • Circular build dependency detection
  • C/C++ header dependencies
    • depfile option
    • deps option
  • Windows support

Technical notes

Something 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:

  1. Turtle spawns futures for all builds of default targets.
  2. Depending on builds' configuration, they spawn more futures or resolve their futures.
    • If they require some input targets to be built first, they spawn those builds for input targets all in parallel.
  3. Those futures are scheduled and run in parallel by an asynchronous runtime in Rust.
  4. Builds complete when all the futures are resolved.

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!

Similar projects

License

Dual-licensed under MIT and Apache 2.0.

Comments
  • Bump combine from 4.6.4 to 4.6.6

    Bump combine from 4.6.4 to 4.6.6

    Bumps combine from 4.6.4 to 4.6.6.

    Changelog

    Sourced from combine's changelog.

    v4.6.6 (2022-08-09)

    • memchr: use non deprecated feature std instead of use_std

    • refactor: Extract less-generic code from sequence's add_errors (-5%)

    Commits
    • cbc33e7 (cargo-release) version 4.6.6
    • 2d308d7 (cargo-release) version 4.6.5
    • 75c57c2 Updated changelog
    • d3fbc80 Merge pull request #348 from klensy/memchr-dep-std
    • 1e4bfd4 memchr: use non deprecated feature std instead of use_std
    • 62330f5 Merge pull request #351 from Marwes/codegen
    • 5ff32f1 refactor: Extract less-generic code from sequence's add_errors (-5%)
    • c4e7275 Merge pull request #350 from Marwes/fix_ci
    • 1166216 chore: Update CI to assume github actions
    • 6de4b29 chore: Actually use nightly/beta rust on ci
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Terrible architecture in `run` module

    Terrible architecture in `run` module

    Problem

    • Almost, everything in the run module is not testable because we depend on its infrastructure directly.

    Solution

    • Inject infrastructure-level dependencies into the run function.
    bug 
    opened by raviqqe 1
  • Support comments

    Support comments

    In order to use this with cmake-generated ninja build files, turtle-build needs to support # symbols for comments.

    Example of the error message I received:

    Parse error at line: 1, column: 1
    Unexpected `#`
    `, lf newline, build statement, default statement, include statement, rule statement, subninja statement, identifier or end of input
    
    opened by theoparis 1
  • Run certain commands always without dependency update check

    Run certain commands always without dependency update check

    Problems

    • Child job runners should be run always if Turtle doesn't know their artifacts' dependencies.
      • e.g. make, ninja, cargo, and cargo itself.
    • The Josserver API?
    opened by raviqqe 1
  • Bump clap from 3.1.18 to 3.2.1

    Bump clap from 3.1.18 to 3.2.1

    Bumps clap from 3.1.18 to 3.2.1.

    Release notes

    Sourced from clap's releases.

    v3.2.0

    [3.2.0] - 2022-06-13

    Features

    • Parsed, typed arguments via Arg::value_parser / ArgMatches::{get_one,get_many} (#2683, #3732)
      • Several built-in TypedValueParsers available with an API open for expansion
      • value_parser!(T) macro for selecting a parser for a given type (#3732) and open to expansion via the ValueParserFactory trait (#3755)
      • [&str] is implicitly a value parser for possible values
      • All ArgMatches getters do not assume required arguments (#2505)
      • Add ArgMatches::remove_* variants to transfer ownership
      • Add ArgMatches::try_* variants to avoid panics for developer errors (#3621)
      • Add a get_raw to access the underlying OsStrs
      • PathBuf value parsers imply ValueHint::AnyPath for completions (#3732)
    • Explicit control over parsing via Arg::action (#3774)
      • ArgAction::StoreValue: existing takes_value(true) behavior
      • ArgAction::IncOccurrences: existing takes_value(false) behavior
      • ArgAction::Help: existing --help behavior
      • ArgAction::Version: existing --version behavior
      • ArgAction::Set: Overwrite existing values (like Arg::multiple_occurrences mixed with Command::args_override_self) (#3777)
      • ArgAction::Append: like Arg::multiple_occurrences (#3777)
      • ArgAction::SetTrue: Treat --flag as --flag=true (#3775)
        • Implies Arg::default_value("false") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::SetFalse: Treat --flag as --flag=false (#3775)
        • Implies Arg::default_value("true") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::Count: Treat --flag --flag --flag as --flag=1 --flag=2 --flag=3 (#3775)
        • Implies Arg::default_value("0") (#3786)
        • Parses Arg::env via Arg::value_parser
    • (derive) Opt-in to new Arg::value_parser / Arg::action with either #[clap(value_parser)] (#3589, #3742) / #[clap(action)] attributes (#3794)
      • Default ValueParser is determined by value_parser! (#3199, #3496)
      • Default ArgAction is determine by a hard-coded lookup on the type (#3794)
    • Command::multicall is now stable for busybox-like programs and REPLs (#2861, #3684)
    • ArgMatches::{try_,}contains_id for checking if there are values for an argument that mirrors the new get_{one,many} API

    Fixes

    parser

    • Set ArgMatches::value_source and ArgMatches::occurrences_of for external subcommands (#3732)
    • Use value delimiter for Arg::default_missing_values (#3761, #3765)
    • SplitArg::default_value / Arg::env on value delimiters independent of whether -- was used (#3765)
    • Allow applying defaults to flags (#3294, 3775)
    • Defaults no longer satisfy required and its variants (#3793)

    Compatibility

    MSRV is now 1.56.0 (#3732)

    Behavior

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [3.2.1] - 2022-06-13

    [3.2.0] - 2022-06-13

    Features

    • Parsed, typed arguments via Arg::value_parser / ArgMatches::{get_one,get_many} (#2683, #3732)
      • Several built-in TypedValueParsers available with an API open for expansion
      • value_parser!(T) macro for selecting a parser for a given type (#3732) and open to expansion via the ValueParserFactory trait (#3755)
      • [&str] is implicitly a value parser for possible values
      • All ArgMatches getters do not assume required arguments (#2505)
      • Add ArgMatches::remove_* variants to transfer ownership
      • Add ArgMatches::try_* variants to avoid panics for developer errors (#3621)
      • Add a get_raw to access the underlying OsStrs
      • PathBuf value parsers imply ValueHint::AnyPath for completions (#3732)
    • Explicit control over parsing via Arg::action (#3774)
      • ArgAction::StoreValue: existing takes_value(true) behavior
      • ArgAction::IncOccurrences: existing takes_value(false) behavior
      • ArgAction::Help: existing --help behavior
      • ArgAction::Version: existing --version behavior
      • ArgAction::Set: Overwrite existing values (like Arg::multiple_occurrences mixed with Command::args_override_self) (#3777)
      • ArgAction::Append: like Arg::multiple_occurrences (#3777)
      • ArgAction::SetTrue: Treat --flag as --flag=true (#3775)
        • Implies Arg::default_value("false") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::SetFalse: Treat --flag as --flag=false (#3775)
        • Implies Arg::default_value("true") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::Count: Treat --flag --flag --flag as --flag=1 --flag=2 --flag=3 (#3775)
        • Implies Arg::default_value("0") (#3786)
        • Parses Arg::env via Arg::value_parser
    • (derive) Opt-in to new Arg::value_parser / Arg::action with either #[clap(value_parser)] (#3589, #3742) / #[clap(action)] attributes (#3794)
      • Default ValueParser is determined by value_parser! (#3199, #3496)
      • Default ArgAction is determine by a hard-coded lookup on the type (#3794)
    • Command::multicall is now stable for busybox-like programs and REPLs (#2861, #3684)
    • ArgMatches::{try_,}contains_id for checking if there are values for an argument that mirrors the new get_{one,many} API

    Fixes

    parser

    • Set ArgMatches::value_source and ArgMatches::occurrences_of for external subcommands (#3732)
    • Use value delimiter for Arg::default_missing_values (#3761, #3765)
    • SplitArg::default_value / Arg::env on value delimiters independent of whether -- was used (#3765)
    • Allow applying defaults to flags (#3294, 3775)
    • Defaults no longer satisfy required and its variants (#3793)

    Compatibility

    MSRV is now 1.56.0 (#3732)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump clap from 3.1.8 to 3.1.9

    Bump clap from 3.1.8 to 3.1.9

    Bumps clap from 3.1.8 to 3.1.9.

    Release notes

    Sourced from clap's releases.

    v3.1.9

    [3.1.9] - 2022-04-15

    Fixes

    • Pin the clap_derive version so a compatible version is always used with clap
    Changelog

    Sourced from clap's changelog.

    [3.1.9] - 2022-04-15

    Fixes

    • Pin the clap_derive version so a compatible version is always used with clap
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump nom from 7.1.1 to 7.1.2

    Bump nom from 7.1.1 to 7.1.2

    Bumps nom from 7.1.1 to 7.1.2.

    Changelog

    Sourced from nom's changelog.

    7.1.2 - 2023-01-01

    Thanks

    Changed

    • documentation fixes
    • tests fixes
    • limit the initial capacity of the result vector of many_m_n to 64kiB
    • bits parser now accept Parser implementors instead of only functions

    Added

    • implement Tuple parsing for the unit type as a special case
    • implement ErrorConvert on the unit type to make it usable as error type for bits parsers
    • bool parser for bits input
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump once_cell from 1.16.0 to 1.17.0

    Bump once_cell from 1.16.0 to 1.17.0

    Bumps once_cell from 1.16.0 to 1.17.0.

    Changelog

    Sourced from once_cell's changelog.

    1.17.0

    • Add race::OnceRef for storing a &'a T.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump serde from 1.0.151 to 1.0.152

    Bump serde from 1.0.151 to 1.0.152

    Bumps serde from 1.0.151 to 1.0.152.

    Release notes

    Sourced from serde's releases.

    v1.0.152

    • Documentation improvements
    Commits
    • ccf9c6f Release 1.0.152
    • b25d0ea Link to Hjson data format
    • 4f4557f Link to bencode data format
    • bf400d6 Link to serde_tokenstream data format
    • 4d2e36d Wrap flexbuffers bullet point to 80 columns
    • df6310e Merge pull request #2347 from dtolnay/docsrs
    • 938ab5d Replace docs.serde.rs links with intra-rustdoc links
    • ef5a0de Point documentation links to docs.rs instead of docs.serde.rs
    • 5d186c7 Opt out -Zrustdoc-scrape-examples on docs.rs
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump clap from 4.0.30 to 4.0.32

    Bump clap from 4.0.30 to 4.0.32

    Bumps clap from 4.0.30 to 4.0.32.

    Release notes

    Sourced from clap's releases.

    v4.0.32

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    v4.0.31

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)
    Changelog

    Sourced from clap's changelog.

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)
    Commits
    • ec4ccf0 chore: Release
    • 13fdb83 docs: Update changelog
    • b877345 Merge pull request #4573 from epage/conflict
    • 85ecb3e fix(parser): Override required when parent group has conflict
    • d145b8b test(parser): Demonstrate required-overload bug
    • 0eccd55 chore: Release
    • 1e37c25 docs: Update changelog
    • dcd5fec Merge pull request #4572 from epage/group
    • dde22e7 style: Update for latest clippy
    • dd8435d perf(parser): Reduce duplicate lookups
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump clap from 4.0.29 to 4.0.30

    Bump clap from 4.0.29 to 4.0.30

    Bumps clap from 4.0.29 to 4.0.30.

    Release notes

    Sourced from clap's releases.

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Changelog

    Sourced from clap's changelog.

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Commits
    • d2d0222 chore: Release
    • 56a0bb6 docs: Update changelog
    • b941a3e Merge pull request #4567 from epage/error
    • 453ac0b fix(parser): Be less confusing with args/subcommand conflicts
    • 2a374db test(parser): Show bad behavior
    • f632424 test(parser): Consolidate args_conflicts_with tests
    • a72f962 docs(builder): Escape non-tags
    • ac48e2d docs: Make less brittle for rust versions
    • a3381a2 docs(readme): Fix build status badge (#4559)
    • aa54204 Merge pull request #4555 from epage/reset
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
Releases(v0.4.4)
  • v0.4.4(Nov 16, 2022)

    • chore: Release turtle-build version 0.4.4 by Yota Toyama
    • Change help message (#242) by Yota Toyama
    • Specify targets (#241) by Yota Toyama
    • Bump clap from 4.0.24 to 4.0.25 (#240) by dependabot[bot]
    • Bump clap from 4.0.23 to 4.0.24 (#239) by dependabot[bot]
    • Bump clap from 4.0.22 to 4.0.23 (#238) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.4.3(Nov 13, 2022)

  • v0.4.2(Nov 13, 2022)

    • chore: Release turtle-build version 0.4.2 by Yota Toyama
    • Refactor (#236) by Yota Toyama
    • Refactor (#235) by Yota Toyama
    • Persistent source map (#234) by Yota Toyama
    • Refactor (#233) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(Nov 12, 2022)

    • chore: Release turtle-build version 0.4.1 by Yota Toyama
    • cleandead tool (#232) by Yota Toyama
    • chore: Release turtle-build version 0.4.0 by Yota Toyama
    • Remove margin (#231) by Yota Toyama
    • Refactor (#230) by Yota Toyama
    • More benchmark (#229) by Yota Toyama
    • Refactor (#228) by Yota Toyama
    • Refactor (#227) by Yota Toyama
    • Concurrent hash map (#226) by Yota Toyama
    • Use Arc<str> (#225) by Yota Toyama
    • Command runner (#223) by Yota Toyama
    • Refactor (#221) by Yota Toyama
    • Version build directory (#220) by Yota Toyama
    • Database as infrastructure (#219) by Yota Toyama
    • Application context (#218) by Yota Toyama
    • Refactor (#216) by Yota Toyama
    • Refactor (#215) by Yota Toyama
    • Benchmark (#214) by Yota Toyama
    • Zero-copy IR (#213) by Yota Toyama
    • Zero copy parser (#212) by Yota Toyama
    • Use nom for parser (#211) by Yota Toyama
    • Bump clap from 4.0.18 to 4.0.22 (#209) by dependabot[bot]
    • Bump regex from 1.6.0 to 1.7.0 (#208) by dependabot[bot]
    • Bump num_cpus from 1.13.1 to 1.14.0 (#207) by dependabot[bot]
    • Bump once_cell from 1.15.0 to 1.16.0 (#206) by dependabot[bot]
    • Bump serde from 1.0.145 to 1.0.147 (#205) by dependabot[bot]
    • Bump futures from 0.3.24 to 0.3.25 (#204) by dependabot[bot]
    • Bump clap from 4.0.17 to 4.0.18 (#203) by dependabot[bot]
    • Bump clap from 4.0.15 to 4.0.17 (#202) by dependabot[bot]
    • Fix test (#199) by Yota Toyama
    • Bump clap from 4.0.14 to 4.0.15 (#198) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.9(Oct 13, 2022)

    • (cargo-release) version 0.3.9 by Yota Toyama
    • Fix phony output (#196) by Yota Toyama
    • Bump clap from 4.0.13 to 4.0.14 (#194) by dependabot[bot]
    • Bump clap from 4.0.12 to 4.0.13 (#193) by dependabot[bot]
    • Bump clap from 4.0.11 to 4.0.12 (#192) by dependabot[bot]
    • Bump clap from 4.0.10 to 4.0.11 (#191) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.8(Oct 7, 2022)

    • (cargo-release) version 0.3.8 by Yota Toyama
    • Rename options feature (#189) by Yota Toyama
    • Bump aruba from 2.0.0 to 2.1.0 (#190) by dependabot[bot]
    • Bump actions/download-artifact from 2 to 3 (#187) by dependabot[bot]
    • Bump actions/checkout from 2 to 3.1.0 (#188) by dependabot[bot]
    • Bump actions/upload-artifact from 2 to 3 (#186) by dependabot[bot]
    • Fix integration test test (#185) by Yota Toyama
    • Rebuild check based on content hash (#184) by Yota Toyama
    • Refactor (#183) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.3.7(Oct 7, 2022)

  • v0.3.6(Oct 7, 2022)

    • (cargo-release) version 0.3.6 by Yota Toyama
    • Enable Homebrew (#181) by Yota Toyama
    • Bump clap from 4.0.9 to 4.0.10 (#180) by dependabot[bot]
    • Bump clap from 4.0.8 to 4.0.9 (#179) by dependabot[bot]
    • Bump clap from 4.0.4 to 4.0.8 (#178) by dependabot[bot]
    • Bump clap from 4.0.2 to 4.0.4 (#177) by dependabot[bot]
    • Bump clap from 3.2.22 to 4.0.2 (#176) by dependabot[bot]
    • Bump itertools from 0.10.4 to 0.10.5 (#175) by dependabot[bot]
    • Bump once_cell from 1.14.0 to 1.15.0 (#174) by dependabot[bot]
    • Bump clap from 3.2.21 to 3.2.22 (#173) by dependabot[bot]
    • Bump itertools from 0.10.3 to 0.10.4 (#172) by dependabot[bot]
    • Bump clap from 3.2.20 to 3.2.21 (#171) by dependabot[bot]
    • Bump once_cell from 1.13.1 to 1.14.0 (#170) by dependabot[bot]
    • Bump clap from 3.2.19 to 3.2.20 (#169) by dependabot[bot]
    • Bump clap from 3.2.18 to 3.2.19 (#167) by dependabot[bot]
    • Bump pretty_assertions from 1.2.1 to 1.3.0 (#168) by dependabot[bot]
    • Bump clap from 3.2.17 to 3.2.18 (#165) by dependabot[bot]
    • Bump futures from 0.3.23 to 0.3.24 (#166) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.5(Aug 28, 2022)

    • (cargo-release) version 0.3.5 by Yota Toyama
    • Parse comments (#164) by Yota Toyama
    • Bump once_cell from 1.13.0 to 1.13.1 (#160) by dependabot[bot]
    • Bump clap from 3.2.16 to 3.2.17 (#159) by dependabot[bot]
    • Bump futures from 0.3.21 to 0.3.23 (#158) by dependabot[bot]
    • Bump combine from 4.6.4 to 4.6.6 (#156) by dependabot[bot]
    • Bump clap from 3.2.15 to 3.2.16 (#155) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.4(Jul 26, 2022)

    • (cargo-release) version 0.3.4 by Yota Toyama
    • don't wrap commands on Windows in sh -c , fix #150 (#152) by Oleksiy Slyshyk
    • Bump clap from 3.2.14 to 3.2.15 (#151) by dependabot[bot]
    • Bump clap from 3.2.13 to 3.2.14 (#148) by dependabot[bot]
    • Bump clap from 3.2.12 to 3.2.13 (#147) by dependabot[bot]
    • Bump clap from 3.2.11 to 3.2.12 (#146) by dependabot[bot]
    • Bump clap from 3.2.10 to 3.2.11 (#145) by dependabot[bot]
    • Bump clap from 3.2.8 to 3.2.10 (#144) by dependabot[bot]
    • Bump regex from 1.5.6 to 1.6.0 (#143) by dependabot[bot]
    • Bump once_cell from 1.12.0 to 1.13.0 (#142) by dependabot[bot]
    • Bump clap from 3.2.7 to 3.2.8 (#141) by dependabot[bot]
    • Bump clap from 3.2.6 to 3.2.7 (#140) by dependabot[bot]
    • Refactor by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.3.3(Jun 25, 2022)

    • (cargo-release) version 0.3.3 by Yota Toyama
    • Bump clap from 3.2.5 to 3.2.6 (#139) by dependabot[bot]
    • Bump clap from 3.2.4 to 3.2.5 (#138) by dependabot[bot]
    • Bump clap from 3.1.18 to 3.2.4 (#137) by dependabot[bot]
    • Bump tokio from 1.19.1 to 1.19.2 (#135) by dependabot[bot]
    • Bump crossbeam-utils from 0.8.6 to 0.8.8 (#134) by dependabot[bot]
    • Bump tokio from 1.18.2 to 1.19.1 (#133) by dependabot[bot]
    • Bump petgraph from 0.6.1 to 0.6.2 (#132) by dependabot[bot]
    • Bump once_cell from 1.11.0 to 1.12.0 (#131) by dependabot[bot]
    • Bump petgraph from 0.6.0 to 0.6.1 (#129) by dependabot[bot]
    • Bump regex from 1.5.5 to 1.5.6 (#130) by dependabot[bot]
    • Bump once_cell from 1.10.0 to 1.11.0 (#128) by dependabot[bot]
    • Bump clap from 3.1.17 to 3.1.18 (#127) by dependabot[bot]
    • Bump tokio from 1.18.1 to 1.18.2 (#126) by dependabot[bot]
    • Bump clap from 3.1.15 to 3.1.17 (#125) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(May 4, 2022)

    • Bump version (#124) by Yota Toyama
    • Fix variable definitions with no values (#123) by Yota Toyama
    • Bump tokio from 1.18.0 to 1.18.1 (#121) by dependabot[bot]
    • Bump clap from 3.1.14 to 3.1.15 (#122) by dependabot[bot]
    • Bump clap from 3.1.12 to 3.1.14 (#120) by dependabot[bot]
    • Bump tokio from 1.17.0 to 1.18.0 (#119) by dependabot[bot]
    • Bump combine from 4.6.3 to 4.6.4 (#118) by dependabot[bot]
    • Bump clap from 3.1.10 to 3.1.12 (#117) by dependabot[bot]
    • Bump clap from 3.1.8 to 3.1.10 (#116) by dependabot[bot]
    • Bump clap from 3.1.7 to 3.1.8 (#114) by dependabot[bot]
    • Bump pretty_assertions from 1.2.0 to 1.2.1 (#113) by dependabot[bot]
    • Bump clap from 3.1.6 to 3.1.7 (#112) by dependabot[bot]
    • Bump pretty_assertions from 1.1.0 to 1.2.0 (#111) by dependabot[bot]
    • Bump regex from 1.5.4 to 1.5.5 (#110) by dependabot[bot]
    • Bump clap from 3.1.5 to 3.1.6 (#109) by dependabot[bot]
    • Bump once_cell from 1.9.0 to 1.10.0 (#108) by dependabot[bot]
    • Bump clap from 3.1.3 to 3.1.5 (#107) by dependabot[bot]
    • Bump clap from 3.1.2 to 3.1.3 (#106) by dependabot[bot]
    • Bump clap from 3.1.1 to 3.1.2 (#105) by dependabot[bot]
    • Bump clap from 3.1.0 to 3.1.1 (#104) by dependabot[bot]
    • Bump tokio from 1.16.1 to 1.17.0 (#103) by dependabot[bot]
    • Bump clap from 3.0.14 to 3.1.0 (#102) by dependabot[bot]
    • Bump futures from 0.3.19 to 0.3.21 (#101) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Feb 5, 2022)

    • (cargo-release) version 0.3.1 by Yota Toyama
    • Fix duplicate cycle output (#100) by Yota Toyama
    • Bump pretty_assertions from 1.0.0 to 1.1.0 (#99) by dependabot[bot]
    • Bump clap from 3.0.13 to 3.0.14 (#98) by dependabot[bot]
    • Bump tokio from 1.16.0 to 1.16.1 (#97) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jan 28, 2022)

    • Bump version (#96) by Yota Toyama
    • Source map (#95) by Yota Toyama
    • Fix spell check by Yota Toyama
    • Bump tokio from 1.15.0 to 1.16.0 (#94) by dependabot[bot]
    • Bump clap from 3.0.12 to 3.0.13 (#93) by dependabot[bot]
    • Bump clap from 3.0.10 to 3.0.12 (#92) by dependabot[bot]
    Source code(tar.gz)
    Source code(zip)
  • v0.2.10(Jan 19, 2022)

    • (cargo-release) version 0.2.10 by Yota Toyama
    • Refactor (#90) by Yota Toyama
    • Bump clap from 3.0.8 to 3.0.10 (#91) by dependabot[bot]
    • Bump clap from 3.0.7 to 3.0.8 (#89) by dependabot[bot]
    • Even more persistent build IDs (#88) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.2.9(Jan 16, 2022)

  • v0.2.8(Jan 15, 2022)

  • v0.2.7(Jan 15, 2022)

    • (cargo-release) version 0.2.7 by Yota Toyama
    • Lock console globally (#83) by Yota Toyama
    • Add quiet mode (#82) by Yota Toyama
    • Better build error output (#81) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.2.6(Jan 15, 2022)

  • v0.2.5(Jan 15, 2022)

    • (cargo-release) version 0.2.5 by Yota Toyama
    • Update Cargo.toml (#78) by Yota Toyama
    • Update readme (#77) by Yota Toyama
    • Output handling of "doing" description logs (#76) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.2.4(Jan 14, 2022)

    • (cargo-release) version 0.2.4 by Yota Toyama
    • Prepare directories (#75) by Yota Toyama
    • Fix variable interpolation (#74) by Yota Toyama
    • Update readme (#73) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.2.3(Jan 14, 2022)

  • v0.2.2(Jan 14, 2022)

    • (cargo-release) version 0.2.2 by Yota Toyama
    • Circular build check for dynamic dependencies (#71) by Yota Toyama
    • More command line options (#70) by Yota Toyama
    • Technical notes (#69) by Yota Toyama
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Jan 13, 2022)

  • v0.2.0(Jan 13, 2022)

Owner
Yota Toyama
Yota Toyama
High-level memory-safe binding generator for Flutter/Dart <-> Rust

flutter_rust_bridge: High-level memory-safe binding generator for Flutter/Dart <-> Rust Want to combine the best between Flutter, a cross-platform hot

fzyzcjy 2.1k Dec 31, 2022
Facilitating high-level interactions between Wasm modules and JavaScript

wasm-bindgen Facilitating high-level interactions between Wasm modules and JavaScript. Guide | API Docs | Contributing | Chat Built with ?? ?? by The

Rust and WebAssembly 5.9k Jan 8, 2023
Tyrade: a pure functional language for type-level programming in Rust

A pure functional language for type-level programming in Rust

Will Crichton 286 Jan 1, 2023
🚀 Fast and 100% API compatible postcss replacer, built in Rust

postcss-rs ?? Fast and 100% API compatible postcss replacer, built in Rust ⚠️ DO NOT USE. STILL WORK IN PROGRESS. Performance Improvement Tokenize boo

null 472 Dec 28, 2022
libnotcurses-sys is a low-level Rust wrapper for the notcurses C library

libnotcurses-sys is a low-level Rust wrapper for the notcurses C library This library is built with several layers of zero-overhead abstractions over

nick black 29 Nov 26, 2022
Low level tooling for WebAssembly in JavaScript using wasm-tools

js-wasm-tools js-wasm-tools compiles some of the API of wasm-tools to JavaScript and WebAssembly via wasm-bindgen. This offers low level tooling for W

Dominic Elm 59 Dec 19, 2022
Rust library for build scripts to compile C/C++ code into a Rust library

A library to compile C/C++/assembly into a Rust library/application.

Alex Crichton 1.3k Dec 21, 2022
Build frontend browser apps with Rust + WebAssembly. Supports server side rendering.

Percy Build frontend browser apps with Rust + WebAssembly. Supports server side rendering. The Percy Book This README gives a light introduction to Pe

Chinedu Francis Nwafili 2.1k Jan 1, 2023
Rust - Empowering everyone to build reliable and efficient software.

The Rust Programming Language This is the main source code repository for Rust. It contains the compiler, standard library, and documentation. Note: t

The Rust Programming Language 75.9k Dec 28, 2022
Build a python wheel from a dynamic library

build_wheel Small utility to create a Python wheel given a pre-built dynamic library (.so, .dylib, .dll). If you are just trying to produce a wheel fr

Tangram 1 Dec 2, 2021
ruby-build is a command-line utility that makes it easy to install virtually any version of Ruby, from source.

ruby-build ruby-build is a command-line utility that makes it easy to install virtually any version of Ruby, from source. It is available as a plugin

null 3.7k Jan 5, 2023
An attempt to build full-featured WebAssembly-based monolith charts

Graphima Graphima (Greek: γράφημα) is an attempt to build full-featured WebAssembly-based monolith charts. See "Can I Use" WebAssembly for browser sup

Nikita Almakov 5 Jun 9, 2023
A library for functional programming in Rust

It contains purely functional data structures to supplement the functional programming needs alongside with the Rust Standard Library.

Jason Shin 1.1k Dec 30, 2022
luau bindings for the Rust programming language

?? luau-rs Luau bindings for the Rust programming language using bindgen ⚠️ Disclaimer This does not provide bindings for everything as luau does not

Vurv 18 Aug 3, 2022
Czech for the Rust programming language

rez Nejsi you tired from writing Rust programs in English? Do you like saying do prdele or pivo a lot? Would you like to try something different, in a

Radek Vít 13 Oct 9, 2022
The official home of the Nyson Programming Language, built off Rust.

Nyson Programming Language The official home of the Nyson Programming Language, built off Rust. (created by Nyelsonon and AMTitan, 2021) Advertisement

Nyson-Programing-Language 19 Aug 10, 2022
A simple programming language made for scripting inspired on rust and javascript.

FnXY Programming Language Quick move: CONTRIBUTING | LICENSE What? FnXY is a simple programming language made for scripting inspired on rust and javas

null 2 Nov 27, 2021
A programming environment that aims to help people learn how to program in JavaScript, while giving them a tour on how old computers and their limitations used to be.

This repository is for the new under renovation rewrite of the LIKO-12 project. The legacy version with the original stars and contributions is still

null 1k Jan 5, 2023
An OOP programming language I am making by following Crafting Interpreters.

horba An OOP programming language I am making by following Crafting Interpreters. https://craftinginterpreters.com/ I intend it to have a somewhat C-s

Thomas 3 Dec 5, 2021