mirror of
https://github.com/servo/servo.git
synced 2025-10-15 07:50:20 +01:00
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. |
||
---|---|---|
.. | ||
compiler | ||
components | ||
etc | ||
platform | ||
support | ||
test | ||
README.md |
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 byhubbub
andnetsurfcss
.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.orgfontconfig
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 theIOSurface
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.