2 个不稳定版本
0.1.0 | 2023 年 6 月 13 日 |
---|---|
0.0.1 | 2022 年 6 月 19 日 |
331 在 WebAssembly
每月 23 次下载
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
,其中每个元素包含以下序列
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