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

sys v8-ng-sys

对V8(JavaScript引擎)的低级别绑定

6个版本

使用旧的Rust 2015

0.3.0 2016年9月19日
0.2.1 2016年9月19日
0.1.2 2016年9月19日

#25 in #v8

Apache-2.0

27KB
634

v8-rs 构建状态 Crates.io codecov 语言 (Rust)

注意: 此库未积极维护。我(dflemstr)尝试将其与最新主线V8版本保持同步,但维护负担过高。前进的道路将是通过bindgen直接映射V8的C++ API,然后从那里开始尝试自动化更多的API表面映射,但我尝试这样做多次均未成功。欢迎提交拉取请求!

这是一个围绕V8 JavaScript引擎的包装器,例如在Google Chrome浏览器Node.js中使用。

文档

构建

构建V8相当复杂。此库已针对V8 5.4.x和GCC 6.x进行测试,但可能也适用于更高版本。

静态/共享

默认情况下,此库以静态方式链接V8。有一个名为shared的功能,通过链接到libv8.so(以及相关的库,如libicu-i10n.so)来构建。由于V8 ABI频繁更改,通常没有理由动态链接。

Ubuntu/Travis CI

在Ubuntu或Travis CI上构建此库的最简单方法是使用预打包的V8版本。您需要sudo权限和Ubuntu Trusty或更高版本才能安装兼容版本

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

构建树

您可以使用任何受支持的构建方法构建构建树,这些方法使用depot_toolsmakegypninja和/或gn的任何组合,但gn尚未得到广泛测试。

您应设置v8_use_snapshot=false,因为目前不支持加载快照。

您还应该不要禁用 i10n 支持;这个库假设 libicu 是和 V8 同时构建的或者与 V8 兼容。

如果您想使用 shared_library 功能进行构建,您应该使用共享库进行构建。

只需将环境变量 V8_SOURCE 设置为 v8 检出的根目录,并将 V8_BUILD 设置为树中的构建输出(例如 $V8_SOURCE/out/Release)即可。如果不行,请找出如何修复它并发送一个 PR,因为我无法测试所有 V8 的构建配置 :)

没有运行时依赖

~0–2MB
~40K SLoC