🎉 Announcing v0.11.2-beta: Maximum HDF5 Compatibility Achieved! #3
kolkov
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hey HDF5 Go community! 👋
We're excited to announce v0.11.2-beta - a major milestone in our journey to build the best pure Go HDF5 library. This release is all about compatibility: your files can now be read by tools from 1998 to 2025!
🌟 The Big News: 27 Years of Compatibility
With this release, files created by our library work with:
Why does this matter?
Many scientific instruments, legacy analysis tools, and archived workflows still use older HDF5 versions. With v0.11.2-beta, you can generate files that work everywhere - from cutting-edge research labs to 20-year-old equipment still running critical experiments.
🚀 What's New
Superblock v0 Write Support
We've implemented the original HDF5 file format from 1998! This 96-byte superblock format uses the Symbol Table Entry structure and caches root group addresses directly in the superblock.
Technical highlights:
Object Header v1 Write Support
Object Header v1 is the fixed-size header format used in legacy HDF5. Unlike the modern v2 format (4-byte minimum), v1 uses:
Fun fact: We achieved byte-level exact match with the official HDF5 C library! Our files are identical at the binary level.
💡 When Should You Use v0 Format?
Great question! Here are the use cases:
1. Archive Files (Long-term Preservation)
If you're creating files that need to survive decades:
Why? The v0 format has been stable since 1998. It's the safest bet for long-term data preservation.
2. Legacy Scientific Instruments
Many research facilities have equipment that only supports older HDF5:
These often can't be upgraded but still need new data files.
3. Cross-Platform Compatibility
Need your files to work on every HDF5 implementation ever made? Use v0:
Your files will work with:
4. When NOT to Use v0
For modern workflows, stick with the default (v2):
Only use v0 when you need maximum compatibility.
🔧 Technical Deep Dive
For those who love the details (like me!), here's what we implemented:
The Size Calculation Mystery
This was tricky! The Object Header v1 "Object Header Size" field is not the total object size. It's specifically:
Message data is NOT included! This took hours of binary comparison with official files to figure out. Now we match the C library perfectly.
Sequential Write Order
Windows has interesting behavior with sparse files. We discovered that writing structures in ascending address order prevents sparse file holes:
Binary Validation
We validate EVERYTHING with h5dump:
Every generated file passes official HDF5 validation.
📊 Quality Metrics
We take code quality seriously:
What We Test
🎯 Format Support Matrix
Here's where we stand now:
🏃 Quick Start
Want to try it? It's one command:
Example: Create Legacy-Compatible File
Verify it works:
🛠️ What We Fixed
This release includes important fixes:
1. Test Artifacts Removed
testdata/test_attr_int32.h5from git (generated by tests)testdata/test_*.h5pattern to.gitignore2. Documentation Updated
3. No More Python Dependencies
🧹 Code Quality Improvements
We're obsessive about code quality:
Safe Type Conversions
All type conversions now have explicit validation and nolint comments:
Version Dispatch Pattern
Clean abstraction for multi-version support:
Comprehensive Tests
📚 Resources
Documentation
Examples
Check out examples/ for working code:
API Reference
This is a beta release. Current limitations:
Not Yet Implemented
Dense storage read-modify-write - Can't add to existing dense storage after file reopen
Attribute modification - Write-once only (no updates/deletes)
Some h5dump incompatibilities - A few edge cases still being fixed
Production Readiness
🎯 What's Next: v0.11.3-beta
Already planning the next sprint! Priorities:
1. Dense Storage Read-Modify-Write
Enable adding to existing dense groups/attributes after reopening:
2. Attribute Modification/Deletion
3. Links Support
4. Continued h5dump Compatibility
Working toward 100% compatibility with official tools.
See our ROADMAP for the complete timeline to v1.0.0!
🙏 Community Thanks
This project wouldn't exist without:
Special Recognition
Shout out to everyone who:
You make this project better! 🎉
💬 Get Involved
Found a Bug?
Have a Question?
Want to Contribute?
Stay Updated
📈 Project Stats
Some fun numbers:
🔮 Looking Ahead
Path to v1.0.0
v0.11.0-RC (Q1 2026) is the key milestone:
After v1.0.0
Extended features planned:
🎊 Closing Thoughts
This release is a big deal for us. Achieving 27 years of compatibility means your Go applications can now work with the entire HDF5 ecosystem - past, present, and future.
Whether you're:
Your files will work everywhere. That's the power of pure Go + full HDF5 compatibility.
Thanks for being part of this journey! 🚀
Try it today:
Full Changelog: v0.11.1-beta...v0.11.2-beta
Questions? Comments? Found a bug? We're here to help!
Pure Go • No CGo • Maximum Compatibility ❤️
Beta Was this translation helpful? Give feedback.
All reactions