#v8 #javascript #js #google

sys v8-sys

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

21个版本 (13个破坏性更新)

0.15.0 2019年2月4日
0.14.7 2017年3月11日
0.14.5 2017年2月20日
0.14.1 2016年11月27日
0.1.0 2015年7月24日

#15 in #v8

Apache-2.0

65KB
1.5K SLoC

C++ 1K SLoC Rust 512 SLoC // 0.0% comments

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 功能构建,请使用 shared_library 构建。

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

无运行时依赖

~0–2.6MB
~49K SLoC