CSC/ECE 517 Fall 2014/OSS M1451 ahs: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 33: Line 33:
solid, embedded engine. Although Servo is a research project, it is designed to be "productisable"—the code that we write should be of high enough quality that it could eventually be shipped to users.
solid, embedded engine. Although Servo is a research project, it is designed to be "productisable"—the code that we write should be of high enough quality that it could eventually be shipped to users.


== Task Architecture Diagrams ==
== Task Architecture Diagrams<ref>https://github.com/servo/servo/wiki/Design#task-supervision-diagram</ref> ==


=== Task Supervision Diagram ===
=== Task Supervision Diagram ===

Revision as of 00:19, 30 October 2014

Project Topic Page

Implement the WebSocket API

This wiki page contains details on the work done for the initial step of the task of Implement WebSocket API for the Mozilla research project Servo.

Introduction

Rust <ref>http://en.wikipedia.org/wiki/Rust_(programming_language)</ref>

Rust is a curly-brace, block-structured expression language.

  • It visually resembles the C language family, but differs significantly in syntactic and semantic details.
  • Its design is oriented toward concerns of “programming in the large”, that is, of creating and maintaining boundaries – both abstract and operational – that preserve large-system integrity, availability and concurrency.
  • It supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles. Rust also supports generic programming and

metaprogramming, in both static and dynamic styles.

  • Example:
fn main() {
    println!("hello, world");
}

Servo <ref>http://en.wikipedia.org/wiki/Servo_(layout_engine)</ref>

Servo is an experimental web browser layout engine being developed by Mozilla.

  • The prototype seeks to create a highly parallel environment, in which many components (such as rendering, layout, HTML parsing, image decoding, etc.) are

handled by fine-grained, isolated tasks.

  • The project has a symbiotic relationship with the Rust programming language, in which it is being developed.
  • Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a

solid, embedded engine. Although Servo is a research project, it is designed to be "productisable"—the code that we write should be of high enough quality that it could eventually be shipped to users.

Task Architecture Diagrams<ref>https://github.com/servo/servo/wiki/Design#task-supervision-diagram</ref>

Task Supervision Diagram

Task Communication Diagram

Implementation Steps

We carried out the implementation for this project on a Mac machine. The steps we followed for the implementation are as follows:

Compiling Rust

1. The initial step to build Servo required downloading and building the Rust compiler. To install Rust on the machine, clone the Rust source code from Mozilla's repository on GitHub using the following command:

git clone git://github.com/mozilla/rust.git
cd rust
./configure

2. Use the following commands to build the Rust compiler:

make
make check
make install

This will build and test the compiler, standard libraries, and supporting tools.

Build Servo

1. Fork the servo repository and clone the source code into the local repository using the command:

git clone https://github.com/servo/servo

2. Build servo using the following commands:

cd servo
./mach build
./mach run tests/html/about-mozilla.html

References

<references/>