Abstract GPU Project - The easiest and most ergonomic GPU library

Related tags

Miscellaneous agpu
Overview
Logo

Abstract GPU Project

The easiest and most ergonomic GPU library
Explore examples »


agpu is an abstraction library to the wgpu library, with the goal of providing a GPU framework for both small applications and large engines alike, with minimal boilerplate and maximum readability.

Quick Start

To get started with a program that renders to the screen:

fn main() -> Result<(), agpu::BoxError> {
    let program = agpu::GpuProgram::builder().build()?;

    let example_pipeline = program.gpu.create_pipeline().build();

    program.run_draw(move |mut frame| {
        frame
            .render_pass("Example render pass")
            .with_pipeline(&example_pipeline)
            .begin()
            .draw_triangle();
    })
}

More examples are available in the examples folder.

Goals

  • The easiest GPU library
  • No loss of API functionality for underlying libraries
  • Zero (ideal) runtime cost

Non-goals

  • Managed rendering engine
  • Adhering strictly to WebGPU standard

State

agpu is in a very early stage of development. It strives to be as stable as the underlying wgpu library, but some features will be incomplete or missing.

The current goal is to replicate all wgpu examples using minimal code.

Style

Builder-style API is used:

  • Avoids boilerplate and struct hell
  • Allows user to opt-in to functionality
  • Using sensible defaults, default constructors are one-liners

Deref is abused(?) to add redundant/convenience functions to wgpu types. This is currently preferred to utility traits that add functions to the underlying types to avoid needing to include various traits that are not used directly.

Integrations

Some integrations are provided as default features to this crate:

  • winit for windowing (WIP)
  • egui for GUI (WIP)

You can (not yet!) disable them by opting out of default features, as well as create your own integration using this library.

Comments
  • Update winit requirement from 0.25 to 0.26

    Update winit requirement from 0.25 to 0.26

    Updates the requirements on winit to permit the latest version.

    Release notes

    Sourced from winit's releases.

    Winit Version v0.26.0

    • Update raw-window-handle to v0.4. This is not a breaking change, we still implement HasRawWindowHandle from v0.3, see rust-windowing/raw-window-handle#74.
    • On X11, bump mio to 0.8.
    • On Android, fixed WindowExtAndroid::config initially returning an empty Configuration.
    • On Android, fixed Window::scale_factor and MonitorHandle::scale_factor initially always returning 1.0.
    • On X11, select an appropriate visual for transparency if is requested
    • On Wayland and X11, fix diagonal window resize cursor orientation.
    • On macOS, drop the event callback before exiting.
    • On Android, implement Window::request_redraw
    • Breaking: On Web, remove the stdweb backend.
    • Added Window::focus_windowto bring the window to the front and set input focus.
    • On Wayland and X11, implement is_maximized method on Window.
    • On Windows, prevent ghost window from showing up in the taskbar after either several hours of use or restarting explorer.exe.
    • On macOS, fix issue where ReceivedCharacter was not being emitted during some key repeat events.
    • On Wayland, load cursor icons hand2 and hand1 for CursorIcon::Hand.
    • Breaking: On Wayland, Theme trait and its support types are dropped.
    • On Wayland, bump smithay-client-toolkit to 0.15.1.
    • On Wayland, implement request_user_attention with xdg_activation_v1.
    • On X11, emit missing WindowEvent::ScaleFactorChanged when the only monitor gets reconnected.
    • On X11, if RANDR based scale factor is higher than 20 reset it to 1
    • On Wayland, add an enabled-by-default feature called wayland-dlopen so users can opt out of using dlopen to load system libraries.
    • Breaking: On Android, bump ndk and ndk-glue to 0.5.
    • On Windows, increase wait timer resolution for more accurate timing when using WaitUntil.
    • On macOS, fix native file dialogs hanging the event loop.
    • On Wayland, implement a workaround for wrong configure size when using xdg_decoration in kwin_wayland
    • On macOS, fix an issue that prevented the menu bar from showing in borderless fullscreen mode.
    • On X11, EINTR while polling for events no longer causes a panic. Instead it will be treated as a spurious wakeup.
    Changelog

    Sourced from winit's changelog.

    0.26.0 (2021-12-01)

    • Update raw-window-handle to v0.4. This is not a breaking change, we still implement HasRawWindowHandle from v0.3, see rust-windowing/raw-window-handle#74.
    • On X11, bump mio to 0.8.
    • On Android, fixed WindowExtAndroid::config initially returning an empty Configuration.
    • On Android, fixed Window::scale_factor and MonitorHandle::scale_factor initially always returning 1.0.
    • On X11, select an appropriate visual for transparency if is requested
    • On Wayland and X11, fix diagonal window resize cursor orientation.
    • On macOS, drop the event callback before exiting.
    • On Android, implement Window::request_redraw
    • Breaking: On Web, remove the stdweb backend.
    • Added Window::focus_windowto bring the window to the front and set input focus.
    • On Wayland and X11, implement is_maximized method on Window.
    • On Windows, prevent ghost window from showing up in the taskbar after either several hours of use or restarting explorer.exe.
    • On macOS, fix issue where ReceivedCharacter was not being emitted during some key repeat events.
    • On Wayland, load cursor icons hand2 and hand1 for CursorIcon::Hand.
    • Breaking: On Wayland, Theme trait and its support types are dropped.
    • On Wayland, bump smithay-client-toolkit to 0.15.1.
    • On Wayland, implement request_user_attention with xdg_activation_v1.
    • On X11, emit missing WindowEvent::ScaleFactorChanged when the only monitor gets reconnected.
    • On X11, if RANDR based scale factor is higher than 20 reset it to 1
    • On Wayland, add an enabled-by-default feature called wayland-dlopen so users can opt out of using dlopen to load system libraries.
    • Breaking: On Android, bump ndk and ndk-glue to 0.5.
    • On Windows, increase wait timer resolution for more accurate timing when using WaitUntil.
    • On macOS, fix native file dialogs hanging the event loop.
    • On Wayland, implement a workaround for wrong configure size when using xdg_decoration in kwin_wayland
    • On macOS, fix an issue that prevented the menu bar from showing in borderless fullscreen mode.
    • On X11, EINTR while polling for events no longer causes a panic. Instead it will be treated as a spurious wakeup.

    0.25.0 (2021-05-15)

    • Breaking: On macOS, replace WindowBuilderExtMacOS::with_activation_policy with EventLoopExtMacOS::set_activation_policy
    • On macOS, wait with activating the application until the application has initialized.
    • On macOS, fix creating new windows when the application has a main menu.
    • On Windows, fix fractional deltas for mouse wheel device events.
    • On macOS, fix segmentation fault after dropping the main window.
    • On Android, InputEvent::KeyEvent is partially implemented providing the key scancode.
    • Added is_maximized method to Window.
    • On Windows, fix bug where clicking the decoration bar would make the cursor blink.
    • On Windows, fix bug causing newly created windows to erroneously display the "wait" (spinning) cursor.
    • On macOS, wake up the event loop immediately when a redraw is requested.
    • On Windows, change the default window size (1024x768) to match the default on other desktop platforms (800x600).
    • On Windows, fix bug causing mouse capture to not be released.
    • On Windows, fix fullscreen not preserving minimized/maximized state.
    • On Android, unimplemented events are marked as unhandled on the native event loop.
    • On Windows, added WindowBuilderExtWindows::with_menu to set a custom menu at window creation time.
    • On Android, bump ndk and ndk-glue to 0.3: use predefined constants for event ident.
    • On macOS, fix objects captured by the event loop closure not being dropped on panic.
    • On Windows, fixed WindowEvent::ThemeChanged not properly firing and fixed Window::theme returning the wrong theme.
    • On Web, added support for DeviceEvent::MouseMotion to listen for relative mouse movements.

    ... (truncated)

    Commits
    • ea1c031 Release 0.26.0 version
    • 11a4408 macOS move impl details of platform into platform_impl
    • 5eb9c95 Update raw-window-handle to 0.4.1 (#1957)
    • 29a078f bump ndk dependencies to 0.5 (#2071)
    • be61ca1 On X11, update 'mio' to 0.8
    • e9d5b20 On X11, don't panic when getting EINTR
    • f2de847 Show the menu bar in borderless fullscreen on macOS (#2053)
    • 3ecbea3 Windows: Split window initialization across NCCREATE and CREATE (#2062)
    • c4df7ad On Wayland, commit the window surface after setting the decoration mode
    • 387567a macOS: Fix native file dialogs freezing the event loop (#2027)
    • 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] 2
  • Update raw-window-handle requirement from 0.3 to 0.4

    Update raw-window-handle requirement from 0.3 to 0.4

    Updates the requirements on raw-window-handle to permit the latest version.

    Changelog

    Sourced from raw-window-handle's changelog.

    0.4.2 (2021-11-24)

    • Also implement HasRawWindowHandle for Rc<T>, and Arc<T> where T: ?Sized.

    0.4.1 (2021-11-19)

    • Added an impl of HasRawWindowHandle for &T, Rc<T>, and Arc<T>. The impls for Rc<T> and Arc<T> require the alloc feature.

    0.4.0 (2021-11-15)

    • Breaking: Remove _do_not_use tags to use #[non_exhaustive] macro
    • Breaking: RawWindowHandle variants are no longer cfg-guarded by platform.
    • Breaking: Rename IOS to UiKit.
    • Breaking: Rename MacOS to AppKit.
    • Breaking: Rename Windows to Win32.
    • Breaking: Rename Redox to Orbital.
    • Breaking: Rename Android to AndroidNdk.
    • Breaking: Inner window handle structs are now exported at crate root.
    • Added Windows WinRt handle.

    0.3.3 (2019-12-1)

    • Add missing Hash implementation for AndroidHandle.

    0.3.2 (2019-11-29)

    • Add Hash implementation for RawWindowHandle.

    0.3.1 (2019-10-27)

    • Remove RawWindowHandle's HasRawWindowHandle implementation, as it was unsound (see #35)
    • Explicitly require that handles within RawWindowHandle be valid for the lifetime of the HasRawWindowHandle implementation that provided them.

    0.3.0 (2019-10-5)

    • Breaking: Rename XLib.surface to XLib.window, as that more accurately represents the underlying type.
    • Implement HasRawWindowHandle for RawWindowHandle
    • Add HINSTANCE field to WindowsHandle.

    0.2.0 (2019-09-26)

    • Breaking: Rename X11 to XLib.
    • Add XCB support.
    • Add Web support.
    • Add Android support.

    0.1.2 (2019-08-13)

    • Fix use of private _non_exhaustive field in platform handle structs preventing structs from getting initialized.

    ... (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 blocked 🚧 
    opened by dependabot[bot] 2
  • Update egui-winit requirement from 0.17 to 0.19

    Update egui-winit requirement from 0.17 to 0.19

    Updates the requirements on egui-winit to permit the latest version.

    Release notes

    Sourced from egui-winit's releases.

    0.19.0 - wgpu backend, repaint_after, continue-after-close

    Highlights:

    • New wgpu backend for eframe
    • Context::request_repaint_after
    • eframe continues after closing native window

    egui changelog: https://github.com/emilk/egui/blob/master/CHANGELOG.md eframe changelog: https://github.com/emilk/egui/blob/master/crates/eframe/CHANGELOG.md

    Changelog

    Sourced from egui-winit's changelog.

    0.19.0 - 2022-08-20

    Added ⭐

    • Added *_released & *_clicked methods for PointerState (#1582).
    • Added PointerButton::Extra1 and PointerButton::Extra2 (#1592).
    • Added egui::hex_color! to create Color32's from hex strings under the color-hex feature (#1596).
    • Optimized painting of filled circles (e.g. for scatter plots) by 10x or more (#1616).
    • Added opt-in feature deadlock_detection to detect double-lock of mutexes on the same thread (#1619).
    • Added InputState::stable_dt: a more stable estimate for the delta-time in reactive mode (#1625).
    • You can now specify a texture filter for your textures (#1636).
    • Added functions keys in egui::Key (#1665).
    • Added support for using PaintCallback shapes with the WGPU backend (#1684).
    • Added Contex::request_repaint_after (#1694).
    • ctrl-h now acts like backspace in TextEdit (#1812).
    • Added custom_formatter method for Slider and DragValue (#1851).
    • Added RawInput::has_focus which backends can set to indicate whether the UI as a whole has the keyboard focus (#1859).
    • Added PointerState::button_double_clicked() and PointerState::button_triple_clicked() (#1906).

    Changed

    • MSRV (Minimum Supported Rust Version) is now 1.61.0 (#1846).
    • PaintCallback shapes now require the whole callback to be put in an Arc<dyn Any> with the value being a backend-specific callback type (#1684).
    • Replaced needs_repaint in FullOutput with repaint_after. Used to force repaint after the set duration in reactive mode (#1694).
    • Layout::left_to_right and Layout::right_to_left now takes the vertical align as an argument. Previous default was Align::Center.
    • Improved ergonomics of adding plot items. All plot items that take a series of 2D coordinates can now be created directly from Vec<[f64; 2]>. The Value and Values types were removed in favor of PlotPoint and PlotPoints respectively (#1816).
    • TextBuffer no longer needs to implement AsRef<str> (#1824).

    Fixed 🐛

    • Fixed Response::changed for ui.toggle_value (#1573).
    • Fixed ImageButton's changing background padding on hover (#1595).
    • Fixed Plot auto-bounds bug (#1599).
    • Fixed dead-lock when alt-tabbing while also showing a tooltip (#1618).
    • Fixed ScrollArea scrolling when editing an unrelated TextEdit (#1779).
    • Fixed Slider not always generating events on change (#1854).
    • Fixed jitter of anchored windows for the first frame (#1856).
    • Fixed focus behavior when pressing Tab in a UI with no focused widget (#1861).
    • Fixed automatic plot bounds (#1865).

    0.18.1 - 2022-05-01

    • Change Shape::Callback from &dyn Any to &mut dyn Any to support more backends.

    0.18.0 - 2022-04-30

    Added ⭐

    • Added Shape::Callback for backend-specific painting, with an example (#1351).
    • Added Frame::canvas (#1362).
    • Context::request_repaint will now wake up UI thread, if integrations has called Context::set_request_repaint_callback (#1366).
    • Added Plot::allow_scroll, Plot::allow_zoom no longer affects scrolling (#1382).
    • Added Ui::push_id to resolve id clashes (#1374).
    • Added ComboBox::icon (#1405).

    ... (truncated)

    Commits
    • 97ce103 Release 0.19.0 - wgpu backend, repaint_after, continue-after-close
    • 127931b eframe: rename quit/exit to "close" (#1943)
    • 2453756 Fix broken GitHub source links due to #1940
    • 8737933 Improve documentation and logging
    • eb10ef9 Build-fix for --no-default-features
    • f4cc1c5 eframe: Don't follow system theme by default (#1941)
    • 041f2e6 Move all crates into a crates directory (#1940)
    • See full diff 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 half requirement from 1.8 to 2.1

    Update half requirement from 1.8 to 2.1

    Updates the requirements on half to permit the latest version.

    Release notes

    Sourced from half's releases.

    2.1.0

    Added

    • Add support for target_arch spirv. Some traits and functions are unavailble on this architecture. By @​charles-r-earp.
    • Add total_cmp method to both float types. Closes #55, by @​joseluis.
    Changelog

    Sourced from half's changelog.

    [2.1.0] - 2022-07-18

    Added

    • Add support for target_arch spirv. Some traits and functions are unavailble on this architecture. By [@​charles-r-earp].
    • Add total_cmp method to both float types. Closes #55, by [@​joseluis].

    [2.0.0] - 2022-06-21

    Changed

    • Breaking Change Minimum supported Rust version is now 1.58.
    • Breaking Change std is now enabled as a default cargo feature. Disable default features to continue using no_std support.
    • Migrated to Rust Edition 2021.
    • Added #[must_use] attributes to functions, as appropriate.

    Fixed

    • Fix a soundness bug with slice::as_ptr not correctly using mutable reference. By [@​Nilstrieb].

    Added

    • Added const conversion methods to both f16 and bf16. These methods never use hardware intrinsics, unlike the current conversion methods, which is why they are separated into new methods. The following const methods were added:
      • from_f32_const
      • from_f64_const
      • to_f32_const
      • to_f64_const
    • Added Neg trait support for borrowed values &f16 and &bf16. By [@​pthariensflame].
    • Added AsPrimitive implementations from and to self, usize, and isize. By [@​kali].

    Removed

    • Breaking Change The deprecated serialize cargo feature has been removed. Use serde cargo feature instead.
    • Breaking Change The deprecated consts module has been removed. Use associated constants on f16 instead.
    • Breaking Change The following deprecated functions have been removed:
      • f16::as_bits
      • slice::from_bits_mut
      • slice::to_bits_mut
      • slice::from_bits
      • slice::to_bits
      • vec::from_bits
      • vec::to_bits

    [1.8.2] - 2021-10-22

    Fixed

    • Remove cargo resolver=2 from manifest to resolve errors in older versions of Rust that still worked with 1.8.0. Going forward, MSRV increases will be major version increases. Fixes #48.

    [1.8.1] - 2021-10-21 - Yanked

    Yanked

    Not recommended due to introducing compilation error in Rust versions that worked with 1.8.0.

    ... (truncated)

    Commits
    • ebc0b1f bump version to 2.1.0
    • 9261c52 update changelog
    • a24dda4 Merge pull request #57 from joseluis/total-cmp
    • a4e1464 add total_cmp method
    • 445c936 update changelog with spirv support
    • e231659 Merge pull request #56 from charles-r-earp/spirv
    • 043e754 rustfmt
    • d157509 For target_arch = "spirv", disabled Debug and replaced leading_zeros.
    • 24bac93 Merge remote-tracking branch 'upstream/main' into main
    • 7ae587c Version bump for release
    • 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 wgpu requirement from 0.12 to 0.13

    Update wgpu requirement from 0.12 to 0.13

    Updates the requirements on wgpu to permit the latest version.

    Release notes

    Sourced from wgpu's releases.

    wgpu v0.13.0

    Major Changes

    WGSL Syntax

    WGSL syntax has changed in a couple ways. The new syntax is easier to read and work with.

    Attribute declarations are written differently:

    - [[group(1), binding(0)]]
    + @group(1) @binding(0)
    

    Stage declarations are now separate attributes rather than part of the stage attribute:

    - [[stage(vertex)]]
    + @vertex
    

    Structs now use , as field separator and no longer need semicolons after the declaration:

    - struct MyStruct {
    -     my_member: u32;
    - };
    + struct MyStruct {
    +     my_member: u32,
    + }
    

    Surface API

    The method of getting the preferred swapchain format has changed to allow viewing all formats supported by the surface.

    - let format = surface.get_preferred_format(&adapter).unwrap();
    + let format = surface.get_supported_formats(&adapter)[0];
    

    Presentation modes now need to match exactly what the surface supports. FIFO is always supported, but all other modes vary from API to API and Device to Device. To get a list of all supported modes, call the following. The order does not indicate preference.

    let modes = surface.get_supported_present_modes(&adapter);
    

    Timestamp Queries

    ... (truncated)

    Changelog

    Sourced from wgpu's changelog.

    Change Log

    Unreleased

    wgpu-0.13 (2022-06-30)

    Major Changes

    WGSL Syntax

    WGSL syntax has changed in a couple ways. The new syntax is easier to read and work with.

    ... (truncated)

    Commits
    • e125321 Release 0.13 two - electric boogaloo (#2827)
    • 93dbffa Add other breaking changes to 0.13 changelog (#2825)
    • 1ceef24 Add changelog for 0.13 (#2823)
    • ea05b44 Improve Presentation Api (#2803)
    • 98597da Allow fragment stage to have more outputs than the pipeline has (#2822)
    • 1d8bc57 Don't wait for current submission inside of submit (#2824)
    • 464b61d Flip span labels to work better with tools (#2820)
    • 5eb09f6 Implement Queue::write_buffer_with (#2777)
    • 0eb6845 web: march web-sys 0.3.58, sparse attachments support (#2813)
    • b0c7986 core: restrict hal::TextureUses::COLOR_TARGET condition within create_texture...
    • 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 half requirement from 1.8 to 2.0

    Update half requirement from 1.8 to 2.0

    Updates the requirements on half to permit the latest version.

    Release notes

    Sourced from half's releases.

    2.0.0

    Changed

    • Breaking Change Minimum supported Rust version is now 1.58.
    • Breaking Change std is now enabled as a default cargo feature. Disable default features to continue using no_std support.
    • Migrated to Rust Edition 2021.
    • Added #[must_use] attributes to functions, as appropriate.

    Fixed

    • Fix a soundness bug with slice::as_ptr not correctly using mutable reference. By @​Nilstrieb.

    Added

    • Added const conversion methods to both f16 and bf16. These methods never use hardware intrinsics, unlike the current conversion methods, which is why they are separated into new methods. The following const methods were added:
      • from_f32_const
      • from_f64_const
      • to_f32_const
      • to_f64_const
    • Added Neg trait support for borrowed values &f16 and &bf16. By @​pthariensflame.
    • Added AsPrimitive implementations from and to self, usize, and isize. By @​kali.

    Removed

    • Breaking Change The deprecated serialize cargo feature has been removed. Use serde cargo feature instead.
    • Breaking Change The deprecated consts module has been removed. Use associated constants on f16 instead.
    • Breaking Change The following deprecated functions have been removed:
      • f16::as_bits
      • slice::from_bits_mut
      • slice::to_bits_mut
      • slice::from_bits
      • slice::to_bits
      • vec::from_bits
      • vec::to_bits
    Changelog

    Sourced from half's changelog.

    [2.0.0] - 2022-06-21

    Changed

    • Breaking Change Minimum supported Rust version is now 1.58.
    • Breaking Change std is now enabled as a default cargo feature. Disable default features to continue using no_std support.
    • Migrated to Rust Edition 2021.
    • Added #[must_use] attributes to functions, as appropriate.

    Fixed

    • Fix a soundness bug with slice::as_ptr not correctly using mutable reference. By [@​Nilstrieb].

    Added

    • Added const conversion methods to both f16 and bf16. These methods never use hardware intrinsics, unlike the current conversion methods, which is why they are separated into new methods. The following const methods were added:
      • from_f32_const
      • from_f64_const
      • to_f32_const
      • to_f64_const
    • Added Neg trait support for borrowed values &f16 and &bf16. By [@​pthariensflame].
    • Added AsPrimitive implementations from and to self, usize, and isize. By [@​kali].

    Removed

    • Breaking Change The deprecated serialize cargo feature has been removed. Use serde cargo feature instead.
    • Breaking Change The deprecated consts module has been removed. Use associated constants on f16 instead.
    • Breaking Change The following deprecated functions have been removed:
      • f16::as_bits
      • slice::from_bits_mut
      • slice::to_bits_mut
      • slice::from_bits
      • slice::to_bits
      • vec::from_bits
      • vec::to_bits

    [1.8.2] - 2021-10-22

    Fixed

    • Remove cargo resolver=2 from manifest to resolve errors in older versions of Rust that still worked with 1.8.0. Going forward, MSRV increases will be major version increases. Fixes #48.

    [1.8.1] - 2021-10-21 - Yanked

    Yanked

    Not recommended due to introducing compilation error in Rust versions that worked with 1.8.0.

    Changed

    • Now uses cargo resolver version 2 to prevent dev-dependencies from enabling std feature on optional dependencies.

    Fixed

    • Fixed compile failure when std feature is not enabled and num-traits is enabled under new

    ... (truncated)

    Commits
    • 7ae587c Version bump for release
    • 2a463c3 Add miri to CI
    • 36c1e3f Fix exclusive reference obtained from shared reference
    • 4e4ef87 update changelog with PR changes
    • 723ca07 add AsPrimitive impls: from and to self, from and to usize and isize
    • 0389edf Add impl Neg for references
    • f8a4b83 bump rustc min to 1.58
    • 005ad4e allow uninit_vec clippy lint for now
    • ce0279c allow uninit_vec clippy lint for now
    • 37ed710 added #[must_use] attributes
    • 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 egui-winit requirement from 0.17 to 0.18

    Update egui-winit requirement from 0.17 to 0.18

    Updates the requirements on egui-winit to permit the latest version.

    Release notes

    Sourced from egui-winit's releases.

    0.17.0 - Improved font selection and image handling

    egui highlights:

    • Use any-sized font
    • Define custom text styles
    • Easy image loading using new crate egui_extras

    eframe highlights:

    • glow is now the default renderer on both native on web
    • follow OS light/dark mode preference

    Full changelog: https://github.com/emilk/egui/blob/master/CHANGELOG.md

    Changelog

    Sourced from egui-winit's changelog.

    0.17.0 - 2022-02-22 - Improved font selection and image handling

    Added ⭐

    • Much improved font selection (#1154):
      • You can now select any font size and family using RichText::size amd RichText::family and the new FontId.
      • Easily change text styles with Style::text_styles.
      • Added Ui::text_style_height.
      • Added TextStyle::resolve.
      • Made the v-align and scale of user fonts tweakable (#1241).
    • Plot:
      • Added Plot::x_axis_formatter and Plot::y_axis_formatter for custom axis labels (#1130).
      • Added Plot::allow_boxed_zoom(), Plot::boxed_zoom_pointer() for boxed zooming on plots (#1188).
      • Added plot pointer coordinates with Plot::coordinates_formatter (#1235).
      • Added linked axis support for plots via plot::LinkedAxisGroup (#1184).
    • Context::load_texture to convert an image into a texture which can be displayed using e.g. ui.image(texture, size) (#1110).
    • Ui::input_mut to modify how subsequent widgets see the InputState and a convenience method InputState::consume_key for shortcuts or hotkeys (#1212).
    • Added Ui::add_visible and Ui::add_visible_ui.
    • Added CollapsingHeader::icon to override the default open/close icon using a custom function. (1147).
    • Added ui.data(), ctx.data(), ctx.options() and ctx.tessellation_options() (#1175).
    • Added Response::on_hover_text_at_pointer as a convenience akin to Response::on_hover_text (1179).
    • Opt-in dependency on tracing crate for logging warnings (#1192).
    • Added ui.weak(text).
    • Added Slider::step_by (1225).
    • Added Context::move_to_top and Context::top_most_layer for managing the layer on the top (#1242).
    • Support a subset of macOS' emacs input field keybindings in TextEdit (#1243).
    • Added ability to scroll an UI into view without specifying an alignment (1247).
    • Added Ui::scroll_to_rect (1252).

    Changed 🔧

    • ⚠️ Context::input and Ui::input now locks a mutex. This can lead to a dead-lock is used in an if let binding!
      • if let Some(pos) = ui.input().pointer.latest_pos() and similar must now be rewritten on two lines.
      • Search for this problem in your code using the regex if let .*input.
    • Better contrast in the default light mode style (#1238).
    • Renamed CtxRef to Context (#1050).
    • Context can now be cloned and stored between frames (#1050).
    • Renamed Ui::visible to Ui::is_visible.
    • Split Event::Text into Event::Text and Event::Paste (#1058).
    • Replaced Style::body_text_style with more generic Style::text_styles (#1154).
    • TextStyle is no longer Copy (#1154).
    • Replaced TextEdit::text_style with TextEdit::font (#1154).
    • Plot::highlight now takes a bool argument (#1159).
    • ScrollArea::show now returns a ScrollAreaOutput, so you might need to add .inner after the call to it (#1166).
    • Replaced corner_radius: f32 with rounding: Rounding, allowing per-corner rounding settings (#1206).
    • Replaced Frame's margin: Vec2 with margin: Margin, allowing for different margins on opposing sides (#1219).
    • Renamed Plot::custom_label_func to Plot::label_formatter (#1235).
    • Areas::layer_id_at ignores non-interatable layers (i.e. Tooltips) (#1240).
    • ScrollAreas will not shrink below a certain minimum size, set by min_scrolled_width/min_scrolled_height (1255).
    • For integrations:
      • Output has now been renamed PlatformOutput and Context::run now returns the new FullOutput (#1292).
      • FontImage has been replaced by TexturesDelta (found in FullOutput), describing what textures were loaded and freed each frame (#1110).

    ... (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 wgpu requirement from 0.11 to 0.12

    Update wgpu requirement from 0.11 to 0.12

    Updates the requirements on wgpu to permit the latest version.

    Changelog

    Sourced from wgpu's changelog.

    Change Log

    wgpu-0.12 (2021-12-18)

    • API:
      • MULTIVIEW feature
      • DEPTH_CLIP_CONTROL feature to replace the old DEPTH_CLAMP
      • TEXTURE_FORMAT_16BIT_NORM feature
      • push/pop error scopes on the device
      • more limits for compute shaders
      • SamplerBindingType instead of booleans
      • sampler arrays are supported by TEXTURE_BINDING_ARRAY feature
      • "glsl" cargo feature for accepting GLSL shader code
      • enforced MSRV-1.53
    • correctness:
      • textures are zero-initialized
      • lots and lots of fixes
    • validation:
      • match texture-sampler pairs
      • check min_binding_size late at draw
      • check formats to match in copy_texture_to_texture
      • allow strip_index_format to be none if unused
      • check workgroup sizes and counts
    • shaders:

    wgpu-core-0.11.3, wgpu-hal-0.11.5, wgpu-0.11.1 (2021-12-01)

    • Core:
      • validate device descriptor before actually creating it
      • fix validation of texture-sampler pairs
    • Vulkan:
      • fix running on Vulkan-1.1 instance
      • improve detection of workaround for Intel+Nvidia on Linux
      • fix resource limits on Vulkan-1.2
      • fix the check for storage buffer requirement
      • change internal semaphore logic to work around Linux+Intel bugs
      • fix enabling extension-provided features
    • GLES:
      • fix running on old and bogus drivers
      • fix stale samplers on bindings change
      • fix integer textures
      • fix querying work group parameters
      • fix stale PBO bindings caused by resource copies
      • fix rendering to cubemap faces
      • fix Rgba16Float format
      • fix stale vertex attributes when changing the pipeline
    • Metal:
      • fix window resizing for running in multiple processes
    • Web:
      • fix set_index_buffer and set_vertex_buffer to have optional sizes

    ... (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 nalgebra requirement from 0.29 to 0.30

    Update nalgebra requirement from 0.29 to 0.30

    Updates the requirements on nalgebra to permit the latest version.

    Changelog

    Sourced from nalgebra's changelog.

    [0.30.0] (02 Jan. 2022)

    Breaking changes

    • The Dim trait is now marked as unsafe.
    • The Matrix::pow and Matrix::pow_mut methods only allow positive integer exponents now. To compute negative exponents, the user is free to invert the matrix before calling pow with the exponent’s absolute value.

    Modified

    • Use more concise debug impls for matrices and geometric transformation types.
    • The singular values computed by the SVD are now sorted in increasing order by default. Use SVD::new_unordered instead to reproduce the older behavior without the sorting overhead.
    • The UnitDualQuaternion::sclerp method will no longer panic when given two equal rotations.
    • The Matrix::select_rows and Matrix::select_columns methods no longer require the matrix components to implement the trait Zero.
    • The Matrix::pow and Matrix::pow_mut methods will now also work with integer matrices.

    Added

    • Added the conversion trait From<Vec<T>> and method from_vec_storage for RowDVector.
    • Added implementation of From and Into for converting between nalgebra types and types from glam 0.18. These can be enabled by enabling the convert-glam018 cargo features.
    • Added the methods Matrix::product, ::row_product, ::row_product_tr, and ::column_product to compute the product of the components, rows, or columns, of a single matrix or vector.
    • The Default trait is now implemented for most geometric types: Point, Isometry, Rotation, Similarity, Transform, UnitComplex, and UnitQuaternion.
    • Added the Scale geometric type for representing non-uniform scaling.
    • Added Cholesky::new_with_substitute that will replace diagonal elements by a given constant whenever Cholesky meets a non-definite-positiveness.
    • Re-added the conversion from a vector/matrix slice to a static array.
    • Added the cuda feature that enables the support of rust-cuda for using nalgebra features with CUDA kernels written in Rust.
    • Added special-cases implementations for the 2x2 and 3x3 SVDs for better accuracy and performances.
    • Added the methods Matrix::polar, Matrix::try_polar, and SVD::to_polar to compute the polar decomposition of a matrix, based on its SVD.
    • nalgebra-sparse: provide constructors for unsorted but otherwise valid data using the CSR format.
    • nalgebra-sparse: added reading MatrixMarked data files to a sparse CooMatrix.

    Fixed

    • Fixed a potential unsoundness with matrix.get(i) and matrix.get_mut(i) where i is an usize, and matrix is a matrix slice with non-default strides.
    • Fixed potential unsoundness with vector.perp where vector isn’t actually a 2D vector as expected.
    • Fixed linkage issue with nalgebra-lapack: the user of nalgebra-lapack no longer have to add extern crate lapack-src to their main.rs.
    • Fixed the no-std build of nalgebra-glm.
    • Fix the pow and pow_mut functions (the result was incorrect for some exponent values).

    [0.29.0]

    Breaking changes

    • We updated to the version 0.6 of simba. This means that the trait bounds T: na::RealField, na::ComplexField, na::SimdRealField, na:SimdComplexField no imply that T: Copy (they only imply that T: Clone). This may affect

    ... (truncated)

    Commits
    • e8b9c40 Release v0.30.0
    • c0f8530 Merge pull request #1055 from dimforge/fix-pow
    • 99ac8c4 Merge pull request #1050 from metric-space/polar-decomposition-take-2
    • 498d7e3 Semi-unitary test checks for if rows or cols are orthonomal
    • ae6fda7 Change svd to svd_unordered for the method output to be equal
    • d806669 Fix Matrix::pow and make it work only with positive exponents
    • fdaf8c0 Add tests for Matrix::pow
    • 67a82c2 Test: minor style fix
    • 8e0ca43 Use proptest for testing the polar decomposition
    • cc10b67 Add Matrix::try_polar that returns Option and make Matrix::polar not return O...
    • 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
  • Update half requirement from 1.8 to 2.2

    Update half requirement from 1.8 to 2.2

    Updates the requirements on half to permit the latest version.

    Release notes

    Sourced from half's releases.

    2.2.0

    Added

    • Add serialize_as_f32 and serialize_as_string functions when serde cargo feature is enabled. They allowing customizing the serialization by using #[serde(serialize_with="f16::serialize_as_f32")] attribute in serde derive macros. Closes #60.
    • Deserialize now supports deserializing from f32, f64, and string values in addition to its previous default deserialization. Closes #60.

    Fixed

    • Add #[inline] on fallback functions, which improved conversion execution on non-nightly rust by up to 50%. By @​Shnatsel.
    Changelog

    Sourced from half's changelog.

    [2.2.0] - 2022-12-30

    Added

    • Add serialize_as_f32 and serialize_as_string functions when serde cargo feature is enabled. They allowing customizing the serialization by using #[serde(serialize_with="f16::serialize_as_f32")] attribute in serde derive macros. Closes #60.
    • Deserialize now supports deserializing from f32, f64, and string values in addition to its previous default deserialization. Closes #60.

    Fixed

    • Add #[inline] on fallback functions, which improved conversion execution on non-nightly rust by up to 50%. By [@​Shnatsel].

    [2.1.0] - 2022-07-18

    Added

    • Add support for target_arch spirv. Some traits and functions are unavailble on this architecture. By [@​charles-r-earp].
    • Add total_cmp method to both float types. Closes #55, by [@​joseluis].

    [2.0.0] - 2022-06-21

    Changed

    • Breaking Change Minimum supported Rust version is now 1.58.
    • Breaking Change std is now enabled as a default cargo feature. Disable default features to continue using no_std support.
    • Migrated to Rust Edition 2021.
    • Added #[must_use] attributes to functions, as appropriate.

    Fixed

    • Fix a soundness bug with slice::as_ptr not correctly using mutable reference. By [@​Nilstrieb].

    Added

    • Added const conversion methods to both f16 and bf16. These methods never use hardware intrinsics, unlike the current conversion methods, which is why they are separated into new methods. The following const methods were added:
      • from_f32_const
      • from_f64_const
      • to_f32_const
      • to_f64_const
    • Added Neg trait support for borrowed values &f16 and &bf16. By [@​pthariensflame].
    • Added AsPrimitive implementations from and to self, usize, and isize. By [@​kali].

    Removed

    • Breaking Change The deprecated serialize cargo feature has been removed. Use serde cargo feature instead.
    • Breaking Change The deprecated consts module has been removed. Use associated constants on f16 instead.
    • Breaking Change The following deprecated functions have been removed:
      • f16::as_bits
      • slice::from_bits_mut
      • slice::to_bits_mut
      • slice::from_bits

    ... (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 egui-winit requirement from 0.17 to 0.20

    Update egui-winit requirement from 0.17 to 0.20

    Updates the requirements on egui-winit to permit the latest version.

    Release notes

    Sourced from egui-winit's releases.

    0.20.0 - AccessKit, prettier text, overlapping widgets

    egui changelog: https://github.com/emilk/egui/blob/master/CHANGELOG.md eframe changelog: https://github.com/emilk/egui/blob/master/crates/eframe/CHANGELOG.md

    Changelog

    Sourced from egui-winit's changelog.

    0.20.0 - 2022-08-20 - AccessKit, prettier text, overlapping widgets

    • MSRV (Minimum Supported Rust Version) is now 1.65.0 (#2314).
    • ⚠️ BREAKING: egui now expects integrations to do all color blending in gamma space (#2071).
    • ⚠️ BREAKING: if you have overlapping interactive widgets, only the top widget (last added) will be interactive (#2244).

    Added ⭐

    • Added helper functions for animating panels that collapse/expand (#2190).
    • Added Context::os/Context::set_os to query/set what operating system egui believes it is running on (#2202).
    • Added Button::shortcut_text for showing keyboard shortcuts in menu buttons (#2202).
    • Added egui::KeyboardShortcut for showing keyboard shortcuts in menu buttons (#2202).
    • Texture loading now takes a TexureOptions with minification and magnification filters (#2224).
    • Added Key::Minus and Key::Equals (#2239).
    • Added egui::gui_zoom module with helpers for scaling the whole GUI of an app (#2239).
    • You can now put one interactive widget on top of another, and only one will get interaction at a time (#2244).
    • Added spacing.menu_margin for customizing menu spacing (#2036)
    • Added possibility to enable text wrap for the selected text of egui::ComboBox (#2272)
    • Added Area::constrain and Window::constrain which constrains area to the screen bounds (#2270).
    • Added Area::pivot and Window::pivot which controls what part of the window to position (#2303).
    • Added support for thin space.
    • Added optional integration with AccessKit for implementing platform accessibility APIs (#2294).
    • Added panel_fill, window_fill and window_stroke to Visuals for your theming pleasure (#2406).
    • Plots:
      • Allow linking plot cursors (#1722).
      • Added Plot::auto_bounds_x/y and Plot::reset (#2029).
      • Added PlotUi::translate_bounds (#2145).
      • Added PlotUi::set_plot_bounds (#2320).
      • Added PlotUi::plot_secondary_clicked (#2318).

    Changed 🔧

    • Panels always have a separator line, but no stroke on other sides. Their spacing has also changed slightly (#2261).
    • Tooltips are only shown when mouse pointer is still (#2263).
    • Make it slightly easier to click buttons (#2304).
    • egui::color has been renamed egui::ecolor (#2399).

    Fixed 🐛

    • ⚠️ BREAKING: Fix text being too small (#2069).
    • Improve mixed CJK/Latin line-breaking (#1986).
    • Improved text rendering (#2071).
    • Constrain menu popups to the screen (#2191).
    • Less jitter when calling Context::set_pixels_per_point (#2239).
    • Fixed popups and color edit going outside the screen.
    • Fixed keyboard support in DragValue (#2342).
    • If you nest ScrollAreas inside each other, the inner area will now move its scroll bar so it is always visible (#2371).
    • Ignore key-repeats for input.key_pressed (#2334, #2389).
    • Fixed issue with calling set_pixels_per_point each frame (#2352).
    • Fix bug in ScrollArea::show_rows (#2258).
    • Fix bug in plot::Line::fill (#2275).
    • Only emit changed events in radio_value and selectable_value if the value actually changed (#2343).
    • Fixed sizing bug in Grid (#2384).
    • ComboBox::width now correctly sets the outer width (#2406).

    ... (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 wgpu requirement from 0.12 to 0.14

    Update wgpu requirement from 0.12 to 0.14

    Updates the requirements on wgpu to permit the latest version.

    Release notes

    Sourced from wgpu's releases.

    v0.14.0

    Major Changes

    @​invariant Warning

    When using CompareFunction::Equal or CompareFunction::NotEqual on a pipeline, there is now a warning logged if the vertex shader does not have a @​invariant tag on it. On some machines, rendering the same triangles multiple times without an @​invariant tag will result in slightly different depths for every pixel. Because the *Equal functions rely on depth being the same every time it is rendered, we now warn if it is missing.

    -@vertex
    -fn vert_main(v_in: VertexInput) -> @builtin(position) vec4<f32> {...}
    +@vertex
    +fn vert_main(v_in: VertexInput) -> @builtin(position) @invariant vec4<f32> {...}
    

    Surface Alpha and PresentModes

    Surface supports alpha_mode now. When alpha_mode is equal to PreMultiplied or PostMultiplied, the alpha channel of framebuffer is respected in the compositing process, but which mode is available depends on the different API and Device. If don't care about alpha_mode, you can set it to Auto.

    SurfaceConfiguration {
    // ...
    + alpha_mode: surface.get_supported_alpha_modes(&adapter)[0],
    }
    

    The function to enumerate supported presentation modes changed:

    - pub fn wgpu::Surface::get_supported_modes(&self, adapter: &wgpu::Adapter) -> Vec<PresentMode>
    + pub fn wgpu::Surface::get_supported_present_modes(&self, adapter: &wgpu::Adapter) -> Vec<PresentMode>
    

    Updated raw-window-handle to 0.5

    This will allow use of the latest version of winit. As such the bound on create_surface is now RWH 0.5 and requires both raw_window_handle::HasRawWindowHandle and raw_window_handle::HasRawDisplayHandle.

    Added/New Features

    ... (truncated)

    Changelog

    Sourced from wgpu's changelog.

    wgpu-0.14.0 (2022-10-05)

    Major Changes

    @​invariant Warning

    When using CompareFunction::Equal or CompareFunction::NotEqual on a pipeline, there is now a warning logged if the vertex shader does not have a @​invariant tag on it. On some machines, rendering the same triangles multiple times without an @​invariant tag will result in slightly different depths for every pixel. Because the *Equal functions rely on depth being the same every time it is rendered, we now warn if it is missing.

    -@vertex
    -fn vert_main(v_in: VertexInput) -> @builtin(position) vec4<f32> {...}
    +@vertex
    +fn vert_main(v_in: VertexInput) -> @builtin(position) @invariant vec4<f32> {...}
    

    Surface Alpha and PresentModes

    Surface supports alpha_mode now. When alpha_mode is equal to PreMultiplied or PostMultiplied, the alpha channel of framebuffer is respected in the compositing process, but which mode is available depends on the different API and Device. If don't care about alpha_mode, you can set it to Auto.

    SurfaceConfiguration {
    // ...
    + alpha_mode: surface.get_supported_alpha_modes(&adapter)[0],
    }
    

    The function to enumerate supported presentation modes changed:

    - pub fn wgpu::Surface::get_supported_modes(&self, adapter: &wgpu::Adapter) -> Vec<PresentMode>
    + pub fn wgpu::Surface::get_supported_present_modes(&self, adapter: &wgpu::Adapter) -> Vec<PresentMode>
    

    Updated raw-window-handle to 0.5

    This will allow use of the latest version of winit. As such the bound on create_surface is now RWH 0.5 and requires both raw_window_handle::HasRawWindowHandle and raw_window_handle::HasRawDisplayHandle.

    Added/New Features

    ... (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 egui requirement from 0.17 to 0.18

    Update egui requirement from 0.17 to 0.18

    Updates the requirements on egui to permit the latest version.

    Release notes

    Sourced from egui's releases.

    0.17.0 - Improved font selection and image handling

    egui highlights:

    • Use any-sized font
    • Define custom text styles
    • Easy image loading using new crate egui_extras

    eframe highlights:

    • glow is now the default renderer on both native on web
    • follow OS light/dark mode preference

    Full changelog: https://github.com/emilk/egui/blob/master/CHANGELOG.md

    Changelog

    Sourced from egui's changelog.

    0.17.0 - 2022-02-22 - Improved font selection and image handling

    Added ⭐

    • Much improved font selection (#1154):
      • You can now select any font size and family using RichText::size amd RichText::family and the new FontId.
      • Easily change text styles with Style::text_styles.
      • Added Ui::text_style_height.
      • Added TextStyle::resolve.
      • Made the v-align and scale of user fonts tweakable (#1241).
    • Plot:
      • Added Plot::x_axis_formatter and Plot::y_axis_formatter for custom axis labels (#1130).
      • Added Plot::allow_boxed_zoom(), Plot::boxed_zoom_pointer() for boxed zooming on plots (#1188).
      • Added plot pointer coordinates with Plot::coordinates_formatter (#1235).
      • Added linked axis support for plots via plot::LinkedAxisGroup (#1184).
    • Context::load_texture to convert an image into a texture which can be displayed using e.g. ui.image(texture, size) (#1110).
    • Ui::input_mut to modify how subsequent widgets see the InputState and a convenience method InputState::consume_key for shortcuts or hotkeys (#1212).
    • Added Ui::add_visible and Ui::add_visible_ui.
    • Added CollapsingHeader::icon to override the default open/close icon using a custom function. (1147).
    • Added ui.data(), ctx.data(), ctx.options() and ctx.tessellation_options() (#1175).
    • Added Response::on_hover_text_at_pointer as a convenience akin to Response::on_hover_text (1179).
    • Opt-in dependency on tracing crate for logging warnings (#1192).
    • Added ui.weak(text).
    • Added Slider::step_by (1225).
    • Added Context::move_to_top and Context::top_most_layer for managing the layer on the top (#1242).
    • Support a subset of macOS' emacs input field keybindings in TextEdit (#1243).
    • Added ability to scroll an UI into view without specifying an alignment (1247).
    • Added Ui::scroll_to_rect (1252).

    Changed 🔧

    • ⚠️ Context::input and Ui::input now locks a mutex. This can lead to a dead-lock is used in an if let binding!
      • if let Some(pos) = ui.input().pointer.latest_pos() and similar must now be rewritten on two lines.
      • Search for this problem in your code using the regex if let .*input.
    • Better contrast in the default light mode style (#1238).
    • Renamed CtxRef to Context (#1050).
    • Context can now be cloned and stored between frames (#1050).
    • Renamed Ui::visible to Ui::is_visible.
    • Split Event::Text into Event::Text and Event::Paste (#1058).
    • Replaced Style::body_text_style with more generic Style::text_styles (#1154).
    • TextStyle is no longer Copy (#1154).
    • Replaced TextEdit::text_style with TextEdit::font (#1154).
    • Plot::highlight now takes a bool argument (#1159).
    • ScrollArea::show now returns a ScrollAreaOutput, so you might need to add .inner after the call to it (#1166).
    • Replaced corner_radius: f32 with rounding: Rounding, allowing per-corner rounding settings (#1206).
    • Replaced Frame's margin: Vec2 with margin: Margin, allowing for different margins on opposing sides (#1219).
    • Renamed Plot::custom_label_func to Plot::label_formatter (#1235).
    • Areas::layer_id_at ignores non-interatable layers (i.e. Tooltips) (#1240).
    • ScrollAreas will not shrink below a certain minimum size, set by min_scrolled_width/min_scrolled_height (1255).
    • For integrations:
      • Output has now been renamed PlatformOutput and Context::run now returns the new FullOutput (#1292).
      • FontImage has been replaced by TexturesDelta (found in FullOutput), describing what textures were loaded and freed each frame (#1110).

    ... (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 nalgebra requirement from 0.30 to 0.31

    Update nalgebra requirement from 0.30 to 0.31

    Updates the requirements on nalgebra to permit the latest version.

    Changelog

    Sourced from nalgebra's changelog.

    [0.31.0] (30 Apr. 2022)

    Breaking changes

    • Switch to cust 0.3 (for CUDA support).
    • Switch to rkyv 0.7
    • Remove support for serialization based on abomonation.
    • Remove support for conversions between nalgebra types and glam 0.13.

    Modified

    • The aliases for Const types have been simplified to help rust-analyzer.

    Added

    • Add TryFrom conversion between UnitVector2/3/4 and glam’s Vec2/3/4.
    • nalgebra-sparse: added support for serialization of sparse matrices with serde.
    • nalgebra-sparse: add a CSC matrix constructor from unsorted (but valid) data.
    • nalgebra-lapack: add generalized eigenvalues/eigenvectors calculation + QZ decomposition.

    Fixed

    • Improve stability of SVD.
    • Fix slerp for UnitComplex.

    [0.30.1] (09 Jan. 2022)

    Added

    • Add conversion from/to types of glam 0.19 and 0.20.

    [0.30.0] (02 Jan. 2022)

    Breaking changes

    • The Dim trait is now marked as unsafe.
    • The Matrix::pow and Matrix::pow_mut methods only allow positive integer exponents now. To compute negative exponents, the user is free to invert the matrix before calling pow with the exponent’s absolute value.
    • Remove the Bounded requirement from RealField. Replace it by methods returning Option<Self> so that they can still be implemented by unbounded types (by returning None).
    • The ComplexField trait derives from FromPrimitive again. We can actually keep this because all its methods return Option<Self>, meaning that it could be implemented by any type.

    Modified

    • Use more concise debug impls for matrices and geometric transformation types.
    • The singular values computed by the SVD are now sorted in increasing order by default. Use SVD::new_unordered instead to reproduce the older behavior without the sorting overhead.
    • The UnitDualQuaternion::sclerp method will no longer panic when given two equal rotations.
    • The Matrix::select_rows and Matrix::select_columns methods no longer require the matrix components to implement the trait Zero.
    • The Matrix::pow and Matrix::pow_mut methods will now also work with integer matrices.

    Added

    • Added the conversion trait From<Vec<T>> and method from_vec_storage for RowDVector.
    • Added implementation of From and Into for converting between nalgebra types and types from glam 0.18. These can be enabled by enabling the convert-glam018 cargo features.

    ... (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
Releases(v0.1.2)
  • v0.1.2(Mar 8, 2022)

    What's Changed

    • Update nalgebra requirement from 0.29 to 0.30 by @dependabot in https://github.com/lyricwulf/agpu/pull/4

    New Contributors

    • @dependabot made their first contribution in https://github.com/lyricwulf/agpu/pull/4

    Full Changelog: https://github.com/lyricwulf/agpu/compare/v0.1.1...v0.1.2

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Nov 28, 2021)

    The cube example is done!

    New

    Derive vertex layout for struct Textures Sampler Bind groups

    Improved

    Buffers

    API Changes

    Most builders are now created with "new" instead of "create", and are built with "create" instead of "build" to read better and disambiguate the returns.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Nov 28, 2021)

Owner
LyricWulf
LyricWulf
a simple compiled language i made in rust. it uses intermediate representation (IR) instead of an abstract syntax tree (AST).

a simple compiled language i made in rust. it uses intermediate representation (IR) instead of an abstract syntax tree (AST).

null 4 Oct 3, 2022
The most primitive and the fastest implementation of a fixed-size last-in-first-out stack on stack in Rust, for Copy-implementing types

This is the simplest and the fastest (faster than Vec!) implementation of a last-in-first-out stack data structure, on stack, when stack elements are

Yegor Bugayenko 10 Jun 18, 2023
Help project managers and project owners with easy-to-understand views of github issue dependencies.

Help project managers and project owners with easy-to-understand views of github issue dependencies.

nasa 56 Dec 15, 2022
Create That Project. Project Creation That Rocks 🎸🧱.

Create That Project Config Example Install $ cargo install ctp Basic Info In any file or even in the commands sections of your config file you can pla

Will 5 Dec 20, 2021
Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

MichelNowak 0 Mar 29, 2022
An example project demonstrating integration with Rust for the ESP32-S2 and ESP32-C3 microcontrollers.

Rust ESP32 Example An example project demonstrating integration with Rust for the ESP32-S2 and ESP32-C3 microcontrollers.

Espressif Systems 303 Jan 4, 2023
A basic rp2040-hal project with blinky and rtt logging example code.

A basic rp2040-hal project with blinky and rtt logging example code. With this you can quickly get started on a new rp2040 project

rp-rs 202 Jan 6, 2023
A GitHub Action to automatically build and deploy your mdbook project.

?? deploy-mdbook The deploy-mdbook action allows you to easily build and deploy your mdBook project to GitHub Pages. See action.yml for configuration

null 27 Oct 24, 2022
Meet Rustacean GPT, an experimental project transforming OpenAi's GPT into a helpful, autonomous software engineer to support senior developers and simplify coding life! 🚀🤖🧠

Rustacean GPT Welcome, fellow coding enthusiasts! ?? ?? I am excited to introduce you to Rustacean GPT, my humble yet ambitious project that aims to t

Gary McDougall 3 May 10, 2023
A template for kick starting a Cloudflare worker project using workers-rs.

Getting Started A template for kick starting a Cloudflare worker project using workers-rs. This template is designed for compiling Rust to WebAssembly

Abid Omar 1 Oct 13, 2021
Small project that try to bend to world.

Small project that try to bend to world. May not be fully working, but should provide an improvable starting point. How to The only important file is

null 1 Nov 13, 2021
A project for managing all Pop!_OS sources

Pop!_OS Pop!_OS is designed for people who use their computer to create; whether it’s complicated, professional grade software and products, sophistic

Pop!_OS 2k Jan 6, 2023
WIP demo project for pure rust playing nicely with MCUBoot/Infinitime OTA

pinetime-rust-mcuboot WIP demo project for pure rust playing nicely with MCUBoot/Infinitime OTA Firmware Behavior This is an example project so I just

David Boles 2 Jan 26, 2022
Add toast support in your dioxus project

Add toast support in your dioxus project

YuKun Liu 8 Dec 16, 2022
Parsers based on lady-deirdre project

ld-exts Parsers based on lady-deirdre project Links Lady Deirdre Alternative - Tree Sitter Config for NeoVim - LunarVim Parsers: Language Progress Hig

Bankov Andrey 4 Feb 11, 2023
A library and tool for automata and formal languages, inspired by JFLAP

Sugarcubes is a library and application for automata and formal languages. It is inspired by JFLAP, and is intended to eventually to be an alternative to JFLAP.

Henry Sloan 22 Nov 2, 2022
A library to access BGPKIT Broker API and enable searching for BGP data archive files over time from public available data sources.

BGPKIT Broker BGPKIT Broker is a online data API service that allows users to search for publicly available BGP archive files by time, collector, proj

BGPKIT 10 Nov 30, 2022
`fugit` provides a comprehensive library of `Duration` and `Instant` for the handling of time in embedded systems, doing all it can at compile time.

fugit fugit provides a comprehensive library of Duration and Instant for the handling of time in embedded systems, doing all it can at compile time. T

Emil Fresk 40 Oct 2, 2022
Ampseer examines reads in fastq format and identifies which multiplex PCR primer set was used to generate the SARS-CoV-2 sequencing library they are read from.

Ampseer examines reads in fastq format and identifies which multiplex PCR primer set was used to generate the SARS-CoV-2 sequencing library they are read from.

New England Biolabs Inc. 7 Nov 2, 2022