1. Porting Librsvg Filters to Rust
1.1. The project
Librsvg is a small library for rendering SVG files in the GNOME ecosystem. Currently all filter effects in librsvg are implemented entirely in C. Additionally, most of them aren’t covered by specification conformance tests. I’m going to be porting the filter infrastructure to Rust, adding all missing tests and making sure everything works correctly.
Overview of the work I did with relevant links: https://imolodetskikh.wordpress.com/2018/08/10/gsoc-2018-overview/
1.2. About me
I’m Ivan Molodetskikh, a student of the Computational Mathematics and Cybernetics department of the Moscow State University. I’ll be blogging about this project over here.
You can ping me (YaLTeR) in the IRC where you can find me in #rust.
1.3. Schedule
Time period |
Task |
Status |
April 23rd–May 13th |
Community bonding, reading and understanding the current filter code and architecture, exams. |
Done |
May 14th–May 27th |
Splitting rsvg-filter.c into individual files for each filter. Porting parts of the filter infrastructure to Rust. |
Done |
May 28th–June 10th |
Porting offset, composite, merge, image filters. Adding sRGB linearization to fix color handling in composite and merge. Adding pixel iteration abstractions. |
Done |
June 11th–June 24th |
Porting blend, flood, component transfer filters. Implementing FillPaint and StrokePaint filter inputs. Implementing the color-interpolation-filters property. |
Done |
June 25th–July 8th |
Implementing convolution-specific pixel iterators. Porting color matrix, convolve matrix, displacement map, morphology. GUADEC. |
Done |
July 9th–July 22nd |
GUADEC. Porting turbulence, diffuse_lighting, specular_lighting, tile. Removing the filter C FFI code. Filter benchmarks and performance improvements. |
Done |
July 23rd–July 29th |
A week of holidays. |
Done |
July 30th–August 5th |
Finishing tidying the code, making sure no bugs are left, checking the documentation I wrote in process, ensuring the code is available in the repositories. |
Done |