Repository navigation
Releases: mac4DSTEM/FormatoKit
Release list
FormatoKit 0.11.0
Full Changelog: 0.10.0...0.11.0
FormatoKit 0.10.0
What's Changed
Full Changelog: 0.9.1...0.10.0
FormatoKit 0.9.1
FormatoKit 0.9.0
FormatoKit 0.8.0
FormatoKit 0.7.0
FormatoKit 0.6.0
0.5.0
0.5.0 (unreleased)
- Add
HDF5Reader(FormatoHDF5): low-level read of any HDF5 file through the shared loader andHDF5Serial:exists,kind(of:),children(of:),attributeNames(of:),attribute(_:of:),datasetInfo,readDataset(hyperslab, asFormatoArray),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:)withHDF5WriteSession(createGroup,writeDatasetwithchunkandreplace,setAttribute,deleteLink,exists). Default.atomicCopycopies the file, writes the copy and publishes it over the checked original (any failure leaves the original byte-identical);.inPlaceis not atomic. Unrelated content is unchanged; h5py reads the appended files equal to base plus operations. No compression filters, resizing or space reclamation. Note:.inPlacereplace: trueunlinks 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 besideTIFFSignals. 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, throwstruncatedhere where the consumer ignores it. HDF5FileErrorgainsnotFound,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
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(FormatoHDF5depends on them, macOS only). Release assets: the three
<Name>.xcframework.zipfiles oftools/xcframework/build.sh, attached to the release0.4.0; their checksums are inPackage.swift(written by a release run of the script). A consumer that links with-dead_strip_dylibsloses the framework's load command;bundledLibraryPaththen falls back to the host'sFrameworksfolder. FormatoHDF5Library.bundledLibraryPathreturns the binary insideFormatoLibHDF5.framework(the loaded image, else the host'sFrameworksfolder
or the folder of the executable); nil when the framework is not found.- Remove the
Resources/hdf5resource (and theFormatoKit_FormatoHDF5resource bundle). The vendored files moved totools/xcframework/vendored/. FORMATO_LOCAL_XCFRAMEWORKS=1(set bytools/test.shand the consumer check) points the binary targets atdist/xcframeworks, built bytools/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.