Skip to content

Release v3.3.0

Compare
Choose a tag to compare
@kozlovic kozlovic released this 15 Mar 21:13
· 233 commits to main since this release
8c36c16

Changelog

The KeyValue APIs are still considered EXPERIMENTAL and we reserve the right to change them (based on usage and community feedback) without necessarily bumping the major version.

Added

  • Build:
    • Allow option to statically link OpenSSL libraries (see README.md for details). Thanks to @xiaoxiyouran for the suggestion (#491)
    • BUILD_INTERFACE to target_include_directories. Thanks to @joejustesen for the contribution (#496)
    • List of known package managers. Thanks to @Jaegermeiste for the suggestion (#534)
  • JetStream:
    • js_UpdateConsumer() to be able to update a consumer (#515)
    • jsConsumerConfigfields:MaxRequestBatch, MaxRequestExpiresfor pull options, andInactiveThreshold` for ephemerals (#515, #518)
    • natsMsg_NakWithDelay() to ask the server to redeliver this message after the given delay (#516)
    • BackOff and BackOffLen fields in jsConsumerConfig structure to define the redelivery timeline for a message (#516)
    • SubjectsFilter in jsOptions that gives the ability to get the list of subjects with field Subjects (of a new type jsStreamStateSubjects) in a returned jsStreamInfo's State field (#517)
    • NumSubjects in jsStreamState that indicates the number of distinct subjects in a given stream (#517)
  • KeyValue:
    • kvStore_GetRevision() to be able to get a key at a specific revision. Returns NATS_NOT_FOUND if no entry exists for this key at this revision (#522)
  • Options:
    • natsOptions_SetCustomInboxPrefix() to be able to set a custom inbox prefix (#512)

Improved

  • Crypto:
    • Effectively zeroing memory content. Thanks to @paoloteti for the contribution (#501)

Changed

  • JetStream:
    • The MaxAckPending is no longer set if not user-specified. The server will pick the default (#528)
    • Any message acknowledgment call (natsMsg_Ack(), etc..) will become synchronous if the given jsOptions has a non-zero Wait value (#516)
  • KeyValue:
    • kvStore_Purge() now accepts a pointer (possibly NULL) to the new structure kvPurgeOptions to configure how long to wait for the operation to complete. The Timeout field would have to be set (#524)
    • kvStore_PurgeDeletes() now accepts a pointer (possibly NULL) to the new structure kvPurgeOptions. The API will now, by default, keep the markers that are less than 30 minutes old. This can be changed with the field DeleteMarkersOlderThan of the new kvPurgeOptions structure (#524)
    • js_CreateKeyValue() will update the underlying's stream discard policy if connecting to a server v2.7.2+. The discard policy starting at this release should be discard "new" instead of "old" (#535)
  • TLS:
    • natsOptions_SetCertificatesChain() is no longer limited to RSA key. Thanks to @thierryba for the suggestion (#527)

Fixed

  • Build:
    • GCC warning on format strings. Thanks to @paoloteti for the contribution (#497)
    • CMake files install path. Thanks to @linuxmaniac for the contribution (#525)
  • Documentation:
  • JetStream:
    • Auto-ack callback ack handling (#493)
    • Do not send ACKs for js_AckNone subscriptions (#495)
    • Subscriptions using the > wildcard. Thanks to @BryceCao for the report (#503)
    • natsSubscription_Fetch() could take longer than the given timeout (#511)
  • KeyValue:
    • Support for JetStream prefix which is required for cross-account proper functionality (#510)
  • NUID:
    • Wrong object passed to sizeof when doing a memset. Thanks to @paoloteti for the contribution (#505)
  • Code cleanup. Thanks to @yuchenlin and @ paoloteti for the contributions (#507, #508)
  • Connection fails if URL is missing port. Thanks to @BryceCao for the report (#531)

Complete Changes

v3.2.0...v3.3.0