# ![GRADIFF](./logo.svg) The Reference Implementation for the GRADIFF File Format [![Status: Active](./badges/status-active.svg)](#) [![Crate: gradiff](./badges/crate-gradiff.svg)](https://crates.io/crates/gradiff) [![API Reference](./badges/docs-apireference.svg)](https://docs.rs/crate/gradiff) [![Issue Tracker](./badges/community-issuetracker.svg)](https://codeberg.org/gradis/gradiff-rs/issues) [![License: Apache v2.0](./badges/license-apache20.svg)](#copyright) [![Badges made with ./badges](./badges/dotslash-badges.svg)](https://codeberg.org/lhinderberger/dot-slash-badges) ## Summary gradiff-rs is the Rust-based reference implementation for the GRADIFF file format. It consists of the `gradiff` library crate under the `lib` subdirectory, and a CLI under the `cli` subdirectory. The library consists of the `codec` module, which is responsible for en- and decoding GRADIFF files syntactically, the `model` module, which validates GRADIFF files semantically and aggregates GRADIFF Changes and the `render` module, which renders a view of a GRADIFF diagram to SVG. SVG is the canonical render format for GRADIFF diagrams. Rasterized renders of GRADIFF diagrams should be accomplished using a compliant SVG rendering library, which is not part of (and out of scope for) gradiff-rs. ## Specification The specification of the GRADIFF file format can be found in the [GRADIFF Repository](https://codeberg.org/gradis/gradiff-spec). ## Contributing Feel free to contribute by posting issues on this repository's [Issue Tracker](https://codeberg.org/gradis/gradiff-rs/issues). Please note that pull requests are only accepted if they are in line with the licensing of the rest of the project (see below). Please make sure to add your name and email address to the list of contributors in the header of the files that you created or modified (or their corresponding `.license` files). ## Versioning and Compatibility Versioning of gradiff-rs follows the [Semantic Versioning](https://semver.org) convention. Until 1.0.0, any substantial changes to the library (breaking and non-breaking) will trigger an increase of the minor version, while bug fixes and similar minor improvements may trigger an increase of the patch version. ## Copyright and Licensing gradiff-rs is (C) 2022-2023 The GRADIS Project Contributors 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. For details, please refer to the [LICENCE file](LICENSE.txt). ## Maintainer and Contact gradiff-rs is maintained by Lucas Hinderberger. You can contact the maintainer via email at lhinderberger@gradis-project.org The repository of gradiff-rs can be found at https://codeberg.org/gradis/gradiff-rs You're welcome to file issues and pull requests there.