azure-sdk-for-cpp/sdk/core/azure-core-amqp/CHANGELOG.md
Larry Osterman e04e96cf87
Merged Rust AMQP stack with main. (#6442)
* Initial attempt at a Rust AMQP stack, merged against feature/rust_amqp for now. (#5942)

* Enabled building AMQP *without* uAMQP

* Start integrating Rust AMQP Value to C++ AMQP Value

* AMQP Value tests now pass

* Moved AmqpValueType ostream inserter to its original location

* Added Rust AMQP Message implementation

* Added start of message source tests

* Enabled building AMQP *without* uAMQP

* Start integrating Rust AMQP Value to C++ AMQP Value

* Moved AmqpValueType ostream inserter to its original location

* Message target support

* Message source and target support

* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features  (#5986)

* Checkpoint of connection logic

* Started implementing Rust based Connection by pulling out uAMQP artifacts

* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.

* Don't leak runtime context on calls

* Refactor AMQP logic to better isolate rust AMQP code from uAMQP code. (#6008)

* refactor uAMQP and Rust AMQP into separate implementations for ease of use

* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features  (#5986)

* Checkpoint of connection logic

* Started implementing Rust based Connection by pulling out uAMQP artifacts

* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.

* Don't leak runtime context on calls

* export UUID from AMQP

* Cleaned up some more elements; reduced scope of doxygen significantly

* runtime context needs to be process global not thread global; all tests pass or fail at this point

* Merged main into branch

* Implement AMQP Session APIs in Rust. (#6033)

* Checkpoint of rust session support

* Session begin/end now works

* Session tests pass

* Removed accidental regression

* Added rust per-call context (#6043)

* Reworked runtime context to be call context

* Added context parameter to blocking AMQP calls

* Added comments around the lifetime of the RustRuntimeContext captured in the CallContext object

* uAMQP changes corresponding to Rust changes

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* sync rust SDK fixes to C++

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Enable Rust ClaimsBasedSecurity interoperability; Converted EventHubs producer client to work with Rust AMQP changes. (#6059)

* canonicalized return values; initial CBS support

* Implementation of CBS for C++

* Amqp Authentication works; Integrate Rust AMQP into Eventhubs Producer client

* Implemented Rust AMQP message sender. (#6083)

* Initial sender implementation

* PR feedback

* Management APIs work (#6096)


* Management APIs work

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Converted builders to be compliant with Rust guidelines. (#6102)

* Converted builders to be compliant with Rust guidelines.

* Bring rust changes back to C++ repo

* Improved builder developer experience

* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP bug in message sender tests (#6208)

* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP related bug in message sender tests

* Pr feedback

* Implement receiving messages; Changes to eventhubs so that all eventhubs tests pass (#6254)


* Eventhubs tests pass

* Noise reduction; explain the task which spawns a task

* Update sdk/eventhubs/azure-messaging-eventhubs/src/producer_client.cpp

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* PR feedback

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

* Integrate Rust 2 step message receive code to C++ (#6349)

* Integrate Rust 2 step message receive code to C++

* If receiving a delivery failed, transmit the error to the message channel if at all possible

* Enable Rust based AMQP by default (#6362)

* AMQP tests now pass; Integrate TestAmqpBroker with CI pipeline

* Updated changelogs to reflect API changes made during AMQP updates

* Replace uAMQP with Rust AMQP as the default AMQP transport; Updated build configurationj to reflect that

* Test fixes

* PR feedback; test fixes

* Fixed uninitialized variable tanking some tests (#6381)

* Fixed uninitialized variable tanking some tests

* Fixed Rust AMQP tests

* Removed connection string support from Eventhubs and EH tests. (#6391)

* Removed the ability to use connection strings from EventHubs

* Enable Rust AMQP by default!!!

* Update CMakePresets.json

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>

---------

Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2025-03-11 22:30:13 +00:00

5.5 KiB

Release History

1.0.0-beta.12 (Unreleased)

Features Added

Rust based AMQP library is now available for use in the Azure SDK for C++. This replaces the uAMQP library with a library based on the azure_core_amqp Rust crate.

Breaking Changes

Updated MessagePropertiesto remove Azure::Nullable from the types which are an AmqpValue because the AmqpValue already embeds the concept of nullability.

Bugs Fixed

Other Changes

1.0.0-beta.11 (2024-09-12)

Bugs Fixed

  • Updated vendored copy of uAMQP to reflect upstream changes.

1.0.0-beta.10 (2024-06-06)

Bugs Fixed

  • [#5536] Fixed use-after free in MessageSender and MessageReceiver when opening a connection.

1.0.0-beta.9 (2024-05-06)

Bugs Fixed

  • Fixed a potential deadlock where a message receiver Open call could block indefinitely when adding the Link to the Pollables.

1.0.0-beta.8 (2024-04-09)

Breaking Changes

  • Claims Based Security authentication now longer throws a std::runtime_error, and instead follows the pattern of the rest of the AMQP library and returns an error.
  • Authentication now throws Azure::Core::Credentials::AuthenticationException instead of std::runtime_error.
  • Added Cancelled status to CbsOperationResult and ManagementOperationStatus.

Bugs Fixed

  • [#5284] [azure-identity][azure-messaging-eventhubs] Impossible to catch exception resulting in SIGABRT signal.
  • [#5297]: Enabled multiple simultaneous ExecuteOperation calls.
  • Fixed crash when Link Detach message is received while link is being destroyed.

Other Changes

  • std::ostream inserter for message body no longer prints the body of the message.
  • Tidied up the output of the AmqpMessage std::ostream inserter.
  • Added several std::ostream inserters.
  • Pass numeric values to std::ostream inserters by value not by reference.

1.0.0-beta.7 (2024-02-02)

Features Added

  • The Close method on AMQP Message Sender and Message Receiver now blocks until the client receives a DETACH response from the remote node.

Breaking Changes

  • The Close method on AMQP Message Sender and Message Receiver now accepts an Azure::Core::Context parameter. This parameter is defaulted so this change should not affect existing code.

Bugs Fixed

  • Fixed uAMQP connection channel so that a channel is released when an END performative is received from the remote node instead of when the END performative is sent to the remote node.
  • Enabled more than one uAMQP session to be created on a single connection.

1.0.0-beta.6 (2024-01-11)

Features Added

  • AMQP Value reference counts are now atomic, this fixes several AMQP related crashes.

Breaking Changes

  • MessageReceiver returns a pointer to the received message instead of a copy.

Bugs Fixed

  • Fixed several memory leaks.
  • AMQP Link Credits now work as expected.
  • Integrated the fix for NVD - CVE-2024-21646.

1.0.0-beta.5 (2023-11-07)

Breaking Changes

  • Refactored AMQP headers to isolate internal-only types to "internal" subdirectory in headers.

Other Changes

  • Removed public dependency on azure-uamqp-c to enable local bug fixes.

1.0.0-beta.4 (2023-10-05)

Features Added

  • AMQP moved from a polling model to an asynchronous model.
  • Added a new MessageReceiver::TryWaitForIncomingMessage API which allows callers to "peek" at the contents of the incoming message queue, returning an already received message or an empty message if none is available.

Breaking Changes

  • Removed the QueueSend API from MessageSender because it was not compatible with the new asynchronous model.
  • The new asynchronous model requires the user to call Close() on the MessageSender and MessageReceiver to ensure operations have stabilized before destroying the object.
  • For connection listeners (primarily test scenarios), if you call Open() or Listen() on a connection, you MUST call Close() before the connection is destroyed.
  • The Connection::Close() method no longer requires that the caller provide connection disconnect information.
  • The Session::End() method no longer requires that the caller provide session disconnect information.
  • Several asserts have been added which will force termination of the running application if invariants have not been met.

Bugs Fixed

  • Several fixes related to the new asynchronous model. Ensures that message senders and receivers are always closed, and that resources are released.

1.0.0-beta.3 (2023-09-07)

Bugs Fixed

  • When a message sender is destroyed, close the underlying AMQP link if it hasn't been closed already.

1.0.0-beta.2 (2023-08-04)

Features Added

  • Added Azure::Core::Amqp::Models::AmqpBinaryData::operator=(std::vector<std::uint8_t> const&).
  • Added Azure::Core::Amqp::Models::AmqpMessage::MessageFormat.
  • Collection types (AmqpArray, AmqpMap, AmqpList, AmqpBinaryData, AmqpSymbol and AmqpComposite):
    • Added explicit cast operator to underlying collection type.
    • Added find().
  • Rationalized the return code for AMQP MessageSender and MessageReceiver and Management APIs to use AmqpError for error codes.
  • Added additional AMQP Error values.

Breaking Changes

  • Renamed Azure::Core::Amqp::Models::AmqpMessageFormatValue to AmqpDefaultMessageFormatValue.
  • Changed the return values for the MessageSender, MessageReceiver and Management APIs.

1.0.0-beta.1 (2023-07-06)

Features Added

  • Initial release