Skip to content

v1.27.3-rc3

Pre-release
Pre-release

Choose a tag to compare

@Reiers Reiers released this 09 Mar 13:14
· 93 commits to main since this release
d0afa3c

Curio v1.27.3-rc3

v1 27 3-rc3_banner

✨ 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 uniq utility 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