The Servo Browser Engine

Overview

The Servo Parallel Browser Engine Project

Linux Build Status Changelog #228

Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64-bit macOS, 64-bit Linux, 64-bit Windows, and Android.

Servo welcomes contribution from everyone. See CONTRIBUTING.md and HACKING_QUICKSTART.md for help getting started.

Visit the Servo Project page for news and guides.

Setting up your environment

Rustup.rs

Building servo requires rustup, version 1.8.0 or more recent. If you have an older version, run rustup self update.

To install on Windows, download and run rustup-init.exe then follow the onscreen instructions.

To install on other systems, run:

curl https://sh.rustup.rs -sSf | sh

This will also download the current stable version of Rust, which Servo won’t use. To skip that step, run instead:

curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none

See also Other installation methods

Other dependencies

Please select your operating system:

macOS

Xcode version 10.2 or above is recommended.

On macOS (Homebrew)

NOTE: run these steps after you've cloned the project locally.

cd servo 
brew bundle install --file=etc/taskcluster/macos/Brewfile
brew bundle install --file=etc/taskcluster/macos/Brewfile-build
pip install virtualenv

On Debian-based Linuxes

sudo apt install python-virtualenv python-pip
./mach bootstrap

If you are on Ubuntu 20.04 or higher you need to do the following to install the missing python2 bits:

curl https://bootstrap.pypa.io/get-pip.py -sSf -o get-pip.py
python2 get-pip.py
python2 -m pip install virtualenv
sudo apt install python-dev

If ./mach bootstrap doesn't work, file a bug, and, run the commands below:

sudo apt install git curl autoconf libx11-dev libfreetype6-dev libgl1-mesa-dri \
    libglib2.0-dev xorg-dev gperf g++ build-essential cmake libssl-dev \
    liblzma-dev libxmu6 libxmu-dev \
    libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
    libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libharfbuzz-dev ccache \
    clang libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
    libgstreamer-plugins-bad1.0-dev autoconf2.13 llvm-dev

Additionally, you'll need a local copy of GStreamer with a version later than 16.2. You can place it in support/linux/gstreamer/gst, or run ./mach bootstrap-gstreamer to set it up. On Ubuntu 20.04LTS, you can use the system GStreamer if you install the necessary packages:

sudo apt install gstreamer1.0-nice gstreamer1.0-plugins-bad

If you are using Ubuntu 16.04 or Linux Mint 18.* run export HARFBUZZ_SYS_NO_PKG_CONFIG=1 before building to avoid an error with harfbuzz.

If you get an undefined symbol error on gst_player_get_config try removing gir1.2-gst-plugins-bad-1.0 and all old versions of clang, see #22016

On Fedora

sudo dnf install python3 python3-virtualenv python3-pip python3-devel
python3 ./mach bootstrap

If python3 ./mach bootstrap doesn't work, file a bug, and, run the commands below:

sudo dnf install curl libtool gcc-c++ libXi-devel libunwind-devel \
    freetype-devel mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel \
    libXrandr-devel gperf fontconfig-devel cabextract ttmkfdir  expat-devel \
    rpm-build openssl-devel cmake libX11-devel libXcursor-devel \
    libXmu-devel dbus-devel ncurses-devel harfbuzz-devel \
    ccache clang clang-libs python3-devel gstreamer1-devel \
    gstreamer1-plugins-base-devel gstreamer1-plugins-bad-free-devel autoconf213

On CentOS

sudo yum install python-virtualenv python-pip
./mach bootstrap

If ./mach bootstrap doesn't work, file a bug, and, run the commands below:

sudo yum install curl libtool gcc-c++ libXi-devel freetype-devel \
    mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel libXrandr-devel \
    gperf fontconfig-devel cabextract ttmkfdir python expat-devel rpm-build \
    openssl-devel cmake3 libXcursor-devel libXmu-devel \
    dbus-devel ncurses-devel python34 harfbuzz-devel \
    ccache clang clang-libs llvm-toolset-7

Build inside llvm-toolset and devtoolset:

scl enable devtoolset-7 llvm-toolset-7 bash

with the following environmental variables set:

export CMAKE=cmake3
export LIBCLANG_PATH=/opt/rh/llvm-toolset-7/root/usr/lib64

On openSUSE Linux

sudo zypper install libX11-devel libexpat-devel Mesa-libEGL-devel Mesa-libGL-devel cabextract cmake \
    dbus-1-devel fontconfig-devel freetype-devel gcc-c++ git glib2-devel gperf \
    harfbuzz-devel libXcursor-devel libXi-devel libXmu-devel libXrandr-devel libopenssl-devel \
    python-pip python-virtualenv rpm-build ccache llvm-clang libclang autoconf213 gstreamer-devel \
    gstreamer-plugins-base-devel gstreamer-plugins-bad-devel

On Arch Linux

sudo pacman -S --needed base-devel git python2 python2-virtualenv python2-pip mesa cmake libxmu \
    pkg-config ttf-fira-sans harfbuzz ccache llvm clang autoconf2.13 gstreamer gstreamer-vaapi

On Gentoo Linux

sudo emerge net-misc/curl \
    media-libs/freetype media-libs/mesa dev-util/gperf \
    dev-python/virtualenv dev-python/pip dev-libs/openssl \
    media-libs/harfbuzz dev-util/ccache sys-libs/libunwind \
    x11-libs/libXmu x11-base/xorg-server sys-devel/clang \
    media-libs/gstreamer media-libs/gst-plugins-bad media-libs/gst-plugins-base

With the following environment variable set:

export LIBCLANG_PATH=$(llvm-config --prefix)/lib64

On Windows (MSVC)

  1. Install Python 2.7 for Windows (https://www.python.org/downloads/release/python-2716/). The Windows x86-64 MSI installer is fine. This is required for the build system execution and many dependencies.

You should change the installation to install the "Add python.exe to Path" feature.

You will also need to set the PYTHON2 environment variable, e.g., to 'C:\Python27\python.exe' by doing:

setx PYTHON2 "C:\Python27\python.exe" /m
  1. Install Python 3.7 for Windows (https://www.python.org/downloads/release/python-374/). The Windows x86-64 MSI installer is fine. This is required in order to build the JavaScript engine, SpiderMonkey.

You will also need to set the PYTHON3 environment variable, e.g., to 'C:\Python37\python.exe' by doing:

setx PYTHON3 "C:\Python37\python.exe" /m

The /m will set it system-wide for all future command windows.

  1. Install virtualenv.

In a normal Windows Shell (cmd.exe or "Command Prompt" from the start menu), do:

pip install virtualenv

If this does not work, you may need to reboot for the changed PATH settings (by the python installer) to take effect.

  1. Install the most recent GStreamer MSVC packages. You need to download the two .msi files for your platform from the GStreamer website and install them. The currently recommended version is 1.16.0. i.e.:

Note that the MinGW binaries will not work, so make sure that you install the MSVC the ones.

Note that you should ensure that all components are installed from gstreamer, as we require many of the optional libraries that are not installed by default.

  1. Install Git for Windows (https://git-scm.com/download/win). DO allow it to add git.exe to the PATH (default settings for the installer are fine).

  2. Install Visual Studio Community 2017 (https://www.visualstudio.com/vs/community/). You MUST add "Visual C++" to the list of installed components as well as the "Windows Universal C runtime." They are not on by default. Visual Studio 2017 MUST installed to the default location or mach.bat will not find it.

Note that version is hard to download online and is easier to install via Chocolatey with:

choco install -y visualstudio2017community --package-parameters="'--add Microsoft.VisualStudio.Component.Git'"
Update-SessionEnvironment #refreshing env due to Git install

#--- UWP Workload and installing Windows Template Studio ---
choco install -y visualstudio2017-workload-nativedesktop
[Optional] Install LLVM for faster link times

You may experience much faster builds on Windows by following these steps. (Related Rust issue: https://github.com/rust-lang/rust/issues/37543)

  1. Download the latest version of LLVM (https://releases.llvm.org/).
  2. Run the installer and choose to add LLVM to the system PATH.
  3. Add the following to your Cargo config (Found at %USERPROFILE%\.cargo\config). You may need to change the triple to match your environment.
[target.x86_64-pc-windows-msvc]
linker = "lld-link.exe"
Troubleshooting a Windows environment

If you encountered errors with the environment above, do the following for a workaround:

  1. Download and install Build Tools for Visual Studio 2017
  2. Install python2.7 x86-x64 and virtualenv
  3. Run mach.bat build -d.

If you have troubles with x64 type prompt as mach.bat set by default:

  1. You may need to choose and launch the type manually, such as x86_x64 Cross Tools Command Prompt for VS 2017 in the Windows menu.)
  2. cd to/the/path/servo
  3. python mach build -d

If you got the error Cannot run mach in a path on a case-sensitive file system on Windows:

  1. Open Command Prompt or PowerShell as administrator.
  2. Disable case-sensitive for servo path, fsutil.exe file SetCaseSensitiveInfo X:\path\to\servo disable

If you got the error DLL file api-ms-win-crt-runtime-l1-1-0.dll not found! then set the WindowsSdkDir environment variable to an appropriate Windows Kit directory containing Redist\ucrt\DLLs\x64\api-ms-win-crt-runtime-l1-1-0.dll, for example C:\Program Files (x86)\Windows Kits\10.

If you get the error thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'clang.dll\', \'libclang.dll\'], set the LIBCLANG_PATH environment variable to a path where one of these files can be found (invalid: ... invalid DLL (64-bit))])"' then rustup may have installed the 32-bit default target rather than the 64-bit one. You can find the configuration with rustup show, and set the default with rustup set default-host x86_64-pc-windows-msvc.

Cross-compilation for Android

Run ./mach bootstrap-android --build to get Android-specific tools. See wiki for details.

The Rust compiler

Servo's build system uses rustup.rs to automatically download a Rust compiler. This is a specific version of Rust Nightly determined by the rust-toolchain file.

Building

Servo is built with Cargo, the Rust package manager. We also use Mozilla's Mach tools to orchestrate the build and other tasks.

Normal build

To build Servo in development mode. This is useful for development, but the resulting binary is very slow.

git clone https://github.com/servo/servo
cd servo
./mach build --dev
./mach run tests/html/about-mozilla.html

Or on Windows MSVC, in a normal Command Prompt (cmd.exe):

git clone https://github.com/servo/servo
cd servo
mach.bat build --dev

For benchmarking, performance testing, or real-world use, add the --release flag to create an optimized build:

./mach build --release
./mach run --release tests/html/about-mozilla.html

Note: mach build will build both servo and libsimpleservo. To make compilation a bit faster, it's possible to only compile the servo binary: ./mach build --dev -p servo.

Checking for build errors, without building

If you’re making changes to one crate that cause build errors in another crate, consider this instead of a full build:

./mach check

It will run cargo check, which runs the analysis phase of the compiler (and so shows build errors if any) but skips the code generation phase. This can be a lot faster than a full build, though of course it doesn’t produce a binary you can run.

Building for Android target

For ARM (armv7-linux-androideabi, most phones):

./mach build --release --android
./mach package --release --android

For x86 (typically for the emulator):

./mach build --release --target i686-linux-android
./mach package --release --target i686-linux-android

Running

Run Servo with the command:

./servo [url] [arguments] # if you run with nightly build
./mach run [url] [arguments] # if you run with mach

# For example
./mach run https://www.google.com

Commandline Arguments

  • -p INTERVAL turns on the profiler and dumps info to the console every INTERVAL seconds
  • -s SIZE sets the tile size for painting; defaults to 512
  • -z disables all graphical output; useful for running JS / layout tests
  • -Z help displays useful output to debug servo

Keyboard Shortcuts

  • Ctrl+L opens URL prompt (Cmd+L on Mac)
  • Ctrl+R reloads current page (Cmd+R on Mac)
  • Ctrl+- zooms out (Cmd+- on Mac)
  • Ctrl+= zooms in (Cmd+= on Mac)
  • Alt+left arrow goes backwards in the history (Cmd+left arrow on Mac)
  • Alt+right arrow goes forwards in the history (Cmd+right arrow on Mac)
  • Esc or Ctrl+Q exits Servo (Cmd+Q on Mac)

Developing

There are lots of mach commands you can use. You can list them with ./mach --help.

The generated documentation can be found on https://doc.servo.org/servo/index.html

Comments
  • Upgrade to SM 60

    Upgrade to SM 60

    This is the mozjs_sys smup PR. Depends on https://github.com/servo/mozjs/pull/138 and https://github.com/servo/rust-mozjs/pull/430.


    • [X] ./mach build -d does not report any errors
    • [X] ./mach test-tidy does not report any errors
    • [X] These changes fix #20585
    • [X] These changes do not require tests because the existing tests will ensure SM is still working

    This change is Reviewable

    A-content/script S-tests-failed S-blocked-on-external 
    opened by asajeffrey 343
  • Windows Nightly blockers

    Windows Nightly blockers

    The below bugs are the ones that are required to at least have a first linked nightly build of Servo on Windows.

    • [x] #11307 - Hot spinning on Windows shutdown
    • [x] #11967 - Add Windows MSI packaging and publishing of the nigthtly build
    • [x] #11969 - Add an icon to Windows
    • [x] #12231 - Upload failing due to bad s3cmd invocation
    • [x] #12523 - Windows tarball missing files
    • [x] #13257 - Very slow to load or just white screen launched from installer
    • [x] #13371 - implement font rendering on Windows
    • [x] #15255 - Windows servo UI missing elements
    • [x] #15428 - Windows nightly hangs when loading pages
    • [x] #15698 - Windows Servo renders reddit text squished
    • [x] #12937 - Keyboard input dropouts
    P-windows B-meta 
    opened by larsbergstrom 262
  • Continue message port

    Continue message port

    Fixes #7457. Fixes #12715. Fixes #12717. Fixes #16095. Fixes #18969.


    • [ ] ./mach build -d does not report any errors
    • [ ] ./mach test-tidy does not report any errors
    • [ ] These changes fix #___ (GitHub issue number if applicable)
    • [ ] There are tests for these changes OR
    • [ ] These changes do not require tests because ___

    This change is Reviewable

    opened by gterzian 256
  • Replace mpsc with crossbeam-channel

    Replace mpsc with crossbeam-channel

    Follow up on https://github.com/servo/servo/pull/19515


    Selecting over multiple channels in std::sync::mpsc is not stable and likely never will be:

    https://github.com/rust-lang/rust/issues/27800#issuecomment-260136777

    It seems the only thing keeping mpsc_select around is Servo.

    crossbeam-channel is designed specifically to replace std::sync::mpsc and fix many of its shortcomings: https://github.com/stjepang/rfcs-crossbeam/blob/channel/text/2017-11-09-channel.md

    This is to be landed together with https://github.com/servo/ipc-channel/pull/183.


    This change is Reviewable

    S-tests-failed 
    opened by gterzian 236
  • Replace glutin by winit + surfman 0.2

    Replace glutin by winit + surfman 0.2

    This PR updates surfman to 0.2, and replaces glutin with winit+surfman.


    • [x] ./mach build -d does not report any errors
    • [x] ./mach test-tidy does not report any errors
    • [x] These changes do not require tests because this should all be invisible
    opened by asajeffrey 222
  • Support type=module script element

    Support type=module script element

    This is still WIP but hope can be reviewed first to see if I'm on the right track. Thanks! 🙇‍♂️

    • [x] Support external module script
    • [x] Support internal module script
    • [x] Compile cyclic modules

    • [x] ./mach build -d does not report any errors
    • [x] ./mach test-tidy does not report any errors
    • [x] These changes fix #23370 (GitHub issue number if applicable)
    • [x] There are tests for these changes

    This change is Reviewable

    opened by CYBAI 191
  • make sure UWP app can run

    make sure UWP app can run

    Fix #25718

    This includes https://github.com/servo/servo/pull/25661 with some minor tweaks (certificate file reference was missing, and its id was wrong) and a python script.

    Still need to hook that to our CI.

    S-awaiting-review S-needs-rebase 
    opened by paulrouget 165
  • Clean-up navigation

    Clean-up navigation

    1. Navigation as a result of following a hyperlink should be done in a task: https://html.spec.whatwg.org/multipage/links.html#following-hyperlinks:dom-manipulation-task-source
    2. The javascript url navigation should also be done in a task: https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigating-across-documents:dom-manipulation-task-source
    3. In window.load_url, it seems there is no need to send a message to the script-thread(the entirety of load_url should instead be done in a task when appropriate), so we can just do that last part "sync" by calling a method on the script, which will send a message to the constellation(for the parallel navigation steps), or queue task(for the JS navigation), as appropriate.
    4. Separate the "normal" navigation flow from the handling of "navigate an iframe" message from constellation, since doing everything in one method as was previously done with handle_navigate, is confusing.

    • [ ] ./mach build -d does not report any errors
    • [ ] ./mach test-tidy does not report any errors
    • [ ] These changes fix #___ (GitHub issue number if applicable)
    • [ ] There are tests for these changes OR
    • [ ] These changes do not require tests because ___

    This change is Reviewable

    opened by gterzian 162
  • Kicking off a WebGL implementation

    Kicking off a WebGL implementation

    @jdm @ecoal95 I'm working on making VR happen in the Browser and I want to bring to Servo the webVR APIs we already have in Gecko. Before anything happens we need a working implementation of WebGL (and also the fullscreen API). My implementation is very basic and probably naive (I just recently started to contribute to Servo). My patch is just a starting point:

    • It only implements clearColor and clear methods of the WebGL spec.
    • It uses the readback strategy that canvasRenderingContext2D is using (The webgl task paints stuff independently on it's own buffer and the compositor task request the pixels back to the webgl task when it needs them) I'm sure there are much better ways to handle this. Latency and FPS are critical in VR so we have to figure out the fastest way to push pixels to the screen. I've read something about layerizing the canvas but I'm still not sure what that even means :)
    • There's an included test you can try ./mach run tests/ref/webgl-context/clearcolor.html

    @ecoal95 I know you'll be working on this for the next three months. With a foundation in place we will be able to make quick progress in parallel. This is exciting!

    Review on Reviewable

    S-awaiting-review 
    opened by dmarcos 162
  • Implement unhandledrejection event

    Implement unhandledrejection event


    • [x] ./mach build -d does not report any errors
    • [x] ./mach test-tidy does not report any errors
    • [x] These changes fix #15412
    • [x] There are tests for these changes

    This change is Reviewable

    opened by CYBAI 159
  • Use surfman for managing GL surfaces

    Use surfman for managing GL surfaces

    Replaces texture sharing with surfman surface sharing.


    • [x] ./mach build -d does not report any errors
    • [x] ./mach test-tidy does not report any errors
    • [x] These changes fix #23509 and #24256
    • [x] These changes do not require tests because this is backend gfx
    opened by asajeffrey 157
  • Bump glob from 0.3.0 to 0.3.1

    Bump glob from 0.3.0 to 0.3.1

    Bumps glob from 0.3.0 to 0.3.1.

    Release notes

    Sourced from glob's releases.

    0.3.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/glob/compare/0.3.0...0.3.1

    Commits
    • 408e579 Merge pull request #124 from JohnTitor/release-0.3.1
    • 8640d93 Prepare 0.3.1 release
    • 5a5aad9 Merge pull request #121 from JohnTitor/note-default-new-diff
    • f6fe5c6 Merge pull request #120 from JohnTitor/allow-deprecation
    • d533867 Merge pull request #118 from JohnTitor/gha-os-update
    • 6631fd7 Note the difference between new() and default()
    • 27b1160 Allow deprecation to Error::description
    • 9cfd2ee Downgrade macOS image to 11
    • 80588ef Fix spacing in Readme
    • fc98a27 Merge pull request #114 from rust-lang/KodrAus-patch-1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump try-lock from 0.2.2 to 0.2.4

    Bump try-lock from 0.2.2 to 0.2.4

    Bumps try-lock from 0.2.2 to 0.2.4.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Convert automatic WPT change upstreaming from a webhook to a GitHub Action

    Convert automatic WPT change upstreaming from a webhook to a GitHub Action

    This would allow removing more things from saltfs and take care of #23798 as well. The main downside of this is that the action will likely be a bit slower because it has to constantly do shallow clones of both the servo and WPT repositories. In my preliminary testing this takes less than a minute though.

    cc @jdm

    opened by mrobinson 1
  • Bump gitpython from 0.3.2 to 3.1.30 in /python

    Bump gitpython from 0.3.2 to 3.1.30 in /python

    Bumps gitpython from 0.3.2 to 3.1.30.

    Release notes

    Sourced from gitpython's releases.

    v3.1.30 - with important security fixes

    See gitpython-developers/GitPython#1515 for details.

    3.1.20

    No release notes provided.

    v0.3.6 Dev Diary

    Watch me making the release in an archived development live-stream on youtube

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies python 
    opened by dependabot[bot] 0
Owner
Servo
The Servo web browser engine
Servo
The Bloat-Free Browser Game in Rust but in C and not in a Browser

rust-browser-game but native and rendered with SDL in C without the Browser The original idea of rust-browser-game is that the game.wasm module is com

Tsoding 12 Sep 26, 2022
Rslide - A web service that allows you to move through multiple html pages in the browser like a slide, even without focusing on the app console or the browser. Currently only supports Windows.

rslide rslide is a web service that allows you to move through multiple html pages in the browser like a slide, even without focusing on the app conso

Jason Dongheng Lee 3 Jan 1, 2022
Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs

localbang Cross-platform, cross-browser, cross-search-engine duckduckgo-like bangs What are "bangs"?? Bangs are a way to define where to search inside

Jakob Kruse 7 Nov 23, 2022
Configurable quick search engine shortcuts for your terminal and browser.

Quicksearch Configurable quick search engine shortcuts for your terminal and browser. Installation Run cargo install quicksearch to install Configurat

Rahul Pai 2 Oct 14, 2022
A minimal browser with a super simple rendering engine for HTML and CSS, using Rust.

minimal-browser A minimal browser with a super simple rendering engine for HTML and CSS, using Rust. Credit: https://github.com/mbrubeck and https://l

Federico Baldini 3 Jan 15, 2023
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

Lucas Arriesse 125 Dec 31, 2022
X-Engine: A SQL Engine built from scratch in Rust.

XNGIN (pronounced "X Engine") This is a personal project to build a SQL engine from scratch. The project name is inspired by Nginx, which is a very po

Jiang Zhe 111 Dec 15, 2022
Payments Engine is a simple toy payments engine

Payments Engine is a simple toy payments engine that reads a series of transactions from a CSV, updates client accounts, handles disputes and chargebacks, and then outputs the state of clients accounts as a CSV.

Bogdan Arabadzhi 0 Feb 3, 2022
Extensible inline parser engine, the backend parsing engine for Lavendeux.

Lavendeux Parser - Extensible inline parser engine lavendeux-parser is an exensible parsing engine for mathematical expressions. It supports variable

Richard Carson 10 Nov 3, 2022
🌲 Open the current remote repository in your browser

gitweb Some of the flags and options are subject to change in the future. Ideas are welcome. Ideas are bulletproof (V). gitweb is a command line inter

Yoann Fleury 26 Dec 17, 2022
High-performance browser-grade HTML5 parser

html5ever API Documentation html5ever is an HTML parser developed as part of the Servo project. It can parse and serialize HTML according to the WHATW

Servo 1.7k Jan 4, 2023
WASM wrapper of mozjpeg, ready for the browser

mozjpeg-wasm This library wraps mozjpeg-sys and exposes a few functions to perform decoding, encoding and simple transformation on JPEG images using m

Tommaso 25 Nov 17, 2022
🍂 A Rust-based simulated DOM (browser-independent replacement for web_sys)

DOM in Rust without a browser Hello and welcome. This library provides server-side or browserless simulation of a DOM. Example Usage use std::sync::Ar

Philip Peterson 45 Dec 13, 2022
Web Browser Engineering

This is a port of Web Browser Engineering series from Python to Rust done by Korean Rust User Group.

한국 러스트 사용자 그룹 36 Dec 12, 2022
Bloat-Free Browser Game in Rust (rustc-only challenge)

Bloat-Free Browser Game in Rust (rustc-only challenge) Don't blame me if this code breaks in 1 year The idea is to make a simple game in Rust as bloat

Tsoding 25 Aug 24, 2022
The Bloat-Free Browser Game in Rust but in C and in UEFI

rust-browser-game but in UEFI instead of browser quick start deps rust gnu-efi gcc make build process $ make running after building everything you wil

bit6tream 12 Nov 7, 2022
web browser as a language server

web-browser-lsp A toy program that implements a text-based web browser as a language server. Motivation My favorite progrmming tools are neovim, tmux

octaltree 17 Nov 24, 2022
puppy is an example implementation of a tiny Web browser for educational purposes.

An example implementation of a tiny Web browser for educational purposes.

Takashi Yoneuchi 580 Dec 28, 2022
Play Onitama in your browser, compete with friends or lose to a bot

Play Onitama in your browser, compete with friends or lose to a bot

Jack Adamson 52 Nov 12, 2022
A browser app that evolves vehicles using genetic algorithms, written in Rust and Bevy

Vehicle Evolver Deluxe This is a simulation that uses AI (to be specific: genetic algorithms) to try to build better and better vehicles. The vehicles

null 95 Dec 26, 2022