johnstonskj / rust-atelier

Rust native core model for the AWS Smithy IDL
MIT License
77 stars 11 forks source link
idl rust smithy

The Atelier Project

Rust native library and tools for the AWS Smithy Interface Definition Language.

MIT License Minimum Rust Version Rust Audit GitHub stars Gitpod ready-to-code

Smithy is a framework around a language and runtime neutral IDL for service definition. It consists of a semantic model, a native IDL representation, and a mapping to JSON. The goal of this work is to replicate these core components of Smithy in Rust but also to experiment in alternate integrations such as the representation of the semantic model in RDF. This work should provide the basis for Rust code generation from a Smithy model and other tooling opportunities, but those are not included in this repo.

The Name "Atelier"

Given that a Smithy is "the workshop of a smith", this project has been named for "an artist's or designer's studio or workroom". Also, given that Fashion Tech. is just a damn fun place to be these days, it seemed appropriate.

Crates

This repo contains a number of crates that provide different aspects, or capabilities, around Smithy processing. For clients that wish to use a number of features but don't want to track individual version compatibility the atelier_lib crate incorporates all, except the cargo command, using features to select the different capabilities.

crate Content Status
atelier_core The Model, Builder, and Selector types and I/O traits. Model: Done, Builder: Done, Tests: OK
atelier_assembler merge files into a single in-memory Model. Model: Done, Tests: Low
atelier_describe Model documentation writer, uses somedoc crate. Writer: 75%, Tests: Low
atelier_json The serializer/de-serializer for the JSON AST. Reader/Writer: Done, Tests: Low
atelier_lib Re-export structures from previous crates. Done.
atelier_openapi A Serializer only to OpenAPI. Not Started
atelier_query Evaluator for Smithy select expressions. Not Started
atelier_rdf The serializer/de-serializer to RDF. Model: Done, Writer: Done, Tests: Low
atelier_smithy The serializer/de-serializer for native Smithy. Reader/Writer: Done, Tests: Low
cargo_atelier Cargo command to lint, validate, and convert models. Commands working correctly.

Book

This repo also contains the source (using mdbook) of a more complete documentation set. This is built using GitHub pages and accessible at rust-atelier.dev.

Changes

See individual crate README files.