![rustronomy_dark_banner](https://github.com/smups/rustronomy/blob/main/logos/Rustronomy_github_banner_dark.png?raw=true#gh-light-mode-only) ![rustronomy_light_banner](https://github.com/smups/rustronomy/blob/main/logos/Rustronomy_github_banner_light.png#gh-dark-mode-only) # `rustronomy-core` changelog _breaking releases are marked with ❗️, feature updates are marked with 🌟 and bug-fix updates are marked with 👾_ ## v0.5.1 improved formatting (👾) This minor update fixes a bug in the display formatting of the `MetaOnly` struct, as well as improved formatting for the `ReferencePublication` struct. ## v0.5.0 second rework of metadata system (❗️) After further experimentation I have decided to rework the metadata system once again. The previous system was essentially an overcomplicated key-value system with certain keys being designated for specific purposes. This update brings true typed metadata support. One of the advantages that this system brings is that the user is no longer burdened by annoying key restrictions for metadata. See the v0.5.0 docs for more details on the new system. ## v0.4.2 metadata-only container (🌟) This version adds a new metadata-only container, called `MetaOnly`. Metadata can now be cloned from other containers. ## v0.4.1 updated license information (👾) This version changes the license of rustronomy from the GPLv3 to the EUPLv1.2 (a compatible license). ## v0.4.0 reworked metadata system (❗️) This update reworks the metadata system: - Internally, restricted metadata tags are now generated by a script. Accessing these restricted tags is now done via an auto-generated trait. - Restricted keys now carry type information. When querying a restricted key, a non-String datatype may be returned. - Accessing tags manually is still possible, but the keys provided are now checked against an array of restricted tags (also script generated). Right now, this check can only be done at run time. In the future we'd like to add a static key check as well. The full list of restricted keys in this update can be found in the docs of the `MetaDataContainer` trait. Right now they are: | restricted tag string | restricted tag type | description | | --: | :--: | :-- | | `"author"` | `Author(String)` | author | | `"date"` | `Date(chrono::DateTime)` | data creation date | | `"last_modified"` | `LastModified(chrono::DateTime)` | date file was last modified | | `"organisation"` | `Organisation(String)` | data was created by | | `"reference"` | `Reference(String)` | reference publication for data | | `"reference_doi"` | `ReferenceDOI(String)` | doi of reference publication | | `"telescope"` | `Telescope(String)` | telescope | | `"instrument"` | `Instrument(String)` | instrument | | `"object"` | `Object(String)` | observed object | | `"exposure_time"` | `ExposureTime(u64)` | exposure time in ms | ## v0.3.0 array bugfix and additional restricted metadata tags (❗️👾) This update introduces a small but crucial bug fix in the array container - Fixed typo in the `DataArray` container: dimensionality and type parameters were swapped (❗️breaking change❗️) In addition, the following restricted keywords were added/modified (keywords are chosen to mirror those specified in the FITS standard): - `date` now specifies the date the data was collected - `last_modified` now specifies the date the container was last modified - `object` specifies the object(s) observed to produce the data - `organisation` specifies the organisation responsible for producing the data - `telescope` specifies the telescope used to produce the data - `instrument` specifies the instrument used to produce the data. This keyword is to be used in conjunction with the `telescope` keyword - `reference` specifies a reference to a publication accompanying the data. It is recommended to use a [DOI](https://doi.org) or [ADS](https://ads.harvard.edu) format. - `exposure_time` specifies the exposure time in seconds of the image Other time and position related keywords as specified by the FITS standard may be added in the future. ## v0.2.1 - visibility fix (👾) This tiny update adds a re-export of some universal data containers to the `universal_containers` module. ## v0.2.0 - universal data containers (❗️🌟) This update introduces universal data containers which can be used to share data between rustronomy crates. The datacontainers feature support for metadata. ### 🌟Feature updates🌟 added universal data containers: - added `universal_container` module - added `Image` container for images - added `DataArray` container for higher-dimensional arrays - added `Table` container consisting of named `Col`s of different types added metadata support for universal containers: - added `MetaDataTag`. Used to add metadata of type `T` to a datacontainer. - added reserved metadata tags. Reserved tags are to be encoded in special ways if the file format that the universal data container is encoded into supports reserved metadata tags. The following tags are reserved, as of `v0.2`: - `author` specifies author(s) of the datacontainer - `date` specifies date the container was last modified ### ❗️Breaking changes❗️ All encoding/decoding related functionality was removed from `rustronomy-core` since it is not needed to ensure interoperability between rustronomy crates. - removed `data_type_traits` module - removed `Encode` trait and all implementations - removed `Decode` trait and all implementations - removed `EncodeAndConsume` trait ## v0.1.0 - initial release (🌟) initial release