-
Notifications
You must be signed in to change notification settings - Fork 48
/
NEWS
3258 lines (2335 loc) · 114 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 2.59.2
==============
- #1100 - Fix stack overflow due to unbounded recursion. Now there is
a hard limit on the number of nested layers that an SVG document may
have. This is not a hard limit on the amount of stack space
consumed, but it is a general mitigation.
- #1128 - Fix regression when rendering paths with very flat
elliptical arcs. This bug was introduced in 2.59.1 as part of the
mitigation for paths with coordinates that Cairo is unable to
handle.
- #1109 - Fix centering and text-anchor in general for scaled text.
- #1134 - Fix building with Rust 1.82 on Windows (Christoph Reiter).
Changes thanks to the ongoing Outreachy internship:
- #1127 - Make cancellation work for all the resource loading
functions (Adetoye Anointing).
- #1071 - Add documentation for rsvg-bench to the development guide
(Adetoye Anointing).
- #892 - Slight improvement in memory consumption for language tags
(Adetoye Anointing).
- Many updates to the developer's documentation, for Outreachy
interns.
Special thanks to Toluwaleke Ogundipe for refreshing the style and
content of the development guide, and greatly improving its build
process.
Version 2.59.1
==============
librsvg crate version 2.59.1
librsvg-rebind crate version 0.1.0
Two mitigations for crashes found throuh fuzz testing:
- #1088, #1118 - Cairo is easy to crash by giving it path coordinates
that are outside of the range that it can represent internally with
its fixed-point arithmetic. Fuzzers usually produce SVGs with very
large numbers for coordinates, which overflow Cairo's arithmetic.
This is just a *mitigation*, not a complete fix: librsvg will now
check if path coordinates are outside of Cairo's supported range,
and it will not render shapes with problematic coordinates.
However, fuzzers may still produce coordinates that are in range but
that still make Cairo crash. I am starting to learn Cairo's code to
see if this can be fixed gradually.
Version 2.59.0
==============
librsvg crate version 2.59.0
librsvg-rebind crate version 0.1.0
The biggest change in this release is that librsvg now uses the Meson
build system instead of autotools. Many, many thanks to Amyspark and
Centricular for doing and funding this massive work.
With Meson, librsvg now builds a lot more reliably on Windows and
MacOS.
The Meson options for different compile-time configurations are
documented in devel-docs/compiling.rst.
Requirements for build tools:
- Meson 1.2.0 or later
- Rust 1.77.2 or later
- cargo-c 0.9.19 or later (https://github.com/lu-zero/cargo-c)
Summary of changes (see the release notes for the 2.58.9x releases for
more details):
- Librsvg now uses Meson instead of Autotools (Amyspark, Chun-wei Fan,
Kleis Auke Wolthuizen, Jordan Petridis, Lovell Fuller, Nirbheek
Chauhan).
- There is a -Davif meson option to include support for AVIF in the
image-rs crate, which librsvg uses to load raster images. See
devel-docs/compiling.rst for details. (Jan Alexander Steffens)
- #1061 - Librsvg now explicitly builds only its supported raster
formats for image-rs: JPEG, PNG, GIF, WEBP, and optional
compile-time support for AVIF (Kleis Auke Wolthuizen). Other raster
image formats are not supported, to minimize the attack surface.
Please file a bug if you need more formats.
- #429 - Librsvg now supports cancellable rendering; you can start
rendering an RsvgHandle in one thread, and stop it from another
thread with a GCancellable. In the C API, you can use the
rsvg_handle_set_cancellable_for_rendering() function; in the Rust
API, CairoRenderer now has a with_cancellable() method.
- #1089 - For Rust users, there is now a 'librsvg-rebind' crate that
binds the C API for use from Rust. Internally this links to the
system's librsvg shared library, in contrast with the 'librsvg'
crate, which is statically linked and which has a native Rust API.
The 'librsvg-rebind' crate is for cases where the additional code
size from static linking is not desired. This librsvg-rebind crate
is available from crates.io. (Sophie Herold).
- A bunch of fixes to bugs found through fuzz testing.
Version 2.58.94
===============
librsvg crate version 2.59.0-beta.3
This version has build fixes, and two fixes from fuzz testing.
- #1107 - The minimum supported Rust version (MSRV) is 1.77.2. We
rolled this back from 1.78.0 since that version has problems with
Meson on Windows.
- #1117 - Fix assertion failures with large Hue value in hsl() or
hwb() colors.
- #1115 - Limit the baseFrequency for feTurbulence to avoid integer
overflow.
- #1120 - Only make exported symbols visible in the library's binary
(Amyspark).
- !1003 - Fix the -Davif=enabled feature; it was not being handled
correctly at compilation time.
- !1013 - Ensure compatibility with Binutils < 2.39 (Kleis Auke
Wolthuizen).
- Build fixes for Windows (Nirbheek Chauhan, Chun-wei Fan,
Christoph Reiter).
Version 2.58.93
===============
librsvg crate version 2.59.0-beta.3
The minimum supported Rust version (MSRV) is 1.78.0.
- #1089 - The source tree now has 'librsvg-rebind', a new Rust crate that
binds the C API for use from Rust. Internally this links to the
system's librsvg shared library, in contrast with the 'librsvg'
crate, which is statically linked and which has a native Rust API.
The 'librsvg-rebind' crate is for cases where the additional code
size from static linking is not desired. We will publish the
'librsvg-rebind' crate on crates.io shortly. (Sophie Herold).
For example, glycin (the sandboxed image loading crate used by
Loupe) now uses librsvg-rebind to shrink the code size of its imgae
loaders.
- Fix gdk-pixbuf dependency for gobject-introspection (Amyspark).
- #1097 - Build fixes for MacOS and _getentropy (Amyspark).
- #1084 - Build fixes for cross-compilation on WSL2 (Chun-wei Fan).
- Update to Rust 1.78 (Jordan Petridis, Federico Mena Quintero).
- Update gtk-rs (Bilal Elmoussaoui, Sophie Herold).
- #1104 - More downstream tweaks for oss-fuzz (correctmost).
Version 2.58.92
===============
librsvg crate version 2.59.0-beta.2
Librsvg is now part of Google's oss-fuzz and is fuzz-tested
automatically - see
https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/oss_fuzz.html
for details. Many thanks to correctmost for doing this work and for
keeping track of librsvg's entries in oss-fuzz.
This release has two bug fixes from fuzz testing, and a new API call.
- #1087 - Don't leak XML entities when the XML document fails to parse.
- #1092 - Fix stack overflow in <use> reference cycle.
- #429 - Librsvg now supports cancellable rendering; you can start
rendering an RsvgHandle in one thread, and stop it from another
thread with a GCancellable. In the C API, you can use the
rsvg_handle_set_cancellable_for_rendering() function; in the Rust
API, CairoRenderer now has a with_cancellable() method.
- Many build fixes for Windows, MacOS, iOS, and cross-compilation
(Amyspark, Guillaume Desmottes).
- Continued refactoring for a render tree.
- Many fixes to the documentation.
Version 2.58.91
===============
librsvg crate version 2.59.0-beta.1
This is another early alpha release with more fixes to the Meson-based
build system, to give time to distros to adjust their packaging scripts.
One detail that I forgot to document in the last version: with the new
Meson build system, the filename of the gdk-pixbuf loader module is
libpixbufloader_svg.so, with an underscore, which is different from
libpixbufloader-svg.so from the Autotools, which uses a hyphen. This
filename is never actually used by people, and
gdk-pixbuf-query-loaders will automatically detect it at installation
time. Packaging scripts may need to be changed to use this filename.
- Librsvg now requires cairo version 1.18.0 or later.
- #1061 - Librsvg now explicitly builds only its supported raster
formats for image-rs: JPEG, PNG, GIF, WEBP, and optional
compile-time support for AVIF (Kleis Auke Wolthuizen). Other raster
image formats are not supported, to minimize the attack surface.
Please file a bug if you need more formats.
- #1073 - Don't generate gdk-pixbuf loaders cache if DESTDIR is set
(Jordan Petridis).
- Documentation updates for meson (Kleis Auke Wolthuizen, Federico Mena).
- #1080 - Document the fact that the default DPI in the C API for
RsvgHandle is 90 DPI, unlike rsvg-convert and the Rust API, which use
96 DPI.
- #1078 - Document the security considerations for the image-rs crate
and the raster image formats that librsvg supports.
- Fix and fine-tune compilation on Windows (MSVC and msys2), MacOS,
and Android (Amyspark, Chun-wei Fan).
- Fix installation when only compiling the static library (Kleis Auke
Wolthuizen).
- #1063 - Update Pango for CI and fix a test file. The test suite now
includes the DejaVu Sans font, which supports extra glyphs/languages
for the test suite.
Version 2.58.90
===============
librsvg crate version 2.59.0-beta.0
Thanks to Amyspark and Centricular, librsvg has been ported to the
Meson build system. Librsvg no longer uses autotools! This is the
first experimental/alpha release so that distributions can get their
packaging scripts changed and report errors before the 2.59.0 release.
In theory, librsvg should build like a normal meson-based project.
See devel-docs/compiling.rst for details and documentation about the
compile-time options available in meson_options.txt.
Meson should let full builds of librsvg work reliably on Windows and
MacOS, and to be integrated as a subproject in other meson-based
projects.
Requirements:
- rustc 1.70.0 or later
- cargo-cbuild 0.9.19 or later
Changes in this release:
- Librsvg now uses Meson instead of Autotools (Amyspark, Chun-wei Fan,
Kleis Auke Wolthuizen).
- There is a -Davif meson option to include support for AVIF in the
image-rs crate, which librsvg uses to load raster images. See
devel-docs/compiling.rst for details. (Jan Alexander Steffens)
- Start revamping the fuzzing infrastructure (correctmost).
Things that I would love people to test:
- Do distros need to patch anything in the meson files? This should
not be required; please file a bug if you find there is something missing.
- Does the "cargo vendor" and source replacement machinery work?
Special thanks to Amyspark, Chun-wei Fan, Jordan Petridis, Kleis Auke
Wolthuizen, and Lovell Fuller for doing the hard work of mesonifying
librsvg, and for their suggestions about build-time options.
Version 2.58.0
==============
librsvg crate version 2.58.0
The most significant change in this release is that librsvg no longer
uses gdk-pixbuf for loading raster images (for eample, when there is
an element <image href="foo.jpg"/>. All image loading uses Rust
codecs now. Please see the release notes for 2.57.90 below for more
details.
Librsvg's gdk-pixbuf loader for SVG documents is unchanged; you can
still load SVG files from gdk-pixbuf with it as usual.
New features since 2.57.0 (for fine-grained bug fixes, please see the
release notes for development releases):
- #902 - Add basic support for "ch" length units in CSS (Mackenzie Morgan).
- #997 - Support "var(--foo, #aabbcc)" just for colors. This is the
minimum required to render color SVG emoji fonts that provide color
fallbacks, but it is not yet full support for CSS var().
Fixes since the last development release:
- #1062 - Limit numOctaves in feTurbulence to avoid unbounded CPU consumption.
- #1064 - Don't panic when a :lang selector has an argument that is
not a language-range (Lukáš Tyrychtr).
Special thanks for this release cycle:
- Thanks to correctmost for doing several rounds of fuzzing, and then
found some interesting bugs!
- Thanks to Jordan Petridis for adding CI jobs for testing on
gnome-os's regular builds.
- As usual, thanks to Chun-wei Fan for keeping the Windows builds
going, and Bilal Elmoussaoui for updating gtk-rs crates.
Version 2.57.92
===============
librsvg crate version 2.58.0-beta.2
- #1059 - Don't panic when rendering feOffset with a too-large offset.
- #1060 - Don't panic when a decoded image has dimensions of zero.
Version 2.57.91
===============
- #943 - Rsvg-convert now prints a helpful message if you run it
without arguments, to indicate that it is reading from standard
input.
- #902 - Take text orientation into account for 'ch' units
(Mackenzie Morgan).
- For Rust programs, the rsvg crate no longer depends on gdk-pixbuf.
Hopefully this means that your Rust programs will have to link to
one fewer library.
- The C enumeration RsvgUnit now has a RSVG_UNIT_CH variant for "ch"
units. However, this is only used for reporting the size of SVG
documents, which should very seldom come in "ch" units.
- #1055 - Fix unsoundness in the use of the selectors crate.
- Update gtk-rs crates (Bilal Elmoussaoui).
Version 2.57.90
===============
librsvg crate version 2.58.0-beta.0
- Librsvg no longer uses gdk-pixbuf for loading raster images; all
image loading uses Rust code now. Older versions of librsvg would
use the traditional libpng and libjpeg-turbo libraries, and
gdk-pixbuf's own GIF decoder. Starting with this version of
librsvg, it only uses Rust crates for image codecs.
In addition, librsvg will no longer accept any arbitrary image
format that gdk-pixbuf happens to support: the only supported
formats for the <image> element are PNG, JPEG, GIF, WEBP, and SVG.
(The SVG2 specification only mandates PNG and JPEG.)
The reasons for using Rust image loaders are as follows:
- Reduce the attack surface from memory-unsafe libraries. While
libpng/libjpeg-turbo are very well tested and extensively fuzzed,
other gdk-pixbuf loaders are not as well tested. Switching to
memory-safe code sounds like a better idea for the future.
- Make using librsvg easier on Windows and MacOS, where installing
gdk-pixbuf is somewhat tricky.
- Give a chance to the Rust image codecs to improve by having more
people test them from a widely-used code base like librsvg. GNOME
has already uses the Rust image crates in the Loupe image viewer,
and this has led to fixes in the image crates.
- Support SVG2 semantics for referencing other SVG documents in an
<image> element. For historical reasons, librsvg just used
gdk-pixbuf to recurse into itself in that case. Now it handles
SVG sub-images directly.
The normal SVG loader for gdk-pixbuf that librsvg installs is
unchanged; you can still load SVG images with gdk-pixbuf as usual.
The refactoring to load images directly in Rust is based on
Emile Snyder's work from some months ago.
- #902 - Add basic support for "ch" length units in CSS (Mackenzie Morgan).
- #1019 - Fix small-caps and bump the version of Pango required to 1.50.0.
- #1037 - Handle the case where Cairo returns an empty rectangle for a
filled object's bounding box (Henrik Nilsson).
- #1026 - Fix panic when using negative scaling transforms on the
toplevel (WhyHelloThere).
- #997 - Support "var(--foo, #aabbcc)" just for colors. This is the
minimum required to render color SVG emoji fonts that provide color
fallbacks, but it is not yet full support for CSS var().
- Fix Windows and MacOS builds with respectg to Fontconfig (Alessandro Bono).
- Fix the VS2017 build (Chun-wei Fan).
- Update cairo-rs (Guillaume Gomez).
- Update the project metadata files (Andre Klapper).
Version 2.57.0
==============
librsvg crate version 2.57.0
This is the first stable version of librsvg to be available as a
Rust crate in crates.io. Please see the documentaiton at
https://gnome.pages.gitlab.gnome.org/librsvg/doc/rsvg/index.html
This version of librsvg corresponds to the GNOME 45 release.
These are some user-visible new features since 2.56. For details,
look at the release notes from the 2.56.9x development series:
- rsvg-convert can now output PDF versions 1.4, 1.5, 1.6, in addition
to the default 1.7, especially for LaTeX users. See the
rsvg-convert(1) man page for options like --format=pdf1.4 (Simon Buttgereit).
- #985 - Support the image-rendering property (nedondev).
- #989 - For consistency with other command-line tools, rsvg-convert
now supports an argument "-" to specify the standard input. This is
in addition to the already-supported syntax of not specifying an
input file at all (Lukáš Tyrychtr).
- Partial support for the edgeMode attribute in feGaussianBlur, only
for small blurs right now.
- The minimum supported Rust version (MSRV) is 1.70.0.
Version 2.56.93
===============
librsvg crate version 2.57.0-beta.3
- #1009 - Fix rsvg-convert man page about overriding styles with
!important in an external stylesheet.
- #1008 - Clean up the documentation for the Rust API.
- #1012 - RenderingError::InvalidTransform no longer exists; this was
not meant to be an error that surfaces to the public API.
- Update cssparser and selectors crates (Lukáš Tyrychtr, Federico Mena).
- Remove unnecessary dependencies (Uli Schlachter).
Version 2.56.92
===============
librsvg crate version 2.57.0-beta.2
- #991 - Fix the build for aarch64.
- More extensive logging for filter primitives.
- Update gtk-rs-core to 0.18 (Bilal Elmoussaoui).
- Update dependencies (Sophie Herold, Kalev Lember).
- Include license text in packaged crates (Davide Cavalca).
- The minimum supported Rust version (MSRV) is 1.70.0, due to the gtk-rs-core update.
Version 2.56.91
===============
This is a security release for bug #996.
- #996 - Fix arbitrary file read when href has special characters.
- #998 - Fix cascade for symbol elements being referenced from use elements.
- rsvg-convert can now output PDF versions 1.4, 1.5, 1.6, in addition
to the default 1.7, especially for LaTeX users. See the
rsvg-convert(1) man page for options like --format=pdf1.4 (Simon Buttgereit).
- #664 - Rename the Rust crate to "rsvg", in preparation for crates.io
(Sophie Herold).
- The minimum supported Rust version (MSRV) is 1.66.0.
Version 2.56.90
===============
This version of librsvg depends on Cairo 1.17.0 or later, to make it
more reliable on Windows. Also, that version of Cairo fixes a lot of
crashers when using out-of-bounds coordinates in paths.
- #985 - Support the image-rendering property (nedondev).
- #989 - For consistency with other command-line tools, rsvg-convert
now supports an argument "-" to specify the standard input. This is
in addition to the already-supported syntax of not specifying an
input file at all (Lukáš Tyrychtr).
- #965 - Shrink the shared library by telling the linker to omit unused
code (Sebastian Dröge).
- #950 - Massive reorganization of the source tree. With this, Rust
programs like Loupe can avoid including the dependencies that
librsvg only uses for rsvg-convert (Sophie Herold, Federico Mena
Quintero, Chun-wei Fan, Michael Catanzaro, Abderrahim Kitouni).
- Partial support for the edgeMode attribute in feGaussianBlur, only
for small blurs right now.
- Update dependencies (Lukáš Tyrychtr, Kalev Lember)).
- Librsvg now runs its CI on Windows with MSVC!!! (Chun-wei Fan).
- Lots of build fixes for Windows (Chun-wei Fan, Kleis Auke Wolthuizen).
- Lots of internal refactoring to allow fixing long-standing bugs.
Nothing is user-visible yet.
- #966 - Fix a bunch of broken links in the documentation; we have a link
checker now for the development guide.
Special thanks to Sophie Herold for jumpstarting the source
reorganization, and Chun-wei Fan for being patient with Windows build
problems and for actually implementing CI for MSVC.
Version 2.56.0
==============
- #942: Fix crash when XML files get recursively included through
XInclude. Thanks to Stefan Schiller for catching this.
- When running the suite of reference tests, you can now use the
TESTS_OUTPUT_DIR environment variable to specify where results for
failures get written. See tests/README.md for details.
- The minimum supported Rust version (MSRV) is 1.64.
Version 2.55.92
===============
- #925 - Update to cssparser 0.29.6; this adds support for hwb() color
syntax, from the CSS Color Module Level 4 spec
(https://drafts.csswg.org/css-color-4/#changes). Note that values
inside hwb() are *not* comma-separated, just whitespace.
- #932 - Fix panic when a requested font-size is too big.
- #930 - Validate all clipPath and mask transforms.
- Add a performance tracking framework. This is part of an Outreachy
internship (Neetu Mehta).
- Slight improvements in the size of generated code and memory consumption.
- The Rust crate is now called "rsvg", for consistency with other
crates that don't usually have a "lib" prefix.
- The Rust API documentation is now available at
https://gnome.pages.gitlab.gnome.org/librsvg/doc/rsvg/index.html
Version 2.55.91
===============
The minimum supported Rust version (MSRV) is 1.64, because of the gtk-rs update.
- #929 - Support "turn" unit for CSS <angle> values (Khadija Kamran).
- #743 - Support the feDropShadow element (John Ledbetter, Federico Mena).
- #928 - Fix panic when a feTile filter gets an empty source region.
- Update to gtk-rs 0.17.0 (Bilal Elmoussaoui).
- Simplify the NMake Makefiles for Windows; see win32/MSVC-Builds.md
for details (Chun-wei Fan).
- Documentation and infrastructure updates (Andre Klapper, Violet Holland).
- Consolidate the scattered .md documents into the Development Guide.
Updated links throughout.
(https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/index.html)
- Internal refactoring of the test suite.
- Updated dependencies to avoid duplicated crates.
Version 2.55.90
===============
The minimum supported Rust version (MSRV) is 1.63.
- #878 - rsvg-convert now supports Tab completion for bash, elvish,
fish, powershell, and zsh. Please run "rsvg-convert --completion bash"
to generate the completion file. You can use the other shells' names
as an argument to the --completion option. (Marcos Simental)
- #885 - Support vector-effect="non-scaling-stroke" for paths (Michael Howell).
- #875 - Apply width, height when `<use>`ing an `<svg>` (Michael Howell).
- There is a new development guide for librsvg, for people who want to
help in its development. I hope this will be especially useful to
Outreachy and Summer of Code interns:
https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/index.html
- #92 - In the use element, honor the overflow:hidden property of a
referenced symbol.
- #737 - Treat property and attribute parse errors / invalid values as
if they were not present, per the specs. Previously this would
cause the offending element's subtree to not be rendered.
- #913 - Make feGaussianBlur work as a pass-through filter if the stdDeviation is invalid.
- Define missing crate metadata for Cargo.toml (Guillaume Desmottes).
- Add some tests that were missing for the C API.
- Fix the basic test suite in Windows.
- Miscellaneous fixes for the build and CI (Jürg Billeter).
- Plenty of internal refactoring to enable more consistent logging.
- Slight reductions in memory consumption for elements with
context-stroke and context-fill.
- Experimental gdk-pixbuf loader in Rust (Alberto Ruiz). This is not
installed yet.
- Update the gtk-rs crates to 0.16.0 (Bilal Elmoussaoui).
- Port rsvg-convert's argument parsing to the clap4 crate (Lukáš Tyrychtr).
- Updates to the dependencies (Kalev Lember, Christoph Reiter, Jordan Petridis).
- The CI now has a cargo-deny step, which should help us notice when
there are security advisories for dependencies (Neetu Mehta).
Version 2.55.2
==============
- #942: Fix crash when XML files get recursively included through
XInclude. Thanks to Stefan Schiller for catching this.
- The Minimum Supported Rust Version (MSRV) is now Rust 1.60. Several
dependencies have bumped their MSRV on their own, unfortunately.
Version 2.55.1
==============
As an experiment, I'll move librsvg from even-odd versioning (odd
minor version is unstable, even minor version is stable), to the
versioning scheme that GNOME uses these days. So, 2.55.x is the new
stable series.
* There is a new development guide for librsvg, for people who want to
help in its development. I hope this will be especially useful to
Outreachy and Summer of Code interns:
https://gnome.pages.gitlab.gnome.org/librsvg/devel-docs/index.html
* Define missing crate metadata for Cargo.toml (Guillaume Desmottes).
* Add some tests that were missing for the C API.
* Fix the basic test suite in Windows.
* Miscellaneous fixes for the build and CI (Jürg Billeter).
Version 2.55.0-alpha
====================
This is the first release in the new development series.
- The Minimum Supported Rust Version (MSRV) is now Rust 1.58.
- #855: The release tarball no longer contains vendored Rust
dependencies. Most distributions now have infrastructure to pull
these themselves, so let's make the tarball smaller.
- #880 - Accept patterns with userSpaceOnUse units for the stroke of
axis-aligned lines.
- #706: Small reductions in memory consumption of the DOM tree
(Michael Howell).
- Updates for the gtk-rs API (Bilal Elmoussaoui).
Version 2.54.4
==============
- #817 - Support CSS Color 4 syntax for `<alpha-value>`. Opacities
can be specified as numbers or percentages now, e.g. `0.5` or `50%`
(Michael Howell).
- #870 - Roll back minimum required version of Pango to 1.46.0
(Kleis Auke Wolthuizen).
- #867 - Fix Windows NMake install when documentation is not built.
(Peter Williams).
Version 2.54.3
==============
- #866 - Fix detection of gi-docgen (David King, Jan Alexander Steffens).
- Install the generated documentation in the correct place so that
Devhelp can find it (thanks to Jan Tojnar for pointing this out).
Version 2.54.2
==============
- #823 - Fix regressions when computing element geometries.
- Add a --disable-gtk-doc option for the configure script, so people
can disable generating documentation for cross-compiling (Matt
Turner).
- MSVC: Support generating documentation, and passing introspection
paths (Chun-wei Fan)
Version 2.54.1
==============
This release just has some build-time fixes.
- Fix oversight in the Minimum Supported Rust Version (MSRV) - this
release requires Rust 1.56 or later. This has been true since
librsvg 2.53.1, but it was not checked correctly. (Matt Turner)
- #859 - Make rst2man and gi-docgen optional. (Kleis Auke Wolthuizen)
- #856 - Fix documentation comments.
Version 2.54.0
==============
This is a summary of the 2.53.x release notes; you can also read them
for more detail. Not many new features; we've been working on
infrastructure and documentation.
- Librsvg now supports SVG2 geometry properties for these elements:
rect, circle, ellipse, image, svg (Jeremias Ortega).
- #721 - Catch circular references when rendering patterns.
- The C API documentation now uses gi-docgen instead of gtk-doc.
Rsvg-convert's man page is now converted to reStructuredText instead
of troff.
- The "Recommendations for applications" chapter in the documentation
is much improved!
Version 2.53.2
==============
- #851 - Output filled text as text for PDF; fixes regression due to
outputting all text as paths.
- Fix taller-than-wide proportional scaling and size limiting in
rsvg-convert.
- #772, #773, #774, #775, #776 - Implement SVG2 geometry properties
for these elements: rect, circle, ellipse, image, svg (Jeremias
Ortega).
- #450 - Fix potential unaligned accesses in surface iterators
(Michael Howell).
- Actually use GDK_PIXBUF_MODULEDIR when calling
gdk-pixbuf-query-loaders (Fabrice Fontaine).
- Windows build fixes (Chun-wei Fan).
- Add links to functions and types throughout the C API documentation.
Version 2.53.1
==============
While it is not a user-visible change, Jordan Petridis has ported
librsvg's Continuous Integration (CI) infrastructure to use
Freedesktop CI Templates. This lets us test librsvg easily on
different environments. If you want your environment tested, now is
the time to add it!
- #599 - Fix incorrect text rendering when text has different scales
in the X/Y axes. This regressed after librsvg 2.52.5, when Pango
had to revert its fix for the same bug. Now librsvg renders all
text as paths, and does the scaling itself. Please file a bug if
you have evidence that this presents a performance problem for you.
- Update to the latest gtk-rs release (Bilal Elmoussaoui).
- Port to Freedesktop CI Templates (Jordan Petridis).
- Visual Studio builds can work from a git checkout now (Chun-wei Fan)
- Windows build fixes (Martin Hertz, Chun-wei Fan)
Version 2.53.0
==============
This is the first release in the new development series. There are no
new features, just changes to how the documentation is built.
The man page for rsvg-convert is now generated from a reStructuredText
document, and the C API reference is generated using gi-docgen.
Please make sure you install python3-docutils (for rst2man) and
gi-docgen before compiling librsvg from a tarball.
- #755 - rsvg-convert's man page is now generated from reStructuredText.
- #827 - Move C API reference to gi-docgen.
- Test suite updates (Michael Howell).
- Link against bcrypt for Visual Studio builds (Martin Hertz).
Version 2.52.5
==============
Just bugfixes this time:
- #812 - Fix mangled output in rsvg-convert when redirecting output to
a pipe on Windows (Michael Howell).
- #766 - When outputting to SVG, rsvg-convert now uses the
width/height units specified in the command line; it always used
pixels before (Daniel Petri Rocha).
- #814 - Fix incorrect top/left margins for SVG/PS/EPS/PDF output
(Daniel Petri Rocha).
- #599 - Fix incorrect placement of glyphs when text has non-uniform
scaling in the X/Y axes. This is not a librsvg bug, but is fixed by
Pango 1.49.3 and later. Hopefully Pango 1.48.11 will be released
soon with this fix as well. Note that this release of librsvg
cannot increase the minimum Pango version to 1.48.11 because it is
not released yet.
Miscellaneous:
- Updated crate dependencies: assert_cmd, cast, clap cssparser,
float-cmp, itertools, nalgebra, png, proptest, rctree, selectors,
system-deps.
Version 2.52.4
==============
New features:
- #816 - Support the isolation property from the Compositing and
Blending Level 1 specification.
- Support Visual Studio 2022 (Chun-wei Fan).
Fixes:
- #818 - The opacity and mix-blend-mode properties were not being
applied when an element has a mask.
- Fix panic when an empty group has a pattern fill and filters.
- Fix the tests on Windows; the still only work when Fontconfig is
present (Chun-wei Fan).
- Work around a bug in the cairo-rs bindings in the test suite, that
only manifests itself in s/390x due to its calling convention. See
https://github.com/gtk-rs/gtk-rs-core/issues/335
Version 2.52.3
==============
Bugfixes, mostly for text layout. Also, text links in PDF!
- #17 - Support text-decoration=overline.
- #249 - Basic support for the unicode-bidi property. Librsvg still
considers each tspan independently of others, which is incorrect, but
at least bidi-override works now for a single embedding level.
- #804 - Fix placement of tspan that changes the text direction.
- #805 - :lang() selector should now match lang attribute from an
element's parent. (Michael Howell)
- #806 - Fix the text-anchor property for right-to-left text.
- #807 - PDF now includes links inside text elements. (Michael Howell)
Version 2.52.2
==============
Bugfixes and new features!
## New features
Thanks to Michael Howell, rsvg-convert now supports generating
multi-page PDFs in a sensible way.
With one SVG document per page, each page with the
SVG's natural size:
rsvg-convert --format=pdf -o out.pdf a.svg b.svg c.svg
With all pages sized as portrait US Letter, and each SVG scaled to fit
so that there is a 1in margin around each page:
rsvg-convert --format=pdf -o out.pdf \
--page-width=8.5in --page-height=11in \
--width=6.5in --height=8.5in --keep-aspect-ratio \
--top=1in --left=1in \
a.svg b.svg c.svg
Please see the man page for details.
- #738 - Support <a> elements inside <text>. Also, support the CSS :link
pseudo-class for matching against links. (Michael Howell)
- #649 - Support the CSS :lang() pseudo-class for matching against an
element's xml:lang attribute. (Michael Howell)
- #790 - Support the mask-type property from SVG2.
## Fixes
- #800 - Don't panic when a shorthand property is set to
inherit. (Michael Howell)
- #788 - Fix regression with the viewport size of interior <svg>
elements. (Michael Howell)
- #731 - Allow length units to be case-insensitive, per SVG2. (Kolja Lampe)
## Documentation
- There is now a FEATURES.md in the repository, where you can see all
the elements, attributes, and properties that librsvg supports. We
will be adding detail to this gradually.
- For developers, there is now devel-docs/adding-a-property.md with a
tutorial on how to add support for new CSS properties.
Version 2.52.1
==============
This is a bugfix release; there are no new features this time.
## Changes:
- #791 - Fix ordering of tspan inside text elements for right-to-left
languages.
- #789 - Fix text-anchor positioning for right-to-left languages.
- #797 - Fix regression in computing sizes when an SVG has only one of
width/height and a viewBox. Thanks to Joshua Fogg for compiling a
list of test cases for this.
- #565 - Spec compliance - the writing-mode property applies only to
text elements, no to individual tspan elements.
- #794 - Fix build on big-endian platforms.