javascript - 在 v8 中实现无限列表

标签 javascript generator v8 destructuring

我是一名计算机科学专业的学生,​​作为学校项目的一部分,我被要求在 v8 引擎中找到漏洞,进行一些非常好的优化或添加新功能。

我选择添加一个新功能,如下:

function* numbers() {
  i = 1;
  while (true) {
    yield i++;
  }
}

var gen = numbers();

var l = [...gen];

var n = l[42];

用文字来说,我希望能够使用解构语法来创建一个可以容纳无限数量对象并访问它们的列表。

可以在 Haskell 中做到这一点,我想尝试用 JavaScript 做同样的事情。

如果 v8 的开发人员能够为我指明正确的方向,那就太好了。

我已经有了一个工作环境,可以编译引擎,读取源代码,并在带有符号的d8二进制文件上运行调试器。

最佳答案

这里是 V8 开发人员。

首先:需要明确的是,stackoverflow 并不是一台可以帮你完成作业的机器。 (你只是要求“正确的方向”,没关系。)

其次:V8 按照规范实现 JavaScript,因此任何任意的“新功能”都不会出现在我们的存储库中,请注意这一点。

第三:Keith有几个优点。特别是,您建议的语法已经是有效的 JavaScript,并且会急切地评估生成器。您的想法是在生成器产生无限的值流时切换到惰性求值吗?退后一步,思考一下这个想法的含义。

最后,如果您想出了可行的语法/语义,那么在 V8 中执行此操作仍然是一项艰巨的工作,因为没有类似的先例。您可能想要使用元素拦截器,并将生成器存储在私有(private)属性中。我认为使用代理在纯 JavaScript 中填充整个内容会容易得多。

(重新考虑您对项目的选择可能是一个好主意,但这取决于您。这也是一个相当时髦的项目描述开始......他们认为“找到漏洞或漏洞有多难”进行一些非常好的优化”?如果您发现了漏洞,请执行let us know!)

关于javascript - 在 v8 中实现无限列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59933887/

相关文章:

python在一个循环中产生和停止迭代?

python-2.7 - 合并生成器对象以计算 NLTK 中的频率

Javascript 数组日志记录困惑

javascript - 无法正确获取4个数组之间的公共(public)元素

javascript - 如何在 PDT 或 PST 时区创建 Google Cloud Function

javascript - V8中,null、undefined、boolean等基本类型在内存中是如何存储的?

c++ - 以下代码如何工作?

javascript - 如何在 JavaScript 中添加和稍后删除或禁用 CSS 规则?

python-2.7 - python simpy错误返回生成器内部的值

javascript - 在垃圾收集期间是否会检查持久性收集?