Skip to content

4.0.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@mickael-menu mickael-menu released this 14 Aug 17:42
· 1 commit to develop since this release
c7e573c

Warning

Minor releases (a.B.c) of the Readium toolkit may now include minor breaking changes, such as dependency upgrades or small API modifications. Major version numbers are reserved for significant architectural changes.

Documentation

Changelog

Added

Shared

  • Content elements now expose accessibleName, accessibleDescription and extendedDescription attributes, computed following a subset of the W3C accessible name computation and Best Practices for Implementing Extended Descriptions in EPUB.
  • The HTML content iterator now emits inline <svg> elements as SVGContentElement, with a caption from the enclosing figure's figcaption.
  • AudioContentElement and VideoContentElement now expose a caption property, filled from the enclosing figure's figcaption like images and SVGs already were.

Changed

  • The toolkit is migrated to Swift 6 with strict concurrency checking. All packages compile in the Swift 6 language mode. See the migration guide.
    • The toolkit adopts the NonisolatedNonsendingByDefault (SE-0461), InferIsolatedConformances and MemberImportVisibility upcoming Swift features.

Shared

  • OPDS models (Feed, Group, Facet, OpdsMetadata) are now structs with value semantics.
  • Publication, Resource, Container and related types are now Sendable. Custom implementations of Resource, Container, HTTPClient or PublicationService must be Sendable too.
  • Resource.stream() now cooperates with task cancellation: the built-in resources fail with ReadError.cancelled when the surrounding task is cancelled, and custom implementations are expected to do the same.
  • ImageContentElement.caption and SVGContentElement.caption are now strictly the text of the enclosing figure's figcaption. Other sources (such as alt) contribute to accessibleName instead.
  • Audio and video content elements now expose accessibility attributes, so the text-to-speech may start speaking their labels.

Navigator

  • The Navigator and VisualNavigator protocols and their delegates are now isolated to the main actor.

LCP

  • LCPService.init now requires an explicit deviceName parameter. We recommend passing UIDevice.current.name. See the migration guide.
  • LCPDialogAuthentication no longer takes a sender view controller. It now presents its passphrase dialog through a new LCPDialogAuthenticationDelegate that you implement and retain for the lifetime of the authentication. See the Readium LCP guide and the migration guide.

Removed

  • The deprecated ReadiumAdapterGCDWebServer and ReadiumAdapterLCPSQLite adapter packages have been removed.
  • The ReadiumInternal package has been removed. Its utilities were internal helpers and are now folded into ReadiumShared with package visibility. If you imported ReadiumInternal directly, remove the import.

What's Changed

Full Changelog: 3.11.0...4.0.0-alpha.1