#javascript #v8 #javascript-engine #js #google

sys v8-ng-sys

Low-level bindings to V8, the Javascript engine

6 releases

Uses old Rust 2015

0.3.0 Sep 19, 2016
0.2.1 Sep 19, 2016
0.1.2 Sep 19, 2016

#11 in #ecmascript

Apache-2.0

27KB
634 lines

v8-rs Build Status Crates.io codecov Language (Rust)

Note: This library is not actively maintained. I (dflemstr) have attempted keeping it up to date with the latest mainline V8 versions, but the maintenance burden is too high. The path forward would be to more directly map the C++ API of V8 via bindgen and go forward from there to try to automate more of the API surface mapping, but several attempts at doing so by me have failed. Pull requests welcome!

This is a wrapper around the V8 Javascript engine, used for example in the Google Chrome browser or Node.js.

Documentation

Building

It is quite complicated to build V8. This library has been tested against V8 5.4.x with GCC 6.x, but later versions might work.

Static / Shared

By default, this library links V8 statically. There is a feature called shared that builds it by linking to libv8.so (and related libraries like libicu-i10n.so) instead. There's usually little reason to link dynamically since the V8 ABI changes fairly frequently.

Ubuntu / Travis CI

The easiest way to build this library on Ubuntu or Travis CI is to use a pre-packaged version of V8. You need both sudo and Ubuntu Trusty or later to install a compatible one:

sudo: true
dist: trusty
language: rust

addons:
  apt:
    sources:
      - sourceline: 'ppa:pinepain/libv8-5.4'
      - ubuntu-toolchain-r-test
    packages:
      # Modern compilers
      - gcc-6
      - g++-6
      # The V8 version that we want to bind
      - libv8-5.4-dev
      - libicu-dev

env:
  global:
    - CC=gcc-6
    - CXX=g++-6

Build tree

You can build a build tree using any supported build method that uses any combination of depot_tools, make, gyp, ninja and/or gn, but gn hasn't been tested that extensively.

You should set v8_use_snapshot=false, loading snapshots is currently not supported.

You should also not disable i10n support; this library assumes libicu was built at the same time as V8 or is compatible with V8.

You should build using shared_library if you want to build with the shared feature.

Simply set the environment variable V8_SOURCE to the root of the v8 checkout, and V8_BUILD to the build output in the tree (for example $V8_SOURCE/out/Release) and the build Should Work®. If not, please figure out how to fix it and send a PR, it'll be impossible for me to test all of the V8 build configurations :)

No runtime deps

~0–1.9MB
~39K SLoC