An unaffiliated implementation of Pleiades Astrophoto's open-source Extensible Image Serialization Format (XISF) file format, the native image format for their flagship editing software PixInsight. Aims for 100% support for spec version 1.0, as opposed to implementations such as libXISF or Pleiades Astrophoto's own PixInsight Class Libraries, which are written with 2D images in mind. Currently under rapid development, but all changes to the public API will be accompanied with a version update following Cargo's SemVer guidelines before being pushed to crates.io.
| xisf-rs
| libXISF
| PCL
---|:---:|:---:|:---:
Language | Rust | C++ | C++
License | MIT | GPLv3 | BSD-4-Clause-like
Monolithic Files | Decode | Encode + Decode | Encode + Decode
Distributed Files | ❌ | ❌ | ❌
N-D Images | ✅ | ❌ | ❌
Pixel Sample Formats | Scalar, Complex | Agnostic (Raw Bytes Only) | Scalar1, Complex
Image Metadata | Attributes, FITS Keywords | <Image>
5 | <Image>
, <Metadata>
, <xisf>
<Table>
Element | ❌ | ❌ | ❌
<Reference>
Element | ✅ | ❌ | ❌
Data Block Compression | ✅
zlib
, lz4
, lz4hc
✅6
zlib
, lz4
, lz4hc
, zstd
✅
zlib
, lz4
, lz4hc
zstd
support is nonstandardx86_64-unknown-linux-gnu
<Reference>
element<FITSKeyword>
element<Property>
elementsread_data
into a traitremotefs
crate? Covers (S)FTP+SCP+SMB+S3, that plus an HTTP(S) client should cover most use cases. the SMB library is GPLv3 though :(tempfile
crate. Check for changes in file size and last modified with stat
to ensure up-to-date, and make an option to re-download a specific file in DataBlock
's read functionsETag
/If-None-Match
, Last-Modified
/If-Modified-Since
and Cache-Control
headers<Property>
elements
cfitsio
for inspiration here<Property>
types (rustc_apfloat::ieee::Quad
? fixed::F128
?)
fixed::F128
supports bytemuck
, which gives it an advantageasync_compression
cratecbindgen
libXISF
is doing it, and that seems to be the implementation that's catching on in the C++ world