4个版本 (2个重大变更)
0.3.0 | 2022年6月14日 |
---|---|
0.2.0 | 2022年2月17日 |
0.1.0 | 2021年9月27日 |
0.1.0-alpha.0 | 2021年9月23日 |
#166 in 科学
用于 2 crates
1MB
20K SLoC
此项目仍处于实验阶段。请勿用于产品。
ruststep
使用纯Rust编写的用于替换stepcode的STEP (产品模型数据交换标准) Crates。
名称 | crates.io | docs.rs | master | 描述 |
---|---|---|---|---|
espr | EXPRESS语言(ISO 10303-11) 编译器 | |||
espr-derive | 运行espr编译器的proc-macro | |||
ruststep | 序列化/反序列化STEP文件 | |||
ruststep-derive | proc-macro辅助Crates |
什么是STEP?
- STEP是一组数据序列化格式、模式语言和常用模式。
- 数据序列化格式在ISO文档中称为“交换结构”,但通常称为“STEP文件”,它们被序列化为ASCII文本(ISO-10303-21,通常具有扩展名
*.step
,*.stp
或*.p21
)或XML(ISO-10303-28)。 - 模式语言称为EXPRESS。EXPRESS文件通常以扩展名
*.exp
命名。 - 许多常用模式是用EXPRESS语言在ISO-10303中定义的。
- schemas 包含副本
- 应用程序协议(AP)是一类定义的模式,也是本项目的主要目标。
- AP203是CAD(计算机辅助设计)应用中最著名的一个。
网络开发者的罗塞塔石碑
协议缓冲区 | STEP (ISO 10303) | |
---|---|---|
模式语言 | 协议缓冲区版本3语言规范 | EXPRESS语言(ISO 10303-11) |
模式文件 | *.proto 文件 |
*.exp 文件 |
数据 | 编码的二进制数据 | “交换结构”,*.step 文件(ASCII,ISO 10303-21) |
编译器 | protoc | esprc |
为什么选择 ruststep?
- STEP 不仅用于 CAD
- EXPRESS 是一种通用数据模式,类似于 Protocol Buffers
- 后来的 ISOs 也使用了 EXPRESS
- 对于计算机辅助技术(CAx),包括
- 计算机辅助制造(CAM)
- 计算机辅助工程(CAE)
- 产品数据管理(PDM/EDM)
- 制造资源计划(MRP)
- 企业资源计划(ERP)
- 我们必须从 EXPRESS 模式中生成许多代码
- 用于 SQL 或 NoSQL 数据库、对象-记录映射器(ORM)的表
- 网络、内存格式
- ASCII / XML 比二进制格式(如协议缓冲区)效率低
- 需要可扩展的 EXPRESS 编译器
- 例如,protoc 使用 gRPC-plugin 生成 gRPC 绑定
路线图
已发布功能
- 0.1.0
- 最小 EXPRESS 编译器,用于生成 Rust 结构定义
- 将 STEP 文件(ASCII)反序列化为 Rust 结构
待办事项直到 1.0 版本发布
- 将 Rust 结构序列化为 STEP 文件(ASCII) https://github.com/ricosjp/ruststep/issues/13
- 将 EXPRESS 模式中的规则转换为 Rust 代码 https://github.com/ricosjp/ruststep/issues/43
- 稳定 espr 的 AST 和 IR 表示
计划中的功能
- 将二进制格式转换为 STEP ASCII 和 XML 格式
- 支持 RDB,生成 ORM
许可证
版权 2021 RICOS Co. Ltd.
根据 Apache 许可证版本 2.0(“许可证”);除非遵守许可证规定,否则不得使用此文件。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的特定语言管理许可和限制,请参阅许可证。
例外情况
以下目录包含在开发目的中。 它们不是此项目的一部分。
贡献者许可协议(CLA)
当您做出贡献(代码、文档或其他内容)时,您必须意识到您的贡献受与 ruststep 本身相同的 Apache 2.0 许可证的约束。这适用于所有贡献者,包括代表公司做出贡献的人。如果您同意其内容,您只需点击拉取请求中发布的链接作为评论即可。点击它以检查 CLA,然后在下一屏上接受它,如果您同意它。 CLA assistant 将保存此决定以供未来的贡献使用,并在其间如果 CLA 发生任何变化,将通知您。
依赖关系
~5MB
~95K SLoC