servo/src
Ms2ger 0016b1839e Use a single JSContext per JSRuntime.
The long-term plan for SpiderMonkey is to eliminate JSContexts by merging
(most of) it into JSRuntime, so to future-proof our code, we should avoid
creating multiple JSContexts for the same JSRuntime.

However, this implies we'll have to use the same JSContext for objects in
different compartments, so we need to enter compartments. This is done by
using the with_compartment function.
2014-05-05 19:41:02 +02:00
..
compiler This batch of changes upgrades Servo to work with the Rust upgrade as of 2014-04-27 15:46:12 -05:00
components Use a single JSContext per JSRuntime. 2014-05-05 19:41:02 +02:00
etc Add web-platform-tests submodule and test runner 2014-04-18 19:21:37 +05:30
platform This batch of changes upgrades Servo to work with the Rust upgrade as of 2014-04-27 15:46:12 -05:00
support Use a single JSContext per JSRuntime. 2014-05-05 19:41:02 +02:00
test auto merge of #2316 : Ms2ger/servo/owned-str-tests, r=jdm 2014-05-05 00:52:21 -04:00
README.md Remove (now unused) NetSurf’s libcss and libwapcaplet. 2013-10-23 14:42:29 +02:00

Descriptions of the Servo source directories. For the most part these represent a single crate or library.

Servo components

  • components/gfx: Graphics rendering, fonts, and text shaping.
  • components/main: The top-level Servo crate. Contains compositing, DOM, layout, and script.
  • components/net: Networking, caching, image decoding.
  • components/util: Various utility functions used by other Servo components.

The Rust compiler

  • compiler/rust: The Rust compiler.

Supporting libraries

These libraries are used in all Servo ports. In keeping with Servo's philosophy of modularity, they are designed to be useful in other Rust projects.

  • support/azure: A cross-platform 2D drawing library from the Mozilla project. Azure can render with Direct2D, Core Graphics (Quartz), Skia, and Cairo.
  • support/css: A low-level CSS parsing library for Rust.
  • support/geom: A simple Euclidean geometry and linear algebra library.
  • support/glut: Bindings to the GLUT windowing framework. This bare-bones windowing framework is useful for testing the engine without browser chrome.
  • support/harfbuzz: A mature Unicode- and OpenType-aware text shaping library, used by many rendering engines and toolkits.
  • support/http-client: An HTTP client library for Rust.
  • support/hubbub: The HTML parser from the NetSurf project. This is a temporary solution for HTML parsing until a pure-Rust solution is available.
  • support/layers: A simple GPU-accelerated 2D scene graph library, somewhat similar to libraries like Clutter.
  • support/libparserutils: A parsing library used by hubbub and netsurfcss.
  • support/opengles: Bindings to OpenGL ES 2.0.
  • support/png: Bindings to libpng.
  • support/sharegl: A library for sharing OpenGL or Direct3D textures between processes.
  • support/skia: Google's accelerated 2D rendering library.
  • support/spidermonkey: Mozilla's JavaScript engine.
  • support/stb-image: A minimalist image decoding library. This is a temporary stopgap for image decoding until a higher-performance solution is available.

Platform-specfic bindings

Linux

  • platform/linux/rust-fontconfig: Bindings to the freedesktop.org fontconfig library.
  • platform/linux/rust-freetype: Bindings to the FreeType library.
  • platform/linux/rust-xlib: Bindings to the X Window System libraries.

Mac

  • platform/macos/rust-cocoa: General Cocoa bindings.
  • platform/macos/rust-core-foundation: Bindings to Core Foundation.
  • platform/macos/rust-core-graphics: Bindings to Core Graphics/Quartz.
  • platform/macos/rust-core-text: Bindings to Core Text.
  • platform/macos/rust-io-surface: Bindings to the IOSurface library.

Tests

  • test/harness/contenttest: JavaScript test runner.
  • test/harness/reftest: Reference (layout) test runner.
  • test/html: Test cases.

Miscellaneous

  • etc: Various scripts and files that don't belong anywhere else.
  • etc/patches: Patches for upstream libraries.