ribir-v0.1.0
πππ The first version of Ribir.
The goal of this version of Ribir is to finish the core framework and answer our questions about the feasibility of the design.
We use it to build examples and build some apps for our daily work. And we are satisfied with the experience of using it.
We are very happy to share it with you. We hope you can try it out and give us feedback. But we don't recommend you to use it in production environments yet.
Features
- core: control the process of the entire view: compose, build, update, layout and render.
- declarative language: not a new language, but a set of Rust macros that easily interact with Rust.
- widgets compose system: has four kinds of widgets to support you can implement your own widget in different ways:
- function widget and
Compose
, from other widgets composition. Render
, implement your layout and paint anything you want.ComposeChild
, control the compose logic between parent and child widgets and specify the template of child widgets.
- function widget and
- non-intrusive state: convert your data to a listenable state, and update the view according to the change of the state.
- layout system: learning and inspired by Flutter Sublinear layout, but not the same.
- event system: a composition event system, that supports event bubbling and capture. Allow to compose with any widget, and exists only if you use it.
- theme System: support full and inherit/partial theme, so you can use it to override or dynamically switch the theme of the subtree. Include palette, icons, animate transitions, the decoration widget of the widget, etc. In a very rough state and the API will be redesigned soon.
- animations: based on state but no side effect animation, it's almost stable in concept, but not many predefined animations yet.
- painterοΌ convert the view to the 2D path.
- GPU render: GPU backend for the painter, do path tessellation, so that easy to render the triangles in any GPU render engine. A
wgpu
implementation is provided as the default GPU render engine. Tessellation base on lyon. - text: support basic text typography and IME input, in a usable but rough stage.
- widgets: the widgets library provides 20+ basic widgets, but all are in a rough stage, and the API is not stable yet.
- examples: counter, storybook, messages, todos, wordle_game, etc.
Documented
- introduction: add
introduction.md
to introduce Ribir and why choose it. - get started: add the
get_started
series of tutorials to help users get started with Ribir.