The Servo web engine has an outdated 2D canvas implementation that uses barely maintained Raqote library and dependencies which are minimally maintained only because of the Servo web engine. We improved the 2D canvas implementation through restructuring and modernization. This simplified the addition of new 2D canvas backends that use Vello and Vello CPU (state-of-the-art libraries for 2D graphics in the rust programming language). Along the way, we discovered bugs in Servo, Vello, Vello CPU, and even in the Firefox browser, prepared test cases, and also fixed some of them. By comparing functional correctness and performance of all backends, we analyzed feasibility of replacing the existing Raqote backend with the newly created backends.
|