Azure SDK for C++ (January 2021)
The Azure SDK team is pleased to make available the January 2021 client library release.
Beta
- Azure Core
- Azure Identity
- Azure Storage Common
- Azure Storage Blobs
- Azure Storage Files DataLake
- Azure Storage Files Shares
Installation Instructions
To install any of our packages, copy and paste the following commands into a terminal:
git clone https://github.com/Azure/azure-sdk-for-cpp
# git checkout <tag_name>
# For example:
git checkout azure-storage-blobs_12.0.0-beta.6
Feedback
If you have a bug or feature request for one of the libraries, please post an issue to GitHub.
Release highlights
azure-core Changelog
New Features
- Added a WinHTTP-based
HttpTransport
calledWinHttpTransport
and use that as the defaultTransportPolicyOptions.Transport
on Windows when sending and receiving requests and responses over the wire. - Added
Range
type toAzure::Core::Http
namespace. - Added support for long-running operations with
Operation<T>
. - Added support for setting a custom transport adapter by implementing the method
std::shared_ptr<HttpTransport> ::AzureSdkGetCustomHttpTransport()
. - Added interoperability between
std::chrono::system_clock
types andDateTime
. - Added default constructor to
DateTime
and support for dates since 0001. - Added Base64 encoding and decoding utility APIs to the
Azure::Core
namespace available fromazure/core/base64.hpp
. - Added
Http::Response<void>
template specialization. - Added
GetHeadersAsString()
on theAzure::Core::Http::Request
class. - Added a
platform.hpp
header file for defining commonly used OS-specific#define
constants. - Added
IsCancelled()
on theAzure::Core::Context
class.
Breaking Changes
- Removed
DateTime::operator Duration()
,DateTime::Duration
typedef andDateTime::Now()
. - Moved
Azure::Core::BearerTokenAuthenticationPolicy
, defined inazure/core/credentials.hpp
toAzure::Core::Http
namespace inazure/core/http/policy.hpp
header. - Changed type of
Token::ExpiresOn
toDateTime
. - Renamed exception
OperationCanceledException
toOperationCancelledException
andThrowIfCanceled()
toThrowIfCancelled()
on theContext
class. - Moved
Azure::Core::Version
, defined inazure/core/version.hpp
to theAzure::Core::Details
namespace. - Changed
Azure::Core::AuthenticationException
to derive fromstd::exception
instead ofstd::runtime_error
. - Changed the
BodyStream::Read
API from being a pure virtual function to non-virtual. - Removed
CurlConnection
,CurlConnectionPool
,CurlSession
, andCurlNetworkConnection
by making headers meant as implementation, private. - Removed option
AllowBeast
fromCurlTransportSSLOptions
inCurlTransportOptions
. - Changed default option
NoRevoke
fromCurlTransportSSLOptions
for theCurlTransportOptions
totrue
. This disables the revocation list checking by default.
Bug Fixes
- Fixed the Curl transport adapter connection pooling when setting options.
- Fixed setting up the default transport adapter.
- Fixed linker error of missing pthread on Linux.
- Initialize class data members to avoid MSVC warning.
- Throw
Azure::Core::Http::TransportException
ifcurl_easy_init()
returns a null handle.
Other changes and Improvements
- Added support for distributing the C++ SDK as a source package via vcpkg.
azure-identity Changelog
Breaking Changes
- Moved
Azure::Identity::Version
, defined inazure/identity/version.hpp
to theAzure::Identity::Details
namespace.
Other changes and Improvements
- Add high-level and simplified identity.hpp file for simpler include experience for customers.
azure-storage-common Changelog
New Features
- Added new type
ContentHash
. - Added definition of
Metadata
. - Support setting account SAS permission with a raw string.
Breaking Changes
- Renamed
SharedKeyCredential
toStorageSharedKeyCredential
. - Renamed
StorageSharedKeyCredential::UpdateAccountKey
toUpdate
. - Made
StorageRetryPolicy
,StoragePerRetryPolicy
andSharedKeyPolicy
private by moving them to theDetails
namespace. - Removed
StorageRetryOptions
, useAzure::Core::Http::RetryOptions
instead. - Moved Account SAS into
Azure::Storage::Sas
namespace. - All date time related strings are now changed to
Azure::Core::DateTime
type. - Made version strings private by moving them into the
Details
namespace. - Moved
Base64Encode
andBase64Decode
from theAzure::Storage
namespace toAzure::Core
and removed the string accepting overload ofBase64Encode
. - Renamed public constants so they no longer start with the prefix
c_
. For example,c_InfiniteLeaseDuration
becameInfiniteLeaseDuration
.
Bug Fixes
- Fixed default EndpointSuffix when parsing a connection string.
azure-storage-blobs Changelog
New Features
- Added
CreateIfNotExists
andDeleteIfExists
for blob containers and blobs. - Added
IsHierarchicalNamespaceEnabled
inGetAccountInfoResult
. - Added
PageBlobClient::GetPageRangesDiff
andPageBlobClient::GetManagedDiskPageRangesDiff
. - Added
CreateBlobContainer
,DeleteBlobContainer
,UndeleteBlobContainer
intoBlobServiceClient
. - Added
DeleteBlob
toBlobContainerClient
. - Support setting blob SAS permission with a raw string.
Breaking Changes
- Renamed
AppendBlobAccessConditions::MaxSize
toIfMaxSizeLessThanOrEqual
. - Renamed
AppendBlobAccessConditions::AppendPosition
toIfAppendPositionEqual
. BlobServiceProperties.DefaultServiceVersion
is now nullable.- Renamed
DeleteBlobSubRequest::containerName
toblobContainerName
. - Renamed
SetBlobAccessTierSubRequest::containerName
toblobContainerName
. - Renamed
BlobSasBuilder::ContainerName
toBlobContainerName
. - Renamed
BlobSasResource::Container
toBlobContainer
. - Renamed
AccountSasResource::Container
toBlobContainer
- Renamed some structs:
CreateContainerResult
toCreateBlobContainerOptions
CreateContainerOptions
toCreateBlobContainerOptions
DeleteContainerResult
toDeleteBlobContainerResult
DeleteContainerOptions
toDeleteBlobContainerOptions
GetContainerPropertiesResult
toGetBlobContainerPropertiesResult
GetContainerPropertiesOptions
toGetBlobContainerPropertiesOptions
SetContainerMetadataResult
toSetBlobContainerMetadataResult
SetContainerMetadataOptions
toSetBlobContainerMetadataOptions
GetContainerAccessPolicyResult
toGetBlobContainerAccessPolicyResult
GetContainerAccessPolicyOptions
toGetBlobContainerAccessPolicyOptions
SetContainerAccessPolicyResult
toSetBlobContainerAccessPolicyResult
SetContainerAccessPolicyOptions
toSetBlobContainerAccessPolicyOptions
AcquireContainerLeaseResult
toAcquireBlobContainerLeaseResult
AcquireContainerLeaseOptions
toAcquireBlobContainerLeaseOptions
RenewContainerLeaseResult
toRenewBlobContainerLeaseResult
RenewContainerLeaseOptions
toRenewBlobContainerLeaseOptions
ReleaseContainerLeaseResult
toReleaseBlobContainerLeaseResult
ReleaseContainerLeaseOptions
toReleaseBlobContainerLeaseOptions
ChangeContainerLeaseResult
toChangeBlobContainerLeaseResult
ChangeContainerLeaseOptions
toChangeBlobContainerLeaseOptions
BreakContainerLeaseResult
toBreakBlobContainerLeaseResult
BreakContainerLeaseOptions
toBreakBlobContainerLeaseOptions
ContainerAccessConditions
toBlobContainerAccessConditions
ListContainersSegmentResult
toListBlobContainersSegmentResult
ListContainersSegmentOptions
toListBlobContainersSegmentOptions
- API signature for
CommitBlockList
has changed.BlockType
doesn’t need to be specified anymore. PageBlobClient::GetPageRanges
doesn’t support getting difference between current blob and a snapshot anymore. UsePageBlobClient::GetPageRangesDiff
instead.- Moved Blob SAS into
Azure::Storage::Sas
namespace. - Replaced all transactional content MD5/CRC64 with the
ContentHash
struct. EncryptionKeySha256
is changed to binary (std::vector<uint8_t>
).ContentMd5
HTTP header is renamed toContentHash
, the type is also changed toContentHash
.ServerEncrypted
fields are renamed toIsServerEncrypted
, and changed to non-nullable type.- Added
Is
prefix to bool variable names. LikeIsAccessTierInferred
,IsDeleted
. IsServerEncrypted
,EncryptionKeySha256
andEncryptionScope
are removed fromClearPageBlobPagesResult
, since they are never returned from storage server.ListBlobsFlatSegment
is renamed toListBlobsSinglePage
.ListBlobsByHierarchySegment
is renamed toListBlobsByHierarchySinglePage
.ListBlobContainersSegment
is renamed toListBlobContainersSinglePage
.FindBlobsByTags
is renamed toFindBlobsByTagsSinglePage
.MaxResults
in list APIs are renamed toPageSizeHint
.- All date time related strings are now changed to
Azure::Core::DateTime
type. - Replaced
std::pair<int64_t, int64_t>
withAzure::Core::Http::Range
to denote blob ranges. - Made version strings private by moving them into the
Details
namespace. - Replaced scoped enums that don’t support bitwise operations with extensible enum.
- Continuation token of result types are changed to nullable.
- Renamed
Models::DeleteSnapshotsOption::Only
toOnlySnapshots
. - Renamed
SourceConditions
in API options toSourceAccessConditions
. - Removed Blob Batch.
DownloadBlobResult::Content-Range
is changed to anAzure::Core::Http::Range
, an extra fieldBlobSize
is added.- Removed
Undelete
fromBlobContainerClient
. BlobRetentionPolicy::Enabled
is renamed toBlobRetentionPolicy::IsEnabled
,BlobStaticWebsite::Enabled
is renamed toBlobStaticWebsite::IsEnabled
.- Changed type for metadata to case-insensitive
std::map
. - Changed parameter type for token credential from
Azure::Identity::ClientSecretCredential
toAzure::Core::TokenCredential
. - Renamed member function
GetUri
of client types toGetUrl
. BlobClient::GetBlockBlobClient
,BlobClient::GetAppendBlobClient
andBlobClient::GetPageBlobClient
are renamed toBlobClient::AsBlockBlobClient
,BlobClient::AsAppendBlobClient
andBlobClient::AsPageBlobClient
respectively.
azure-storage-files-shares Changelog
New Features
- Added support for
CreateIfNotExists
for Share and Directory clients, andDeleteIfExists
for Share, Directory and File clients. - Support setting file SAS permission with a raw string.
Breaking Changes
- Removed constructors in clients that takes a
Azure::Identity::ClientSecretCredential
. - Removed Share Lease related APIs such as
ShareClient::AcquireLease
andReleaseLease
since they are not supported in recent service versions. - Moved File SAS into
Azure::Storage::Sas
namespace. - Replaced all transactional content MD5/CRC64 with the
ContentHash
struct. FileShareHttpHeaders
is renamed toShareFileHttpHeaders
, and memberstd::string ContentMd5
is changed toStorage::ContentHash ContentHash
.- All date time related strings are now changed to
Azure::Core::DateTime
type. - Moved version strings into
Details
namespace. - Renamed all functions and structures that could retrieve partial query results from the server to have
SinglePage
suffix instead ofSegment
suffix. - Removed
FileRange
,ClearRange
, andOffset
andLength
pair in options. They are now represented withAzure::Core::Http::Range
. - Replace scoped enums that don’t support bitwise operations with extensible enum.
IsServerEncrypted
members inDownloadFileToResult
,UploadFileFromResult
,FileDownloadResult
andFileGetPropertiesResult
are no longer nullable.- Create APIs for Directory and File now returns
FileShareSmbProperties
that aggregates SMB related properties. DirectoryClient
is renamed toShareDirectoryClient
,FileClient
is renamed toShareFileClient
.- Directory and File related result types and options types now have a
Share
prefix. For example,SetDirectoryPropertiesResult
is changed toSetShareDirectoryPropertiesResult
. - Renamed
GetSubDirectoryClient
toGetSubdirectoryClient
.
azure-storage-files-datalake Changelog
New Features
- Support setting DataLake SAS permission with a raw string.
- Added support for
CreateIfNotExists
andDeleteIfExists
for FileSystem, Path, Directory and File clients.
Breaking Changes
- Moved DataLake SAS into
Azure::Storage::Sas
namespace. EncrytionKeySha256
are changed to binary (std::vector<uint8_t>
).- Replaced all transactional content MD5/CRC64 with the
ContentHash
struct. DataLakeHttpHeaders
is renamed toPathHttpHeaders
, and now containsContentHash
for the resource.- All date time related strings are now changed to
Azure::Core::DateTime
type. CreationTime
is renamed toCreatedOn
.AccessTierChangeTime
is renamed toAccessTierChangedOn
.CopyCompletionTime
is renamed toCopyCompletedOn
.ExpiryTime
is renamed toExpiresOn
.LastAccessTime
is renamed toLastAccessedOn
.- Made version strings private by moving them into the
Details
namespace. - Renamed all functions and structures that could retrieve partial query results from the server to have
SinglePage
suffix instead ofSegment
suffix. ReadFileResult
now haveContentRange
as string.ReadFileOptions
now haveAzure::Core::Http::Range
instead ofContent-Length
andOffset
.- Replaced scoped enums that don’t support bitwise operations with extensible enum.
ListPaths
is renamed toListPathsSinglePage
and its related return type and options are also renamed accordingly.- Added
DataLake
prefix toFileSystemClient
,PathClient
,DirectoryClient
, andFileClient
types. - FileSystems, Path, Directory and File related result types and options types now have a
DataLake
prefix. For example,GetFileSystemPropertiesResult
is changed toGetDataLakeFileSystemPropertiesResult
. - Renamed
GetSubDirectoryClient
toGetSubdirectoryClient
. - Removed
NamespaceEnabled
field inCreateDataLakeFileSystemResult
.
Latest Releases
View all the latest versions of C++ packages here.