An advanced, reactive UI library for Rust

Overview
Logo
An advanced, reactive UI library for Rust
Report a Bug · Request a Feature . Ask a Question


What is agui?

Agui is an advanced reactive GUI project for Rust, inspired by Flutter and taking some concepts from other related UI systems.

WARNING

Agui is very much still in heavy active development. The API will likely change, and it has yet to go under rigorous testing. However, that's not to say it's not ready for moderate use.

🛠️ Installation

Agui is available on crates.io, Rust's official package repository. Just add this to your Cargo.toml file:

[dependencies]
agui = "0.1" # ensure this is the latest version

🚀 Usage

Docs for agui are under development, however you can check the agui_agpu/examples directory for basic setup, and agui_widgets for many examples on widget creation.

Creating new widgets

Currently, widgets are created using a Widget derive macro, and by implementing the WidgetImpl trait.

#[derive(Default, Widget)]
// The default layout type is "column" but we want it to be a "row" instead.
#[widget(layout = "row")]
pub struct MyWidget {
    // We can define parameters, here.
    pub layout: Ref<Layout>,
}

impl WidgetImpl for MyWidget {
    // Widgets can return nothing, one or more children, or an error. BuildResult is the enum we use to cover those possibilities.
    fn build(&self, ctx: &WidgetContext) -> BuildResult {
        // `ctx.set_layout` is what we use to define this widget's layout parameters.
        ctx.set_layout(Ref::clone(&self.layout));

        build! {
            Button { }
        }
    }
}

What's build!?

The build! macro makes it significantly cleaner and easier to init new widgets. All it does is initialize unset fields in a struct to their Default::default(), and add .into() to the struct itself.

// It allows us to turn this:

fn build(&self, ctx: &WidgetContext) -> BuildResult {
    BuildResult::One(
        Button {
            layout: Layout::default(),
            color: Color::default(),
            child: Text {
                text: String::from("A Button")
            }
        }
    )
}

// Into this:

use agui::macros::build;

fn build(&self, ctx: &WidgetContext) -> BuildResult {
    build!{
        Button {
            child: Text {
                text: String::from("A Button")
            }
        }
    }
}

A more complex widget implementation (featuring global state and computed values) can be seen in the Button widget.

Functional Widgets are coming soon, which will make creating them even easier.

🤝 Contributing

Contributions are encouraged, and very welcome. Feel free to check the issues page if you wish to do so!

Please go through existing issues and pull requests to check if somebody else is already working on it. Also, make sure to run cargo test before you commit your changes!

Comments
  • Update sysinfo requirement from 0.23 to 0.26

    Update sysinfo requirement from 0.23 to 0.26

    Updates the requirements on sysinfo to permit the latest version.

    Changelog

    Sourced from sysinfo's changelog.

    0.26.0

    • Switch memory unit from kilobytes to bytes.
    • Windows: Fix Windows version display on Windows 11.

    0.25.3

    • Add macOS M1 CI checks.
    • macOS M1: Add temperature support.
    • macOS: Fix leak in disk retrieval.

    0.25.2

    • Windows: Fix Process::exe information retrieval.
    • All supported platforms: Correctly handle a PID owner change (#809).

    0.25.1

    • Linux: Fix potential problem on ProcessExt::exe in case /proc/<pid>/exe cannot be read.
    • Add SystemExt::sort_disks_by.

    0.25.0

    • Linux: CPU frequency is now retrieved on-demand as expected when CpuRefreshKind::frequency is true.
    • System::refresh_cpu behaviour changed: it only computes CPU usage and doesn't retrieve CPU frequency.

    0.24.7

    • Windows: Fix boot time computation.
    • macOS: Fix available memory computation.
    • Some documentation fixes.

    0.24.6

    • macOS: Don't compute CPU usage when elapsed time is 0.
    • macOS: Fix memory leak when retrieving disks.
    • C interface: Fix char cast when platform is using unsigned chars.

    0.24.5

    • Implement Hash trait on Uid and Gid types.
    • Remove dependency once_cell for targets other than linux, android and windows.

    0.24.4

    • Windows: Fix System::refresh_process when required higher priviledges.

    0.24.3

    • macOS: Fix System::refresh_processes badly handling updates.

    ... (truncated)

    Commits

    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
  • Update sysinfo requirement from 0.23 to 0.25

    Update sysinfo requirement from 0.23 to 0.25

    Updates the requirements on sysinfo to permit the latest version.

    Changelog

    Sourced from sysinfo's changelog.

    0.25.1

    • Linux: Fix potential problem on ProcessExt::exe in case /proc/<pid>/exe cannot be read.
    • Add SystemExt::sort_disks_by.

    0.25.0

    • Linux: CPU frequency is now retrieved on-demand as expected when CpuRefreshKind::frequency is true.
    • System::refresh_cpu behaviour changed: it only computes CPU usage and doesn't retrieve CPU frequency.

    0.24.7

    • Windows: Fix boot time computation.
    • macOS: Fix available memory computation.
    • Some documentation fixes.

    0.24.6

    • macOS: Don't compute CPU usage when elapsed time is 0.
    • macOS: Fix memory leak when retrieving disks.
    • C interface: Fix char cast when platform is using unsigned chars.

    0.24.5

    • Implement Hash trait on Uid and Gid types.
    • Remove dependency once_cell for targets other than linux, android and windows.

    0.24.4

    • Windows: Fix System::refresh_process when required higher priviledges.

    0.24.3

    • macOS: Fix System::refresh_processes badly handling updates.
    • FreeBSD: Improve performance of System::refresh_processes.

    0.24.2

    • Windows: Fix CPU usage computation.
    • Windows: Enable extra feature on winapi.
    • macOS: Fix executable path retrieval.

    0.24.1

    • Use saturating_* function for mathematical operations to prevent overflows/underflows.

    0.24.0

    • Rename Processor into Cpu and ProcessorExt into CpuExt.
    • Retrieve information about a process' owner.

    ... (truncated)

    Commits

    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
  • Update sysinfo requirement from 0.23 to 0.24

    Update sysinfo requirement from 0.23 to 0.24

    Updates the requirements on sysinfo to permit the latest version.

    Changelog

    Sourced from sysinfo's changelog.

    0.24.1

    • Use saturating_* function for mathematical operations to prevent overflows/underflows.

    0.24.0

    • Rename Processor into Cpu and ProcessorExt into CpuExt.
    • Retrieve information about a process' owner.
    • Add SystemExt::get_user_by_id.
    • Add ProcessExt::user_id.
    • Add ProcessExt::group_id.
    • Add user-related methods to ProcessRefreshKind.
    • Linux: Improve performance when creating new Process by improving retrieval of user ID and group ID.

    0.23.14

    • Linux: Fix processes' virtual memory computation.

    0.23.13

    • macOS/FreeBSD: Fix System::refresh_process and System::refresh_process_specifics returned value.
    • Linux: Small performance improvement when updating process list.

    0.23.12

    • Linux: Improve System::refresh_cpu performance.
    • Fix clippy lints.

    0.23.11

    • Add FreeBSD to the "supported OS" list
    • Remove useless benchmark results

    0.23.10

    • Improve documentation of SystemExt::refresh_cpu.

    0.23.9

    • macOS: Fix disk retrieval

    0.23.8

    • Windows: Fix underflow for Process run_time computation

    0.23.7

    • macOS: Ignore non-root drive partitions

    0.23.6

    ... (truncated)

    Commits

    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
  • Update tracing-subscriber requirement from 0.2 to 0.3

    Update tracing-subscriber requirement from 0.2 to 0.3

    Updates the requirements on tracing-subscriber to permit the latest version.

    Release notes

    Sourced from tracing-subscriber's releases.

    tracing-subscriber 0.3.11

    This is a bugfix release for the Filter implementation for EnvFilter added in v0.3.10.

    Fixed

    • env-filter: Added missing Filter::on_record callback to EnvFilter's Filter impl (#2058)
    • env-filter: Fixed method resolution issues when calling EnvFilter methods with both the Filter and Layer traits in scope (#2057)
    • env-filter: Fixed EnvFilter::builder().parse() and other parsing methods returning an error when parsing an empty string (#2052)

    Thanks to new contributor @​Ma124 for contributing to this release!

    #2058: tokio-rs/tracing#2058 #2057: tokio-rs/tracing#2057 #2052: tokio-rs/tracing#2052

    Commits
    • b9da544 subscriber: prepare to release v0.3.11 (#2062)
    • 40fb304 tracing: prepare to release v0.1.33 (#2061)
    • d91af65 chore(ci): add a minimal-versions check (#2015)
    • ce613f8 journald: remove span field prefixes; add separate fields for span data (#1968)
    • b0146c5 subscriber: add missing Filter::on_record for to EnvFilter (#2058)
    • d554b2b subscriber: add inherent impls for EnvFilter methods (#2057)
    • 75f82ec subscriber: fix empty string handling in EnvFilter::builder().parse (#2052)
    • 66514cd chore: fix Rust 1.60 warnings (#2056)
    • 38da7ea tracing: fix issues compiling for WASM/other <=32-bit platforms (#2060)
    • 8f240e6 core: prepare to release 0.1.24 (#2042)
    • Additional commits viewable in compare view

    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
  • Update parking_lot requirement from 0.11 to 0.12

    Update parking_lot requirement from 0.11 to 0.12

    Updates the requirements on parking_lot to permit the latest version.

    Changelog

    Sourced from parking_lot's changelog.

    parking_lot 0.12.0, parking_lot_core 0.9.0, lock_api 0.4.6 (2022-01-28)

    • The MSRV is bumped to 1.49.0.
    • Disabled eventual fairness on wasm32-unknown-unknown. (#302)
    • Added a rwlock method to report if lock is held exclusively. (#303)
    • Use new asm! macro. (#304)
    • Use windows-rs instead of winapi for faster builds. (#311)
    • Moved hardware lock elision support to a separate Cargo feature. (#313)
    • Removed used of deprecated spin_loop_hint. (#314)

    parking_lot 0.11.2, parking_lot_core 0.8.4, lock_api 0.4.5 (2021-08-28)

    • Fixed incorrect memory orderings on RwLock and WordLock. (#294, #292)
    • Added Arc-based lock guards. (#291)
    • Added workaround for TSan's lack of support for fence. (#292)

    lock_api 0.4.4 (2021-05-01)

    • Update for latest nightly. (#281)

    lock_api 0.4.3 (2021-04-03)

    • Added [Raw]ReentrantMutex::is_owned. (#280)

    parking_lot_core 0.8.3 (2021-02-12)

    • Updated smallvec to 1.6. (#276)

    parking_lot_core 0.8.2 (2020-12-21)

    • Fixed assertion failure on OpenBSD. (#270)

    parking_lot_core 0.8.1 (2020-12-04)

    • Removed deprecated CloudABI support. (#263)
    • Fixed build on wasm32-unknown-unknown. (#265)
    • Relaxed dependency on smallvec. (#266)

    parking_lot 0.11.1, lock_api 0.4.2 (2020-11-18)

    • Fix bounds on Send and Sync impls for lock guards. (#262)
    • Fix incorrect memory ordering in RwLock. (#260)

    lock_api 0.4.1 (2020-07-06)

    • Add data_ptr method to lock types to allow unsafely accessing the inner data without a guard. (#247)

    parking_lot 0.11.0, parking_lot_core 0.8.0, lock_api 0.4.0 (2020-06-23)

    ... (truncated)

    Commits
    • a75875b Release parking_lot 0.12.0, parking_lot_core 0.9.0, lock_api 0.4.6
    • 78a16dd Minor fixes
    • 4d64bc6 Merge pull request #314 from Amanieu/spin_loop
    • a4e4a02 Only run CI for bors and pull requests
    • 930caab Use core::hint::spin_loop instead of the deprecated spin_loop_hint.
    • b3c9290 Merge pull request #313 from Amanieu/hle_feature
    • b271f84 Move hardware lock elision support to a separate Cargo feature
    • 8019473 Merge pull request #311 from clemenswasser/adopt-windows-rs
    • 1f94288 Adopt windows-rs
    • c73dd43 Merge pull request #309 from Amanieu/stable_asm
    • Additional commits viewable in compare view

    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
  • Update morphorm requirement from 0.2 to 0.3

    Update morphorm requirement from 0.2 to 0.3

    Updates the requirements on morphorm to permit the latest version.

    Commits

    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
  • RUSTSEC-2021-0127: serde_cbor is unmaintained

    RUSTSEC-2021-0127: serde_cbor is unmaintained

    serde_cbor is unmaintained

    | Details | | | ------------------- | ---------------------------------------------- | | Status | unmaintained | | Package | serde_cbor | | Version | 0.11.2 | | URL | https://github.com/pyfisch/cbor | | Date | 2021-08-15 |

    The serde_cbor crate is unmaintained. The author has archived the github repository.

    Alternatives proposed by the author:

    See advisory page for additional details.

    opened by github-actions[bot] 0
  • RUSTSEC-2021-0119: Out-of-bounds write in nix::unistd::getgrouplist

    RUSTSEC-2021-0119: Out-of-bounds write in nix::unistd::getgrouplist

    Out-of-bounds write in nix::unistd::getgrouplist

    | Details | | | ------------------- | ---------------------------------------------- | | Package | nix | | Version | 0.22.0 | | URL | https://github.com/nix-rust/nix/issues/1541 | | Date | 2021-09-27 | | Patched versions | ^0.20.2,^0.21.2,^0.22.2,>=0.23.0 | | Unaffected versions | <0.16.0 |

    On certain platforms, if a user has more than 16 groups, the nix::unistd::getgrouplist function will call the libc getgrouplist function with a length parameter greater than the size of the buffer it provides, resulting in an out-of-bounds write and memory corruption.

    The libc getgrouplist function takes an in/out parameter ngroups specifying the size of the group buffer. When the buffer is too small to hold all of the reqested user's group memberships, some libc implementations, including glibc and Solaris libc, will modify ngroups to indicate the actual number of groups for the user, in addition to returning an error. The version of nix::unistd::getgrouplist in nix 0.16.0 and up will resize the buffer to twice its size, but will not read or modify the ngroups variable. Thus, if the user has more than twice as many groups as the initial buffer size of 8, the next call to getgrouplist will then write past the end of the buffer.

    The issue would require editing /etc/groups to exploit, which is usually only editable by the root user.

    See advisory page for additional details.

    opened by github-actions[bot] 0
  • chore(deps): update sysinfo requirement from 0.26 to 0.27

    chore(deps): update sysinfo requirement from 0.26 to 0.27

    Updates the requirements on sysinfo to permit the latest version.

    Changelog

    Sourced from sysinfo's changelog.

    0.27.0

    • Add NetworkExt::mac_address method and MacAddr type.
    • Linux: Fix truncated environment retrieval.
    • Implement TryFrom<usize> and FromStr for Gid and Uid.
    • Implement TryFrom<usize> for Pid.
    • Fix documentation of System::new about CPU list not loaded by default.

    0.26.8

    • Add ProcessExt::session_id method.
    • Linux: Ignore NFS disks.

    0.26.7

    • Apple: Greatly improve disk retrieval (I recommend reading the pull request first comment for more information here: GuillaumeGomez/sysinfo#855).
    • Remove build script.

    0.26.6

    • Add Process::wait.
    • Add "Good pratice" entry into the crate level documentation and in the README.
    • Linux: More precise used memory computation.

    0.26.5

    • Windows: Fix disk information retrieval.
    • Linux: Improve Process document.
    • Linux: Fix a compilation error if the apple-sandbox feature is enabled.
    • Internal code improvements.

    0.26.4

    • Add SystemExt::distribution_id method.
    • Update ntapi version to 0.4.
    • Update minimum supported Rust version (MSRV) to 1.59 for ntapi 0.4.

    0.26.3

    • Update minimum supported Rust version (MSRV) to 1.56 to follow once_cell minor update.

    0.26.2

    • Linux: Fix process information retrieval.
    • Linux: Get more components temperature.
    • Linux: Fix disk name retrieval (which in turn fixed disk type retrieval).

    0.26.1

    • macOS M1: Fix segmentation fault crash.

    ... (truncated)

    Commits

    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
  • Update criterion requirement from 0.3 to 0.4

    Update criterion requirement from 0.3 to 0.4

    Updates the requirements on criterion to permit the latest version.

    Changelog

    Sourced from criterion's changelog.

    [0.4.0] - 2022-09-10

    Removed

    • The Criterion::can_plot function has been removed.
    • The Criterion::bench_function_over_inputs function has been removed.
    • The Criterion::bench_functions function has been removed.
    • The Criterion::bench function has been removed.

    Changed

    • HTML report hidden behind non-default feature flag: 'html_reports'
    • Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support'
    • MSRV bumped to 1.57
    • rayon and plotters are optional (and default) dependencies.
    • Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout.
    • Accept subsecond durations for --warm-up-time, --measurement-time and --profile-time.
    • Replaced serde_cbor with ciborium because the former is no longer maintained.
    • Upgrade clap to v3 and regex to v1.5.

    Added

    • A --discard-baseline flag for discarding rather than saving benchmark results.
    • Formal support for benchmarking code compiled to web-assembly.
    • A --quiet flag for printing just a single line per benchmark.
    • A Throughput::BytesDecimal option for measuring throughput in bytes but printing them using decimal units like kilobytes instead of binary units like kibibytes.

    Fixed

    • When using bench_with_input, the input parameter will now be passed through black_box before passing it to the benchmark.

    [0.3.6] - 2022-07-06

    Changed

    • MSRV bumped to 1.49
    • Symbol for microseconds changed from ASCII 'us' to unicode 'µs'
    • Documentation fixes
    • Clippy fixes

    [0.3.5] - 2021-07-26

    Fixed

    • Corrected Criterion.toml in the book.
    • Corrected configuration typo in the book.

    Changed

    • Bump plotters dependency to always include a bug-fix.
    • MSRV bumped to 1.46.

    ... (truncated)

    Commits
    • 5e27b69 Merge branch 'version-0.4'
    • 4d6d69a Increment version numbers.
    • 935c632 Add Throughput::BytesDecimal. Fixes #581.
    • f82ce59 Remove critcmp code (it belongs in cargo-criterion) (#610)
    • a18d080 Merge branch 'master' into version-0.4
    • f9c6b8d Merge pull request #608 from Cryptex-github/patch-1
    • 8d0224e Fix html report path
    • 2934163 Add missing black_box for bench_with_input parameters. Fixes 566.
    • dfd7b65 Add duplicated benchmark ID to assertion message.
    • ce8259e Bump criterion-plot version number.
    • Additional commits viewable in compare view

    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
  • RUSTSEC-2021-0139: ansi_term is Unmaintained

    RUSTSEC-2021-0139: ansi_term is Unmaintained

    ansi_term is Unmaintained

    | Details | | | ------------------- | ---------------------------------------------- | | Status | unmaintained | | Package | ansi_term | | Version | 0.12.1 | | URL | https://github.com/ogham/rust-ansi-term/issues/72 | | Date | 2021-08-18 |

    The maintainer has adviced this crate is deprecated and will not receive any maintenance.

    The crate does not seem to have much dependencies and may or may not be ok to use as-is.

    Last release seems to have been three years ago.

    Possible Alternative(s)

    The below list has not been vetted in any way and may or may not contain alternatives;

    See advisory page for additional details.

    opened by github-actions[bot] 0
  • RUSTSEC-2022-0048: xml-rs is Unmaintained

    RUSTSEC-2022-0048: xml-rs is Unmaintained

    xml-rs is Unmaintained

    | Details | | | ------------------- | ---------------------------------------------- | | Status | unmaintained | | Package | xml-rs | | Version | 0.8.4 | | URL | https://github.com/netvl/xml-rs/issues | | Date | 2022-01-26 |

    xml-rs is a XML parser has open issues around parsing including integer overflows / panics that may or may not be an issue with untrusted data.

    Together with these open issues with Unmaintained status xml-rs may or may not be suited to parse untrusted data.

    Alternatives

    See advisory page for additional details.

    opened by github-actions[bot] 0
  • Update lyon requirement from 0.17 to 1.0

    Update lyon requirement from 0.17 to 1.0

    Updates the requirements on lyon to permit the latest version.

    Commits

    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
  • RUSTSEC-2021-0065: anymap is unmaintained.

    RUSTSEC-2021-0065: anymap is unmaintained.

    anymap is unmaintained.

    | Details | | | ------------------- | ---------------------------------------------- | | Status | unmaintained | | Package | anymap | | Version | 0.12.1 | | URL | https://github.com/chris-morgan/anymap/issues/37 | | Date | 2021-05-07 |

    The anymap crate does not appear to be maintained, and the most recent published version 0.12.1 includes a soundness bug. This has been fixed a few years ago, but was never released.

    See advisory page for additional details.

    opened by github-actions[bot] 0
Releases(v0.3.0)
Owner
Trevin Miller
Trevin Miller
bare-bones "reactive programming" (change propogation) using a central data dependency graph

mini-rx: Tiny reactive programming change propagation a la scala.rx Cargo documentation Example use mini_rx::*; fn example() { // setup let side_ef

Jakob Hain 5 Jul 31, 2022
Rust 核心库和标准库的源码级中文翻译,可作为 IDE 工具的智能提示 (Rust core library and standard library translation. can be used as IntelliSense for IDE tools)

Rust 标准库中文版 这是翻译 Rust 库 的地方, 相关源代码来自于 https://github.com/rust-lang/rust。 如果您不会说英语,那么拥有使用中文的文档至关重要,即使您会说英语,使用母语也仍然能让您感到愉快。Rust 标准库是高质量的,不管是新手还是老手,都可以从中

wtklbm 493 Jan 4, 2023
A library for extracting #[no_mangle] pub extern "C" functions (https://docs.rust-embedded.org/book/interoperability/rust-with-c.html#no_mangle)

A library for extracting #[no_mangle] pub extern "C" functions In order to expose a function with C binary interface for interoperability with other p

Dmitrii - Demenev 0 Feb 17, 2022
Rust Imaging Library: A high-level Rust imaging crate.

ril Rust Imaging Library: A performant and high-level Rust imaging crate. Documentation • Crates.io • Discord What's this? This is a Rust crate design

Jay3332 18 Jan 5, 2023
Modern Rust utility library delivering modularity, performance & extras; or simply Rust version of Lodash

Lorust - API Documentation Lorust is the Rust version of Lodash, which is a modern Javascript utilty library delivering modularity, performance & extr

Imamuzzaki Abu Salam 2 Jul 9, 2023
Rust library for hardware accelerated drawing of 2D shapes, images, and text, with an easy to use API.

Speedy2D Hardware-accelerated drawing of shapes, images, and text, with an easy to use API. Speedy2D aims to be: The simplest Rust API for creating a

null 223 Dec 26, 2022
Shuttle is a library for testing concurrent Rust code

Shuttle Shuttle is a library for testing concurrent Rust code. It is an implementation of a number of randomized concurrency testing techniques, inclu

Amazon Web Services - Labs 373 Dec 27, 2022
🦀 In progress Rust library for dogehouse.tv 🦀

dogehouse-rs WARNING: Still work in progress do not use yet Example In Cargo.toml dogehouse-rs = "*" In src/main.rs use dogehouse_rs::prelude::*; use

Will 21 Dec 16, 2021
Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.

HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth. This project contains the com

Weird Constructor 45 Dec 17, 2022
Fluent assertion library for Rust with readable messages.

Assertor Assertor makes test assertions and failure messages more human-readable. Assertor is heavily affected by Java Truth in terms of API design an

Google 20 Dec 12, 2022
Highly experimental, pure-Rust big integer library

grou-num (Pronounced "groo", from the Chiac meaning "big") This package is a highly experimental, unstable big integer library. I would not recommend

Patrick Poitras 1 Dec 18, 2021
"Crates for Cheese" is a Rust collection library of those crates I consider a useful "extended standard".

cfc The purpose of this library is to provide a minimal list of currated crates which enhance the std library. In addition, most or all crates in this

null 0 Dec 23, 2021
A library for transcoding between bytes in Astro Notation Format and Native Rust data types.

Rust Astro Notation A library for transcoding between hexadecimal strings in Astro Notation Format and Native Rust data types. Usage In your Cargo.tom

Stelar Software 1 Feb 4, 2022
A rust library that provides pseudo-reflection for structs and enums

Treeflection treeflection_derive Treeflection runs a command stored as a string on a tree of structs, collections and primitive types. Commands A comm

Lucas Kent 21 Nov 17, 2022
List public items (public API) of Rust library crates. Enables diffing public API between releases.

cargo wrapper for this library You probably want the cargo wrapper to this library. See https://github.com/Enselic/cargo-public-items. public_items Li

Martin Nordholts 20 Dec 26, 2022
A simple thread schedule and priority library for rust

thread-priority A simple library to control thread schedule policies and thread priority. If your operating system isn't yet supported, please, create

Victor Polevoy 62 Dec 5, 2022
Library for abstract mathematics written by Rust. It is aiming to replace SageMath.

ankolib Roadmap Mathematical Structures Sets Monoids Groups Semirings Rings Algebras Basic Rings and Fields Integers and Rational Numbers Integer Rati

anko 6 Sep 3, 2022
Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64.

Divoom Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64 (and from how divoom's api/doc organizes, maybe more in th

Riff 16 Dec 23, 2022
A simple /proc//{mem,maps} library for Rust

Summary A very simple library that wraps around /proc/pid/mem and /proc/pid/maps to read memory out of a running process on Linux. Usage Basic usage l

null 6 Jul 27, 2022