xmp_toolkit 1.7.3

Rust-language bindings for Adobe's XMP Toolkit
Documentation
# Changelog

All changes to this project are documented in this file.

This project adheres to [Semantic Versioning](https://semver.org), except that – as is typical in the Rust community – the minimum supported Rust version may be increased without a major version increase.

Do not manually edit this file. It will be automatically updated when a new release is published.

## 1.7.3
_19 March 2024_

* Allow build.rs to succeed if git is not present ([#203]https://github.com/adobe/xmp-toolkit-rs/pull/203)

## 1.7.2
_23 February 2024_

* Relax the requirement on `cc` crate to increase compatibility with other crates ([#198]https://github.com/adobe/xmp-toolkit-rs/pull/198)
* Restore sem ver check

## 1.7.1
_21 February 2024_

* Temporarily disable semantic-version check because we can no longer build 1.7.0
* Prepare 1.7.1 release
* Prepare 1.7.1 release
* Emergency patch: cc 1.0.86 (just released) breaks xmp_toolkit_rs when used in downstream `cargo install` ([#194]https://github.com/adobe/xmp-toolkit-rs/pull/194)
* [IGNORE] Fix reference to C++ XMP Toolkit to point to December 2023 ([#192]https://github.com/adobe/xmp-toolkit-rs/pull/192)
* Silence new C++ build warning on MacOS ([#191]https://github.com/adobe/xmp-toolkit-rs/pull/191)
* [IGNORE] Fix a typo in API documentation ([#190]https://github.com/adobe/xmp-toolkit-rs/pull/190)

## 1.7.0
_15 January 2024_

* (MINOR) Force minor release upgrade for MSRV and C++ Toolkit changes ([#189]https://github.com/adobe/xmp-toolkit-rs/pull/189)
* [fix] Use links and export includes ([#187]https://github.com/adobe/xmp-toolkit-rs/pull/187)
* [MINOR] Adopt 2023.12 version of C++ XMP Toolkit ([#188]https://github.com/adobe/xmp-toolkit-rs/pull/188)

## 1.6.0
_14 November 2023_

* (MINOR) Bump MSRV to 1.67 ([#182]https://github.com/adobe/xmp-toolkit-rs/pull/182)

## 1.5.0
_16 October 2023_

* Use new Mac ARM runner in CI builds ([#180]https://github.com/adobe/xmp-toolkit-rs/pull/180)
* (MINOR) Bump MSRV to 1.66.0 ([#179]https://github.com/adobe/xmp-toolkit-rs/pull/179)
* (MINOR) Update num_enum requirement from 0.6.0 to 0.7.0 ([#178]https://github.com/adobe/xmp-toolkit-rs/pull/178)

## 1.4.0
_09 June 2023_

* (MINOR) Bump MSRV to 1.64.0 ([#176]https://github.com/adobe/xmp-toolkit-rs/pull/176)

## 1.3.0
_10 April 2023_

* Fix #135: `XmpMeta::from_str_with_options` returns empty data model if no `xmp_meta` wrapper exists ([#174]https://github.com/adobe/xmp-toolkit-rs/pull/174)
* (MINOR) Update to Rust 2021 edition ([#173]https://github.com/adobe/xmp-toolkit-rs/pull/173)
* Update num_enum requirement from 0.5.7 to 0.6.0 ([#169]https://github.com/adobe/xmp-toolkit-rs/pull/169)

## 1.2.1
_27 March 2023_

* README update for `crt_static` crate feature ([#167]https://github.com/adobe/xmp-toolkit-rs/pull/167)
* Added option for static crt using MT flag. ([#166]https://github.com/adobe/xmp-toolkit-rs/pull/166)
* Minor updates to documentation and doc links ([#168]https://github.com/adobe/xmp-toolkit-rs/pull/168)

## 1.2.0
_18 March 2023_

* (MINOR) Add crate feature to convert XmpDateTime to/from chrono DateTime<FixedOffset> ([#165]https://github.com/adobe/xmp-toolkit-rs/pull/165)

## 1.1.0
_10 March 2023_

* (MINOR) Add new `xmp_gps` module to help with Exif -> decimal conversions ([#163]https://github.com/adobe/xmp-toolkit-rs/pull/163)
* Require fs_extra 1.3 or newer ([#164]https://github.com/adobe/xmp-toolkit-rs/pull/164)

## 1.0.3
_07 March 2023_

* Officially support aarch64 on Linux ([#162]https://github.com/adobe/xmp-toolkit-rs/pull/162)
* CI: actions-rs/toolchain is no longer maintained; replace with dtolnay/rust-toolchain ([#161]https://github.com/adobe/xmp-toolkit-rs/pull/161)
* Fix aarch64 compilation issues ([#159]https://github.com/adobe/xmp-toolkit-rs/pull/159)

## 1.0.2
_09 February 2023_

* Implement Send for XmpMeta ([#158]https://github.com/adobe/xmp-toolkit-rs/pull/158)

## 1.0.1
_31 January 2023_

* Add a note to README stating that only MSVC build chain is supported currently on Windows
* Don't call exit(1) if unable to initialize C++ XMP Toolkit ([#156]https://github.com/adobe/xmp-toolkit-rs/pull/156)

## 1.0.0
_19 December 2022_

* (MAJOR) Prepare for stable API (1.0) release ([#151]https://github.com/adobe/xmp-toolkit-rs/pull/151)
* Fix new Clippy warning in Rust 1.66 ([#154]https://github.com/adobe/xmp-toolkit-rs/pull/154)

## 0.7.6
_06 November 2022_

* Review API documentation ([#153]https://github.com/adobe/xmp-toolkit-rs/pull/153)
* Add `XmpMeta::sort` ([#152]https://github.com/adobe/xmp-toolkit-rs/pull/152)

## 0.7.5
_06 November 2022_

* Add reference to API stabilization PR
* New README; propose 1.0 release candidate status
* Port XMP_CoreCoverage.cpp test suite ([#108]https://github.com/adobe/xmp-toolkit-rs/pull/108)
* Add `XmpDateTime::convert_to_local_time` and `XmpDateTime::convert_to_utc` ([#149]https://github.com/adobe/xmp-toolkit-rs/pull/149)
* Add `XmpDateTime::set_local_time_zone` ([#148]https://github.com/adobe/xmp-toolkit-rs/pull/148)
* Add `XmpMeta::compose_field_selector` ([#147]https://github.com/adobe/xmp-toolkit-rs/pull/147)
* Add `XmpMeta::compose_lang_selector` ([#146]https://github.com/adobe/xmp-toolkit-rs/pull/146)

## 0.7.4
_04 November 2022_

* Add APIs to allow iteration over the XMP data model ([#141]https://github.com/adobe/xmp-toolkit-rs/pull/141)

## 0.7.3
_03 November 2022_

* Fix misplaced reference to WXMPIterator.cpp ([#139]https://github.com/adobe/xmp-toolkit-rs/pull/139)
* If property value is empty string, pass it to C++ toolkit as NULL ([#138]https://github.com/adobe/xmp-toolkit-rs/pull/138)
* Replace `XmpMeta::from_str_requiring_xmp_meta` with `XmpMeta::from_str_with_options` ([#137]https://github.com/adobe/xmp-toolkit-rs/pull/137)
* Add `XmpMeta::from_str_requiring_xmp_meta` ([#136]https://github.com/adobe/xmp-toolkit-rs/pull/136)

## 0.7.2
_01 November 2022_

* Add `XmpMeta::set_localized_text` ([#133]https://github.com/adobe/xmp-toolkit-rs/pull/133)
* Add `XmpMeta::delee_qualifier` ([#132]https://github.com/adobe/xmp-toolkit-rs/pull/132)
* Add `XmpMeta::delete_struct_field` ([#131]https://github.com/adobe/xmp-toolkit-rs/pull/131)
* Add `XmpMeta::delete_array_item` ([#130]https://github.com/adobe/xmp-toolkit-rs/pull/130)
* Add `XmpMeta::contains_qualifier` ([#129]https://github.com/adobe/xmp-toolkit-rs/pull/129)
* Add `XmpMeta::qualifier` ([#128]https://github.com/adobe/xmp-toolkit-rs/pull/128)
* Allow `XmpMeta::array_item` to accept `XmpMeta::LAST_ITEM` ([#127]https://github.com/adobe/xmp-toolkit-rs/pull/127)
* Add `XmpMeta::array_item` ([#126]https://github.com/adobe/xmp-toolkit-rs/pull/126)
* Add `XmpMeta::delete_property` ([#125]https://github.com/adobe/xmp-toolkit-rs/pull/125)
* Add `XmpMeta::set_qualifier` ([#124]https://github.com/adobe/xmp-toolkit-rs/pull/124)
* Add `XmpMeta::compose_qualifier_path` ([#123]https://github.com/adobe/xmp-toolkit-rs/pull/123)
* Add `XmpMeta::array_len` ([#122]https://github.com/adobe/xmp-toolkit-rs/pull/122)
* Add `XmpMeta::set_array_item` ([#121]https://github.com/adobe/xmp-toolkit-rs/pull/121)
* Implement `Display` for `XmpMeta` ([#120]https://github.com/adobe/xmp-toolkit-rs/pull/120)
* Add `XmpMeta::compose_array_item_path` ([#119]https://github.com/adobe/xmp-toolkit-rs/pull/119)
* Add `XmpMeta::set_struct_field` ([#118]https://github.com/adobe/xmp-toolkit-rs/pull/118)
* Add `XmpMeta::append_array_item` ([#117]https://github.com/adobe/xmp-toolkit-rs/pull/117)
* Add `XmpMeta::namespace_prefix` and `XmpMeta::namespace_uri` accessors ([#116]https://github.com/adobe/xmp-toolkit-rs/pull/116)

## 0.7.1
_24 October 2022_

* Implement `Clone` for `XmpMeta` ([#114]https://github.com/adobe/xmp-toolkit-rs/pull/114)
* Implement `Default` for `XmpMeta` ([#113]https://github.com/adobe/xmp-toolkit-rs/pull/113)
* Add `XmpMeta::name` and `XmpMeta::set_name` accessors ([#112]https://github.com/adobe/xmp-toolkit-rs/pull/112)
* Impl `Debug` for `XmpMeta` ([#111]https://github.com/adobe/xmp-toolkit-rs/pull/111)
* Fix crash if `XmpMeta::debug_dump_namespaces` was the first call into XMP Toolkit ([#110]https://github.com/adobe/xmp-toolkit-rs/pull/110)
* Add `XmpMeta::debug_dump_namespaces()` ([#109]https://github.com/adobe/xmp-toolkit-rs/pull/109)

## 0.7.0
_23 October 2022_

* Add example (port of MyReadXMP app) ([#82]https://github.com/adobe/xmp-toolkit-rs/pull/82)
* Add `XmpMeta::struct_field` ([#107]https://github.com/adobe/xmp-toolkit-rs/pull/107)
* Add `XmpMeta::contains_struct_field` ([#106]https://github.com/adobe/xmp-toolkit-rs/pull/106)
* Add `XmpMeta::compose_struct_field_path` ([#105]https://github.com/adobe/xmp-toolkit-rs/pull/105)
* Fix memory leaks when returning strings from C++ to Rust ([#104]https://github.com/adobe/xmp-toolkit-rs/pull/104)
* Implement `Display` for `XmpDateTime` ([#103]https://github.com/adobe/xmp-toolkit-rs/pull/103)
* Add `XmpMeta::localized_text` accessor ([#99]https://github.com/adobe/xmp-toolkit-rs/pull/99)
* Refactor `XmpMeta` documentation for property accessors ([#98]https://github.com/adobe/xmp-toolkit-rs/pull/98)
* (MINOR) Rename `XmpMeta::does_property_exist` to `XmpMeta::contains_property` ([#97]https://github.com/adobe/xmp-toolkit-rs/pull/97)
* (MINOR) Rename `XmpMeta.array_property` to `.property_array` ([#96]https://github.com/adobe/xmp-toolkit-rs/pull/96)
* Add typed property setters ([#95]https://github.com/adobe/xmp-toolkit-rs/pull/95)
* Add typed property getters ([#94]https://github.com/adobe/xmp-toolkit-rs/pull/94)
* Remove `Eq` trait bound on `XmpValue<T>` ([#93]https://github.com/adobe/xmp-toolkit-rs/pull/93)

## 0.6.0
_20 October 2022_

* (MINOR) `XmpMeta::set_property` can now pass `XmpValue` options ([#88]https://github.com/adobe/xmp-toolkit-rs/pull/88)
* Add options for setting flags on `XmpValue` ([#87]https://github.com/adobe/xmp-toolkit-rs/pull/87)
* (MINOR) Rework `XmpDateTime` as a non-opaque type ([#86]https://github.com/adobe/xmp-toolkit-rs/pull/86)
* (MINOR) Refactor how property values are returned from accessor functions ([#81]https://github.com/adobe/xmp-toolkit-rs/pull/81)
* Add new API `XmpIter::array_property` ([#78]https://github.com/adobe/xmp-toolkit-rs/pull/78)
* Add new API function `XmpMeta::from_str` ([#77]https://github.com/adobe/xmp-toolkit-rs/pull/77)
* (MINOR) Bump MSRV to 1.56 ([#75]https://github.com/adobe/xmp-toolkit-rs/pull/75)

## 0.5.3
_20 July 2022_

* Remove restriction on Unicode license; allows unicode-ident version to float ([#73]https://github.com/adobe/xmp-toolkit-rs/pull/73)

## 0.5.2
_17 July 2022_

* Deny panic in production code ([#70]https://github.com/adobe/xmp-toolkit-rs/pull/70)
* Introduce new error type `XmpErrorType::NulInRustString` ([#68]https://github.com/adobe/xmp-toolkit-rs/pull/68)
* Fix unicode-ident to 1.0.1 until review of additional license ([#69]https://github.com/adobe/xmp-toolkit-rs/pull/69)

## 0.5.1
_14 July 2022_

* Fix broken documentation build ([#67]https://github.com/adobe/xmp-toolkit-rs/pull/67)

## 0.5.0
_12 July 2022_

* (MINOR) Pass XMP errors from C++ to Rust ([#60]https://github.com/adobe/xmp-toolkit-rs/pull/60)
* Refactor test code so it can be excluded from code coverage ([#66]https://github.com/adobe/xmp-toolkit-rs/pull/66)
* Require code coverage to upload on all supported platforms ([#63]https://github.com/adobe/xmp-toolkit-rs/pull/63)
* (MINOR) Hide access to FFI functions ([#61]https://github.com/adobe/xmp-toolkit-rs/pull/61)

## 0.4.0
_07 July 2022_

* Fixed build failures on ARM Linux platforms ([#57]https://github.com/adobe/xmp-toolkit-rs/pull/57)
* Silence C++ compiler warnings on Mac ([#55]https://github.com/adobe/xmp-toolkit-rs/pull/55)
* Rework `OpenFileOptions` as an opaque type ([#54]https://github.com/adobe/xmp-toolkit-rs/pull/54)
* (MINOR) New module for XMP namespace constants ([#53]https://github.com/adobe/xmp-toolkit-rs/pull/53)
* Require API docs for all public API surfaces ([#51]https://github.com/adobe/xmp-toolkit-rs/pull/51)
* (MINOR) Bump MSRV to 1.54 ([#52]https://github.com/adobe/xmp-toolkit-rs/pull/52)
* Improve docs for `XmpMeta` ([#50]https://github.com/adobe/xmp-toolkit-rs/pull/50)
* Improve docs for `XmpFile` ([#49]https://github.com/adobe/xmp-toolkit-rs/pull/49)
* Configure dependabot to watch dependencies brought in via git submodules ([#48]https://github.com/adobe/xmp-toolkit-rs/pull/48)
* Add `impl std::error::Error` for `XmpFileError` ([#47]https://github.com/adobe/xmp-toolkit-rs/pull/47)

## 0.3.8
_22 June 2022_

* Add convenience function for reading XMP from a file ([#46]https://github.com/adobe/xmp-toolkit-rs/pull/46)
* Update XMP Toolkit to June 2022 release ([#42]https://github.com/adobe/xmp-toolkit-rs/pull/42)
* Update libexpat to v2.4.8 ([#41]https://github.com/adobe/xmp-toolkit-rs/pull/41)

## 0.3.7
_18 June 2022_

* Fix publish workflow to include git submodules

## 0.3.6 (YANKED because the release was incomplete)
_17 June 2022_

* Use cargo publish --no-verify because repo contents must be modified during build

## 0.3.5 (NOT RELEASED on crates.io due to bug in publish workflow)
_17 June 2022_

* Improve build infrastructure ([#44]https://github.com/adobe/xmp-toolkit-rs/pull/44)

## 0.3.4
_28 April 2022_

* Fix a subtle bug in converting to modern function prototypes.

## 0.3.3
_28 April 2022_

* Update zlib to v1.2.12. (#38)
* Add Rust 1.60.0 to CI build matrix.
* Remove Rust 1.59.0 from CI build matrix.

## 0.3.2
_08 March 2022_

* Update XMP Toolkit to February 2022 release. (#35)
* Update libexpat to v2.4.6. (#36)
* Add Rust 1.59.0 to CI build matrix.
* Remove Rust 1.58.0 from CI build matrix.

## 0.3.1
_28 January 2022_

* Implement `Display` trait in `XmpFileError` enum. (#32)
* Fix Clippy warning about `assert_eq!` with a bool value. (#33)
* Add Rust 1.58.0 to CI build matrix. (#30)
* Remove Rust 1.56.0 from CI build matrix.

## 0.3.0
_27 October 2021_

* Add Rust 1.56.0 to CI build matrix. (#29)
* Remove Rust 1.53.0 from CI build matrix.
* Update XMP Toolkit submodule to October 2021 Release. (#28)

## 0.2.0
_12 October 2021_

* Update XMP Toolkit submodule to August 2021 Release.
* Bumped MSRV to 1.46.0 due to new dependency from bitflags crate.
* Add Rust 1.55.0 to CI build matrix.
* Remove Rust 1.53.0 from CI build matrix.
* Update version references in Cargo.toml.

## 0.1.8
_23 June 2021_

* Include libexpat via git submodule and update to version 2.4.1. (#18)
* Add Rust 1.53.0 to CI build matrix.
* Remove Rust 1.51.0 from CI build matrix.

## 0.1.7
_29 March 2021_

* Add Rust 1.51.0 to CI build matrix.
* Remove Rust 1.48.0 from CI build matrix.

## 0.1.6
_25 November 2020_

* Handle exceptions on OpenFile. (#13)
* Add Rust 1.48.0 to CI build matrix.
* Remove Rust 1.47.0 from CI build matrix.

## 0.1.5
_12 October 2020_

* Add support for building on Windows.
* Add Rust 1.47.0 to CI build matrix.
* Remove Rust 1.46.0 from CI build matrix.

## 0.1.4
_04 September 2020_

* Add Mac OS builds to CI build matrix.
* Add Rust 1.46.0 to CI build matrix.

## 0.1.3
_02 September 2020_

* Improve API documentation.

## 0.1.2
_01 September 2020_

* Fix another build issue that occurs only within the docs.rs environment.

## 0.1.1
_01 September 2020_

* Fix build issue that occurs within the docs.rs environment.

## 0.1.0
_01 September 2020_

* **Initial public release.**
  * Supports Rust 1.44.0 and higher.
  * Includes the 24 July 2020 release of C++ XMP Toolkit SDK.