问题标签 [v8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 iOS 应用程序中嵌入 JavaScript 引擎
我想知道是否有人成功地将 javascript 引擎/解释器移植到 iOS。我正在编写一个 iPhone 游戏,我想使用 Javascript 作为高级脚本语言(AI、游戏玩法等),但要做到这一点,我需要将 JS 引擎编译为静态库并将其链接到我的 iPhone OS 的 ObjectiveC 程序。我正在研究一些候选 JS 引擎,但我找不到任何成功的案例。
这是我希望用于 iOS 的 js 引擎
- google 的 V8 javascript 引擎
- Mozilla 的 SpiderMonkey
另一种方法是使用UIWebView's
Javascript回调接口,但这需要将整个加载UIWebView
到内存中,我听到的经验是它通常性能很慢。
感谢是否有人有类似的经验或知道任何参考!
[更新] 正如 Kostis 提到的,Apple在 WWDC 2013 中引入了JavascriptCore
javascript - 使用 node.js 进行垃圾收集
我很好奇嵌套函数的 node.js 模式如何与 v8 的垃圾收集器一起工作。这是一个简单的例子
如果 restofprogram 长时间运行,这是否意味着 str 永远不会被垃圾收集?我的理解是,使用 node 你最终会得到很多嵌套函数。如果在外部声明了 restofprogram 是否会被垃圾收集,所以 str 不能在范围内?这是推荐的做法吗?
编辑我不打算使问题复杂化。那只是粗心,所以我已经修改了它。
c++ - windows下用v8链接什么
我一直在尝试让一个基本的 v8 程序在 Visual Studio 2010 下运行。我已经能够毫无问题地构建 v8.lib 和 v8.dll。我将 .v8.dll 放在我的调试文件夹中,并将 v8.lib 添加到 VC lib 文件夹中。
我将 v8.lib 添加到我的附加依赖项列表中,但是当我尝试使用 v8 代码构建任何东西时,我收到一系列“错误 LNK2001:未解析的外部符号”错误,例如“错误 13 错误 LNK2001:未解析的外部符号_imp _EncodePointer@4 C:\KHMP\Game_Cpp\KHMPCpp\KHMPCpp\MSVCRTD.lib(atonexit.obj)"
我不确定我缺少哪个库。V8 肯定会被链接,就好像我从附加依赖项中删除它一样,错误的数量会增加。我发现了一些关于需要使用 ws2_32.lib 的信息,但是将其包含在我的附加依赖项中并不能解决问题。
有谁知道我可能缺少哪些库/我可能做错了什么?
node.js - 如何检查我的 NodeJS 安装了哪个版本的 v8?
V8 如何与 NodeJs 一起安装?我目前的 V8 引擎是什么版本?
javascript - 使用 V8 的类 Python JS 解释器
受 node.js 的启发,我决定寻找一个独立的、类似 Python 的 JavaScript 解释器,它使用 V8(在某些情况下比 Python 更快)。除了github 上的一个标准库项目之外,我还没有找到任何解决方案,这似乎是 V8 样本中的死和穷人的“外壳”。
我正在寻找的功能:
- 可扩展性,
- 丰富的标准库,
- 保存已编译字节码的可能性,
- 易于写作,
- 强大的 OOP 功能,
- 多平台。
问题是:你听说过这样的JS解释器吗?
c++ - Google V8 JavaScript 引擎 - 如何将值设置为 null?
使用 V8 引擎,如何将值设置为null
?基本上我想从 C++ 插件返回一个变量到 JavaScript,并且该变量需要null
在某些条件下设置。
php - Google V8 Javascript 引擎、Ubuntu 和 PHP - 如何构建和工作?
一些帮助将不胜感激。
我正在运行 Ubuntu 10.04,我想在 PHP中使用V8 Javacript 引擎。有没有人设法做到这一点?
所以我从软件中心安装了libv8-2.0.3
, libv8-dbg
。libv8-dev
然后我尝试了:
sudo pecl install v8js-0.1.2
。这失败了,因为(我认为)这个:
和
我假设是因为 libv8 的打包版本太旧了?
我检查了 SVN 源代码(obj/release/ 中内置的文件)。svn co http://v8.googlecode.com/svn/trunk/ v8
scons
ranlib libv8.a; scons: done building targets.
我被困住了,对我需要做什么感到有些困惑。请帮忙!
android - V8 Android,创建上下文导致 ASSERT ... CHECK(object->IsJSFunction()) 失败
我已经成功地将 Android 的 V8 javascript 引擎编译为静态库 (libv8arm.a),并且可以将其静态链接到我的 android 本机 C++ 应用程序中(使用 ndk-r5b)。
在 Android 上,当创建 V8 上下文时,我得到这个运行时断言......
// 初始化 V8 上下文。
局部全局变量 = ObjectTemplate::New();
context = Context::New( NULL, globals );
v8/src/objects-inl.h 中的致命错误,第 1581 行
CHECK(object->IsJSFunction()) 失败
当我将 V8 嵌入我的应用程序的 MacOSX 版本时,一切运行良好,我可以毫无问题地执行 javascript。我花了很多时间来区分代码,并查看 gcc 命令行参数以构建 V8 for Android。我被困住了,并且非常接近将 V8 代码分解成碎片来解决问题。
有谁知道 V8 运行时初始化需要通过 Context::New() 断言做什么?
谢谢。
更新:
我试图通过修改 CAST_ACCESSOR 宏来解决这个问题......
...并在调用 Context::New() 之前和之后打印值 ...
在我的 MacOSX 测试应用程序中,输出是
在 Android 上,点击断言之前的输出是
通过 V8 代码搜索找到 object->ShortPrint() 输出“未定义”的位置,我发现了这个......
我想知道 ODDBALL_TYPE 是否由 codegen 发出,并且它对于 IA32 程序集和 ARM 程序集不同。这可能解释了每个平台上的不同初始化。
UPDATE2:
终于得到了一个有效的调用堆栈......
arm-eabi-c++filt
javascript - Ruby 和 Javascript 之间的主要语义差异是什么
如果要在 Javascript 引擎之上(在浏览器中或在独立的 V8 或 Spidermonkey 之上)实现 Ruby,那么 Ruby 和 JS 对象模型之间的关键阻抗不匹配会是什么?
garbage-collection - Node.js 和 V8 垃圾回收
以下是我目前读到的内容,如果我错了,请纠正我:
- Node.js 基于 V8 JavaScript 引擎。
- V8 JavaScript 引擎实现 stop-the-world 垃圾回收
这..导致 Node.js 有时会完全关闭几秒钟到几分钟来处理垃圾收集。
如果这是针对生产代码运行的,那么对于 10,000 个用户来说,这只是几秒钟的时间。
这在生产环境中真的可以接受吗?