Subject: CVS commit: pkgsrc/graphics/librsvg
From: Ryo ONODERA
Date: 2019-10-04 15:40:08
Message id: 20191004134009.0D5DEFBF4@cvs.NetBSD.org

Log Message:
Update to 2.46.0

Changelog:
Version 2.46.0

- The following are highlights compared to the 2.44.x series.  For
  full details, please see the release notes for the 2.45.x series.

- All of librsvg.so is now implemented in Rust!  That is, except for a
  very thin wrapper over the public API functions.  Hopefully we can
  remove this wrapper when Cargo gets some more features around
  controlling the linking step.  This release requires at least Rust 1.34.

- Librsvg now comes with a Rust crate that can be used from Rust
  applications.  See librsvg_crate/examples.  This Rust API is
  designed to be idiomatic; if you want a Rust binding to the shared
  library instead, please use the "rsvg-rs" crate from crates.io.

- The following API functions are new in the C library:
    rsvg_handle_get_intrinsic_dimensions()
    rsvg_handle_render_document()
    rsvg_handle_render_layer()
    rsvg_handle_render_element()
    rsvg_handle_get_geometry_for_layer()
    rsvg_handle_get_geometry_for_element()

  Correspondingly, there is a new chapter in the documentation, called
  "Recommendations for Applications".  These new APIs conform better
  with the web platform's idea of how SVG sizing/positioning should
  work.  Applications should now find it easier to scale and render
  SVGs in a single call, instead of having to obtain image dimensions
  first.

- A bunch of functions have been deprecated but are still available:

    - rsvg_handle_write()/close() are deprecated in favor of the
      stream functions.  Unfortunately the write()/close() pair
      require buffering the entire document, in case it is a .svgz
      compressed file; the streaming functions do not have this
      problem.

    - Functions that return RsvgDimensionData and RsvgPositionData are
      deprecated, since they just use integers instead of floating
      point numbers.  They are replaced with the _get_geometry_*()
      functions above.

- The library is a lot more strict now in terms of detecting that the
  API functions are called in the correct order.  For example, calling
  rsvg_handle_get_dimensions() before rsvg_handle_close() will now
  emit a critical warning.

- Librsvg is gradually moving towards using code from Mozilla's Servo.
  We haven't quite gotten rid of libcroco and libxml2 yet, but this is
  in progress.

- Many thanks to all the people who participated in the long cycle for
  2.45.  Having the whole library's functionality in Rust is a big
  accomplishment!

Version 2.45.92
- #496 - Ensure all lengths and angles parse as finite numbers

- #497 - Don't panic on paths with all-invalid commands

- #500 - Added additional SVG blend-modes for the feBlend filter primitive (Andargor)

- Some changes in the build structure to allow for faster builds.

Version 2.45.91
- The documentation has a new chapter, Recommendations for Applications.

- #451 - Make rsvg-convert detect images larger than pixman's limit.

- #410 - Update introspection annotations.

- #449 - librsvg_crate: Make cancellable arguments consistent with gio-rs

- librsvg_crate: Take all gio arguments as IsA<SomeGioType> generics

- Updated Rust crates to avoid duplicates (Bastien Orivel)

Version 2.45.90
- New API functions:
    rsvg_handle_render_document()
    rsvg_handle_render_layer()
    rsvg_handle_render_element()
    rsvg_handle_get_geometry_for_layer()
    rsvg_handle_get_geometry_for_element()

  CairoRenderer in the librsvg_crate has corresponding functions
  as well.

- Fix builds with gettext ≥ 0.20 (Ting-Wei Lan).

- If the C API is called out of order, downgrade hard panics to
  g_critical() to cope with incorrect/old applications that called
  rsvg_handle_get_dimensions() before rsvg_handle_close().

- API reference documentation is much improved.

Version 2.45.8
- This version requires at least Rust 1.34.

- #485 - Fix build on Rust earlier than 1.36 (Kleis Auke Wolthuizen).

- More polishing of the Windows build (Chun-wei Fan).

- Update gtk-rs and dependent crates (Bastien Orivel)

Version 2.45.7
- Fix #463 - Don't panic if an SVG has character data outside the
  first element.

- Fix #467: Don't panic when there's an xi:include fallback with no
  parent element.  Thanks to Bastien Orivel for running afl-fuzz
  on librsvg.

- Fix #471: Fix blurry semi-opaque objects when rendering with a
  scaled transformation.  Thanks to the gnome-games people for
  isolating a test case and to Evgeniy Reizner for providing a more
  minimal one.

- Fix #481: Don't ignore the first x/y/dx/dy in text/tspan elements if
  there is more than one position specified.

- #452 - In librsvg_crate, SvgHandle now has a ::has_element_with_id()
  method.

- rsvg-convert now catches the case where the SVG has no dimensions.

- Replaced the Visual Studio build infrastructure for NMake
  (Chun-wei Fan).

- This version no longer contains the rsvg-view program, so librsvg no
  longer depends on GTK.  Please see
  https://people.gnome.org/~federico/blog/removing-rsvg-view.html for
  the rationale behind this change.

- The poly element no longer supports "verts" as an alias for the
  "points" attribute.  The "verts" name was only used in SVG \ 
pre-1.0,
  and we had been cargo-culting that name ever since.

- We now use more machinery from Mozilla Servo, in this case the
  markup5ever and rust-selectors crates.  This is in line with
  gradually replacing libcroco with a Rust-only CSS machinery.

- Lots and lots of refactoring and cleanups:  use the rctree crate
  instead of our own tree representation; remove interior mutability
  in element structs; make the gradients and patterns code less
  repetitive (Paolo Borelli).

- Update some dependencies (Bastien Orivel).

- New section in COMPILING.md about cross-compilation to Windows using
  mingw (Takuro Ashie)

- Fix static linking and Windows builds (Kleis Auke Wolthuizen).

Version 2.45.6
- Librsvg now requires Rust 1.30.0 or later.

- Librsvg now requires Cairo 1.16.0 or later.  Thanks to
  Julian Sparber for keeping up with cairo-rs API changes.

- This version introduces librsvg_crate, an idiomatic Rust crate for
  using librsvg from Rust programs directly, without using GObject
  machinery.  This API is subject to change, but you can start using
  it now in an experimental fashion.  Thanks to Paolo Borelli and
  Jordan Petridis for fine-tuning this new API.

- All of the librsvg internals are now in Rust!  The C code is just a
  thin wrapper over Rust functions.

- The internals library has been converted to Rust 2018 (Jordan Petridis).

- Within librsvg_crate, there is a new infrastructure for doing
  reftests in Rust, that does not depend on PNG reference files.  See
  librsvg_crate/tests for details.

- This release introduces the following new APIs:
  rsvg_handle_get_intrinsic_dimensions(),
  rsvg_handle_get_geometry_for_element().

- Parsing of the "style" attribute, which has a plain list of CSS
  property declarations, is now done with rust-cssparser.
- CSS selector matching should be marginally faster than before.

- Fix Visual Studio builds (Chun-wei Fan).

- Fix #11 - Respect the "direction" property for bidirectional text \ 
(Khaled Hosny).

- Fix #295 - Ensure the initial viewport fits into temporary surfaces for compositing

- Fix #425 - Don't fail parsing if the system's locale is broken (Paolo Borelli).

- Fix #438, #443 - Don't create intermediate raster surfaces unless
  absolutely needed.  This was causing blurred output for SVGs from
  Inkscape and Illustrator, since they include an "enable-background"
  property even when there are no filters in use.  Thanks to Julian
  Sparber, Jordan Petridis, Zeeshan Ali for doing a huge "git bisect"
  to find the cause of this bug.

- Fix #443 - Fix blurry output when enable-background is used without filters.

- Fix #455 - Fix rounding error on i386 (Olivier Tilloy).

- Check for Cairo errors when constructing paths.

Version 2.45.5
- At build time, you can now pass $CARGO and $RUSTC environment
  variables if you need to override the default Rust toolchain.
  Please see COMPILING.md for details.  (Tobias Kortkamp)
- Fix #405 - In the gdk-pixbuf loader, don't crash if the write()
  function doesn't receive a GError.
- Fix #268 - Remove the comp-op property; it's not in SVG 1.1 nor SVG 2.
- Fix #415 - register RsvgHandleFlags and the RsvgError enum values in
  a thread-safe fashion (Sebastian Dröge).
- All of the library's non-GObject functionality is implemented in
  Rust now.
- Update the cairo crate (Kornel Lesiński).
- Clean up the loading code paths (Paolo Borelli).
- Updated compilation docs for Debian (Jordan Petridis)
- Updated parts of the reference documentation.

Version 2.45.4
- Brown paper bag release, my apologies.
- Fix #402 - Fix the library's soname.  Thanks to Gabriele Balducci
  for reporting it, and Kalev Lember for fixing it.

Version 2.45.3
- Big news!  All the real work in the library is now implemented in
  Rust.  The public API is implemented in C, but most it calls
  immediately into the Rust code.  Special thanks to Paolo Borelli and
  Carlos Martín Nieto for making this possible.

- rsvg_handle_set_base_uri() now really assumes that it is passed a
  URI.  Previously it would try to differentiate between real URIs,
  and absolute or relative file paths.  If this breaks your code
  (i.e. you are passing a filename, not a URI), please tell us so we
  can restore the old behavior!

- Fix #395 - Don't panic in feMorphology if it ends up with a negative
  scaling transformation.
- Fix #398 - Detect circular references in gradients.
- Match the Firefox/Chrome behavior on gradients and patterns with
  circular references for fallbacks (Paolo Borelli).
- Fixes for Rust 1.30 and below (Jordan Petridis).
- Lots and lots of refactoring (Paolo Borelli, Federico Mena).

Version 2.45.2
- rsvg_cleanup() is now deprecated.  This was only meant to be called
  from code to be checked by Valgrind.  Leak checkers may show
  reachable memory from libxml2; real memory leaks should still be
  reported, of course.  (Kornel Lesiński).

- As an experimental change, librsvg no longer calls xmlInitParser()
  from libxml2.  Please tell us if this causes problems for
  multithreaded programs.

- Added g_warning()s to ensure the API is called in the correct
  sequence.

- The text handling code has been completely refactored and
  simplified.  This will allow us to implement the x/y/dx/dy
  properties for multiple glyphs in the future.  Please report any
  problems you experience in text rendering.

- Fix #385 - Don't crash if there is no rsvg_handle_write() before
  rsvg_handle_close().
- Fix #391 - Avoid undefined behavior when casting opaque pointers
  (Jordan Petridis).
- Fix crash when a linear RGB filter is followed by an SRGB filter
  (Ivan Molodetskikh).
- Fix #393 - Stack overflow when freeing thousands of sibling elements.
- Fix positioning of adjacent <tspan> elements.
- All the toplevel loading and drawing code is implemented in Rust now.
- Pixbuf conversion code is in Rust now (Paolo Borelli).
- Cleanups in the code for XML processing, markers, attributes (Paolo
  Borelli).
- Many build/link fixes (Jordan Petridis).
- Cleanups in the code that calls libxml2 (Kornel Lesiński).

Version 2.45.1
- New public API, rsvg_handle_get_geometry_sub(), to get the exact
  geometry of an element.  The functions
  rsvg_handle_get_position_sub() and rsvg_handle_get_dimensions_sub()
  are deprecated now; these returned incomplete data with integer
  coordinates (Julian Sparber).

- rsvg_handle_write() and rsvg_handle_close() are now deprecated in
  favor of the functions which use a GInputStream.  The former need to
  buffer the entire SVG data first; the latter don't need buffering.

- Librsvg no longer tries to load XML entities which reference
  external resources, either parameter or general entities, declared
  in the DTD.  This never worked properly, and it is better to do so
  via the xi:include mechanism.  Also, unparsed external entities with
  a notation are not really supported in SVG; it has its own <image>
  element and similar for that purpose.  Only internal general
  entities are supported now, for example:

     <!ENTITY foo "<some xml here>">
     <!ENTITY bar "some text here">

- Started support for localized error messages (Daniel García Moreno).

- Ported to Rust: loading code, XML processing code, data: URL parsing,

- Many code cleanups and refactorings, courtesy of Paolo Borelli.
- Fix undefined behavior in casts (Jordan Petridis).
- Cairo/Rust API updates by Julian Sparber.
- configure.ac cleanups by Maya Rashish.

Version 2.45.0
- Librsvg now requires Rust 1.27.
- Librsvg now requires Cairo 1.15.12.
- Fix building when srcdir != builddir (Mathieu Bridon).
- Fix #339 - Panic in filters with primitiveUnits="objectBoundingBox"
  on zero-sized elements (Ivan Molodetskikh).
- Fix #335 - Don't panic if the toplevel node is not <svg>.
- Fixes from fuzz testing (Ivan Molodetskikh): don't panic when the
  feConvolveMatrix kernel is not set; fix upper bounds in filter pixel
  getters.
- Fix #337 - Don't panic with "em" or "ex" units in the \ 
font-size property.
- Fix #338 - Don't panic when an image element doesn't have
  width/height attributes.
- Fix #340 - Don't panic when a marker has a zero-sized viewBox attribute.
- Fix #341 - Don't infinite-loop with cyclic pattern references.
- Fix #342 - Don't crash if a <use> node references one of its ancestors.
- Special thanks to Ivan Molodetskikh for doing a fuzz-testing run for
  this round.
- Fix #344 - Don't panic when a viewBox has overflowing numbers.
- Fix #345 - Fix panics due to bad path parsing and overflows in
  surface size.
- Updates to the CI infrastructure and the build documentation (Jordan
  Petridis).
- Cleanups and refactoring (Paolo Borelli, Linus Unnebäck, Federico Mena).
- Fix #343 - Handle child being in error in feComponentTransfer.
- Fix #346 - Handle filter primitives producing errors.
- Fix #347 - Regression in computation of text element extents.
- Fix #348 - Fix incorrect font sizing.
- Fix #349 - Don't panic when loading an external image that is bigger
  than Cairo's limits.
- Fix - rsvg_handle_get_dimensions_sub() no longer panics if passed a
  nonexistent fragment identifier.
- Fix 32-bit builds (Jordan Petridis).
- Fix #256 - Correctly match the systemLanguage attribute with the
  user's locale.
- Fix #320 - Parse xml:lang correctly.
- Fix #334 - Don't modify the caller's cairo_t state during rendering.
- Fix #349 - Don't panic if we get a "data:" URI with empty data.
- Fix #352 - Don't panic on getting a very large "order" for
  feConvolveMatrix (Ivan Molodetskikh).
- Fix #363 - Don't drop spaces around <tspan> elements.
- Fix #365 - rsvg-convert now uses pixel units for SVG output, instead
  of points.  This requires cairo 1.15.12 (Antonio Ospite).
- Fix #358, #366 - tweaks to have the test suite pass on i386 and
  non-x86_64 platforms (Simon McVittie, Federico Mena).
- Fix #368 - With RSVG_LOG=1, librsvg will now report when SVGs have
  references to nonexistent elements, to aid debugging (for example,
  in an xlink:href attribute).
- Fix #371 - rsvg-convert was positioning extracted elements
  incorrectly when using the -w/-h options together with --export-id.
- Fix #372 - Mis-rendering in small arc segments.
- Fix #373 - Rendering of gradients for horizontal/vertical stroked
  lines with gradientUnits="userSpaceOnUse".
- Fix a couple of memory leaks in the error paths of the GdkPixbuf
  loader (Benedikt Heine).
- Allow reference tests with a small difference to pass without
  breaking the build (Simon McVittie).
- CSS processing code is now in Rust, although it still calls libcroco
  to do the parsing.
- XML processing code is partially moved to Rust, although it still
  calls libxml2 for the XML parsing.
- Special thanks to Alex Crichton for ensuring that MacOS builds work.

Files:
RevisionActionfile
1.111modifypkgsrc/graphics/librsvg/Makefile
1.20modifypkgsrc/graphics/librsvg/PLIST
1.54modifypkgsrc/graphics/librsvg/buildlink3.mk
1.41modifypkgsrc/graphics/librsvg/distinfo
1.1removepkgsrc/graphics/librsvg/patches/patch-Cargo.lock
1.1removepkgsrc/graphics/librsvg/patches/patch-Makefile.am
1.1removepkgsrc/graphics/librsvg/patches/patch-configure.ac
1.1removepkgsrc/graphics/librsvg/patches/patch-vendor-cssparser_src_parser.rs