发动机262
在JavaScript中实施ECMA-262
目标
- 100%的光谱遵守率
- 回顾
- 修改的便利
非目标
- 以牺牲任何目标为代价的速度
这个项目受 行为守则。 。 。 .
加入我们 #engine262:matrix.org。 。 。 .
为什么会这样
在帮助开发JavaScript的新功能的同时,我发现了其中之一 最有用的方法 找出什么是可行的什么是不能 实际使用新特性运行代码. 宝贝 这真是太棒了 但是 有时候,一些特征只是不能 很好地代表它。 同样, 实施其中一种发动机的特性是一项大型工作,涉及 长编译时间和有优化编译器的烦扰错误.
引擎262 是让 JavaScript 开发者拥有新游戏场的工具 特性可以迅速被原型和探索. 例如,添加: 执行表达式 至此引擎与以下 diff 一样简单:
--- a/src/evaluator.mts
+++ b/src/evaluator.mts
@@ -232,6 +232,8 @@ export function* Evaluate(node) {
case 'GeneratorBody':
case 'AsyncGeneratorBody':
return yield* Evaluate_AnyFunctionBody(node);
+ case 'DoExpression':
+ return yield* Evaluate_Block(node.Block);
default:
throw new OutOfRange('Evaluate', node);
}
--- a/src/parser/ExpressionParser.mts
+++ b/src/parser/ExpressionParser.mts
@@ -579,6 +579,12 @@ export class ExpressionParser extends FunctionParser {
return this.parseRegularExpressionLiteral();
case Token.LPAREN:
return this.parseParenthesizedExpression();
+ case Token.DO: {
+ const node = this.startNode<ParseNode.DoExpression>();
+ this.next();
+ node.Block = this.parseBlock();
+ return this.finishNode(node, 'DoExpression');
+ }
default:
return this.unexpected();
}
这种简单适用于许多其他建议,例如: 可选链条, (中文(简体) ), 模式匹配, (中文(简体) ), 管道操作员还有更多 这个引擎也有 用于在ECMA-262和 测试262,用于 符合 JavaScript 执行.
所需资源
要运行引擎262本身, 支持最近 ECMAScript 特性的引擎
这是需要的。 此外,《国家行动倡议》bin/engine262.js)和试验262跑道
(单位:千美元)test/test262/test262.mts)需要最新版本的Node.js.
使用引擎262
从npm可以安装.
npm install @engine262/engine262
yarn install @engine262/engine262
pnpm install @engine262/engine262
如果您在全球安装, 您可以像这样使用 CLI :
$ engine262
引擎262操场
经典游乐场 财务报告和审定财务报表 Chrome Devtools 风格操场
发动机262 CLI
--单元/-m
将文件评价为模块 .
--eval < string > / -e < string >
评估给定的字符串并退出 .
--features QQfeatureA,featureB > / --features = all (中文(简体) )
运行 engine262 --list-features 以查看所有 ECMAScript 特性可以切换.
无测试262
别曝光 $ 财务报告和审定财务报表 $262 用于测试262测试套件的全局变量.
无检查者
不要开始检查.
默认的引擎 262 将启动检查器 ws://localhost:9229/ (像节点.js与 --inspector) (中文(简体) ). 见 节点引导 用于连接.
-- 不审查
不启用检查器中的预览功能 .
引擎262 API
见 实例。 。 。 .
开发引擎262
npm run build 财务报告和审定财务报表 npm run watch 将建造并观看建造.
npm run test:test262 将运行 测试262 测试套房。 运行 npm run test:test262 -- --help 以查看试跑者选项.
npm start 启动引擎262 CLI.
npm run inspector 启动网站( 调试引擎262 主要发生在这里) .
相关项目
许多人和组织试图撰写 JavaScript 解释器 在JavaScript中很像引擎262,目标不同. 其中一些是 虽然引擎262并非基于其中任何一种,但在此列出以供参考.