Stay up to date on all things crypto and blockchain

Token Daily is a place to discover trending news and products in crypto and blockchain.

Source: ·
Iced is an experimental cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm.

This PR marks the end of the 0.1.0 milestone and the launch of a new release!
The library has made some progress since the last 0.1.0-beta landed, around 4 months ago.
New features
During this time, we have been focusing on implementing basic functionality and new widgets while following the roadmap. The most important new features are:

Custom styling (#146)
A simple, trait-based approach for customizing the appearance of different widgets.

Event subscriptions (#122)
A declarative way to listen to external events asynchronously by leveraging streams.

Canvas widget (#193)
A widget for drawing 2D graphics with an interface inspired by the Web Canvas API and powered by lyon.

PaneGrid widget (#224)
A widget that dynamically organizes layout by splitting panes that can be resized and drag and dropped.

Svg widget (#111)
A widget that renders vector graphics on top of resvg and raqote. Thanks to @Maldela!

ProgressBar widget (#141)
A widget to notify progress of asynchronous tasks to your users. Thanks to @Songtronix!

Configurable futures executor (#164)
Support for plugging tokio, async-std, wasm-bindgen-futures, or your own custom futures executor to an application.

Compatibility with existing wgpu projects (#183)
A bunch of improvements to the flexibility of iced_wgpu to allow integration in existing codebases.

Text selection for TextInput (#202)
Thanks to @FabianLars and @Finnerale!

Texture atlas for iced_wgpu (#154)
An atlas on top of guillotiere for batching draw calls. Thanks to @Maldela!

More examples
Back when I released the first beta, the codebase only had two examples: a simple tour showcasing the different widgets of the library, and a todos tracker inspired by TodoMVC. Since then, and as a consequence of all the new features, the amount of examples has increased considerably:

bezier_tool, a Paint-like tool for drawing Bézier curves using lyon.
clock, an application that uses the Canvas widget to draw a clock and its hands to display the current time.
counter, the classic counter example explained in the README.
custom_widget, a custom widget that draws a circle.
download_progress, a basic application that asynchronously downloads a dummy file of 100 MB and tracks the download progress.
events, a log of native events displayed using a conditional Subscription.
geometry, a custom widget showcasing how to draw geometry with the Mesh2D primitive in iced_wgpu.
integration, an example demonstrating how to integrate Iced in an existing graphical application.
pane_grid, a grid of panes that can be split, resized, and reorganized.
pokedex, an application that displays a random Pokédex entry (sprite included!) by using the PokéAPI.
progress_bar, a simple progress bar that can be filled by using a slider.
styling, an example showcasing custom styling with a light and dark theme.
solar_system, an animated solar system drawn using the Canvas widget and showcasing how to compose different transforms.
stopwatch, a watch with start/stop and reset buttons showcasing how to listen to time.
svg, an application that renders the Ghostscript Tiger by leveraging the Svg widget.

Feel free to try them out and report any issues you may encounter!
Thank you! 🎉
Finally, I want to highlight the work of everyone that has contributed to the library in one way or another:

@AlisCode created iced-pancurses, started a great issue to find a project logo (#143), and worked on a potential website (#115).
@artursapek contributed a Mesh2D primitive for iced_wgpu (#140) which ended up being the foundations of the Canvas widget.
@clarkmoody added customization support for the Checkbox widget (#192).
@daxpedda improved the Node API (#187) and has been working on the Grid widget (#189).
@ejmahler removed the Clone bound on the Message associated type of Application (#155).
@FabianLars contributed text selection for TextInput (#202) on top of @Finnerale's work.
@Friz64 enhanced the scrolling behavior of the Scrollable widget (#95).
@Gohla introduced missing style attributes in iced_web (#127), removed unnecessary bounds (#128), and built a cool Space Engineers calculator.
@hatoo added platform-specific settings to iced_winit (#94), implemented the bezier_tool example (#144), and provided feedback related to using the library for building VST plugins (#118).
@Imberflur updated winit to 0.21 (#181) and exposed the Clipboard type in iced_winit (#178).
@kaimast removed unnecessary lifetimes in the integration example (#240) and contributed other minor code cleanups (#242).
@maaku fixed some formatting to comply with cargo fmt (#228).
@Maldela implemented the Svg widget (#111) and a texture atlas for iced_wgpu (#154).
@memoryruins cleaned up some code and made it more idiomatic (#45).
@michael-swan implemented Ctrl+Backspace behavior for TextInput (#249).
@mrkgnao added support for displaying already-decoded images (#211).
@nvzqz made a bunch of functions const (#91) and added some From implementations (#92).
@piaoger fixed the file path of the svg example (#196).
@Plecra improved the scaling of the hands in the clock example (#251).
@rowungiles introduced a with_children method for Column and Row (#220).
@Shootertrex fixed the hash_layout implementation of the Image widget (#101).
@simlay experimented with iOS support and touch events (#57) while contributing to winit.
@Songtronix wrote the ProgressBar widget (#141), contributed the download_progress example (#232), and has been using the library in Airshipper, a cross-platform launcher for Veloren.
@sumibi-yakitori enabled custom fonts for TextInput (#171).
@tirz removed unnecessary 'static lifetimes in a bunch of generic types (#245).

I am very grateful for all these contributions and all the feedback and suggestions received. Thank you, everyone!

Continue reading..


Trending this week..

Post a Job Teams Hiring Now
  • TokenSoft

    TokenSoft is the volume leader in compliant token sales.

  • Dharma

    The open protocol for tokenized debt.

  • Coinbase

    A secure online platform for buying, selling, and storing digital currencies.

  • Lightning

    A second layer, off-chain scaling proposal for bitcoin.

  • Coda (o1)

    Ensuring the blockchain is inexpensive and accessible to everyone.

  • 0x

    An open protocol for decentralized exchange on the ethereum blockchain.

  • See all