我可以更改节点使用的 v8 版本吗.js?
Can I change v8 version used by node.js?
我正在编写一个节点.js C++插件,它在两个相同的节点.js版本中的行为不同,但具有不同的v8版本。所以我想使 v8 版本也相同,看看不同的 v8 版本是否会导致不同的行为。
要重现这一点,您可以打开VSCode的"about"并查看节点.js和V8版本。VSCode 的 V8 的 v8 版本与同一版本的常规节点中使用的版本不同(并以-electron
结尾.js(node -p process.versions.v8
以-node
结尾(。
就我而言,我有这些版本:
- VSCode: 节点.js 10.11.0, V8 6.9.427.31-electron.0
- 常规节点.js:10.11.0,V8 6.8.275.32-节点.28
这里的V8 开发人员。对于记录和未来的搜索者:V8通常不承诺版本之间的 API 或 ABI 稳定性,因此默认情况下,给定的 Node.js 版本(就像任何其他 V8 嵌入器一样,例如基于 Chromium 的浏览器(只兼容一个 V8 版本。
可是:
- 适应新的API版本所需的更改通常相当小且简单;但它们确实需要您更改一些C++代码并重新编译Node。(在过去十年中有一些例外,需要大量工作。
- 有时我们(V8 团队(有理由破例,实际上保证 ABI 在小范围的版本中的稳定性。IIRC围绕节点10的发布就是这样一个时间;6.8 和/或 6.9 很可能在这个范围内,我不确定。
- 有时你可能会很幸运:没有任何重大变化,早期或更新的版本都可以工作:-(
在手头的情况下,我同意@PatrickRoberts的建议,即调试可能比平分更有用。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 如何正确实现与基类不同的版本?
- 在 G++ v8.2.0 中使用 std::experimental::可选
- 从预处理器获取 Windows 版本(C++ Win32)
- 我可以更改节点使用的 v8 版本吗.js?