Neo SPCC released NeoFS SDK Go v1.0.0-rc.24 on Oct. 27, introducing time-based object expiration support, upgrading the default API version to 2.28, and removing five deprecated client interfaces. The release continues Neo SPCC’s quarterly SDK progression toward a stable v1.0.

RC24 is the fourth consecutive monthly release NNT has tracked, following RC23, RC22, and RC21, each of which bumped the default API version and removed previously deprecated functionality.

Time-based object expiration

The headline feature in RC24 is support for time-based object expiration metadata. Previously, NeoFS objects could only expire based on network epochs, abstract time units that required developers to calculate corresponding epoch numbers. Objects can now use Unix timestamps for expiration, allowing developers to set human-readable, calendar-based expiration times directly.

The SDK adds an expiration time header field for objects, a valid-until meta header field for requests, and search filter support for querying objects by expiration time. The older __NEOFS__EXPIRATION_EPOCH attribute is now deprecated in favor of the new timestamp-based approach, as defined in NeoFS API 2.28.

API cleanup and breaking changes

RC24 removes five deprecated client APIs: ObjectSearchInit, ObjectRangeInit, the object/relations package, SetCopiesNumber, and SyncContainerWithNetwork. Applications still referencing these interfaces will break on upgrade.

The release also deprecates X-Headers in request and response metadata. Neo SPCC described X-Headers as ambiguous fields with weak semantics, noting that the protocol is moving toward dedicated body fields with stronger semantics. X-Headers were primarily used for erasure-coded object part selection, a role now served by a dedicated ec_part_id field introduced in API 2.28. X-Headers will be fully removed in a future release.

The default API version bumps from 2.27 to 2.28, maintaining the pattern established across the last four releases: API 2.25 in RC21, 2.26 in RC22, 2.27 in RC23, and now 2.28 in RC24.

Bug fixes and hardening

Several fixes in RC24 address edge cases in object placement and retrieval. A placement weight calculation bug that produced zero weights when storage nodes reported zero capacity or price has been corrected, preventing potential replica placement errors. An incorrect verification check for erasure-coded parts during client.Get operations has also been fixed.

The release tightens client-side validation of server responses. The SDK now returns distinct errors for missing response bodies, premature OK responses during object PUT streams, and invalid split_info or chunk sequences during GET operations. Stale state in some CopyTo and Unmarshal methods is now properly reset, preventing reused objects from retaining old values.

The full release notes can be found at the link below:
https://github.com/nspcc-dev/neofs-sdk-go/releases/tag/v1.0.0-rc.24