Release notes

July 30, 2026 ยท View on GitHub

Refer to the CHANGELOG for detailed changes derived from Git commit history.

Version 0.88.0

Removal of deprecated APIs

Release 0.88.0 removes several long-deprecated APIs. These are breaking changes; update your code before upgrading.

Rust API

The following Ingredient methods and types have been removed:

RemovedUse instead
Ingredient::from_file(path)Open the file and call Ingredient::from_stream(format, &mut stream)
Ingredient::from_file_with_folder(path, folder)Ingredient::from_stream(format, &mut stream)
Ingredient::from_file_with_options(path, options)Ingredient::from_stream(format, &mut stream) + builder setter methods
Ingredient::from_memory(format, bytes)Ingredient::from_stream(format, &mut std::io::Cursor::new(bytes))
Ingredient::set_memory_thumbnail(format, bytes)Ingredient::set_thumbnail(format, bytes)
IngredientOptions, DefaultOptionsUse builder setter methods directly on Ingredient

C FFI

The following C API functions have been removed:

RemovedUse instead
c2pa_read_filec2pa_reader_from_context()
c2pa_read_ingredient_filec2pa_reader_from_context()
c2pa_sign_filec2pa_builder_from_context()

Version 0.79.4

Deprecation of thread-local settings APIs

Release 0.79.4 deprecates all legacy thread-local configuration APIs in favor of explicit Context-based equivalents. These are not breaking changes: All deprecated methods retain their original behavior and continue to work, but will produce compiler warnings. Note that some of these deprecated methods were subsequently removed in Version 0.88.0.

Rust API

Builder::default() and Reader::default() are now the idiomatic way to construct with default settings, replacing the more verbose Builder::from_context(Context::new()) and Reader::from_context(Context::new()).

The following methods are now deprecated:

DeprecatedUse instead
Builder::new()Builder::default()
Builder::from_json(json)Builder::default().with_definition(json)
Builder::from_archive(stream)Builder::default().with_archive(stream)
Reader::from_stream(format, stream)Reader::default().with_stream(format, stream)
Reader::from_file(path)Reader::default().with_file(path)
Reader::from_manifest_data_and_stream(...)Reader::default().with_manifest_data_and_stream(...)
Reader::from_fragmented_files(path, fragments)Reader::default().with_fragmented_files(path, fragments)
Settings::from_toml(toml)Settings::new().with_toml(toml)
Settings::from_string(str, format)Settings::new().with_json(str) or Settings::new().with_toml(str)
Settings::signer()Configure a signer on a Context and pass it to Builder::from_context

To use custom settings, create a Context with Context::new().with_settings(...) and pass it to Builder::from_context(context) or Reader::from_context(context).

C FFI

The following C API functions are deprecated:

DeprecatedUse instead
c2pa_load_settingsc2pa_settings_new() + c2pa_context_builder_set_settings()
c2pa_reader_from_streamc2pa_reader_from_context()
c2pa_reader_from_filec2pa_reader_from_context()
c2pa_reader_from_manifest_data_and_streamc2pa_reader_from_context() + c2pa_reader_with_manifest_data_and_stream()
c2pa_builder_from_jsonc2pa_builder_from_context() + c2pa_builder_set_definition()
c2pa_builder_from_archivec2pa_builder_from_context() + c2pa_builder_with_archive()
c2pa_signer_from_settingsc2pa_context_builder_set_signer()
c2pa_read_file, c2pa_read_ingredient_file, c2pa_sign_fileContext-based equivalents (removed in Version 0.88.0)
c2pa_reader_free, c2pa_builder_free, c2pa_string_free, c2pa_manifest_bytes_free, c2pa_signer_free, c2pa_release_string, c2pa_signature_freec2pa_free()

C and C++ headers now emit compiler deprecation warnings when deprecated functions are called.

Version 0.77.0

Embeddable API

Release 0.77.0 adds a new embeddable manifest API with Context/Settings, CAWG, and BMFF.v3 support. For details, see Embeddable signing API.

API changes for C2PA 2.2

Reader has some new methods:

  • validation_state() returns ValidationState, which can be Invalid, Valid, or Trusted. Use this method instead of checking for validation_status() = None.
  • validation_results() returns ValidationResults, which is a more complete form of ValidationStatus and returns success, informational, and failure codes for the active manifest and ingredients. ValidationStatus is deprecated in favor of ValidationResults.

Ingredient now supports a validation_results() method and a validation_results field.

An AssetType assertion is now supported.

C2PA v2 claims

Note

The library now supports C2PA v2 claims by default. V2 claims have many new checks and status codes.

Additionally:

  • The title() and format() methods of both Manifest and Ingredient objects now return an Option<String> because in v2 claims, title is optional and format does not exist.
  • The first action must be c2pa.created or c2pa.opened (which requires an ingredient).

Warning

Implementations should not generate deprecated v1 claims. If needed, though, you can generate v1 claims by setting the Builder manifest definition claim_version field to 1.