five

wasm-corpus

收藏
github2026-05-02 更新2026-05-08 收录
下载链接:
https://github.com/CharlieTap/wasm-corpus
下载链接
链接失效反馈
官方服务:
资源简介:
一个版本化的WebAssembly二进制文件语料库,用于运行时、工具和绑定的测试。

A versioned corpus of WebAssembly binary files for testing runtimes, tools and bindings.
创建时间:
2026-04-26
原始信息汇总

wasm-corpus 数据集概述

数据集简介

wasm-corpus 是一个按版本管理的 WebAssembly 二进制文件数据集,专为运行时、工具和绑定等场景提供测试数据。

数据集结构

目录组织

数据集按 WebAssembly 核心版本组织,核心目录结构如下:

  • 1.0/:包含 WebAssembly 1.0 版本的测试文件
  • 2.0/:包含 WebAssembly 2.0 版本的测试文件
  • 3.0/:包含 WebAssembly 3.0 版本的测试文件
  • stage/:作者草稿区,用于存放待处理的 .wasm.wat 文件
  • scripts/:包含分类、执行、准备和验证等辅助脚本
  • schema/:包含 fixture 的 JSON Schema 定义文件 (fixture.schema.json)
  • corpus:用于打印 fixture 元数据的可执行文件

版本目录内容

每个版本目录包含以下三类文件:

  • *.wasm:可供使用的二进制模块文件
  • *.wat:对应模块的可读文本格式(仅在符合语料库可读性限制时提交)
  • *.json:对应模块的 fixture 元数据文件,文件名必须与 .wasm 文件的主文件名一致(如 gcd.json 对应 gcd.wasm

版本与特性说明

  • 目录版本表示二进制文件所属的核心 WebAssembly 版本家族
  • features 字段记录了该二进制文件使用的重要或必需特性及提案扩展,便于消费者精确筛选
  • 例如,使用 GC 特性的 3.0 版本二进制文件,应在 features 中列出 "gc"

数据内容与功能

Fixture 元数据

Fixture JSON 文件包含可运行的 tests,提供:

  • 调用导出函数的小步骤序列
  • 检查导出的内存、表和全局变量
  • 为命令式模块提供声明的主机导入配置

仓库的运行器使用这些测试作为冒烟检查,并作为每个模块 ABI 的可执行示例。

运行环境

  • 仓库冒烟运行器使用 Node.js 24 或更新版本
  • 3.0 版本的 fixture(如需要 Wasm GC 等特性)可在 CI 中验证和执行
  • 消费者应使用版本和特性过滤器作为自身运行时的兼容性契约

工具使用

数据准备

将候选的 .wasm.wat 文件放入 stage/ 目录,运行 ./scripts/prepare 脚本,系统会自动将处理后的文件写入正确的版本目录。

数据查询

使用 ./corpus 命令可打印 fixture 元数据为一个 JSON 数组:

  • 无过滤条件:返回按版本顺序排列的所有 fixture
  • 按版本过滤./corpus --version 2.0
  • 按特性和标签过滤./corpus --feature simd --tag npm
  • 组合过滤./corpus --version 2.0 --exclude-feature bulk-memory

数据集提交

详细的 fixture 提交工作流程、元数据指南、所需工具、验证和执行步骤,请参考仓库中的 SUBMISSION.md 文件。

许可证

本项目采用双重许可:

  • MIT 许可证:详见 LICENSE-MIT
  • Apache 2.0 许可证:详见 LICENSE-APACHE

使用者可自由选择其中一种许可证。

搜集汇总
数据集介绍
main_image_url
构建方式
在WebAssembly生态日益繁杂的背景下,wasm-corpus应运而生,作为一个版本化的WebAssembly二进制文件语料库,旨在为运行时、工具及绑定层提供标准化的测试基准。该数据集按WebAssembly核心版本进行组织,每个版本目录下存放对应版本的.wasm二进制模块、.wat可读文本格式以及.json元数据文件。元数据文件包含可运行的测试用例,定义了小步执行序列,能够调用导出函数、检查内存与表结构,或提供宿主导入接口。用户可通过scripts目录下的prepare工具将候选文件自动归类至正确版本目录,validate工具确保数据合规性,从而构建出结构严谨、版本可控的测试语料体系。
特点
wasm-corpus数据集的核心特点在于其版本化治理与细粒度筛选能力。每个二进制模块均关联包含features字段的元数据,精确记录其依赖的提案扩展(如GC、SIMD),使消费者能够按版本、特性或标签进行精准过滤。此外,元数据内嵌的测试用例不仅作为冒烟检查,更成为模块ABI的可执行范例,极大地提升了数据的实用价值。该语料库采用MIT和Apache 2.0双许可证,兼顾开放性与灵活性,为WebAssembly工具链的兼容性验证提供了权威且可复用的资源。
使用方法
使用wasm-corpus时,用户可通过命令行工具./corpus进行灵活查询。该工具支持按版本筛选(如--version 2.0)、按特性包含或排除(如--feature simd --exclude-feature bulk-memory),以及按标签过滤(如--tag npm),返回统一JSON格式的元数据数组。对于需要自行扩展的场景,可将候选二进制文件放入stage目录,运行./scripts/prepare即可自动完成版本归类。执行./scripts/validate可验证格式合规性,而./scripts/execute则通过Node.js 24+运行时执行测试用例,确保数据在持续集成流程中的可用性。
背景与挑战
背景概述
WebAssembly(Wasm)作为一种高效、安全的二进制指令格式,正逐渐成为跨平台运行时环境的核心技术,广泛应用于浏览器、边缘计算、容器化应用及物联网设备中。然而,随着Wasm规范的快速演进(从1.0到3.0版本及预发布阶段),各类运行时、工具链和绑定库面临兼容性测试的严峻挑战,缺乏系统化、版本化的测试数据集成为制约生态成熟的关键瓶颈。在此背景下,由Bytecode Alliance等社区主导的wasm-corpus项目于2023年前后诞生,旨在构建一个结构化、版本化的WebAssembly二进制文件语料库,为运行时开发者、工具维护者及绑定制作者提供统一的可执行测试基准。该数据集通过按核心版本(1.0、2.0、3.0及stage)组织目录,并附带WAT文本格式、JSON元数据及可执行测试序列,填补了Wasm生态中标准化兼容性测试数据的空白,对推动Wasm跨平台一致性、降低集成复杂度具有重要学术与工业价值。
当前挑战
wasm-corpus面临的核心挑战源于WebAssembly规范的碎片化演变与多元运行时环境的兼容性需求。首先,领域层面需解决跨版本特性冲突问题:同一Wasm二进制文件可能依赖GC、SIMD等不同提案扩展,而各运行时对不同版本的支持程度参差不齐,导致测试覆盖率难以全面覆盖版本组合与特性交叉场景。其次,构建过程中遭遇数据多样性难题:人工编写的测试样本难以穷尽边界情况(如异常内存访问、嵌套模块调用),且自动化生成的样本需验证其与WAT格式、元数据及可执行测试序列的一致性,增加了构建复杂度。此外,语料库维护面临版本同步挑战:随着Wasm规范迭代(如预发布stage特性),需频繁更新fixture以匹配最新提案,同时需确保向后兼容性,避免破坏已有测试用例;而CI验证受限于Node.js版本(需24+),进一步限制了低版本运行时的广泛测试能力。
常用场景
经典使用场景
在WebAssembly生态系统中,wasm-corpus作为一份精心编排、按核心版本分层的二进制程序集,为运行时环境、开发工具链与语言绑定提供了标准化的测试基准。研究者与工程师可借助该语料库验证解析器、即时编译器及虚拟机对WebAssembly不同版本特性(如SIMD、垃圾回收、批量内存操作)的支持完备性,从而确保跨平台的兼容性与执行正确性。
解决学术问题
该数据集直面WebAssembly规范演进中版本碎片化与实现偏离的学术挑战,通过为每个核心版本维护可复现的二进制模块及结构化元数据,系统性地支撑了兼容性测试、回归分析及特性覆盖率评估等研究方向。其影响在于为编译器验证、形式化语义建模及多语言互操作研究提供了可靠的事实标准,推动了WebAssembly语言生态的严谨性与成熟度。
衍生相关工作
围绕wasm-corpus衍生出多条经典工作脉络,包括基于元数据标签的模块自动分类与版本适配工具、面向WebAssembly指令序列的模糊测试框架,以及利用语料库中可执行测试序列进行运行时行为差异分析的回归测试系统。这些工作进一步拓展了语料库在编译器优化验证、安全漏洞挖掘及多版本兼容性图谱构建等前沿课题中的应用深度。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作