All Projects → ricosjp → ruststep

ricosjp / ruststep

Licence: Apache-2.0 license
A STEP toolkit for Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to ruststep

OCCT
Open CASCADE Technology (OCCT) is an open-source software development platform for 3D CAD, CAM, CAE. This is a clone of the official repository located on https://dev.opencascade.org/. Please use official development portal for registering issues and providing patches.
Stars: ✭ 241 (+212.99%)
Mutual labels:  cad, cae
foxtrot
A fast, experimental STEP file viewer
Stars: ✭ 151 (+96.1%)
Mutual labels:  cad, step
SCView
Simple Express-G Viewer. Tiny implementation. Based on STEPCode
Stars: ✭ 35 (-54.55%)
Mutual labels:  cad, step
kodacad
A simple Python 3D CAD application
Stars: ✭ 14 (-81.82%)
Mutual labels:  cad, step
range3
Range Software - Finite Element Analysis
Stars: ✭ 31 (-59.74%)
Mutual labels:  cad, cae
fdat.cljc
Function serialization between Clojure processes and dialects
Stars: ✭ 49 (-36.36%)
Mutual labels:  serialization
moonblob
Binary serialization for moonscript + LuaJIT
Stars: ✭ 22 (-71.43%)
Mutual labels:  serialization
ngx-localstorage
An Angular wrapper for localstorage/sessionstorage access.
Stars: ✭ 27 (-64.94%)
Mutual labels:  serialization
serial-builder
Library for manually creating Java serialization data.
Stars: ✭ 20 (-74.03%)
Mutual labels:  serialization
nason
🗜 Ultra tiny serializer / encoder with plugin-support. Useful to build binary files containing images, strings, numbers and more!
Stars: ✭ 30 (-61.04%)
Mutual labels:  serialization
healthgo
a android pedometer app (安卓计步器)
Stars: ✭ 32 (-58.44%)
Mutual labels:  step
elm-protobuf
protobuf plugin for elm
Stars: ✭ 93 (+20.78%)
Mutual labels:  serialization
c-plus-plus-serializer
A minimal C++11 header only serializer. Can serialize basic types, strings, containers, maps and custom classes. No suppprt yet for pointer types.
Stars: ✭ 36 (-53.25%)
Mutual labels:  serialization
moko-network
Network components with codegeneration of rest api for mobile (android & ios) Kotlin Multiplatform development
Stars: ✭ 107 (+38.96%)
Mutual labels:  serialization
borsh-rs
Rust implementation of Binary Object Representation Serializer for Hashing
Stars: ✭ 149 (+93.51%)
Mutual labels:  serialization
Unity-Interface-Support
A simple implementation which allows for interface-type fields to be accepted in the Unity inspector.
Stars: ✭ 45 (-41.56%)
Mutual labels:  serialization
TairString
A redis module, similar to redis string, but you can set expire and version for the value. It also provides many very useful commands, such as cas/cad, etc.
Stars: ✭ 99 (+28.57%)
Mutual labels:  cad
avrow
Avrow is a pure Rust implementation of the avro specification https://avro.apache.org/docs/current/spec.html with Serde support.
Stars: ✭ 27 (-64.94%)
Mutual labels:  serialization
spydrnet
A flexible framework for analyzing and transforming FPGA netlists. Official repository.
Stars: ✭ 49 (-36.36%)
Mutual labels:  cad
GenericProtocol
⚡️ A fast TCP event based buffered server/client protocol for transferring data over the (inter)net in .NET 🌐
Stars: ✭ 38 (-50.65%)
Mutual labels:  serialization

This project is still in experimental stage. DO NOT USE FOR PRODUCT.

ruststep

Crates for STEP (Standard for the Exchange of Product model data) written in pure Rust aimed at replacing stepcode.

name crates.io docs.rs master description
espr Crate docs.rs cargo-doc EXPRESS Language (ISO 10303-11) Compiler
espr-derive Crate docs.rs cargo-doc proc-macro for running espr compiler
ruststep Crate docs.rs cargo-doc Serialize/Deserialize STEP files
ruststep-derive Crate docs.rs cargo-doc proc-macro helper crate

What is STEP?

  • STEP is a set of data serialize formats, schema language, and common schemas.
  • Data serialize format is called exchange structure in ISO document, but usually called STEP file, They are serialized as ASCII text (ISO-10303-21, usually with extension *.step, *.stp or *.p21) or XML (ISO-10303-28).
  • Schema language is called EXPRESS. EXPRESS file is usually named with extension *.exp.
  • Many common schemas are defined in ISO-10303 by EXPRESS language.
    • schemas contains copies
    • Application Protocol (AP) is a class of defined schemas, and the main target of this project.
    • AP203 is most famous one in CAD (computer-aided design) applications.

Rosetta Stone for web developers

Protocol Buffers STEP (ISO 10303)
Schema Language Protocol Buffers Version 3 Language Specification EXPRESS Language (ISO 10303-11)
Schema file *.proto file *.exp file
Data Encoded Binary data "Exchange structure", *.step file (ASCII, ISO 10303-21)
Compiler protoc esprc

Why ruststep?

  • STEP is not only for CAD
  • We have to generate many codes from EXPRESS schemas
    • Tables for SQL or NoSQL database, Object-Record Mapper (ORM)
    • on-wire, on-memory format
      • ASCII / XML are inefficient than binary format e.g. protocol buffers
  • Extensible EXPRESS compiler is required
    • Like as protoc generates gRPC binding using gRPC-plugin

Roadmap

Released features

  • 0.1.0
    • Minimal EXPRESS Compiler to generate Rust struct definitions
    • Deserialize STEP file (ASCII) to Rust struct

TODO until 1.0 release

  • Serialize Rust struct to STEP file (ASCII) #13
  • Translate rules in EXPRESS schema into Rust code #43
  • Stablize AST and IR representation of espr

Planned features

  • Binary format convertible into STEP ASCII and XML formats
  • RDB support, ORM generation

License

Copyright 2021 RICOS Co. Ltd.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Exception

The following directories are included for development purpose. They are not parts of this project.

Contributor License Agreement (CLA)

When you contribute (code, documentation, or anything else), you have to be aware that your contribution is covered by the same Apache 2.0 License that is applied to ruststep itself. This applies to all contributors, including those contributing on behalf of a company. If you agree to its content, you simply have to click on the link posted by the CLA assistant bot as a comment to the pull request. Click it to check the CLA, then accept it on the following screen if you agree to it. CLA assistant will save this decision for upcoming contributions and will notify you if there is any change to the CLA in the meantime.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].