Skip to content

Releases: mac4DSTEM/FormatoKit

FormatoKit 0.11.0

Choose a tag to compare

@Paullo9 Paullo9 released this 22 Oct 12:01

Full Changelog: 0.10.0...0.11.0

FormatoKit 0.10.0

Choose a tag to compare

@Paullo9 Paullo9 released this 22 Oct 10:47

What's Changed

  • Fixture README and DocC site (Paul merges) by @Paullo9 in #3

Full Changelog: 0.9.1...0.10.0

FormatoKit 0.9.1

Choose a tag to compare

@Paullo9 Paullo9 released this 21 Oct 17:11

Full Changelog: 0.9.0...0.9.1

FormatoKit 0.9.0

Choose a tag to compare

@Paullo9 Paullo9 released this 21 Oct 15:59

Full Changelog: 0.8.0...0.9.0

FormatoKit 0.8.0

Choose a tag to compare

@Paullo9 Paullo9 released this 21 Oct 12:42

Full Changelog: 0.7.0...0.8.0

FormatoKit 0.7.0

Choose a tag to compare

@Paullo9 Paullo9 released this 21 Oct 07:24

Full Changelog: 0.6.0...0.7.0

FormatoKit 0.6.0

Choose a tag to compare

@Paullo9 Paullo9 released this 20 Oct 21:03

Full Changelog: 0.5.0...0.6.0

0.5.0

Choose a tag to compare

@Paullo9 Paullo9 released this 20 Oct 17:19

0.5.0 (unreleased)

  • Add HDF5Reader (FormatoHDF5): low-level read of any HDF5 file through the shared loader and HDF5Serial: exists, kind(of:), children(of:), attributeNames(of:), attribute(_:of:), datasetInfo, readDataset (hyperslab, as FormatoArray), readStrings. Compound, enum, array and vlen data, references, float16 datasets and attributes of rank 2 or more are refused by name. Pinned exact to h5py 3.16.0 (tools/hdf5-append/generate.py).
  • Add HDF5AppendWriter.append(to:mode:body:) with HDF5WriteSession (createGroup, writeDataset with chunk and replace, setAttribute, deleteLink, exists). Default .atomicCopy copies the file, writes the copy and publishes it over the checked original (any failure leaves the original byte-identical); .inPlace is not atomic. Unrelated content is unchanged; h5py reads the appended files equal to base plus operations. No compression filters, resizing or space reclamation. Note: .inPlace replace: true unlinks the old dataset before the new one is written.
  • Add TIFFAppImage (FormatoTIFF): the first consumer's reading of one 2D TIFF as a Float32 calibrated image, the named option beside TIFFSignals. Calibration order FEI SEM (PixelWidth on x, where tifffile swaps non-square axes), Velox, Digital Micrograph tags, ImageJ; BigTIFF, extra pages, stacks, compression, tiles, WhiteIsZero, palettes and unequal colour channels are refused by name. Pinned bit for bit to macTEM cb6e164's reader on 149 byte-built files. Known difference: a tag whose value lies outside the file, or of an unknown type, throws truncated here where the consumer ignores it.
  • HDF5FileError gains notFound, wrongKind, alreadyExists, invalidPath, unsupportedType, limitExceeded, invalidArgument.

Migration. Source-breaking only for an exhaustive switch over HDF5FileError: add a default case. Otherwise additive. mac4DSTEM can move H5Reader and the sidecar append onto HDF5Reader / HDF5AppendWriter; macTEM's TIFFImageReader becomes TIFFAppImage.read. Float16 attributes are read; float16 datasets are not.

0.4.0

Choose a tag to compare

@Paullo9 Paullo9 released this 20 Oct 16:09

libhdf5 (HDF5 2.1.1 with libsz and libaec) is now three binary targets, dynamic-framework XCFrameworks, instead of a bundled resource folder. An app
that embeds the kit gets them embedded and signed with its own Developer ID by Xcode at archive time; the resource copy stayed ad-hoc signed and failed
Hardened Runtime in a release build. The binaries are the same vendored arm64 files (sha256 in NOTICE), with only install names and the load commands
between them rewritten. The readers still dlopen libhdf5 and the search order is unchanged.

  • Add binary targets FormatoLibHDF5, FormatoLibSZ, FormatoLibAEC (FormatoHDF5 depends on them, macOS only). Release assets: the three
    <Name>.xcframework.zip files of tools/xcframework/build.sh, attached to the release 0.4.0; their checksums are in Package.swift (written by a release run of the script). A consumer that links with -dead_strip_dylibs loses the framework's load command; bundledLibraryPath then falls back to the host's Frameworks folder.
  • FormatoHDF5Library.bundledLibraryPath returns the binary inside FormatoLibHDF5.framework (the loaded image, else the host's Frameworks folder
    or the folder of the executable); nil when the framework is not found.
  • Remove the Resources/hdf5 resource (and the FormatoKit_FormatoHDF5 resource bundle). The vendored files moved to tools/xcframework/vendored/.
  • FORMATO_LOCAL_XCFRAMEWORKS=1 (set by tools/test.sh and the consumer check) points the binary targets at dist/xcframeworks, built by tools/xcframework/build.sh.

Migration. An app that embeds FormatoKit: link FormatoHDF5 (or FormatoEMD, which depends on it) as before; Xcode now also embeds
FormatoLibHDF5.framework, FormatoLibSZ.framework and FormatoLibAEC.framework in Contents/Frameworks and signs them with the app's identity (check
that their Embed setting is "Embed & Sign" and remove any build phase that copies FormatoKit_FormatoHDF5.bundle). An app that ships its own
Frameworks/libhdf5.dylib still has it found first. A package consumer is unchanged except that resolving the package downloads the three zips from the
release; nothing in the public API changed apart from the path bundledLibraryPath returns (it no longer ends in hdf5/libhdf5.dylib). The libraries
are macOS-only: on iOS the package builds and a Velox read refuses, as before.