Execute KDL files!

Overview

kdl-script

crates.io docs Rust CI

A Compiler for KDLScript, the KDL-based programming language!

KDLScript is a "fake" scripting language that actually just exists to declare type/function definitions in a language-agnostic way to avoid getting muddled in the details of each language when trying to talk about All Languages In Reality. It exists to be used by abi-cafe.

Ultimately the syntax and concepts are heavily borrowed from Rust, for a few reasons:

  • The author is very comfortable with Rust
  • This (and abi-cafe) were originally created to find bugs in rustc
  • Rust is genuinely just a solid language for expressing ABIs! (Better than C/C++)

The ultimate goal of this is to test that languages can properly communicate over FFI by declaring the types/interface once and generating the Rust/C/C++/... versions of the program (both caller and callee) and then linking them into various combinations like "Rust Calls C++" to check that the values are passed correctly.

Since C is the lingua-franca of FFI, it's assumed that when lowering definitions to the target language that they should be the "C Compatible" equivalent. For instance, "u32" is intended to be your language's equivalent of "uint32_t".

In Rust this means all type definitions are implicitly #[repr(C)] (ideally should be opt-outable). Most details about the function are left abstract so that abi-cafe can choose how to fill those in.

"C Compatible" gets fuzzier for some things like tagged unions. Just uh... don't worry about it (see "Concepts" below for details).

Usage

kdl-script is both a library and a CLI application.

The main entry point to the library is [Compiler::compile_path][] or [Compiler::compile_string][], which will produce a [TypedProgram][]. See the [types][] module docs for how to use that.

The CLI application can be invoked as kdl-script path/to/program.kdl to run a KDLScript program.

TODO: Write some examples! (See the examples dir for some.)

Concepts

A KdlScript program is a single file that has types, functions, and attributes (@) on those functions.

Types

The following kinds of types exist in KDLScript.

Nominal Types

A KDLScript user is allowed to declare the following kinds of nominal types

  • struct - a plain ol' struct
  • enum - a c-style enum
  • union - an untagged union
  • tagged - a tagged union (rust-style enum)
  • alias - a transparent type alias
  • pun - a pun across the FFI boundary, "CSS for ifdefs"

struct, enum, union, and alias are hopefully pretty self-explanatory and uncontroversial as they have immediate C/C++ equivalents, so we'll speed through them quickly. tagged and pun merit deeper discussion.

Struct Types

Just what you expect!

struct "Point" {
    x "f32"
    y "f32"
}

Field names may be marked "positional" by giving them the name _. If all fields are positional then languages like Rust should emit a "tuple struct". So this:

struct "Point" {
    _ "f64"
    _ "f64"
}

would be emitted as this Rust:

#[repr(C)]
struct Point(f64, f64);

Otherwise positional names will get autonamed something like field0, field1, etc.

Enum Types

Just what you expect!

enum "IOError" {
    FileNotFound 2
    FileClosed
    FightMe 4
}

The optional integer values specify what value that variant should "have" in its underlying integer repr. Otherwise variants start at 0(?) and auto-increment.

Just like struct fields, enum variants can have "positional" naming with _ which will get autonaming like Case0, Case1, etc.

TODO: is it ok to have multiple variants with the same value? Whose responsibility is it to bounds check them to the underlying type, especially in the default case where it's "probably" a fuzzy c_int?

TODO: add an attribute for specifying the underlying integer type. (@tag?)

Union Types

Just what you expect!

union "FloatOrInt" {
    Float "f32"
    Int "u32"
}

Just like struct fields, union variants can have "positional" naming with _ which will get autonaming like Case0, Case1, etc.

TODO: should we allow inline struct decls like C/C++ does, or require the user to define the structs separately?

Alias Types

Just what you expect!

alias "MetersU32" "u32"

Note that the ordering matches Rust type Alias = RealType; syntax and not C/C++'s backwards-ass typedef syntax.

See Pun Types for additional notes on how aliases interact with typeids!

Tagged Types

Tagged is the equivalent of Rust's enum, a tagged union where variants have fields, which has no "obvious" C/C++ analog. Variant bodies may either be missing (indicating no payload) or have the syntax of a struct body.

tagged "MyOptionU32" {
    None
    Some { _ "u32"; }
    FileNotFound { 
        path "[u8; 100]"
        error_code "i64"
    }
}

However, Rust RFC 2195 - "Really Tagged Unions" specifies the C/C++ equivalent layout/ABI for these types when repr(C) and/or repr(u8) is applied to one. cbindgen implements this conversion. By default the repr(C) layout is to be used (how to select others is TBD).

A quick TL;DR of the RFC:

The repr(C) layout is the most obvious lowering to a struct containing a c-style enum and a union. The enum says which case of the union is currently valid.

The repr(u8) layout (also repr(u32), etc.) is similar but the enum specifically has that integer type, and instead of being stored in a wrapper struct it's stored as the first field of every variant of the union. This is a more compact layout because space doesn't need to be wasted for padding between the enum and the union. Also it's more reliable because C refuses to specify what the backing integer of a normal enum is so rustc just guesses based on the platform.

TODO: should payload-less variants allow for integer values like enum variants do?

TODO: figure out how exactly to specify you really want repr(rust) or repr(u8) or repr(C, u8) layouts.

TODO: if we ever add support for Swift or whatever there will need to be A Reckoning because it has its own ABI/layouts for enums that are way more complex and guaranteed for more complicated cases! For now, we punt!

Pun Types

A pun is the equivalent of an ifdef'd type, allowing us to declare that two wildly different declarations in different languages should in fact have the same layout and/or ABI. A pun type contains "selector blocks" which are sequentially matched on much like CSS. The first one to match wins. When lowering to a specific backend/config if no selector matches, then compilation fails.

Here is an example that claims that a Rust repr(transparent) newtype of a u32 should match the ABI of a uint32_t in C/C++:

pun "MetersU32" {
    lang "rust" {        
        @ "#[repr(transparent)]"
        struct "MetersU32" {
            a "u32"
        }
    }

    lang "c" "cpp" {
        alias "MetersU32" "u32"
    }
}

Because of this design, the typechecker does not "desugar" pun types to their underlying type when computing type ids. This means [MetersU32; 4] will not be considered the same type as [u32; 4]... because it's not! This is fine because type equality is just an optimization for our transpiler usecase. Typeids mostly exist to deal with type name resolution.

Pun resolving is done as a second step when lowering the abstract TypedProgram to a more backend-concrete DefinitionGraph.

(alias also isn't desugarred and has the same "problem" but this is less "fundamental" and more "I want the backend to actually emit a type alias and use the alias", just like the source KDLScript program says!)

The currently supported selector blocks are:

  • lang "lang1" "lang2" ... - matches any of the languages
  • default - always matches

Potentially Supported In The Future:

  • compiler "compiler1" "compiler2" ...
  • cpu ...
  • os ...
  • triple ...
  • any { selector1; selector2; }
  • all { selector1; selector2; }
  • not { selector; }

TODO: should we allow pun blocks to have other types defined in the block that are "private" from the rest of the program but used in the final type?

TODO: figure out how to talk about "language-native types" in much the same way the above example uses "language-native annotations".

Structural Types

A KDLScript user is allowed to use the following kinds of structural types

  • &T - a transparent reference to T
  • [T; N] - a fixed-length array of T (length N)
  • () - the empty tuple (I just like adding this cuz it's cute!!!)

TODO: figure out if we want to bake in Rust's Option type here, if only for Option<&T>.

TODO: figure out if there's any point in non-empty tuples

Reference Types

The "value" of a reference type &T is its pointee for the purposes of abi-cafe. In this regard it's similar to C++ references or Rust references, where most operations automagically talk about the pointee and not the pointer. Using a reference type lets you test that something can properly be passed-by-reference, as opposed to passed-by-value.

Reference types may appear in other composite types, indicating that the caller is responsible for allocating variables for each one and then storing pointers to them in the composite type.

When used in the outputs of a function, a reference type is sugar for an out-param that the caller is responsible for allocating and the callee is responsible for initializing. Out-params should appear after all normal inputs but before varargs.

TODO: think through if the caller has any need to initialize an out-param (Currently irrelevant as we only suppport POD)

TODO: think through what it means to have an out-param of [&u32; 4]! (We should conservatively reject it for now.)

Array Types

Array types like [u32; 4] have the layout/repr you would expect from languages like C and Rust, but there's a problem with passing them by-value: C is supremely fucking weird about passing arrays by value if they're not wrapped in a struct.

This is actually sugar for pass-by-reference (and largely decays into u32*):

void blah(u32[4] array);

And this doesn't even compile:

u32[4] blah();

To avoid trying to squish weird square pegs in round holes, passing an array by-value like this in KDLScript should indeed mean passing it by-value! C/C++ backends should simply refuse to lower such a KDLScript program and produce an error. Rust backends are free to lower it in the obvious way. If you want to test the C way, use this:

fn "blah" {
    inputs { _ "&[u32; 4]"; }
}

NOT THIS:

fn "blah" {
    inputs { _ "[u32; 4]"; }
}

TODO: does anything special need to be said about empty arrays? Or do backends just YOLO the obvious lowering? (yes?)

Primitives

There are various builtin primitives, such as:

  • integers (i8, u128, ...)
  • floats (f16, f32, f64, f128, ...)
  • bool- your old pal the boolean (TriBool support TBD)
  • ptr - an opaque pointer (void*), used when you're interested in the value of the pointer and not its pointee (unlike &T)

In the future there will probably be language-specific primitives like c_long.

TODO: figure out if ptr should be nullable or not by default. Relevant to whether we want to have Option and if Rust code should lower it to *mut ().

Functions

Functions are where the Actually Useful library version of KDLScript and the Just A Meme application version of KDLScript diverge. This difference is configured by the eval feature.

In library form KDLScript only has function signature declarations, and it's the responsibility of the abi-cafe backend using KDLScript to figure out what the body should be. In binary form you can actually fill in the body with some hot garbage I hacked up.

For now we'll only document declaration.

Here is a fairly complicated/contrived example function:

fn "my_func" {
    inputs {
        x "u32"
        y "[&MyType; 3]"
        _ "&bool"
    }
    outputs {
        _ "bool"
        _ "&ErrorCode"
    }
}

Functions can have arbitrarily many inputs and outputs with either named or "positional" names (which will get autonaming like arg0, arg1 and out0, out1, etc.).

As discussed in the section on "Reference Types", references in outputs are sugar for out-params, which should appear after the inputs and before outputs. So the above would lower to something like the following in Rust (values chosen arbitrarily here, and we wouldn't use asserts in practice, but instead record the values for comparison):

fn my_func(
    x: u32,
    y: [&MyType; 3],
    arg2: &bool,
    out1: &mut ErrorCode,
) -> bool {
    // Check the inputs are what we expect...
    assert_eq!(x, 5);
    assert_eq!(y[0].val, 8);
    assert_eq!(y[1].val, 9);
    assert_eq!(y[2].val, 10);
    assert_eq!(*arg2, true);

    // Return outputs
    *out1 = ErrorCode::Bad;
    return true;
}


fn my_func_caller() {
    // Setup the inputs
    let x = 5;
    let y_0 = MyType { val: 8 };
    let y_1 = MyType { val: 9 };
    let y_2 = MyType { val: 10 };
    let y = [&y_0, &y_1, &y_1];
    let arg2 = false;

    // Setup outparams
    let mut out1 = ErrorCode::default();
    
    // Do the call
    let out0 = my_func(x, y, &arg2, &mut out1);

    // Checkout outputs
    assert_eq!(out0, true);
    assert_eq!(*out1, ErrorCode::Bad);
}

God writing that sucked ass, and it wasn't even the "proper" value checking! This is why I built all this complicated crap to automate it!

TODO: what does it mean if you have multiple non-out-param outputs? Return a tuple? Error out on all known backends?

TODO: contemplate if named args should be the equivalent of Swift named args, where the inner and outer name can vary, but the outer name is like, part of the function name itself (and/or ABI)?

TODO: contemplate varargs support

Strawman varargs syntax for saying there's varargs but that you want to test this particular set of values passed in them:

func "blah" {
    inputs {
        x "u32"
        "..." {
            _ "f32"
            _ "f32"
        }
    }
}

SUB TODO: figure out if varargs should allow for specifying what the callee and caller think is happening as different

SUB TODO: figure out if we should try to support that fucked up thing where Swift supports multiple named varargs lists

Attributes

Attributes start with @ and apply to the next item (function or type) that follows them. This is only kinda stubbed out and not really impl'd.

TODO: add attributes:

  • @ "whatever you want here" - passthrough attrs to underlying language
  • @tag "u32" - setting the backing type on an enum's tag
  • @packed N? - making a type packed
  • @align N - making a type aligned

TODO: should fields/args be able to have attributes?

TODO: at what level should attributes be validated/processed? The parser? Type checker? Backends?

Demo

The evaluator has not at all kept up with the type system, so it can only handle some really simply stuff. You can run the examples/simple.kdl. All the other examples will just dump type information and decl order as they don't define main.

> cargo run examples/simple.kdl

{
  y: 22
  x: 11
}
33

Is executing the following kdl document:

@derive "Display"
struct "Point" {
    x "f64"
    y "f64"
}

fn "main" {
    outputs { _ "f64"; }

    let "pt1" "Point" {
        x 1.0
        y 2.0
    }
    let "pt2" "Point" {
        x 10.0
        y 20.0
    }
    
    let "sum" "add:" "pt1" "pt2"
    print "sum"

    return "+:" "sum.x" "sum.y"
}

fn "add" {
    inputs { a "Point"; b "Point"; }
    outputs { _ "Point"; }

    return "Point" {
        x "+:" "a.x" "b.x"
        y "+:" "a.y" "b.y"
    }
}

Why Did You Make KDL Documents Executable???

To spite parsers.

Ok more seriously because I needed something like this for abi-cafe but it's a ton of work so I'm self-motivating by wrapping it in the guise of a scripting language because it's funny and I can make more incremental progress, as I have a lot to implement before it's usable in the thing it's built for.

Comments
  • Bump serde_json from 1.0.86 to 1.0.92

    Bump serde_json from 1.0.86 to 1.0.92

    Bumps serde_json from 1.0.86 to 1.0.92.

    Release notes

    Sourced from serde_json's releases.

    v1.0.92

    • Documentation improvements

    v1.0.91

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)
    Commits
    • a9c984f Release 1.0.92
    • c42b724 Merge pull request #980 from serde-rs/docrepr
    • eaa287c Hide repr attribute from documentation
    • 7bc6c86 RawValue -> repr(transparent)
    • e41ee42 Update indoc dev-dependency to version 2
    • 8cebe89 Speed up cargo fuzz CI job
    • 74f510e Sync license text with rust-lang repos
    • 557f45c Merge pull request #964 from dtolnay/docsrs
    • 9edf7fa Replace docs.serde.rs links with intra-rustdoc links
    • 9947ae6 Point documentation links to docs.rs instead of docs.serde.rs
    • 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] 1
  • Bump clap from 4.0.9 to 4.1.4

    Bump clap from 4.0.9 to 4.1.4

    Bumps clap from 4.0.9 to 4.1.4.

    Release notes

    Sourced from clap's releases.

    v4.1.4

    [4.1.4] - 2023-01-24

    Fixes

    • (help) Respect disable_colored_help when using arg_required_else_help

    Performance

    • Speed up compiling arg! macro

    v4.1.3

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    v4.1.2

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    v4.1.1

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    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)

    v4.0.30

    [4.0.30] - 2022-12-21

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.1.4] - 2023-01-24

    Fixes

    • (help) Respect disable_colored_help when using arg_required_else_help

    Performance

    • Speed up compiling arg! macro

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    [4.1.0] - 2023-01-13

    Compatibility

    MSRV changed to 1.64.0

    For apps with custom --help and --version flags:

    • Descriptions for --help and --version changed

    When apps have errors imitating clap's error style:

    • Error message style was changed, including
      • Moving away from "did you mean" to tips
      • Leading letter is lower case
      • "For more" added some punctuation

    Features

    • ArgMatches::get_occurrences support for argument values to be grouped by their occurrence

    Fixes

    ... (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 4.0.9 to 4.1.3

    Bump clap from 4.0.9 to 4.1.3

    Bumps clap from 4.0.9 to 4.1.3.

    Release notes

    Sourced from clap's releases.

    v4.1.3

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    v4.1.2

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    v4.1.1

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    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)

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    v4.0.29

    [4.0.29] - 2022-11-29

    v4.0.28

    [4.0.28] - 2022-11-29

    Fixes

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    [4.1.0] - 2023-01-13

    Compatibility

    MSRV changed to 1.64.0

    For apps with custom --help and --version flags:

    • Descriptions for --help and --version changed

    When apps have errors imitating clap's error style:

    • Error message style was changed, including
      • Moving away from "did you mean" to tips
      • Leading letter is lower case
      • "For more" added some punctuation

    Features

    • ArgMatches::get_occurrences support for argument values to be grouped by their occurrence

    Fixes

    • (derive) Allow upgrade_from when arguments / subcommands are explicitly marked as required
    • (help) Try be more clearer and succinct with --help and --version (also helps with overflow)
    • (error) Try to be more clearer and succinct with error messages
    • (error) Officially adopt an error style guide

    [4.0.32] - 2022-12-22

    Fixes

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

    ... (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 4.0.9 to 4.1.1

    Bump clap from 4.0.9 to 4.1.1

    Bumps clap from 4.0.9 to 4.1.1.

    Release notes

    Sourced from clap's releases.

    v4.1.1

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    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)

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    v4.0.29

    [4.0.29] - 2022-11-29

    v4.0.28

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    v4.0.26

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    v4.0.25

    [4.0.25] - 2022-11-15

    Features

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    [4.1.0] - 2023-01-13

    Compatibility

    MSRV changed to 1.64.0

    For apps with custom --help and --version flags:

    • Descriptions for --help and --version changed

    When apps have errors imitating clap's error style:

    • Error message style was changed, including
      • Moving away from "did you mean" to tips
      • Leading letter is lower case
      • "For more" added some punctuation

    Features

    • ArgMatches::get_occurrences support for argument values to be grouped by their occurrence

    Fixes

    • (derive) Allow upgrade_from when arguments / subcommands are explicitly marked as required
    • (help) Try be more clearer and succinct with --help and --version (also helps with overflow)
    • (error) Try to be more clearer and succinct with error messages
    • (error) Officially adopt an error style guide

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

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    ... (truncated)

    Commits
    • 74a82d7 chore: Release
    • 06f392a docs: Update changelog
    • 4d913fa Merge pull request #4639 from epage/error
    • 162a556 fix(error): Try to soften unexpected argument/value errors
    • 34d856b chore: Release
    • 889ca7a chore: Bump versions for 4.1
    • 2bafb9b docs(contrib): Define a compatibility policy for help/error output
    • a41ca2e docs: Update changelog
    • 523adc2 Merge pull request #4635 from epage/stablize
    • b4f111a feat: Stablize ArgMatches::get_occurrences
    • 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] 1
  • Bump insta from 1.21.0 to 1.26.0

    Bump insta from 1.21.0 to 1.26.0

    Bumps insta from 1.21.0 to 1.26.0.

    Changelog

    Sourced from insta's changelog.

    1.26.0

    • Make canonicalization in glob! optional to better support WASI.

    1.25.0

    • Added a way to disable the undiscoverable snapshots warning. By setting the review.warn_undiscovered config key to false a warning is never printed. (#334)
    • Force updating snapshots will now not overwrite files that did not change. This improves the behavior for situations if that behavior is preferred as a default choice. (#335)

    1.24.1

    • Fix non working --include-hidden flag (#331)
    • Fix incorrect mapping of review.include_ignored (#330)

    1.24.0

    • Added an insta tool config (.config/insta.yaml) to change the behavior of insta and cargo-insta. (#322)
    • Renamed --no-ignore to --include-ignored.
    • Added --include-hidden to instruct insta to also walk into hidden paths.
    • Added new --unreferenced option to cargo-insta test which allows fine tuning of what should happen with unreferenced files. It's now possible to ignore (default), warn, reject or delete unreferenced snapshots. (#328)
    • Resolved an error message about doc tests when using nextest with test targeting. (#317)

    1.23.0

    • Add a hint if snapshots might be skipped. (#314)
    • Avoid extra newline in YAML snapshots. (#311)

    1.22.0

    • Added support for rendering some invisibles in diffs. This now also should make sure that ANSI sequences in strings are no longer screwing up the terminal output. (#308)
    • Prevent inline snapshots to be used in loops. (#307)
    • Support the --target option to cargo insta test. (#309)
    • Globbing now adds directories as disambiguators into the snapshot suffixes. This allows patterns such as foo/*/*.txt without creating conflicts. (#310)

    1.21.2

    ... (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 insta from 1.21.0 to 1.24.1

    Bump insta from 1.21.0 to 1.24.1

    Bumps insta from 1.21.0 to 1.24.1.

    Changelog

    Sourced from insta's changelog.

    1.24.1

    • Fix non working --include-hidden flag (#331)
    • Fix incorrect mapping of review.include_ignored (#330)

    1.24.0

    • Added an insta tool config (.config/insta.yaml) to change the behavior of insta and cargo-insta. (#322)
    • Renamed --no-ignore to --include-ignored.
    • Added --include-hidden to instruct insta to also walk into hidden paths.
    • Added new --unreferenced option to cargo-insta test which allows fine tuning of what should happen with unreferenced files. It's now possible to ignore (default), warn, reject or delete unreferenced snapshots. (#328)
    • Resolved an error message about doc tests when using nextest with test targeting. (#317)

    1.23.0

    • Add a hint if snapshots might be skipped. (#314)
    • Avoid extra newline in YAML snapshots. (#311)

    1.22.0

    • Added support for rendering some invisibles in diffs. This now also should make sure that ANSI sequences in strings are no longer screwing up the terminal output. (#308)
    • Prevent inline snapshots to be used in loops. (#307)
    • Support the --target option to cargo insta test. (#309)
    • Globbing now adds directories as disambiguators into the snapshot suffixes. This allows patterns such as foo/*/*.txt without creating conflicts. (#310)

    1.21.2

    • Added missing parameters to cargo insta test. (#305)
    • Fixed a sorting issue in hash maps for compound keys. (#304)

    1.21.1

    • Fix incorrect handling of extra args to cargo insta test.
    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 insta from 1.21.0 to 1.24.0

    Bump insta from 1.21.0 to 1.24.0

    Bumps insta from 1.21.0 to 1.24.0.

    Changelog

    Sourced from insta's changelog.

    1.24.0

    • Added an insta tool config (.config/insta.yaml) to change the behavior of insta and cargo-insta. (#322)
    • Renamed --no-ignore to --include-ignored.
    • Added --include-hidden to instruct insta to also walk into hidden paths.
    • Added new --unreferenced option to cargo-insta test which allows fine tuning of what should happen with unreferenced files. It's now possible to ignore (default), warn, reject or delete unreferenced snapshots. (#328)
    • Resolved an error message about doc tests when using nextest with test targeting. (#317)

    1.23.0

    • Add a hint if snapshots might be skipped. (#314)
    • Avoid extra newline in YAML snapshots. (#311)

    1.22.0

    • Added support for rendering some invisibles in diffs. This now also should make sure that ANSI sequences in strings are no longer screwing up the terminal output. (#308)
    • Prevent inline snapshots to be used in loops. (#307)
    • Support the --target option to cargo insta test. (#309)
    • Globbing now adds directories as disambiguators into the snapshot suffixes. This allows patterns such as foo/*/*.txt without creating conflicts. (#310)

    1.21.2

    • Added missing parameters to cargo insta test. (#305)
    • Fixed a sorting issue in hash maps for compound keys. (#304)

    1.21.1

    • Fix incorrect handling of extra args to cargo insta test.
    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 
    opened by dependabot[bot] 1
  • Bump clap from 4.0.9 to 4.0.32

    Bump clap from 4.0.9 to 4.0.32

    Bumps clap from 4.0.9 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)

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    v4.0.29

    [4.0.29] - 2022-11-29

    v4.0.28

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    v4.0.26

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    v4.0.25

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    v4.0.24

    [4.0.24] - 2022-11-14

    Fixes

    ... (truncated)

    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)

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    [4.0.29] - 2022-11-29

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    [4.0.27] - 2022-11-24

    Features

    • Have Arg::value_parser accept Vec<impl Into<PossibleValue>>
    • Implement Display and FromStr for ColorChoice

    Fixes

    • Remove soundness issue by switching from atty to is-terminal

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    [4.0.24] - 2022-11-14

    ... (truncated)

    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 
    opened by dependabot[bot] 1
  • Bump clap from 4.0.9 to 4.0.30

    Bump clap from 4.0.9 to 4.0.30

    Bumps clap from 4.0.9 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

    v4.0.29

    [4.0.29] - 2022-11-29

    v4.0.28

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    v4.0.26

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    v4.0.25

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    v4.0.24

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    v4.0.23

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    v4.0.22

    [4.0.22] - 2022-11-07

    Fixes

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    [4.0.29] - 2022-11-29

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    [4.0.27] - 2022-11-24

    Features

    • Have Arg::value_parser accept Vec<impl Into<PossibleValue>>
    • Implement Display and FromStr for ColorChoice

    Fixes

    • Remove soundness issue by switching from atty to is-terminal

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    ... (truncated)

    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 
    opened by dependabot[bot] 1
  • Bump serde_json from 1.0.86 to 1.0.91

    Bump serde_json from 1.0.86 to 1.0.91

    Bumps serde_json from 1.0.86 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • d2f9368 Release 1.0.89
    • 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] 1
  • Bump insta from 1.21.0 to 1.28.0

    Bump insta from 1.21.0 to 1.28.0

    Bumps insta from 1.21.0 to 1.28.0.

    Changelog

    Sourced from insta's changelog.

    1.28.0

    • Added allow_duplicates! to enable multiple assertions for a single snapshot. (#346)
    • Ensure that expressions formatted with rustfmt use unix newlines.
    • Added a way to disable diffing in review. (#348)
    • Added three argument version of glob! to set a different base path. (#347)
    • Added rounded_redaction to truncate floating point values. (#350)

    1.27.0

    • Fix an issue where the inline snapshot patcher could panic in certain situations. (#341)
    • cargo insta test now correctly detects CI environments like cargo test does. In that case it will by fail rather than create snapshot update files. (#345)
    • Added cargo insta test --check to force check runs. (#345)

    1.26.0

    • Make canonicalization in glob! optional to better support WASI.

    1.25.0

    • Added a way to disable the undiscoverable snapshots warning. By setting the review.warn_undiscovered config key to false a warning is never printed. (#334)
    • Force updating snapshots will now not overwrite files that did not change. This improves the behavior for situations if that behavior is preferred as a default choice. (#335)

    1.24.1

    • Fix non working --include-hidden flag (#331)
    • Fix incorrect mapping of review.include_ignored (#330)

    1.24.0

    • Added an insta tool config (.config/insta.yaml) to change the behavior of insta and cargo-insta. (#322)
    • Renamed --no-ignore to --include-ignored.
    • Added --include-hidden to instruct insta to also walk into hidden paths.
    • Added new --unreferenced option to cargo-insta test which allows fine tuning of what should happen with unreferenced files. It's now possible to ignore (default), warn, reject or delete unreferenced snapshots. (#328)
    • Resolved an error message about doc tests when using nextest with test targeting. (#317)

    ... (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] 0
  • Bump clap from 4.0.9 to 4.1.6

    Bump clap from 4.0.9 to 4.1.6

    Bumps clap from 4.0.9 to 4.1.6.

    Release notes

    Sourced from clap's releases.

    v4.1.6

    [4.1.6] - 2023-02-15

    Fixes

    • (help) Don't show long help for --help just because hidden possible values include a description

    v4.1.4

    [4.1.4] - 2023-01-24

    Fixes

    • (help) Respect disable_colored_help when using arg_required_else_help

    Performance

    • Speed up compiling arg! macro

    v4.1.3

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    v4.1.2

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    v4.1.1

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    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

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.1.6] - 2023-02-15

    Fixes

    • (help) Don't show long help for --help just because hidden possible values include a description

    [4.1.5] - 2023-02-15

    Fixes

    • (help) Don't show long help for --help just because a hidden arg has a possible value with a description

    [4.1.4] - 2023-01-24

    Fixes

    • (help) Respect disable_colored_help when using arg_required_else_help

    Performance

    • Speed up compiling arg! macro

    [4.1.3] - 2023-01-23

    Fixes

    • (error) Improve suggested flag/value/subcommand when two share a long preifx
    • (error) When suggesting one of several subcommands, use the plural subcommands, rather than subcommand

    [4.1.2] - 2023-01-23

    Fixes

    • In documentation, refer to get_flag, rather than get_one::<bool>

    [4.1.1] - 2023-01-14

    Fixes

    • (error) Small softening attempt for "unexpected argument" error

    [4.1.0] - 2023-01-13

    Compatibility

    MSRV changed to 1.64.0

    For apps with custom --help and --version flags:

    • Descriptions for --help and --version changed

    ... (truncated)

    Commits
    • 5e240dd chore: Release
    • 4648b6b docs: Update changelog
    • 8c92ef6 fix(help): Fix yet another --help long help edge case (#4712)
    • fb9435d chore: Release
    • 9270d23 docs: Update changelog
    • 473cf17 fix(help): Fix --help help text in edge case (#4710)
    • 62da8f9 Merge pull request #4711 from aleksanderkrauze/improve-builder-str-inner-into...
    • d6e7d46 Improve builder::str::inner::Inner::into_string implementation
    • ad5d676 Merge pull request #4696 from graves501/patch-1
    • ad6778d Fix typo in git.rs
    • 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] 0
  • Bump serde_json from 1.0.86 to 1.0.93

    Bump serde_json from 1.0.86 to 1.0.93

    Bumps serde_json from 1.0.86 to 1.0.93.

    Release notes

    Sourced from serde_json's releases.

    v1.0.93

    • Support 128-bit integers in serde_json::to_value (#982)

    v1.0.92

    • Documentation improvements

    v1.0.91

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)
    Commits
    • 0ebeede Release 1.0.93
    • 4fd4850 Merge pull request #982 from serde-rs/integer128tovalue
    • e3d13cd Support 128-bit integers in to_value
    • f77ad47 Add test of integer128 to_value
    • a9c984f Release 1.0.92
    • c42b724 Merge pull request #980 from serde-rs/docrepr
    • eaa287c Hide repr attribute from documentation
    • 7bc6c86 RawValue -> repr(transparent)
    • e41ee42 Update indoc dev-dependency to version 2
    • 8cebe89 Speed up cargo fuzz CI job
    • 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] 0
  • Bump petgraph from 0.6.2 to 0.6.3

    Bump petgraph from 0.6.2 to 0.6.3

    Bumps petgraph from 0.6.2 to 0.6.3.

    Changelog

    Sourced from petgraph's changelog.

    Version 0.6.3 (2023-02-07)

    • Added an iterator over subgraph isomorphisms ([#500](https://github.com/petgraph/petgraph/issues/500)_)
    • Added serde support on GraphMap ([#496](https://github.com/petgraph/petgraph/issues/496)_)
    • Added reverse method for StableGraph ([#533](https://github.com/petgraph/petgraph/issues/533)_)
    • Added edges_connecting iterator for StableGraph ([#521](https://github.com/petgraph/petgraph/issues/521)_)
    • Fix Floyd-Warshall algorithm behaviour on undirected graphs (487_)
    • Fix IntoEdgesDirected implementation for NodeFiltered when direction is Incoming (476_)
    • Fix cardinality check in subgraph isomorphism (472_)
    • Fix UB in MatrixGraph ([#505](https://github.com/petgraph/petgraph/issues/505)_)

    .. _[#472](https://github.com/petgraph/petgraph/issues/472): petgraph/petgraph#472 .. _[#476](https://github.com/petgraph/petgraph/issues/476): petgraph/petgraph#476 .. _[#487](https://github.com/petgraph/petgraph/issues/487): petgraph/petgraph#487 .. _[#496](https://github.com/petgraph/petgraph/issues/496): petgraph/petgraph#496 .. _[#500](https://github.com/petgraph/petgraph/issues/500): petgraph/petgraph#500 .. _[#505](https://github.com/petgraph/petgraph/issues/505): petgraph/petgraph#505 .. _[#521](https://github.com/petgraph/petgraph/issues/521): petgraph/petgraph#521 .. _[#533](https://github.com/petgraph/petgraph/issues/533): petgraph/petgraph#533

    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] 0
  • Bump nom from 7.1.1 to 7.1.3

    Bump nom from 7.1.1 to 7.1.3

    Bumps nom from 7.1.1 to 7.1.3.

    Changelog

    Sourced from nom's changelog.

    7.1.3 - 2023-01-15

    Thanks

    Fixed

    • panic in many and count combinators when the output type is zero sized

    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 
    opened by dependabot[bot] 0
  • Bump serde from 1.0.145 to 1.0.152

    Bump serde from 1.0.145 to 1.0.152

    Bumps serde from 1.0.145 to 1.0.152.

    Release notes

    Sourced from serde's releases.

    v1.0.152

    • Documentation improvements

    v1.0.151

    • Update serde::{ser,de}::StdError to re-export core::error::Error when serde is built with feature="std" off and feature="unstable" on (#2344)

    v1.0.150

    • Relax some trait bounds from the Serialize impl of HashMap and BTreeMap (#2334)
    • Enable Serialize and Deserialize impls of std::sync::atomic types on more platforms (#2337, thanks @​badboy)

    v1.0.149

    • Relax some trait bounds from the Serialize impl of BinaryHeap, BTreeSet, and HashSet (#2333, thanks @​jonasbb)

    v1.0.148

    • Support remote derive for generic types that have private fields (#2327)

    v1.0.147

    • Add serde::de::value::EnumAccessDeserializer which transforms an EnumAccess into a Deserializer (#2305)

    v1.0.146

    • Allow internally tagged newtype variant to contain unit (#2303, thanks @​tage64)
    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
    • 44bf363 Release 1.0.151
    • 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] 0
Releases(v0.2.0)
Owner
Aria Beingessner
Aria Beingessner
A very simple third-party cargo subcommand to execute a custom command

cargo-x A very simple third-party cargo subcommand to execute a custom command Usage install cargo-x cargo install cargo-x or upgrade cargo install -

刘冲 9 Dec 26, 2022
👁️ A tool to execute a certain command when a target file is modified.

Ojo Ojo is a simple utility that allows you to execute a specific command each time a certain file is being saved. Usage Let's say you are sick the fo

Tarek Kunze 13 Dec 25, 2022
Execute Javascript code in the Dioxus, and get the return value ( for Dioxus )

Golde Dioxus Execute Javascript code in the Dioxus, and get the return value. This demo can help use Javascript to calc the + operator formula. use di

YuKun Liu 15 Dec 27, 2022
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 369 Jan 2, 2023
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 227 Jun 1, 2022
Abuse the node.js inspector mechanism in order to force any node.js/electron/v8 based process to execute arbitrary javascript code.

jscythe abuses the node.js inspector mechanism in order to force any node.js/electron/v8 based process to execute arbitrary javascript code, even if t

Simone Margaritelli 301 Jan 4, 2023
Execute Rust code carefully, with extra checking along the way

cargo-careful cargo careful is a tool to run your Rust code extra carefully -- opting into a bunch of nightly-only extra checks that help detect Undef

Ralf Jung 240 Dec 28, 2022
A rust library that allows you to host the CLR and execute dotnet binaries.

ClrOxide ClrOxide is a rust library that allows you to host the CLR and dynamically execute dotnet binaries. I wanted to call it Kepler for no particu

YK 94 Apr 12, 2023
REC2 (Rusty External Command and Control) is client and server tool allowing auditor to execute command from VirusTotal and Mastodon APIs written in Rust. 🦀

Information: REC2 is an old personal project (early 2023) that I didn't continue development on. It's part of a list of projects that helped me to lea

Quentin Texier (g0h4n) 104 Oct 7, 2023
A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.

FileQL - File Query Language FileQL is a tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK. Sampl

Amr Hesham 39 Mar 12, 2024
CLI Tool for tagging and organizing files by tags.

wutag ?? ??️ CLI tool for tagging and organizing files by tags. Install If you use arch Linux and have AUR repositories set up you can use your favour

Wojciech Kępka 32 Dec 6, 2022
mdBook is a utility to create modern online books from Markdown files.

Create book from markdown files. Like Gitbook but implemented in Rust

The Rust Programming Language 11.6k Jan 4, 2023
CLI tool to bake your fresh and hot MD files

At least once in your Rust dev lifetime you wanted to make sure all code examples in your markdown files are up-to-date, correct and code is formated, but you couldn't make that done with already existing tools - fear not!

Patryk Budzyński 39 May 8, 2021
The dead easy way to use config files in your rust project

Configr The dead easy way to use config files in your project This will load a config.toml file if it exists, otherwise it will create the needed fold

Carsten Kragelund Jørgensen 4 Jul 1, 2022
miniserve - a CLI tool to serve files and dirs over HTTP

?? For when you really just want to serve some files over HTTP right now!

Sven-Hendrik Haase 4.1k Jan 6, 2023
A cli tool to download specific GitHub directories or files

cloneit A cli tool to download specific GitHub directories or files. Installation From git git clone https://github.com/alok8bb/cloneit cd cloneit car

Alok 54 Dec 20, 2022
Voila is a domain-specific language launched through CLI tool for operating with files and directories in massive amounts in a fast & reliable way.

Voila is a domain-specific language designed for doing complex operations to folders & files. It is based on a CLI tool, although you can write your V

Guillem Jara 86 Dec 12, 2022
Tools to encrypt/decrypt and pack/unpack RouterOS v6.13+ backup files

RouterOS-Backup-Tools Tools to encrypt/decrypt and pack/unpack RouterOS v6.13+ backup files Usage examples Info cargo run -- info -i MikroTik.backup D

Marco Grassi 24 Dec 5, 2022
Crate to generate files in ROFF format (Rust)

roffman A crate to generate roff man pages. Usage Add the following to the Cargo.toml: [dependencies] roffman = "0.3" Example use roffman::{Roff, Roff

Wojciech Kępka 23 Jul 13, 2022