#wasm-module #metadata #daku #wasm-file #app #quantii #nucleic

构建 核素

一个用于操作 WebAssembly 模块自定义部分以查看/编辑应用程序元数据的 crate。

2 个不稳定版本

0.1.0 2023 年 6 月 13 日
0.0.1 2022 年 6 月 19 日

331WebAssembly

每月 23 次下载

Apache-2.0 OR BSL-1.0 OR MIT

59KB
950

核素

一个用于操作 WebAssembly 模块 自定义部分 以查看/编辑应用程序元数据的 crate。

规范

核素指定了 Nucleic 桌面环境可读取的 WASM 元数据。它包括 WebAssembly 2.0 和 Daku 1.0.0-beta.0 规范。

Daku 程序是一个必须具有 daku 自定义部分的 WebAssembly 模块,使用 ZStd 压缩,并应使用 .daku 文件扩展名;因此,作为 Daku 的扩展,核素规范应当遵循。

可由软件管理器显示的应用程序数据及其来源

  • 未本地化应用程序名称:name 部分 => 模块名称子部分
  • 编程语言:producers 部分 => 语言字段
  • 处理方式:producers 部分 => 处理-by 字段
  • 生成方式:producers 部分 => SDK 字段
  • 所需权限:daku 部分 => Portals 报头
  • 本地化应用程序名称:daku 部分 => 翻译子部分
  • 应用程序描述:daku 部分 => 描述翻译子部分
  • 应用程序图标主题:daku 部分 => 应用程序图标主题子部分
  • 应用程序截图:daku 部分 => 描述资源子部分
  • 可搜索标签:daku 部分 => 标签子部分
  • 分类:daku 部分 => 分类子部分
  • 组织:daku 部分 => 组织名称子部分

类型

核素自定义部分复用 WebAssembly 类型

字节

只是一个 8 位整数。

整数

一个无符号LEB128变长编码的小端整数,最大值为2³²-1(可以是1到5个字节)。

向量[T]

以下序列

  • 大小:整数
  • 数据: [T;大小]

名称

包含有效的UTF-8(没有空终止符);围绕

  • 向量[字节]

名称映射

一个Vector,其中每个元素包含以下序列

  • index: 整数 - 必须按顺序排序
  • 名称:名称

间接名称映射

一个Vector,其中每个元素包含以下序列

  • index: 整数 - 必须按顺序排序
  • 名称映射:名称映射

自定义部分

名称(name

来自WASM规范的调试信息。预计应用程序将使用此模块生成以方便调试,但将其剥离并放入单独的.name文件中进行分发。

  • subsection: u8:每个子部分都是可选的,必须按此顺序放置
    • 0 => 模块名称
    • 1 => 函数名称
    • 2 => 局部名称
    • 3 => 扩展:标签名称
    • 4 => 扩展:类型名称
    • 5 => 扩展:表名称
    • 6 => 扩展:内存名称
    • 7 => 扩展:全局名称
    • 8 => 扩展:元素名称
    • 9 => 扩展:数据名称
  • size: u32:字节数

0 => 模块名称

  • name: 名称:应用程序的名称

1 => 函数名称

  • name_map: 名称映射:每个函数的名称

2 => 局部名称

  • indirect_name_map: 间接名称映射:每个函数中每个变量的名称

3 => 扩展:标签名称

  • indirect_name_map: 间接名称映射:每个函数中每个标签的名称

4 => 扩展:类型名称

  • name_map: 名称映射:每个类型的名称

5 => 扩展:表名称

  • name_map: 名称映射:每个表的名称

6 => 扩展:内存名称

  • name_map: 名称映射:每个内存的名称

7 => 扩展:全局名称

  • name_map: 名称映射:每个全局的名称

8 => 扩展:元素名称

  • name_map: 名称映射:每个元素的名称

9 => 扩展:数据名称

  • name_map: 名称映射:每个数据的名称

生产者(producers

来自WebAssembly的工具约定,关于如何生成.daku WebAssembly文件的信息。

一个Vector,其中每个元素包含以下序列

  • name: 名称 - 以下之一
    • "语言"
    • "处理程序"
    • "SDK"
  • 工具版本对: 向量<(字符串,字符串)>

Daku(daku

  • portals: Vector<Integer>:门户ID列表

在Daku门户列表之后是nucleide扩展

  • subsection: u8:每个子部分都是可选的,必须按此顺序放置
    • 0 => 为Daku 2.0版本的潜在破坏性版本保留
    • 1 => 应用程序名称翻译
    • 2 => 应用程序描述翻译
    • 3 => 应用程序图标主题
    • 4 => 应用程序描述资产
    • 5 => 可搜索标签
    • 6 => 可搜索类别
    • 7 => 组织名称
  • size: u32:字节数

1 => 应用程序名称翻译

  • 本地化名称:名称映射

4个字母(2个小写字母语言,2个大写字母地区)的ASCII描述的整数表示

  • 地区: b"enUS"
    locale[0] | locale[1] << 7 | locale[2] << 14 | locale[3] << 21
    

2 => 应用程序描述翻译

  • localized_mdfiles: 名称映射:每个描述的Markdown文件

4个字母(2个小写字母语言,2个大写字母地区)的ASCII描述的整数表示

  • 地区: b"enUS"
    locale[0] | locale[1] << 7 | locale[2] << 14 | locale[3] << 21
    

3 => 应用程序图标主题

一个Vector,其中每个元素包含以下序列

  • name: Name: 主题名称,"default""reduced";reduced 主题应为二进制(开/关)RGBA。默认为每个的 0-255 范围。
  • data: Vector<u8>: 连接的 QOI(未来:或 RVG)文件列表。选择最佳分辨率的文件。没有文件可以具有相同的分辨率。

4 => 应用程序描述资产

一个Vector,其中每个元素包含以下序列

  • locale: Integer: 设置为 0 以使用未本地化的资源。
  • path: Name: Markdown 路径
  • data: Vector<u8>: QOI(未来:或 RVG)文件。

5 => 可搜索标签

一个包含以下内容的 Vector(限制 8),每个元素包含

  • tag: Name: 标签名称(所有小写 ASCII 英文单词,用空格分隔;没有 -_,其他标点符号)

6 => 可搜索类别

一个包含以下内容的 Vector(限制 2),每个元素包含

  • tag: Byte: 应用程序类别,以下之一
    • 0 => 媒体 - 用于播放/录制/编辑音频、视频、绘画、照片、字体、3D 建模的应用程序
    • 1 => 办公 - 用于查看/编辑/翻译文档和电子表格的应用程序
    • 2 => 系统 - 用于检查操作系统、调整、安装和虚拟化的应用程序
    • 3 => 编码 - 用于软件开发、数学、相关工具的应用程序
    • 4 => 互联网 - 用于浏览网页、点对点文件共享、电子邮件、社交媒体等的应用程序
    • 5 => 游戏 - 用于播放视频游戏的应用程序
    • 6 => 科学 - 用于模拟、电气/机械工程、AI 检查数据、机器人的应用程序
    • 7 => 教育 - 用于教育、学习的应用程序
    • 8 => 生活 - 用于待办事项列表、日历、健康、健身、导航、地图、天气、智能家居等的应用程序
    • 9 => 金融 - 用于优惠券、购买/销售、交易、货币的应用程序

7 => 组织名称

  • organization: Name: 开发该软件的组织名称

依赖项

~0.6–1.1MB
~27K SLoC