CSC/ECE 517 Fall 2017/M1753 OffscreenCanvas API

From Expertiza_Wiki
Jump to navigation Jump to search

M1753 - Implement OffscreenCanvas API

The HTML specification defines a <canvas> element that can use a 2D or 3D rendering context. A new specification was recently developed that defines a canvas that can be used without being associated with an in-page canvas element, allowing for more efficient rendering.

Background Introduction

Servo[1] is a modern web browser engine designed to maximize the benefits of multi-core-based parallel processing. Written in the Rust language, servo was aimed for the application on Android and ARM processors, but now its applicable scope has expanded to Linux, Mac OS X, Windows, Android and Firefox OS (also known as Gonk) and other operating systems[2].


Rust[3] is a programming language that emphasizes security, concurrency and efficiency. The three keywords, safety, control of memory layout, and concurrency are the core features of rust, and also the primary factors that distinguish rust from other programming languages. Rust is developed on GitHub/Git [4], and every commit to the source code is documented by the version control system.


The OffscreenCanvas API supports a canvas to be rendered off screen. The performance of a webpage can be limited by using <canvas> since all of the javascript that manipulates the <canvas> has to run on the main thread, situation is not optimistic when the canvas operations are complex. The OffscreenCanvas API provides a way to interact with the same canvas APIs but in a different thread. This allows rendering to progress no matter what is going on in the main thread [5].

Project Description

Implementation

Testing Details

Pull Request

Future Work

References