Porting Librsvg Filters to Rust

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/

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.

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

Outreach/SummerOfCode/2018/Projects/IvanMolodetskikh_LibrsvgFiltersRustification (last edited 2018-08-10 13:37:37 by IvanMolodetskikh)