@@ -7,6 +7,118 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88---
99
10+ ## [ v0.13.0] - 2025-11-13
11+
12+ ### 🚀 HDF5 2.0.0 Compatibility Release
13+
14+ ** Status** : Stable Release
15+ ** Focus** : HDF5 2.0.0 format compatibility, security hardening, AI/ML datatype support
16+ ** Quality** : 86.1% coverage, 0 linter issues, production-ready
17+
18+ ### 🔒 Security
19+
20+ #### CVE Fixes (TASK-023)
21+ - ** CVE-2025 -7067** (HIGH 7.8): Buffer overflow in chunk reading
22+ - Added ` SafeMultiply() ` for overflow-safe multiplication
23+ - Created ` CalculateChunkSize() ` with overflow checking
24+ - Applied validation in dataset_reader.go
25+ - ** CVE-2025 -6269** (MEDIUM 6.5): Heap overflow in attribute reading
26+ - Overflow checks in ` ReadValue() ` for all datatypes
27+ - Validates totalBytes before allocation
28+ - MaxAttributeSize limit (64MB)
29+ - ** CVE-2025 -2926** (MEDIUM 6.2): Stack overflow in string handling
30+ - MaxStringSize limit (16MB) validation
31+ - Applied to dataset_reader_strings.go and compound.go
32+ - ** CVE-2025 -44905** (MEDIUM 5.9): Integer overflow in hyperslab selection
33+ - Created ` ValidateHyperslabBounds() ` function
34+ - Added ` CalculateHyperslabElements() ` with overflow checking
35+ - MaxHyperslabElements limit (1 billion)
36+
37+ ** Files** :
38+ - ` internal/utils/overflow.go ` (NEW - 121 lines)
39+ - ` internal/utils/overflow_test.go ` (NEW - 251 lines)
40+ - ` internal/utils/security_test.go ` (NEW - 501 lines)
41+ - Updated 7 core files with security validations
42+
43+ ** Quality** : 39 security test cases, all passing
44+
45+ ### ✨ Added
46+
47+ #### HDF5 Format v4 Superblock Support (TASK-024)
48+ - ** Superblock Version 4** parsing (52-byte structure)
49+ - ** Checksum Validation** - CRC32, Fletcher32, none
50+ - ** Mandatory Extension Validation** - Format v4 compliance
51+ - ** Backward Compatibility** - Full support for v0, v2, v3 formats
52+
53+ ** Implementation** :
54+ - Extended Superblock struct with v4 fields
55+ - ` validateSuperblockChecksum() ` with 3 algorithms
56+ - ` computeFletcher32() ` per HDF5 specification
57+ - Mock-based testing (real v4 files when HDF5 2.0.0 becomes available)
58+
59+ ** Files** : ` superblock.go ` (+103 lines), ` superblock_test.go ` (+285 lines)
60+
61+ #### 64-bit Chunk Dimensions Support (TASK-025)
62+ - ** BREAKING CHANGE** : ` DataLayoutMessage.ChunkSize ` changed from ` []uint32 ` to ` []uint64 `
63+ - Only affects code directly accessing ` internal/core ` package structures
64+ - Public API remains unchanged
65+ - ** Large Chunk Support** - Chunks larger than 4GB for scientific datasets
66+ - ** Auto-Detection** - Chunk key size from superblock version
67+ - ** Backward Compatibility** - Full support for existing files
68+
69+ ** Implementation** :
70+ - Added ` ChunkKeySize ` field (4 bytes for v0-v3, 8 bytes for v4+)
71+ - Version-based detection in ` ParseDataLayoutMessage() `
72+ - Updated all chunk processing functions to uint64
73+ - Superblock v0-v3: Read as uint32, convert to uint64
74+ - Superblock v4+: Read as uint64 directly
75+
76+ ** Files** : 12 files modified (datalayout.go, dataset_reader.go, btree_v1.go, 8 test files)
77+
78+ #### AI/ML Datatypes (TASK-026)
79+ - ** FP8 E4M3** (8-bit float, 4-bit exponent, 3-bit mantissa)
80+ - Range: ±448
81+ - Precision: ~ 1 decimal digit
82+ - Use case: ML training with high precision
83+ - ** FP8 E5M2** (8-bit float, 5-bit exponent, 2-bit mantissa)
84+ - Range: ±114688
85+ - Precision: ~ 1 decimal digit
86+ - Use case: ML inference with high dynamic range
87+ - ** bfloat16** (16-bit brain float, 8-bit exponent, 7-bit mantissa)
88+ - Range: ±3.4e38 (same as float32)
89+ - Precision: ~ 2 decimal digits
90+ - Use case: Google TPU, NVIDIA Tensor Cores, Intel AMX
91+
92+ ** Implementation** :
93+ - Full IEEE 754 compliance
94+ - Special values: zero, ±infinity, NaN, subnormal numbers
95+ - Round-to-nearest conversion (banker's rounding for bfloat16)
96+ - Fast bfloat16 conversion (bit-shift only)
97+
98+ ** Files** :
99+ - ` datatype_fp8.go ` (327 lines)
100+ - ` datatype_bfloat16.go ` (72 lines)
101+ - ` datatype_fp8_test.go ` (238 lines)
102+ - ` datatype_bfloat16_test.go ` (202 lines)
103+
104+ ** Quality** : 23 test functions, >85% coverage, IEEE 754 compliant
105+
106+ ### 🔧 Improved
107+
108+ #### Code Quality
109+ - Added justified nolint for binary format parsing complexity
110+ - Zero linter issues across 34+ linters
111+ - Security-first approach with overflow protection throughout
112+
113+ ### 📊 Metrics
114+
115+ - ** Coverage** : 86.1% (target: >70%)
116+ - ** Test Suite** : 100% pass rate (433 official HDF5 test files)
117+ - ** Linter** : 0 issues
118+ - ** Security** : 4 CVEs fixed, 39 security test cases
119+
120+ ---
121+
10122## [ v0.12.0] - 2025-11-13
11123
12124### 🎉 Production-Ready Stable Release - Feature-Complete Read/Write Support
0 commit comments