From 9183f919c077c0b008e308c2953cc75964c1471a Mon Sep 17 00:00:00 2001 From: Evgeniy Reizner Date: Sat, 17 Aug 2019 14:41:35 +0300 Subject: [PATCH] Version bump. --- .github/chart.svg | 46 +++++++-------- .github/official_chart.svg | 14 ++--- .github/perf-elementary.svg | 53 +++++++++-------- .github/perf-oxygen.svg | 57 ++++++++++--------- CHANGELOG.md | 9 ++- Cargo.lock | 26 ++++----- Cargo.toml | 8 +-- README.md | 5 +- bindings/resvg-qt/Cargo.toml | 2 +- bindings/resvg-skia/Cargo.toml | 2 +- capi/Cargo.toml | 2 +- capi/include/resvg.h | 4 +- capi/src/lib.rs | 2 +- src/lib.rs | 2 +- .../install/installer.iss | 6 +- tools/rendersvg/Cargo.toml | 2 +- tools/usvg/Cargo.toml | 4 +- usvg/Cargo.toml | 2 +- usvg/src/lib.rs | 2 +- usvg/tests/test.rs | 38 ++++++------- version-bump.md | 3 +- 21 files changed, 152 insertions(+), 137 deletions(-) diff --git a/.github/chart.svg b/.github/chart.svg index b0c94504b..a7efd3f3a 100644 --- a/.github/chart.svg +++ b/.github/chart.svg @@ -1,37 +1,37 @@ - resvg 0.7.0 + resvg 0.8.0 Firefox 60.7 Chromium r662092 Inkscape 0.92.4 librsvg 2.45.5 Batik 1.9 - QtSvg 5.12.3 + QtSvg 5.12.3 0 - - 278 - - 556 - - 834 - - 1112 - - 1057 - - 986 + + 294 + + 588 + + 882 + + 1176 + + 1122 + + 1045 - 989 - - 836 - - 824 - - 806 - - 430 + 1047 + + 878 + + 874 + + 849 + + 447 Tests passed diff --git a/.github/official_chart.svg b/.github/official_chart.svg index 241fcdd88..9feeac1a3 100644 --- a/.github/official_chart.svg +++ b/.github/official_chart.svg @@ -1,7 +1,7 @@ - resvg 0.7.0 + resvg 0.8.0 Firefox 60.7 Chromium r662092 Inkscape 0.92.4 @@ -18,18 +18,18 @@ 253 337 - - 255 + + 267 288 293 - - 250 + + 251 222 - - 258 + + 259 140 diff --git a/.github/perf-elementary.svg b/.github/perf-elementary.svg index 4d8ca01fb..6c00959d9 100644 --- a/.github/perf-elementary.svg +++ b/.github/perf-elementary.svg @@ -1,32 +1,35 @@ - + Time to render Elementary OS Icon Theme 5.0 - resvg 0.7.0 (cairo) - resvg 0.7.0 (qt) - resvg 0.7.0 (raqote) - QtSvg 5.12.3 + resvg 0.8.0 (cairo) + resvg 0.8.0 (qt) + resvg 0.8.0 (raqote) + resvg 0.8.0 (skia) librsvg 2.45.5 - - 0sec - - 10sec - - 20sec - - 30sec - - 40sec - - 21 - - 38 - - 21 - - 30 + QtSvg 5.12.3 + + 0sec + + 10sec + + 20sec + + 30sec + + 40sec + + 19 + + 35 + + 19 + + 19 24 - - Time passed + + 30 + + Time passed diff --git a/.github/perf-oxygen.svg b/.github/perf-oxygen.svg index 9a1cbe380..060e173d0 100644 --- a/.github/perf-oxygen.svg +++ b/.github/perf-oxygen.svg @@ -1,32 +1,35 @@ - + Time to render Oxygen Icon Theme 4.12 - resvg 0.7.0 (cairo) - resvg 0.7.0 (qt) - resvg 0.7.0 (raqote) - QtSvg 5.12.3 + resvg 0.8.0 (cairo) + resvg 0.8.0 (qt) + resvg 0.8.0 (raqote) + resvg 0.8.0 (skia) librsvg 2.45.5 - - 0sec - - 100sec - - 200sec - - 300sec - - 400sec - - 250 - - 237 - - 310 - - 160 - - 163 - - Time passed + QtSvg 5.12.3 + + 0sec + + 60sec + + 120sec + + 180sec + + 240sec + + 195 + + 191 + + 205 + + 175 + + 163 + + 160 + + Time passed diff --git a/CHANGELOG.md b/CHANGELOG.md index 00a3af8ce..4fdaeb81f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). This changelog also contains important changes in dependencies. ## [Unreleased] + +## [0.8.0] - 2019-08-17 ### Added - A [Skia](https://skia.org/) backend thanks to [JaFenix](https://github.com/JaFenix). @@ -31,6 +33,10 @@ This changelog also contains important changes in dependencies. - `OutputImage::save` -> `OutputImage::save_png`. - (usvg) `Path::segments` -> `Path::data`. - Cairo backend compilation is 2x faster now due to overall changes. +- Performance improvements (Oxygen Icon theme SVG-to-PNG): + - cairo-backend: 22% faster + - qt-backend: 20% faster + - raqote-backend: 34% faster ### Fixed - (qt-api) A default font resolving. @@ -269,7 +275,8 @@ This changelog also contains important changes in dependencies. ### Fixed - `font-size` attribute inheritance during `use` resolving. -[Unreleased]: https://github.com/RazrFalcon/resvg/compare/v0.7.0...HEAD +[Unreleased]: https://github.com/RazrFalcon/resvg/compare/v0.8.0...HEAD +[0.8.0]: https://github.com/RazrFalcon/resvg/compare/v0.7.0...v0.8.0 [0.7.0]: https://github.com/RazrFalcon/resvg/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/RazrFalcon/resvg/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/RazrFalcon/resvg/compare/v0.5.0...v0.6.0 diff --git a/Cargo.lock b/Cargo.lock index da7fbae49..d54e2d7ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -330,43 +330,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rendersvg" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fern 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "pico-args 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "resvg 0.7.0", + "resvg 0.8.0", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "resvg" -version = "0.7.0" +version = "0.8.0" dependencies = [ "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "raqote 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "resvg-qt 0.7.0", - "resvg-skia 0.7.0", + "resvg-qt 0.8.0", + "resvg-skia 0.8.0", "rgb 0.8.13 (registry+https://github.com/rust-lang/crates.io-index)", - "usvg 0.7.0", + "usvg 0.8.0", ] [[package]] name = "resvg-capi" -version = "0.7.0" +version = "0.8.0" dependencies = [ "cairo-sys-rs 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "fern 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "resvg 0.7.0", + "resvg 0.8.0", ] [[package]] name = "resvg-qt" -version = "0.7.0" +version = "0.8.0" dependencies = [ "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -374,7 +374,7 @@ dependencies = [ [[package]] name = "resvg-skia" -version = "0.7.0" +version = "0.8.0" dependencies = [ "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -479,7 +479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "usvg" -version = "0.7.0" +version = "0.8.0" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "data-url 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -502,12 +502,12 @@ dependencies = [ [[package]] name = "usvg-cli" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fern 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "pico-args 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "usvg 0.7.0", + "usvg 0.8.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 086abfd62..14b203f34 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "resvg" -version = "0.7.0" +version = "0.8.0" authors = ["Evgeniy Reizner "] keywords = ["svg", "render", "raster"] license = "MPL-2.0" @@ -27,7 +27,7 @@ travis-ci = { repository = "RazrFalcon/resvg" } [dependencies] log = "0.4" rgb = "0.8" -usvg = { path = "usvg", version = "0.7" } +usvg = { path = "usvg", version = "0.8" } png = { version = "0.15", default-features = false } jpeg-decoder = { version = "0.1.15", default-features = false } @@ -35,13 +35,13 @@ jpeg-decoder = { version = "0.1.15", default-features = false } cairo-rs = { version = "0.7.1", default-features = false, features = ["png"], optional = true } # qt backend -resvg-qt = { path = "bindings/resvg-qt", version = "0.7", optional = true } +resvg-qt = { path = "bindings/resvg-qt", version = "0.8", optional = true } # raqote backend raqote = { version = "0.6.1", default-features = false, optional = true } # skia backend -resvg-skia = { path = "bindings/resvg-skia", version = "0.7", optional = true } +resvg-skia = { path = "bindings/resvg-skia", version = "0.8", optional = true } [features] cairo-backend = ["cairo-rs", "png/png-encoding"] diff --git a/README.md b/README.md index f27a109cf..3b12dcce1 100644 --- a/README.md +++ b/README.md @@ -64,8 +64,9 @@ Also, we do not test against Chrome, Firefox, Inkscape and Batik because they ha - The Oxygen icon theme contains 4947 files. - All images were converted from `.svgz` to `.svg` beforehand. -- `resvg` is slower than `librsvg` because the Oxygen icon theme uses Gaussian blur heavily, which is expensive. - And `librsvg` uses box blur optimization and multithreading, while `resvg` always uses a single-threaded IIR blur (at least for now). +- `resvg` is slower than `librsvg` because the Oxygen icon theme uses Gaussian blur heavily, + and `librsvg` has a faster blur implementation. + Also, `librsvg` uses native `cairo` clipping, [which is incorrect](https://razrfalcon.github.io/resvg-test-suite/svg-support-table.html#e-clipPath) but faster. - QtSvg doesn't support `filter`, `clipPath`, `mask` and `pattern` that are heavily used in the Oxygen icon theme. So it's actually very slow. diff --git a/bindings/resvg-qt/Cargo.toml b/bindings/resvg-qt/Cargo.toml index 9c23acd2f..a7c6be938 100644 --- a/bindings/resvg-qt/Cargo.toml +++ b/bindings/resvg-qt/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "resvg-qt" -version = "0.7.0" +version = "0.8.0" authors = ["Reizner Evgeniy "] keywords = ["qt", "ffi"] license = "MIT" diff --git a/bindings/resvg-skia/Cargo.toml b/bindings/resvg-skia/Cargo.toml index a4594a0cc..5146506de 100644 --- a/bindings/resvg-skia/Cargo.toml +++ b/bindings/resvg-skia/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "resvg-skia" -version = "0.7.0" +version = "0.8.0" authors = ["JaFenix ", "Reizner Evgeniy "] keywords = ["skia", "ffi"] license = "MIT" diff --git a/capi/Cargo.toml b/capi/Cargo.toml index 2aa0e0b8a..72221efa9 100644 --- a/capi/Cargo.toml +++ b/capi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "resvg-capi" -version = "0.7.0" +version = "0.8.0" authors = ["Evgeniy Reizner "] keywords = ["svg", "render", "raster", "capi"] license = "MPL-2.0" diff --git a/capi/include/resvg.h b/capi/include/resvg.h index 0a459f67e..5d6956311 100644 --- a/capi/include/resvg.h +++ b/capi/include/resvg.h @@ -23,9 +23,9 @@ #define RESVG_MAJOR_VERSION 0 -#define RESVG_MINOR_VERSION 7 +#define RESVG_MINOR_VERSION 8 #define RESVG_PATCH_VERSION 0 -#define RESVG_VERSION "0.7.0" +#define RESVG_VERSION "0.8.0" #ifdef __cplusplus extern "C" { diff --git a/capi/src/lib.rs b/capi/src/lib.rs index f7de66722..80e00729f 100644 --- a/capi/src/lib.rs +++ b/capi/src/lib.rs @@ -289,7 +289,7 @@ fn render_to_image( tree: *const resvg_render_tree, opt: *const resvg_options, file_path: *const c_char, - backend: Box, + backend: Box, ) -> i32 { let tree = unsafe { assert!(!tree.is_null()); diff --git a/src/lib.rs b/src/lib.rs index a0682ada4..3626bf1e7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,7 +14,7 @@ It can be used as a simple SVG to PNG converted. And as an embeddable library to paint SVG on an application native canvas. */ -#![doc(html_root_url = "https://docs.rs/resvg/0.7.0")] +#![doc(html_root_url = "https://docs.rs/resvg/0.8.0")] #![forbid(unsafe_code)] #![warn(missing_docs)] diff --git a/tools/explorer-thumbnailer/install/installer.iss b/tools/explorer-thumbnailer/install/installer.iss index 68f99cce7..a37d2aa0a 100755 --- a/tools/explorer-thumbnailer/install/installer.iss +++ b/tools/explorer-thumbnailer/install/installer.iss @@ -1,8 +1,8 @@ [Setup] AppName="reSVG Explorer Extension" -AppVersion="0.7.0" -VersionInfoVersion="0.0.7.0" -AppVerName="reSVG Explorer Extension 0.7.0" +AppVersion="0.8.0" +VersionInfoVersion="0.0.8.0" +AppVerName="reSVG Explorer Extension 0.8.0" AppPublisher="Evgeniy Reizner" AppPublisherURL=https://github.com/RazrFalcon/resvg DefaultDirName="{pf}\reSVG Explorer Extension" diff --git a/tools/rendersvg/Cargo.toml b/tools/rendersvg/Cargo.toml index 446ddd09a..257a658a6 100644 --- a/tools/rendersvg/Cargo.toml +++ b/tools/rendersvg/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rendersvg" -version = "0.7.0" +version = "0.8.0" authors = ["Evgeniy Reizner "] keywords = ["svg", "render", "raster"] license = "MPL-2.0" diff --git a/tools/usvg/Cargo.toml b/tools/usvg/Cargo.toml index 4228c29ab..1e046fcb6 100644 --- a/tools/usvg/Cargo.toml +++ b/tools/usvg/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "usvg-cli" -version = "0.7.0" +version = "0.8.0" authors = ["Reizner Evgeniy "] keywords = ["svg"] license = "MPL-2.0" @@ -16,7 +16,7 @@ travis-ci = { repository = "RazrFalcon/resvg" } fern = "0.5" log = "0.4" pico-args = "0.2" -usvg = { version = "0.7.0", path = "../../usvg" } +usvg = { version = "0.8", path = "../../usvg" } [[bin]] name = "usvg" diff --git a/usvg/Cargo.toml b/usvg/Cargo.toml index 5f0cb9008..57a695611 100644 --- a/usvg/Cargo.toml +++ b/usvg/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "usvg" -version = "0.7.0" +version = "0.8.0" authors = ["Evgeniy Reizner "] keywords = ["svg"] license = "MPL-2.0" diff --git a/usvg/src/lib.rs b/usvg/src/lib.rs index 7167faeb7..96e067b6e 100644 --- a/usvg/src/lib.rs +++ b/usvg/src/lib.rs @@ -57,7 +57,7 @@ Full spec can be found [here](https://github.com/RazrFalcon/usvg/blob/master/doc [SVG]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics */ -#![doc(html_root_url = "https://docs.rs/usvg/0.7.0")] +#![doc(html_root_url = "https://docs.rs/usvg/0.8.0")] #![warn(missing_docs)] #![warn(missing_debug_implementations)] diff --git a/usvg/tests/test.rs b/usvg/tests/test.rs index 0540d91dc..56bb68b30 100644 --- a/usvg/tests/test.rs +++ b/usvg/tests/test.rs @@ -42,7 +42,7 @@ test!(minimal, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -64,7 +64,7 @@ test!(groups, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -84,7 +84,7 @@ test!(clippath_with_invalid_child, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> "); @@ -108,7 +108,7 @@ test!(clippath_with_invalid_children, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> "); @@ -126,7 +126,7 @@ test!(group_clippath, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -155,7 +155,7 @@ test!(ignore_groups_with_id, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -175,7 +175,7 @@ test!(pattern_with_invalid_child, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> + usvg:version='0.8.0'> + usvg:version='0.8.0'> @@ -323,7 +323,7 @@ test!(ignore_empty_groups_with_id, true, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> "); @@ -340,7 +340,7 @@ test!(keep_groups_with_id, true, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -360,7 +360,7 @@ test!(simplify_paths_1, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -380,7 +380,7 @@ test!(group_with_default_opacity, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> @@ -401,7 +401,7 @@ test!(group_with_an_invalid_child, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> "); @@ -420,7 +420,7 @@ test!(nested_group_with_an_invalid_child, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> "); @@ -440,7 +440,7 @@ test!(simple_switch, false, viewBox='0 0 1 1' xmlns='http://www.w3.org/2000/svg' xmlns:usvg='https://github.com/RazrFalcon/usvg' - usvg:version='0.7.0'> + usvg:version='0.8.0'> + usvg:version='0.8.0'> @@ -487,7 +487,7 @@ test!(switch_with_opacity, false, // height='1' // viewBox='0 0 1 1' // xmlns:usvg='https://github.com/RazrFalcon/usvg' -// usvg:version='0.7.0'> +// usvg:version='0.8.0'> // // @@ -549,7 +549,7 @@ test_size_err!(size_detection_err_2, // height='1' // viewBox='0 0 1 1' // xmlns:usvg='https://github.com/RazrFalcon/usvg' -// usvg:version='0.7.0'> +// usvg:version='0.8.0'> // //