v1.27.3-rc3
Pre-releaseCurio v1.27.3-rc3
✨ Overview
Curio v1.27.3-rc3 continues the path to a stable v1.27.3 release with bug fixes, dependency updates, and quality-of-life improvements. The headline fix addresses a timezone-related batch timeout bug that caused precommit and commit batches to fire late on non-UTC systems. Batch evaluation has been moved from opaque SQL into tested Go functions, with a new configurable MaxBatch setting for immediate batch firing when full.
Piece CID v1/v2 interoperability improves compatibility across client implementations, and a keccak dependency swap brings back ASM-optimized performance after upstream dropped it.
⭐ Highlights
⏱️ Batch Timeout Timezone Fix & Testable Evaluation
The precommit and commit batching triggers had a timezone mismatch where CURRENT_TIMESTAMP AT TIME ZONE 'UTC' stored into TIMESTAMPTZ columns was silently shifted by the session timezone. This caused batches to take timeout + abs(tz_offset) wall-clock time to fire instead of just timeout. All three SQL trigger functions now use NOW() directly, and the batch firing evaluation has been moved from PL/pgSQL into tested Go functions with comprehensive test coverage. A new MaxBatch config option fires batches immediately when they reach capacity.
🐛 Bug Fixes
-
fix: raw size only if unseal exists - prevents raw-size correction from running on sectors without unsealed data, avoiding unnecessary errors on storage paths (#1047)
-
fix: batch timeout timezone bug and move evaluation to testable Go - fixes timezone mismatch in precommit/commit batch triggers and moves evaluation into tested Go functions with configurable
MaxBatch(#1044)
🔧 Improvements
-
allow piece CID v1 and v2 interoperability - handles both CIDv1 and CIDv2 piece CIDs, improving compatibility across different client implementations (#1048)
-
chore(deps): replace x/crypto with filecoin-project/go-keccak for optimised keccak - uses a maintained fork with ASM-optimized keccak256 after upstream x/crypto dropped assembly implementations in v0.44 (#1060)
-
better uniq - removes unnecessary allocations in the
uniqutility for most common use cases (#1072)
What's Changed
- fix raw size only if unseal exists by @LexLuthr in #1047
- fix: batch timeout timezone bug and move evaluation to testable Go by @snadrus in #1044
- chore(deps): replace x/crypto with filecoin-project/go-keccak for optimised keccak by @rvagg in #1060
- update pdp contract bindings by @LexLuthr in #1013
- better uniq by @snadrus in #1072
- allow piece cid v1 and v2 interoperability by @LexLuthr in #1048
- refactor(proof): extract cached proof pipeline behind testable interfaces (main) by @rvagg in #1068
Upgrade
git checkout v1.27.3-rc3
make clean build
If coming from rc1 or rc2, this is a straightforward rebuild - no database migrations or config changes required.
Full Changelog: v1.27.3-rc2...v1.27.3-rc3