diff --git a/CHANGELOG.md b/CHANGELOG.md index d29535257..a4fd79e58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,9 +23,9 @@ Please only add new entries below the [Unreleased](#unreleased---releasedate) he -## [@Unreleased](https://github.com/RibirX/Ribir/compare/ribir-v0.3.0-beta.2...HEAD) - @ReleaseDate +## [@Unreleased](https://github.com/RibirX/Ribir/compare/ribir-v0.3.0...HEAD) - @ReleaseDate -## [0.3.0-beta.2](https://github.com/RibirX/Ribir/compare/ribir-v0.3.0-alpha.5...ribir-v0.3.0-beta.2) - 2024-06-05 +## [0.3.0](https://github.com/RibirX/Ribir/compare/ribir-v0.3.0-beta.2...ribir-v0.3.0) - 2024-08-26 We're thrilled to announce that Ribir now supports the Web platform\! 🎉🎉🎉 @@ -38,8 +38,11 @@ Check out our Wordle game demo, now running smoothly in your browser\! ### Features - **ribir**: support stable Rust 1.77.0 (\#552 @M-Adoo) + - **macros**: Added a `include_crate_svg!` macro to include the svg relative to current crate. (\#552, @M-Adoo) + - **ribir**: Added a `nightly` feature to enable functionalities that require nightly Rust. (\#552, @M-Adoo) + - The `include_crates_svg!` macro can operate without the `nightly` feature. - The `include_svg!` macro requires the `nightly` feature to be enabled. @@ -64,12 +67,19 @@ Check out our Wordle game demo, now running smoothly in your browser\! ``` - **core**: The split functions in `StateReader::map_reader`, `StateWriter::map_writer`, and `StateWriter::split_writer` no longer need to return a reference. (\#568 @M-Adoo) + - **core**: Introduced `StateWatcher` for watching state modifies, which was previously the responsibility of `StateReader`. This results in a cleaner and more compact `StateReader` implementation. (\#556, @M-Adoo) + - **gpu**: Introduced `GPUBackendImpl::max_textures_per_draw` to set a limit on textures per draw phase (\#562 @M-Adoo) + - **gpu**: Updated the `wgpu` implementation of the GPU backend to support WebGL. (\#578, @M-Adoo) + - **ci**: add wasm test (\#583 @wjian23) + - **ci**: wasm server watch file change (\#586 @wjian23) + - **painter**: Introduced support for `Resource` for drawing. This indicates that the `Path` may be shared with others, allowing the backend to cache it. (\#589 @M-Adoo) + - **painter**: Introduced support for bundled commands, enabling the backend to process these commands as a single entity and cache the resulting output. (\#589 @M-Adoo) ### Fixed @@ -79,6 +89,7 @@ Check out our Wordle game demo, now running smoothly in your browser\! - **ribir**: Resolved the issue causing a black screen on the first frame. (\#566, @M-Adoo) - **gpu**: Retrieve the texture limit size from the GPU instead of using a hardcoded value. (\#578, @M-Adoo) + - **ribir**: fixed the crash issue when the shell window is zero-sized at startup. (\#582, @M-Adoo) ### Changed @@ -88,14 +99,23 @@ Check out our Wordle game demo, now running smoothly in your browser\! - **core**: rename builtin field of delay\_drop\_until to keep\_alive (\#561 @wjian23) - **macros**: polish the compile error message of invalid filed in `@$var {}` (\#556 @M-Adoo) + - **gpu**: Removed dependency on the texture array feature of wgpu. (\#562, @M-Adoo) + - **algo**: removed `Resource` and rename `ShareResource` to `Resource`. (\#564, @M-Adoo) + - **dev-helper**: Support specific the comparison of image tests. (\#573 @M-Adoo) + - **dev-helper**: If test images differ, both actual and difference images are saved with the expected image. (\#573 @M-Adoo) + - **painter**: Removed the AntiAliasing feature from the `painter` package, This responsibility now lies with the painter backend. (\#584 @M-Adoo) + - **gpu**: The GPU backend no longer relies on MSAA, which is dependent on the graphics API. Instead, it uses the alpha atlas to provide a solution similar to SSAA.(\#584, @M-Adoo) + - **example**: run example in web wasm (\#571 @wjian23) + - **gpu**: The GPU backend now only caches the path command if it is a `Resource`. This change reduces GPU memory usage and accelerates cache detection. (\#589 @M-Adoo) + - **text**: Implemented caching of the glyph path as a `Resource` to improve performance. (\#589 @M-Adoo) ### Documented @@ -107,11 +127,15 @@ Check out our Wordle game demo, now running smoothly in your browser\! - **ribir**: compile wasm (\#543 @wjian23) - **ribir**: Updated `App::new_window` to accept `WindowAttributes` instead of size as the second parameter. (\#565, \#566, @M-Adoo) + - **ribir**: The window creation APIs have been updated to use asynchronous methods, improving compatibility with browsers. (\#565, @M-Adoo) - **macros**: removed `map_writer!` and `split_writer!` macros. (\#568, @M-Adoo) + - **ribir**: `StateWriter::map_writer` and `StateWriter::split_writer` now only require a writer split function, enhancing both reader and writer split operations. (\#568, @M-Adoo) + - **core**: The `StateReader` no longer supports watching its modifications. Use the `StateWatcher` trait instead for this functionality. (\#556 @M-Adoo) + - **painter**: Changes to `BackendPainter` APIs. This only affects you if you've implemented a custom painter. (\#562 @M-Adoo) ## [0.2.0](https://github.com/RibirX/Ribir/compare/ribir-v0.1.0...ribir-v0.2.0) - 2024-05-29 diff --git a/Cargo.toml b/Cargo.toml index fb0a06541..400325141 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ homepage = "https://ribir.org" keywords = ["gui", "ui", "declarative", "compose-ui"] license = "MIT" readme = "README.md" -version = "0.3.0-beta.2" +version = "0.3.0" rust-version = "1.77.0" [workspace.dependencies] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 64dceb20b..f83c63c7d 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cli" -version = "0.1.1-beta.1" +version = "0.1.1" edition = "2021" publish = false diff --git a/core/Cargo.toml b/core/Cargo.toml index 5d4091d44..6ed7aab9b 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -24,11 +24,11 @@ lyon_geom.workspace = true once_cell.workspace = true paste.workspace = true pin-project-lite.workspace = true -ribir_algo = {path = "../algo", version = "0.3.0-beta.2" } -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } -ribir_macros = {path = "../macros", version = "0.3.0-beta.2" } -ribir_painter = {path = "../painter", version = "0.3.0-beta.2" } -ribir_text = {path = "../text", version = "0.3.0-beta.2" } +ribir_algo = {path = "../algo", version = "0.3.0" } +ribir_geom = {path = "../geom", version = "0.3.0" } +ribir_macros = {path = "../macros", version = "0.3.0" } +ribir_painter = {path = "../painter", version = "0.3.0" } +ribir_text = {path = "../text", version = "0.3.0" } rxrust.workspace = true smallvec.workspace = true winit.workspace = true diff --git a/dev-helper/Cargo.toml b/dev-helper/Cargo.toml index 56f3b6fc7..1918cb981 100644 --- a/dev-helper/Cargo.toml +++ b/dev-helper/Cargo.toml @@ -16,9 +16,9 @@ version.workspace = true [dependencies] futures.workspace = true once_cell.workspace = true -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } -ribir_gpu = {path = "../gpu", version = "0.3.0-beta.2" } -ribir_painter = {path = "../painter", features = ["png"], version = "0.3.0-beta.2" } +ribir_geom = {path = "../geom", version = "0.3.0" } +ribir_gpu = {path = "../gpu", version = "0.3.0" } +ribir_painter = {path = "../painter", features = ["png"], version = "0.3.0" } image.workspace = true dssim-core.workspace = true @@ -26,4 +26,4 @@ dssim-core.workspace = true [dev-dependencies] colored.workspace = true paste.workspace = true -ribir_core = {path = "../core", version = "0.3.0-beta.2" } +ribir_core = {path = "../core", version = "0.3.0" } diff --git a/gpu/Cargo.toml b/gpu/Cargo.toml index 7ade3c8ba..27d635147 100644 --- a/gpu/Cargo.toml +++ b/gpu/Cargo.toml @@ -18,9 +18,9 @@ futures = {workspace = true, optional = true} guillotiere.workspace = true log.workspace = true rayon.workspace = true -ribir_algo = {path = "../algo", version = "0.3.0-beta.2" } -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } -ribir_painter = {path = "../painter", features = ["tessellation"], version = "0.3.0-beta.2" } +ribir_algo = {path = "../algo", version = "0.3.0" } +ribir_geom = {path = "../geom", version = "0.3.0" } +ribir_painter = {path = "../painter", features = ["tessellation"], version = "0.3.0" } slab = "0.4.9" wgpu = {workspace = true, optional = true} zerocopy = {workspace=true, features = ["derive"]} diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 31f1207c8..6f7447748 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -21,7 +21,7 @@ bitflags.workspace = true lazy_static.workspace = true proc-macro2.workspace = true quote.workspace = true -ribir_painter = {path = "../painter", version = "0.3.0-beta.2" } +ribir_painter = {path = "../painter", version = "0.3.0" } smallvec.workspace = true syn = { workspace = true, features = ["fold", "full", "extra-traits"]} phf = { workspace = true, features = ["macros"] } diff --git a/painter/Cargo.toml b/painter/Cargo.toml index b1176cf8b..ff68b0466 100644 --- a/painter/Cargo.toml +++ b/painter/Cargo.toml @@ -20,8 +20,8 @@ lyon_algorithms = {version = "1.0.3", features = ["serialization"]} lyon_tessellation = {version = "1.0.3", features = ["serialization"], optional = true} material-color-utilities-rs = {workspace = true} rctree.workspace = true -ribir_algo = {path = "../algo", version = "0.3.0-beta.2" } -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } +ribir_algo = {path = "../algo", version = "0.3.0" } +ribir_geom = {path = "../geom", version = "0.3.0" } serde = {version = "1.0", features = ["derive"]} serde_json.workspace = true tiny-skia-path = {workspace = true} diff --git a/ribir/Cargo.toml b/ribir/Cargo.toml index d07bad32d..635a7f48f 100644 --- a/ribir/Cargo.toml +++ b/ribir/Cargo.toml @@ -14,11 +14,11 @@ version.workspace = true [dependencies] once_cell.workspace = true -ribir_algo = { path = "../algo", version = "0.3.0-beta.2" } -ribir_core = { path = "../core", version = "0.3.0-beta.2" } -ribir_gpu = { path = "../gpu", version = "0.3.0-beta.2" } -ribir_material = { path = "../themes/material", version = "0.3.0-beta.2", optional = true } -ribir_widgets = { path = "../widgets", version = "0.3.0-beta.2", optional = true } +ribir_algo = { path = "../algo", version = "0.3.0" } +ribir_core = { path = "../core", version = "0.3.0" } +ribir_gpu = { path = "../gpu", version = "0.3.0" } +ribir_material = { path = "../themes/material", version = "0.3.0", optional = true } +ribir_widgets = { path = "../widgets", version = "0.3.0", optional = true } rxrust.workspace = true wgpu = { workspace = true, optional = true } winit.workspace = true diff --git a/text/Cargo.toml b/text/Cargo.toml index 0c449bcd2..07e17d3ac 100644 --- a/text/Cargo.toml +++ b/text/Cargo.toml @@ -19,9 +19,9 @@ derive_more.workspace = true fontdb.workspace = true log.workspace = true ordered-float.workspace = true -ribir_algo = {path = "../algo", version = "0.3.0-beta.2" } -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } -ribir_painter = {path = "../painter", version = "0.3.0-beta.2" } +ribir_algo = {path = "../algo", version = "0.3.0" } +ribir_geom = {path = "../geom", version = "0.3.0" } +ribir_painter = {path = "../painter", version = "0.3.0" } rustybuzz.workspace = true unicode-bidi.workspace = true unicode-script.workspace = true diff --git a/themes/material/Cargo.toml b/themes/material/Cargo.toml index 8852f78b4..bcbed7816 100644 --- a/themes/material/Cargo.toml +++ b/themes/material/Cargo.toml @@ -13,5 +13,5 @@ repository = "https://github.com/RibirX/Ribir/themes/material" version.workspace = true [dependencies] -ribir_core = {path = "../../core", version = "0.3.0-beta.2" } -ribir_widgets = {path = "../../widgets", version = "0.3.0-beta.2" } +ribir_core = {path = "../../core", version = "0.3.0" } +ribir_widgets = {path = "../../widgets", version = "0.3.0" } diff --git a/widgets/Cargo.toml b/widgets/Cargo.toml index f6d693a1b..5048a2da5 100644 --- a/widgets/Cargo.toml +++ b/widgets/Cargo.toml @@ -17,8 +17,8 @@ version.workspace = true [dependencies] lyon_algorithms.workspace = true lyon_path.workspace = true -ribir_core = {path = "../core", version = "0.3.0-beta.2" } -ribir_geom = {path = "../geom", version = "0.3.0-beta.2" } +ribir_core = {path = "../core", version = "0.3.0" } +ribir_geom = {path = "../geom", version = "0.3.0" } webbrowser.workspace = true [dev-dependencies]