Endo项目1.12.0版本发布:JavaScript安全执行环境的重要更新
项目简介
Endo是一个专注于提供安全JavaScript执行环境的开源项目,其核心组件ses(安全ECMAScript)为JavaScript代码提供了强大的隔离和沙箱能力。通过Endo,开发者可以创建相互隔离的JavaScript执行环境(称为Compartments),在这些环境中运行不受信任的代码而不会影响主应用程序的安全性。
主要更新内容
1. evalTaming选项命名规范化
在本次1.12.0版本中,evalTaming选项的取值进行了规范化重命名:
- 从
'safeEval'改为'safe-eval' - 从
'unsafeEval'改为'unsafe-eval' - 从
'noEval'改为'no-eval'
这一变更是为了遵循kebob-case(短横线连接)的命名约定,取代原有的camelCase(驼峰式)命名。为了保持向后兼容性,旧名称目前仍可使用,但已被标记为废弃,建议开发者尽快迁移到新命名格式。
2. 非词法名称解析行为变更
在隔离环境中,对非词法名称(即未在当前作用域声明且不在全局对象上的变量)的解析行为发生了变化。在之前的版本中,这种情况会抛出ReferenceError,而现在会返回undefined。
这一变更是为了解决技术实现上的限制:在不暴露宿主globalThis属性的情况下,无法完美模拟原生JavaScript引擎(如XS)的行为。虽然这与原生Hardened JavaScript实现的行为有所差异,但在安全性和实用性之间取得了更好的平衡。
3. @endo/patterns新增容器匹配模式
@endo/patterns模块新增了M.containerHas模式匹配功能,主要用于支持Zoe中的want模式。该功能允许从容器中提取特定数量的匹配元素:
M.containerHas(elementPatt, bound = 1n)
其中bound参数必须是一个正的大整数(BigInt),表示要提取的匹配元素数量。同时新增的containerHasSplit函数则专门支持ERTP中对非可替代资产(set, copySet)和半可替代资产(copyBag)的操作。
4. @endo/import-bundle支持测试格式
@endo/import-bundle模块现在支持test格式的bundle。这种格式的bundle会返回一个Promise,解析为一个类似模块导出命名空间的对象,其特殊符号属性@exports包含了指定的导出对象。这种设计有意避免了JSON序列化和传递的可能性。
此外,新增了typedImportBundle<ExpectedExportsNamespace>函数,提供了比any更精确的类型签名,同时不影响现有代码的使用。
5. @endo/bundle-source重大重构
4.0.0版本对nestedEvaluate和getExport格式的实现进行了彻底重构,改用Endo的Compartment Mapper替代Rollup作为底层实现。这一变化带来了以下改进:
- 消除了Rollup与底层Babel生成器之间源映射(source map)转换的协调问题
- 虽然不再生成源映射,但Babel确保了原始源代码与打包后代码之间的行号和列号保持不变
- 提升了构建性能和可靠性
6. @endo/compartment-mapper功能增强
1.6.0版本带来了多项重要改进:
-
CommonJS兼容性增强:现在能够正确处理在
exports上使用defineProperty的CommonJS模块。 -
打包功能重构:
- 将
makeBundle拆分为makeScript和makeFunctor makeScript生成适合网页<script>标签的JavaScript字符串makeFunctor生成可部分应用的函数,允许运行时提供选项
- 将
-
新增选项支持:
- 新增
format、useEvaluate和sourceUrlPrefix选项 - 支持
"cjs"格式,允许bundle使用主机的CommonJSrequire加载主机模块
- 新增
-
调试信息增强:
- 在由
mapNodeModules生成的compartment描述符中添加sourceDirname - 改进生成的bundle中的源URL注释,便于调试
- 在由
-
日志功能:新增
log选项,允许自定义日志函数(目前仅mapNodeModules支持)
7. @endo/evasive-transform改进
1.4.0版本主要改进了源映射处理:
- 新增
sourceMap选项,使生成的源映射能够直接映射回原始源代码 - 移除了未使用的
unmapLoc功能,简化了API
技术意义与影响
本次Endo项目的更新在多个层面上提升了JavaScript安全执行环境的能力和开发体验:
-
API规范化:通过统一命名约定,提高了代码的一致性和可维护性。
-
安全性增强:对非词法名称解析行为的调整,在保持安全性的同时提高了实用性。
-
模式匹配能力扩展:新增的容器匹配模式为资产操作提供了更强大的工具,特别是在DeFi等需要精确控制资产流动的场景中。
-
构建系统现代化:Compartment Mapper对Rollup的替代,标志着Endo构建系统向更专业、更可靠的方向发展。
-
调试体验提升:改进的源映射和日志支持,使得在复杂的安全环境中调试代码变得更加容易。
这些更新共同推动了Endo项目作为JavaScript安全执行环境解决方案的成熟度,为构建更安全、更可靠的JavaScript应用提供了坚实基础。
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00- DDeepSeek-OCR暂无简介Python00
openPangu-Ultra-MoE-718B-V1.1昇腾原生的开源盘古 Ultra-MoE-718B-V1.1 语言模型Python00
HunyuanWorld-Mirror混元3D世界重建模型,支持多模态先验注入和多任务统一输出Python00
AI内容魔方AI内容专区,汇集全球AI开源项目,集结模块、可组合的内容,致力于分享、交流。03
Spark-Scilit-X1-13BFLYTEK Spark Scilit-X1-13B is based on the latest generation of iFLYTEK Foundation Model, and has been trained on multiple core tasks derived from scientific literature. As a large language model tailored for academic research scenarios, it has shown excellent performance in Paper Assisted Reading, Academic Translation, English Polishing, and Review Generation, aiming to provide efficient and accurate intelligent assistance for researchers, faculty members, and students.Python00
GOT-OCR-2.0-hf阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile013
Spark-Chemistry-X1-13B科大讯飞星火化学-X1-13B (iFLYTEK Spark Chemistry-X1-13B) 是一款专为化学领域优化的大语言模型。它由星火-X1 (Spark-X1) 基础模型微调而来,在化学知识问答、分子性质预测、化学名称转换和科学推理方面展现出强大的能力,同时保持了强大的通用语言理解与生成能力。Python00- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00