2021-06-01: retiring experimental Bigtable Admin Async APIs
- In 2021-06-01 (or shortly after) we are planning to remove all the functions
matching
Async*
inbigtable::TableAdmin
andbigtable::InstanceAdmin
. These functions were already marked as experimental, they allow applications to perform administrative operations in a non-blocking manner. We do not think these functions are sufficiently useful to justify the additional maintenance and API clutter. Starting with the v1.25.0 release, and depending on your compiler settings, using these functions may issue a deprecation warning at the call site. More information in #5923.
2022-02-15: retiring legacy targets and rules
- In 2022-02-15 (or around that time) we are planning to remove a number of
backwards compatibility targets names for Bazel and CMake. Specifically:
- Bazel Users: applications should use the targets at the top-level
directory, e.g.
//:bigtable
, or//:pubsub
.- All other Bazel targets will be marked as package private in or around 2022-02-15.
- CMake Users: applications should use the
google-cloud-cpp::*
targets (e.g.google-cloud-cpp::pubsub
).- The legacy CMake targets generate warnings if using CMake >= 3.18 (the earliest version that supports deprecation warnings).
- All exported targets without a
google-cloud-cpp::
prefix will be retired in or around 2022-02-15. These include, but are not limited to:- Any target starting with
googleapis-c++::
- Any exported targets without a prefix, including:
google_cloud_cpp_common
,google_cloud_cpp_grpc_utils
,bigtable_client
,bigtable_protos
,firestore_client
,pubsub_client
,storage_client
,spanner_client
. - Some target aliases, including
bigtable::client
,bigtable::protos
,firestore::client
- Any target starting with
- pkg-config users: applications should use the modules starting with
google_cloud_cpp
- All other modules will be retired in or around 2022-02-15
- Direct users of -l${library} flags: we do not recommend that
applications uses
-l
flags directly, please usepkg-config
and/or the target names under CMake or Bazel. We make this recommendation because we do not know of any mechanism to provide backwards compatibility for such flags. - If you have any feedback about this change please add comments in #5726
- Bazel Users: applications should use the targets at the top-level
directory, e.g.
2022-04-01: retiring legacy IAM functions
- On 2022-04-01 (or shortly after) we are planning to remove a number of IAM functions designed before IAM conditions. These functions do not work with IAM policies that include IAM conditions, and have been marked as deprecated since before 2019-08-01, albeit in Doxygen comments only. Starting with the v1.25.0 release, and depending on your compiler settings, using these functions may issue a deprecation warning at the call site. See #5929 for more details.
-
We have marked the asynchronous versions of the administrative functions as deprecated. These functions were experimental and we do not think they add value to our customers. Removing them would simplify the code and free development time for further features and cleanups. More information in #5923.
-
The legacy IAM functions were marked as deprecated via doxygen comments. Now they should generate warnings at the call site, depending on your compiler settings. See #5929 for more information.
- The legacy IAM functions were marked as deprecated via doxygen comments. Now they should generate warnings at the call site, depending on your compiler settings. See #5929 for more information.
NOTE: We are clarifying our approach to backwards compatibility beyond the C++ API. See the README.md on GitHub for details
- Starting with this release the legacy targets, such as
//google/cloud/pubsub:pubsub_client
are deprecated and generate warnings recommending a replacement (such as//:pubsub
). Note that you may have to prefix the target with the external package name you gave this library, e.g.,@github_com_google_cloud_cpp//:pubsub
. (#5746)
- feat(bigtable): restore from backups in other instance (#5754)
- feat(bigtable): better control over channel refresh (#5753)
No user-facing changes.
BREAKING CHANGES:
- UniformBucketLevelAccess was known as BucketPolicyOnly during the beta. For compatibility the C++ Cloud Storage library supported both, however BucketPolicyOnly is now completely removed. (#5720)
Other Changes:
- feat(storage): Support includeTrailingDelimiter in Client::ListObjects (#5713)
BREAKING CHANGES:
- refactor!: removed old bigquery code (#5722)
- fix: crashes during client shutdown (#5701)
- Removed OpenCensus example. OpenCensus has merged
with OpenTracing into OpenTelemetry. The C++
development seems to have stalled, and we not longer believe it will ever
be mature enough to recommend for the
google-cloud-cpp
libraries.
- feat(bigtable): enforce id limits in admin emulator (#5679)
- feat(bigtable): create logging layer for Cloud Bigtable DataClient (#5654)
- feat(bigtable): create logging layer for Cloud Bigtable InstanceAdminClient (#5653)
- feat(bigtable): create logging layer for Cloud Bigtable (#5556)
- feat: implement Bigtable connection refresh (#5550)
- feat: Implement backup level IAM policy (#5585)
- feat(pubsub): add equality to Publisher (#5608)
- fix(storage): incorrect CURL handle manipulation (#5651)
- feat(storage): propagate custom header with resumable upload PUT requests (#5632)
- fix: only build gRPC testing utilities if needed (#5594)
- cleanup: rename spanner::internal to spanner_internal (#5620)
- fix: get the code to compile with MSVC 2017 (#5574)
- fix: only build gRPC testing utilities if needed (#5594)
- feat: Implement backup level IAM policy (#5585)
- fix: get the code to compile with MSVC 2017 (#5574)
- cleanup: remove custom C++ version variable (#5674)
BREAKING CHANGES:
- Some "Range" types used in the Storage, Pub/Sub and Spanner APIs lost a
constructor that was never intended to be part of their public APIs. Users
who were not directly constructing these ranges will not be affected. Also
some performance improvements were made to their iterator implementations
that could break callers who were relying on unspecified behavior that is not
required by the input
range concept.
The affected types are:
google/cloud/storage/list_buckets_reader.h
using ListBucketsReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_hmac_keys_reader.h
using ListHmacKeysReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_objects_and_prefixes_reader.h
using ListObjectsAndPrefixesReader = google::cloud::internal::PaginationRange
google/cloud/storage/list_objects_reader.h
using ListObjectsReader = google::cloud::internal::PaginationRange
google/cloud/pubsub/subscription_admin_connection.h
using ListSubscriptionsRange = google::cloud::internal::PaginationRange
using ListSnapshotsRange = google::cloud::internal::PaginationRange
google/cloud/pubsub/topic_admin_connection.h
using ListTopicsRange = google::cloud::internal::PaginationRange
using ListTopicSubscriptionsRange = google::cloud::internal::PaginationRange
using ListTopicSnapshotsRange = google::cloud::internal::PaginationRange
google/cloud/spanner/database_admin_connection.h
using ListDatabaseRange = google::cloud::internal::PaginationRange
using ListBackupOperationsRange = google::cloud::internal::PaginationRange
using ListDatabaseOperationsRange = google::cloud::internal::PaginationRange
using ListBackupsRange = google::cloud::internal::PaginationRange
google/cloud/spanner/instance_admin_connection.h
using ListInstancesRange = google::cloud::internal::PaginationRange
using ListInstanceConfigsRange = google::cloud::internal::PaginationRange
- fix(bigtable): missing functions to change policies (#5565)
- feat(bigtable): create logging layer for Cloud Bigtable (#5515)
- docs: document Bigtable thread safety (#5394)
- feat(pubsub): by default Subscriber::Subscribe retries forever (#5552)
- fix(pubsub): deadlock during streaming pull shutdown (#5547)
- fix(pubsub): deadlock during fire & forget shutdown (#5541)
- refactor!: PaginationRange is now an alias to StreamRange (#5538)
- doc(pubsub): declare the library GA (#5390)
- doc(pubsub): how to run throughput benchmark (#5500)
- feat(pubsub): separate subscribers in benchmark (#5499)
- feat(pubsub): separate publishers in benchmark (#5496)
- feat(pubsub): minor optimization in publisher (#5495)
- fix(pubsub): reduce data copying in publish (#5484)
- feat(pubsub): more efficient callback dispatch (#5458)
- feat(pubsub): batch acks and nacks in streams (#5464)
- feat(pubsub): increase default buffer sizes (#5449)
- feat(pubsub): pace publisher in throughtput benchmark (#5447)
- feat(pubsub): improve lease management performance (#5454)
- feat(pubsub): more details in throughput benchmark (#5451)
- feat(pubsub): import throughput benchmark reports (#5450)
- feat(pubsub): show ack throughput in benchmark (#5439)
- feat(pubsub): handle AsyncPull responses in batches (#5441)
- feat(pubsub): round robin subscriber channels (#5423)
- feat(pubsub): more throughput benchmark options (#5419)
- fix(pubsub): keep corked after ResumePublish (#5415)
- fix(pubsub): sometimes published oversized batches (#5409)
- feat(pubsub): round robin publisher connections (#5401)
- feat(pubsub): reduce default channel count (#5402)
- feat(spanner): Point-In-Time Recovery (lite) throttled DB update (#5562)
- refactor!: PaginationRange is now an alias to StreamRange (#5538)
- refactor!: change gcs to use common PaginationRange (#5545)
- fix(storage): use channel options for credentials (#5524)
- fix: validate service account credentials contain a usable key (#5404)
- feat: add value_type to StatusOr (#5535)
- feat: introduce a generic StreamRange (#5532)
- refactor(common): move CompletionQueue mock (#5463)
- feat: a faster CompletionQueue::RunAsync (#5406)
No user-facing changes.
BREAKING CHANGES:
This is the first GA release of the Pub/Sub library. While breaking changes before GA should be expected, we think highlighting them here is important.
-
Simplify the concurrency control configuration in
pubsub::SubscriberOptions
. Applications only need to set the maximum number of messages that will be scheduled in parallel. -
Remove
pubsub::AckHandler::ack_id()
accessor. We believe application developers should have no need for this field. -
Rename
pubsub::SubscriptionOptions
topubsub::SubscriberOptions
as these are bound to a specific subscriber object. -
Change the
pubsub::Subscriber
API. ASubscriber
is now bound to a specific Cloud Pub/Sub subscription, with a fixed set ofSuscriptionOptions
, just like apubsub::Publisher
is bound to a specific topic and a set ofPublisherOptions
. In addition to making publishers and subscribers more symmetrical, this makes the library more consistent with the Cloud Pub/Sub library for other languages. Finally, note that we are planning to renameSubscriptionOptions
toSubscriberOptions
in a future PR too. -
Remove option to disable retries in
Publisher::Publish
. This is redundant as the application can set a "no retries" retry policy. This is more consistent with other Cloud Pub/Sub libraries. We include an example showing how to configure a "no retries" retry policy. -
Fix inconsistent naming for
PublisherOptions
attributes controlling the maximum number of messages per batch and the maximum number of bytes per batch. -
Rename the
{Topic,Snapshot,Subscription}MutationBuilder
classes, removingMutation
from their names. This makes the C++ library more familiar for Cloud Pub/Sub developers coming from other languages. -
Simplify the message flow control configuration. Now that the library uses streaming pulls, the low water marks are not used. The application developer simply sets limits for the number of messages (and/or bytes) outstanding. These limits are propagated to the service, and the service will stop streaming if too many messages (or bytes) are outstanding.
No user-facing changes.
BREAKING CHANGES:
- Our public headers no longer include
nlohmann/json.hpp
. Please update your code to directly include this header if you need it. We believe it is not a good practice to depend on indirectly included headers, but do feel we should warn our customers of this change.
OTHER CHANGES:
- Unexpected curl errors will now be retried (#5312)
- docs: add error handling example from
client->ReadObject()
(#5274) - feat(storage): Create an example for
Client::DeleteResumableUpload()
- doc: prefer UBLA references over bucket-policy-only
- Fixed occasional crash on background thread shutdown (#5324)
GCP_LOG
now serializes its output tostd::clog
(#5179)
-
fix(storage): consistent computation of XML vs. JSON (#5095) The interaction of
ClientOptions::set_endpoint()
and theCLOUD_STORAGE_TESTBENCH_ENDPOINT
environment variable was inconsistent across endpoints. For JSON endpointsset_endpoint()
overrode theCLOUD_STORAGE_TESTBENCH_ENDPOINT
value, while for XML endpoints it was the opposite.In other libraries the environment variable always wins, so we are changing the behavior here. This behavior was never documented, and it was buggy, therefore it is not a breaking change. Nonetheless, we think the bug (and the fix) is surprising enough to highlight in the CHANGELOG.
-
fix: enable
codecvt
(UTF-8 support for signed URLs) in MSVC (#5126) -
fix(storage): avoid stalls with small reads (#5104)
-
feat(storage): disable XML via environment variable (#5100)
-
fix(storage): use correct host header (#5085)
- fix: retry gRPC operations if the connection is unexpectedly terminated (#5087)
- doc(spanner): use custom retry example in the Doxygen docs (#5164)
⚠️ This library is under development and subject to breaking changes without notice.
- feat(pubsub): wait for callback return and handler (#5161)
- In addition, @remyabel contributed a number of examples.
- fix: add missing object ACLs in gRPC client (#5029)
- fix: work with unknown SSL version in curl (#5037)
- This release includes support for the
NUMERIC
data type in Cloud Spanner. - doc: adapt to new specification for NUMERIC samples (#5049)
- doc: add
spanner_query_with_*_parameter
samples (#5016) - feat: start using NUMERIC types in database schema (#5025)
- The current release is a preview of the upcoming GA release. While we think the APIs are unlikely to change before GA, we reserve the right to change these APIs for now. This release may need optimization before it is ready for production workloads.
- feat: create promises without shared state (#5046)
- feat: make CompletionQueueImpl mockable [1] (#5036) (#5039) (#5043)
- feat: support cancels for asynchronous unary RPCs (#5047)
- fix: correct C++ version under MSVC (#5038)
- fix: CompletionQueue shutdown disables RunAsync (#5008)
- fix: remove 'Bigtable' from generic error message (#5034)
- fix: remove unneeded dep on absl::variant (#5054)
- doc: update quickstart README files (#4980)
BREAKING CHANGES
- fix(storage)!: use nlohmann_json library as any other dependency (#4747)
- After this change applications using CMake must install the
nlohmann_json library. Automatically downloading
the library (a) creates problems for package maintainers, (b) requires
brittle code to keep the symbols from leaking, and (c) creates problems
for users that need newer versions of this library, for example, because
they are using a compiler that was not supported by the version we pick.
- Applications using Bazel or CMake super builds should not be impacted.
- We have updated our instructions to install this library from source on multiple Linux distributions.
- Applications using a package manager will need to update their build scripts to add this dependency.
- In addition, this removes a number of symbols in the
google_cloud_cpp_internal_nlohmman_json_3_4_0::
namespace. Obviously we never intended these symbols for public use, but we should have been clearer about it.
- After this change applications using CMake must install the
nlohmann_json library. Automatically downloading
the library (a) creates problems for package maintainers, (b) requires
brittle code to keep the symbols from leaking, and (c) creates problems
for users that need newer versions of this library, for example, because
they are using a compiler that was not supported by the version we pick.
Other Changes
- doc: update quickstart README files (#4980)
- feat(storage): custom_time in ObjectMetadata (#4901)
- feat(storage): noncurrent and custom time OLM (#4871)
- fix: cmake configs missing find_dependency(abseil) (#4919)
- doc(spanner): add samples for "datatypes" region tags (#4999)
- doc: update quickstart README files (#4855) (#4980)
- fix(spanner): correct variable used to build instance config (#4791)
- feat: add a
KmsKeyName
class (#4891) - feat: automatically create background thread pools (#4936)
- fix: clang-tidy works on all headers (#4844)
- fix: cmake configs missing find_dependency(abseil) (#4919)
- doc: remove not GA warning from bigtable backup methods (#4601)
- doc: restore quickstart's region tags (#4525)
- fix: builds on 64-bit Windows (#4523)
- fix: warnings under Windows+MSVC+x86 (#4515)
- feat:
CompletionQueue::RunAsync
with no arguments (#4450)
BREAKING CHANGES
- fix!: incorrect type in OLM condition (#4597)
changed thecreated_before
field inLifecycleRuleCondition
from a time point to a date
Other Changes
- fix: GCE credentials response handling (#4739)
- feat: add a function to delete resumable upload in client (#4696)
- doc: include guidelines for bucket names (#4688)
- feat: add a function
DeleteResumableUpload
toRawClient
(#4678) - fix: missing
CreateDefaultClientOptions
overload (#4677) - feat: a request type to delete pending resumable uploads (#4617)
- feat: disable MD5Hash by default (#4591)
- feat: Add startOffset and endOffset (#4518)
- fix: warnings under Windows+MSVC+x86 (#4515)
- fix: avoid chunked transfer encoding (#4506)
- fix: avoid unnecessary chunk to finalize uploads (#4504)
- feat: Add
Client::ListObjectsAndPrefixes
(#4494) - fix: multiple problems under Windows+MSVC+x86 (#4502)
- feat: reduce data copies in uploads (#4496)
- fix: workaround min/max macros on Windows (#4490)
- feat: reduce copies during uploads (#4489)
- feat: Add
UploadFromOffset
andUploadLimit
toUploadFile
(#4473) - feat: HTTP requests with many buffers (#4480)
- feat: Add
value_or()
to options params and headers (#4408)
BREAKING CHANGES
- refactor!:
spanner::Timestamp
implementing usingabsl::Time
(#4625)
spanner::Timestamp no longer allows construction from or conversion to a chrono time point with picosecond precision - refactor!: use
absl::CivilDay
for "date" type (#4600)
absl::CivilDay's
constructors are explicit (by design), where as the oldspanner::Date
3-arg constructor was not explicit.
Fix issue #4516: atomicity is violated if the first operation in a RW
Transaction fails.
If this occurs, the library now explicitly begins a new transaction and
retries the failed operation. This ensures subsequent operations using the
same Transaction
object are in fact executed in the same Spanner
transaction.
- fix: begin a
has_begin
transaction in Rollback() (#4731) - fix: handle
ExecuteBatchDml
returning OK with no results (#4724) - fix: use the updated transaction id in
ReadImpl
(#4722) - fix: explicitly begin failed implicit begin transactions (#4706)
- feat: handle invalid transactions in
ConnectionImpl
methods - feat: store a Status when invalidating Transactions (#4670)
- feat: support moving a
Transaction
into an error state (#4545)
Other Changes
- doc: note that NUMERIC columns are not yet available (#4738)
- feat: add
google-cloud-resource-prefix
to non-admin operations (#4703) - fix: date formatting with negative years (#4614)
- feat: add
google::cloud::spanner::Numeric
(#4418) - fix: warnings under Windows+MSVC+x86 (#4515)
- feat: log the result for
future<StatusOr<T>>
(#4746)
BREAKING CHANGES
- fix!: incorrect type in OLM condition (#4597)
changed thecreated_before
field inLifecycleRuleCondition
from a time point to a date
Other Changes
- fix: timestamp proto encoding works before the epoch and with extreme values (#4611)
- feat:
CompletionQueue::RunAsync
with no arguments (#4450) - feat: log exceptions in example driver (#4453)
- feature: add bigtable backup API support (#4407)
- fix: deadlock in MutationBatcher (#4327)
- fix: support ObjectReadStream::tellg() (#4402)
- fix(storage): treat 408 errors as retryable (#4397)
- fix(GCS+gRPC): simplify DirectPath configuration (#4388)
- feat(GCS+gRPC): DirectPath can be manually configured (#4379)
- fix: warnings with MSVC 2019 16.6 (aka 19.26 akak 14.26) (#4365)
- feat(storage/benchmarks): compare to raw downloads (#4362)
- feat(storage/benchmark): experiment integration test (#4360)
- feat(storage/benchmarks): control CRC32C/MD5 options (#4326)
- fix: incorrect metadata key string (#4431)
- doc(spanner): add CreateInstance() example (#4405)
- fix(spanner): examples on how to delete data (#4401)
- feat: use
SELECT 1
to refresh sessions (#4377) - fix(spanner): use correct name for test (#4373)
- fix: CompletionQueue::RunAsync is always async (#4448)
- fix: broken builds on Windows+CMake+Release (#4442)
- fix: test with correct MockCompletionQueue (#4427)
- fix: make potential narrowing cast of nanoseconds explicit (#4391)
- fix: memory stomping in CompletionQueue::RunAsync (#4330)
- This is the first release that includes the Spanner library, which previously lived at github.com/googleapis/google-cloud-cpp-spanner. All future releases of the Spanner library will be from this repo, and the other repo will be archived.
- In this release we take a dependency on the [Abseil] (https://github.com/abseil/abseil-cpp) C++ library.
- In this release we dropped our dependency on
https://github.com/googleapis/cpp-cmakefiles. We moved the CMake rules to
compile and install the googleapis protos into this repo in the
external/googleapis/
directory.
- feat: more bigtable data filter samples (#4315)
- feat: add rvalue reference overloads to
Row
(#4239) - feat: implemented an efficient
SetCell(Cell)
overload to copy an existing cell to a mutation - feat: remove dep on cpp-cmakefiles, integrating the CMake rules into this repo (#4245)
- feat: add absl crash handler support for bigtable examples (#4150)
- feat: more bigtable data filter samples (#4141)
- fix: warning options exported in library interface (#4134)
- fix: proper routing headers for longrunning ops (#4099)
- feat: add bigtable data filter samples (#4069)
- fix: bigtable's random_mutation_test missing from build (#4058)
- chore: bigtable, storage quickstarts use top-level build targets (#4050)
- feat: support X-Upload-Content-Length header (#4284)
- feat(storage/benchmark): cleanup storage benchmarks
- feat(storage/benchmark): support GCS+gRPC plugin in storage benchmarks
- feat: EXPERIMENTAL introduced an optional gRPC plugin to the GCS client library.
- feat: support XML vs. JSON in throughput_vs_cpu_benchmark (#4277)
- fix: fix off-by-one in uploading streams to GCS (#4250)
- feat: proto conversions for BucketAccessControl (#4247)
- feat: remove dep on cpp-cmakefiles, integrating the CMake rules into this repo (#4245)
- feat: implement To/FromProto for CustomerEncryption (#4242)
- fix: warning options exported in library interface (#4134)
- fix: C2593 'operator =' is ambiguous (#4059)
- chore: bigtable, storage quickstarts use top-level build targets (#4050)
- This is the first release of this repo that contains the Cloud Spanner C++ Client Library. Previously, this library lived in a separate repo (https://github.com/googleapis/google-cloud-cpp-spanner). That old repo will be archived, and all future Cloud Spanner C++ Client Library releases will come from this repo.
- feat: remove dep on cpp-cmakefiles, integrating the CMake rules into this repo (#4245)
- fix: warning options exported in library interface (#4134)
- fix: use correct variable for SOVERSION (#4131)
NOTICE: This release aligns all the version numbers for Bigtable, Storage, the common libraries, and the repository itself. From this point on all releases will include a single version number. Note that there is a gap in the version numbers for Bigtable and the repository changes from v0.21.0 to v1.13.0
BREAKING CHANGES
- The common library inlined namespace changed to
v0
tov1
, moving all the symbols fromgoogle::cloud::v0
togoogle::cloud::v1
. Applications that explicitly referred to the inlined namespace would be affected by this change. That is, code that usesgoogle::cloud::v0::Foo
instead ofgoogle::cloud::Foo
would need to be modified. We apologize if this has impacted you, and recommend that applications do not refer to the inlined namespace in the future.
BREAKING CHANGES
See above regarding the common library inlined namespace.
OTHER CHANGES
- cleanup: the library now links against the common libraries included in this repository, applications developers should not install the standalone common libraries in the (now archived) google-cloud-cpp-common repository.
- feat: compile bigtable benchmarks with Bazel (#3884)
- feat: implement table level IAM policy for bigtable(async) (#3829)
- feat: implement table level IAM policy for bigtable (#3751)
- refactor: synchronize version numbers for all libraries (#3710)
- feat: change READMEs and quickstart programs (#3690)
The
google/cloud/bigable/quickstart/
directory contains a sample project for CMake and Bazel that uses the Cloud Bigtable C++ client library as we expect application developers would.
BREAKING CHANGES
See above regarding the common library inlined namespace.
- fix!: use correct type for generation numbers (#3870) This changes the type of
two fields from
google::cloud::optional<long>
togoogle::cloud::optional<std::int64_t>
. With MSVC this is not a backwards compatible change (storing the result of.value()
into along
now loses precision). However, on that platform the fields were not usable, they could not store the values that are typically generated by the production environment. We apologize to any customers affected by this change, but we think it is unlikely that anybody used the field on that platform.
OTHER CHANGES
- cleanup: the library now links against the common libraries included in this repository, applications developers should not install the standalone common libraries in the (now archived) google-cloud-cpp-common repository.
- feat: implement POST policy signatures. Applications can use the Google Cloud Storage C++ client library to create POST objects, which allow uploading using HTML forms.
- feat: change READMEs and quickstart programs (#3690)
The
google/cloud/bigable/quickstart/
directory contains a sample project for CMake and Bazel that uses the Cloud Bigtable C++ client library as we expect application developers would. - fix: use network to check if running inside Google (#3959) With this change applications running on Google App Engine Flex (GAEF), Google Kubernetes Engine (GKE), or Cloud Run can use the Google Default Credentials.
- fix: build problems on MSVC x86 (#3916)
- fix: do not use CURL_SHARE features (#3860)
- chore: upgrade libcurl to v7.69.1 (#3851)
BREAKING CHANGES
See above regarding the common library inlined namespace.
OTHER CHANGES
No other interesting changes in the common libraries with this release.
NOTICE: This repo will soon contain the code for all the other related
google-cloud-cpp-*
repos. As a new monorepo (#3612), the versioning of this repo will be changing to have a single per-repo version. The per-library version numbers will be removed in favor of the repo version. See googleapis#3615 for more info.
BREAKING CHANGES
- fix!: moved IAM-related symbols to the correct inlined namespace (#3453)
Most users should not notice any difference, but those that explicitly referenced
symbols through the
google::cloud::bigtable::v0
namespace may need to switch togoogle::cloud::bigtable
(the recommended approach) orgoogle::cloud::bigtable::v1
. We apologize if this causes you inconvenience.
BREAKING CHANGES
- fix!: moved IAM-related symbols to the correct inlined namespace (#3453)
Most users should not notice any difference, but those that explicitly referenced
symbols through the
google::cloud::storage::v0
namespace may need to switch togoogle::cloud::storage
(the recommended approach) orgoogle::cloud::storage::v1
. We apologize if this causes you inconvenience.
Other Changes:
- feat: add support for iam conditions (#3497)
- bug: express libcurl version in hex (#3487)
- bug: check curl connection before unpausing (#3485)
- feat: allow domain named buckets in signed URLs v4 (#3463)
- feat: implement virtual hostname V4 signatures
- feat: add configuration options to set the SSL root of trust (#3455)
- doc: add doxygen comments for ParallelUploadFile (#3448)
- feat: support x-goog-content-sha256 for V4 signed URLs (#3435)
Other Changes
- None
- No changes to the Bigtable client in this release.
- feat: implement resumable parallel file uploads (#3389) - allow applications to use multiple threads to upload large files, achieving throughput in excess of 1GiB/s. With this change applications can restart such uploads even if the application restarts.
- chore: upgrade testbench to Python 3 (#3402) - you will need to have Python 3 installed to run the integration tests.
- fix: correct environment handling in client_options_test (#3374)
- chore: update g-c-cpp-common to v0.19.0 (#3384)
- chore: upgrade to cpp-cmakefiles v0.4.1 (#3372)
- chore: update g-c-cpp-common to v0.19.0 (#3384)
- feat: implement ParallelUploadPersistentState (#3382)
- refactor: create ParallelUploadStateImpl (#3379)
- refactor: ScopedDeleter doesn't require metadata (#3380)
- docs: add examples of different credential classes for bigtable
- feat: use Bigtable direct path if configured (#3338)
BREAKING CHANGE
- fix!: insert logging layer only if requested (#3349)
Other Changes:
- fix: handle completed uploads in UploadChunk (#3348)
- fix: use ::testing::TempDir for test files (#3345)
- fix: remove debug log from benchmark output (#3341)
- test: allow specifying dir in parallel upload BM (#3339)
- feat: generate plots for parallel upload benchmark (#3336)
- doc: some fixes for storage client docs (#3332)
- feat: improve storage_throughput_benchmark (#3330)
- cleanup: remove tmpnam (#3325)
- test: don't build benchmarks without tests (#3322)
- feat: implement Delimiter option for ListObjects (#3320)
- docs: document parallel uploads design (#3321)
- test: implement a benchmark for parallel uploads (#3302)
- fix: handle CURLE_GOT_NOTHING as retryable (#3316)
- feat: benchmark reading many small chunks (#3313)
- feat: new functions to create
Chain
andInterleave
filters from ranges ofFilter
objects
BREAKING CHANGE
- feat: move creating prefix marker to ComposeMany (#3306)
Other Changes:
- feat: implement parallel uploads. For large files this can improve the upload bandwidth by a factor of 20. Note that in this release such uploads cannot be resumed after a program restart. (#3279)
- feat: support optionsRequestedPolicyVersion query parameter in
- fix: setting options in requests accepts crefs (#3287)
- feat: implement Bigtable sync vs. async benchmark (#3276)
- fix: detect duplicate cluster ids in
bigtable::InstanceConfig
(#3262) - bug: use
CalculateDefaultConnectionPoolSize
inset_connection_pool_size
(#3261)
- fix: add logic to ObjectWriteStreambuf for handling jumps in upload ranges to fix #3280 (#3283)
- bug: fix error messages in resumable sessions (#3263)
BREAKING CHANGE:
- The common libraries have been moved to the google-cloud-cpp-common repository. While this may not be a technically breaking change (the API and ABI remain unchanged, the include paths are the same), it will require application developers to change their build scripts.
- Submodule builds no longer supported.
- Upgraded cmake-format to 0.6.0. #3211
- Upgraded gRPC to 1.24.3 #3217
- Upgraded googletest to 1.10.0 #3201
- Pass along error message in
Table::Apply
retry loop #3208
- Implement
ComposeMany
to efficiently compose more than 32 GCS objects #3016 - Implement a function to delete all the objects that match a given prefix #3016
- Support uniform bucket level access #3186
- Use separate policy instances for each UploadChunk request #3213
- bug: fix runtime install directory (#3063)
- bug: fix runtime install directory (#3063)
- feat: treat
CURLE_SSL_CONNECT_ERROR as retryable
(#3077) - feat: Change JSON endpoint for
google/cloud/storage
. (#3076) - bug: restart downloads with retryable HTTP errors. (#3072)
- bug: calls to
resumable_session_id()
result in segfaults (#3062) - feat: added
ReadLast
option for reading object from end (#3058) - bug: handle
CURLE_PARTIAL_FILE
as recoverable (#3061) - bug: fix runtime install directory (#3063)
- bug: verify checksums and hashes on
xgetsn()
(#3057) - bug: return all bytes when stream is closed (#3054)
- feat: reset retry policy for each retry loop (#3050)
- feat: Configure C++17 build. (#2961)
- fix: use MetadataUpdatePolicy::FromClusterId. (#2968)
- fix: correct invalid routing headers. (#2988)
- feat: Random CRC and MD5 in storage throughput benchmark (#2943)
- feat: Make GCS throughput benchmark record progress. (#2944)
- feat: Increase download and upload buffers. (#2945)
- feat: Increase the threshold for using resumable uploads (#2946)
- cleanup: Don't include nljson.h from public oauth2 headers. (#2954)
- bug: Handle CURLE_{RECV,SEND}_ERROR as StatusCode::kUnavailable. (#2965)
- cleanup: Use ObjectMetadata in ResumableUploadResponse. (#2969)
- bug: do not disable hashes when Disable{MD5,Crc32c} are set to false (#2979)
- feat: Improve ObjectWriteStreambuf by replacing O(n^2) code. (#2989)
- cleanup: use existing function to generate data. (#2992)
- feat: allow applications to timeout stalled downloads. (#2993)
- fix: Actually enable the error injection test. (#2995)
- cleanup: Factor out payload creation from ServiceAccountCredentials:: (#2997)
- cleanup: Add additional testing for credential helpers. (#3004)
- fix: return proper error code from upload metadata (#3005)
- bug: Fix the initial backoff interval. (#3007)
- fix: eliminate a race condition from retry loop (#3013)
- bug: Unit tests are too slow. (#3021)
- fix: don't throw on expired retry policies (#3023)
- bug: ReadObject() retries only once (#3028)
- bug: CurlRequestBuilder not initializing all members. (#3035)
- fix: use next_expected_byte() in retried uploads (#3037)
- feat: Use macros for compiler id and version (#2937)
- fix: Fix bazel build on windows. (#2940)
- chore: Keep release tags in master branch. (#2963)
- cleanup: Use only find_package to find dependencies. (#2967)
- feat: Add ability to disable building libraries (#3025)
- bug: fix builds with CMake 3.15 (#3033)
- feat: Document behavior of passing empty string to SetEnv on Windows (#3030)
- feat: Minimize contention in Bigtable Client initialization. (#2923)
- feat: Support setting 64-bit integers mutations. (#2866)
- feat: Implement support for IAM conditions. (#2854)
- BREAKING CHANGE: use cmake files from github.com/googleapis/cpp-cmakefiles for googleapis protos (#2888)
- feat: Control TCP memory usage in GCS library. (#2902)
- feat: Make partial errors/last_status available to
ObjectWriteStream
(#2919) - feat: Change storage/benchmarks to compile with exceptions disabled. (#2916)
- feat: Implement native IAM operations for GCS. (#2900)
- feat: Helpers for PredefinedDefaultObjectAcl. (#2885)
- bug: Fix ReadObject() when reading the last chunk. (#2864)
- bug: Use correct field name for MD5 hash. (#2876)
- feat: add
conjunction
metafunction (#2892) - bug: Fix typo in testing_util/config.cmake.in (#2851)
- bug: Include 'IncludeGMock.cmake' in testing_util/config.cmake.in (#2848)
- bug: the library will return an error instead of simply discarding unknown IAM fields.
- feature: update googleapis protos to a more recent version.
- cleanup: marked rarely used CMake options as advanced. They will no longer show up by default in your CMake UI.
- Several internal cleanups, such as removing unused code in
google::cloud::bigtable::internal
, fixing constant names to follow the Google Style Guide, simplify the generation of version metadata, make it easier to import the code into Google, turned on-Wextra
for our builds, moved the sanitizer builds to Bazel, and refactoring generic gRPC utilities to a new common library.
- Breaking Change: we accidentally left two functions in the public API,
they are now removed. These functions were used to convert
google::cloud::storage::ServiceAccount
classes to and from JSON objects. - Breaking Change: we removed the functions in
google::cloud::storage::IdempotencyPolicy
forinternal::InsertObjectStreamingRequest
. This class is no longer used and the functions are unnecessary. This breakage only affects applications that define a customIdempotencyPolicy
. - bug: Fixed
WriteObject()
to actually retry the upload for each chunk, not just retry the creation of the upload session. - feature: add examples showing how to mock a
google::cloud::storage::Client
. - feature: allow applications to load service account credentials from the standard locations, but also change the scopes and subject as the credentials are loaded. Thanks to @timford for contributing this fix.
- bug: resuming an already finalized upload was not working correctly. Now the library restores the stream, but the stream is immediately closed (it is incorrect to write more data), and has the object metadata immediately available. Thanks to @Jseph for contributing this fix.
- bug: on Windows,
storage::Client::UploadFile()
andstorage::Client::DownloadFile()
were always treating the files as text, which meant their contents were transformed in unexpected ways. They are now always treated as binary. - bug: we were still leaking a few macros from the nlohmann json library to the user's namespace. This is now fixed. Thanks to @remyabel for helping us with this.
- feature: reduce data copies during download.
- bug: return an error if the IAM bindings contain unknown fields, previously the library was discarding these fields.
- Several internal cleanups, such as fixing constant names to match the Google
Style Guide, simplify the generation of version metadata, make the integration
tests more reliable by using several service accounts for each run, use
-Wextra
in our builds, and a few more.
- Breaking Changes
- The return type for WaitForConsistencyCheck() was a
future<StatusOr<bool>>
where most related functions return abigtable::Consistency
enum. Table::CheckAndMutateRow
returnsStatusOr<bool>
to indicate which branch of the predicate was taken in the atomic change. Meanwhile,AsyncCheckAndMutateRow()
returned afuture<StatusOr<proto-with-long-name>>
. Changed the async and sync versions to returnfuture<StatusOr<MutationBranch>>
.MutationBranch
is anenum
asStatusOr<bool>
is too eay to use incorrectly.- Removed the
Collection
template parameter fromTable::SampleRows
. - Fixed the last function,
WaitForConsistencyCheck
, that returnedstd::future
to returngoogle::cloud::future<>
. The function name changed too, to be more consistent with similar functions. - Remove all the "strong types" for bigtable, such as
InstanceId
,ClusterId
,TableId
, etc. This changed some of the constructors forbigtable::Table
and several member functions inbigtable::Table
,bigtable::TableAdmin
, andbigtable::InstanceAdmin
.
- The return type for WaitForConsistencyCheck() was a
- Changes:
- Implemented TableAdmin::AsyncWaitForConsistency.
- Implemented Table::AsyncReadRows.
- DeleteAppProfile defaults to
ignore_warnings=true
.
- Implemented option to read an object starting from an offset.
- Automatically restart downloads on error. With this change the download is restarted from the last received byte, and using the object generation used in the original download as well. (#2693)
- Bugfixes:
- Service account credentials not refreshing properly. (#2691)
- Fix build for macOS+CMake. (#2698)
- WriteObject now supports empty streams. (#2714)
- Breaking Changes
- Return
google::cloud::future
fromInstanceAdmin
functions: this is more consistent with all other functions returning futures. - Remove unused
bigtable::GrpcError
: the library no longer raises this exception, any code trying to catch the exception should be modified to handle errors viaStatusOr<T>
. - Remove Snapshot-related functions, tests, examples, etc.: this is whitelisted functionality in Cloud Bigtable and it is no longer expected to reach GA.
- Return
- Continue to implement more async APIs (
Async*()
methods) for theInstanceAdmin
,TableAdmin
, andTable
classes (Note: These are not yet stable) - Bugfixes:
- Need
ignore_warnings
to actually delete an AppProfile. - Fix portability/logical errors in shell scripts.
- Fix a race condition in
MutationBatcher
.
- Need
- Implemented a number of previously missing code samples.
- Support move-only callables in
future<T>
- Avoid
std::make_exception_ptr()
infuture_shared_state_base::abandon()
.
- Declared GA and updated major number.
- Support signed policy documents.
- Support service account key files in PKCS#12 format (aka
.p12
). - Support signing URLs and policy documents using the SignBlob API, this is useful when using the default service account in GCE to sign URLs and policy documents.
- Use SFINAE to constrain applicability of the BulkMutation(M&&...) ctor.
- Avoid std::make_exception_ptr() when building without exceptions.
- Breaking change:
Table::BulkApply
now returns astd::vector<FailedMutation>
instead of throwing an exception. - In the future we will remove all the
google::cloud::bigtable::noex::*
classes. We are moving the implementation togoogle::cloud::bigtable::*
. - Continuing to implement more async APIs (Note: These are not yet stable):
InstanceAdmin::AsyncDeleteInstance
Table::AsyncCheckAndMutateRow
TableAdmin::AsyncDeleteTable
TableAdmin::AsyncModifyColumnFamilies
BulkMutator
now returns more specific errors instead of generic UNKNOWN.- Improved install instructions, which are now tested with our CI builds.
- CMake-config files now work without
pkg-config
. - Removed the googleapis submodule. The build system now automatically downloads all deps.
- No longer throw exceptions from
ClientOptions
.
- Removed the googleapis submodule. The build system now automatically downloads all deps.
- Added initial support for HMAC key-related functions.
- Added support for V4 signed URLs.
- Improved install instructions, which are now tested with our CI builds.
- CMake-config files now work without
pkg-config
. - No longer throw exceptions from
ClientOptions
. - Handle object names with slashes.
- Added
ObjectMetadata::set_storage_class
- Added support for policy documents.
- Breaking change: Return
StatusOr<>
fromTableAdmin
andInstanceAdmin
operations to signal errors. - Add streaming to
(Async)BulkMutator
. - Implement a helper class (
MutationBatcher
) to automatically batch and manage outstanding bulk mutations. - Add
bigtable::Cell
constructors without labels argument. - Implementation of
RowSet
example using discontinuous keys. List{Instances,Clusters}
returnfailed_locations
.- First version of async
Apply
batching. - Keep
Apply
callbacks inMutationData
.
- Breaking change: Make
google::cloud::optional::operator bool()
explicit. - Add
google::cloud::optional
value conversions that matchstd::optional
. - Stop using grpc's
DO_NOT_USE
enum. - Remove ciso646 includes to force traditional spellings.
- Change
std::endl
->"\n"
. - Enforce formatting of
.cc
files.
- Properly handle subresources in V2 signed URLs.
- Allow specifying non-default
ServiceAccountCredentials
scope and subject. - Add
make install
instructions. - Change the storage examples to throw a
std::runtime_error
on failure. - Add Bucket Policy Only samples.
- No changes from v0.6.0
- No changes from v0.6.0
- The library is now Beta. We no longer expect changes to the API.
- No other changes from v0.6.0
- Moved repo organization from GoogleCloudPlatform -> googleapis.
- Implemented several more async functions.
- Breaking change: Started migrating functions to
StatusOr
and away from throwing exceptions. - Several fixes to bulk mutator (#1880)
- Disabled
make install
for external projects. Row
now has a move constructor.- Increased default message length limit.
- Now testing build with libc++ on Linux.
- Fixed some bugs found by Coverity scans.
- Fixed some documentation.
- Breaking change: Removed
StatusOr<void>
. - Updated
StatusOr
documentation. - Fixed some (minor) issues found by coverity.
- Breaking change: Removed almost all exception throwing in favor of
StatusOr<T>
return values. - Lots of cleanup to documentation and example code.
- Avoids use of
StatusOr::value()
when the validity was already checked. Client::ListBuckets()
now directly returnsListBucketsReader
, because it cannot fail soStatusOr
was not needed.- Removed support for
StatusOr<void>
; changed usages to returnStatus
instead. - 502s are now retryable errors from GCS.
- Breaking change:
LockBucketRetentionPolicy
returns aBucketMetadata
now instead ofvoid
. - Cleaned up documentation and example code.
- Disabled
make install
for external projects. - Moved repo organization from GoogleCloudPlatform -> googleapis.
- Moved some internal-only APIs out of public interfaces.
- Fixed resuming uploads when the server responds with a 308.
- Restore support for gcc-4.8.
- @remyabel cleaned up some hard-coded zone names in the examples.
- More experimental asynchronous APIs, including AsyncReadRows. Note that we expect to change all these experimental APIs as described in #1543.
- @remyabel contributed changes to disable the unit and integration tests. This can be useful for package maintainers.
- New Bigtable filter wrapper that accepts a single column.
- Breaking Change: remove the
as_proto_move()
member functions in favor ofas_proto() &&
. With the latter newer compilers will warn if the object is used after the destructive operation.
- Support compiling with gcc-4.8.
- Fix
GCP_LOG()
macro so it works on platforms that define aDEBUG
pre-processor symbol. - Use different PRNG sequences for each backoff instance, previously all the clones of a backoff policy shared the same sequence.
- Workaround build problems with Xcode 7.3.
- Try to use the exception mask in the IOStream classes
(
storage::ObjectReadStream
andstorage::ObjectWriteStream
). This allows applications to check errors locally viardstate()
. Note that applications that disable exceptions altogether must check thestatus()
member function for these IOStream classes. It is impossible to set therdstate()
for all failures when exceptions are disabled. - Support reading only a portion of a Blob.
- Support building with gcc-4.8.
- Many internal changes to better support applications that disable exceptions. A future release will include APIs that do not raise exceptions for error conditions.
- @remyabel contributed changes to disable the unit and integration tests. This can be useful for package maintainers.
- Implement a function to create signed URLs (
Client::CreateV2SignedUrl
). - Support resumable uploads in any upload operation.
- More experimental asynchronous APIs, note that we expect to change all these experimental APIs as described in #1543.
- Most of the admin operations now have asynchronous APIs.
- All asynchronous APIs in
noex::*
return an object through which applications can request cancellation of pending requests. - Prototype asynchronous APIs returning a
google::cloud::future<T>
, applications can attach callbacks and/or block on agoogle::cloud::future<T>
.
- Implement
google::cloud::future<T>
andgoogle::cloud::promise<T>
based on ISO/IEC TS 19571:2016, the "C++ Extensions for Concurrency" technical specification, also known as "futures with continuations".
- Use resumable uploads for large files in
Client::UploadFile()
. - Implement support for the
userIp
optional query parameter. - BREAKING CHANGE
Client::RewriteObject()
,Client::CopyObject()
, andClient::ComposeObject
no longer require theObjectMetadata
argument. Instead useWithObjectMetadata()
, which can be omitted if you do not need to set any metadata attributes in the new object. - When using OpenSSL-1.0.2 the client library needs to configure the locking callbacks for OpenSSL. However, the application may disable this behavior if the application developer is going to use their own locking callbacks.
- When refreshing OAuth2 access tokens the client library uses the same retry and backoff policies as used for the request itself.
- Applications can set object metadata attributes via the
WithObjectMetadata
optional argument toClient::InsertObjectMedia()
. - Applications can configure the library to only retry idempotent operations.
- The client library can use Google Compute Engine credentials to access the service.
- More experimental asynchronous APIs, note that we expect to change all these experimental APIs as described in #1543.
- Most of the admin operations now have asynchronous APIs.
- All asynchronous APIs in
noex::*
return an object through which applications can request cancellation of pending requests. - Prototype asynchronous APIs returning a
google::cloud::future<T>
, applications can attach callbacks and/or block on agoogle::cloud::future<T>
.
- Implement
google::cloud::future<T>
andgoogle::cloud::promise<T>
based on ISO/IEC TS 19571:2016, the "C++ Extensions for Concurrency" technical specification, also known as "futures with continuations".
- Use resumable uploads for large files in
Client::UploadFile()
. - Implement support for the
userIp
optional query parameter. - BREAKING CHANGE
Client::RewriteObject()
,Client::CopyObject()
, andClient::ComposeObject
no longer require theObjectMetadata
argument. Instead useWithObjectMetadata()
, which can be omitted if you do not need to set any metadata attributes in the new object. - When using OpenSSL-1.0.2 the client library needs to configure the locking callbacks for OpenSSL. However, the application may disable this behavior if the application developer is going to use their own locking callbacks.
- When refreshing OAuth2 access tokens the client library uses the same retry and backoff policies as used for the request itself.
- Applications can set object metadata attributes via the
WithObjectMetadata
optional argument toClient::InsertObjectMedia()
. - Applications can configure the library to only retry idempotent operations.
- The client library can use Google Compute Engine credentials to access the service.
This is the v0.3.0 release of the Google Cloud C++ Client Libraries.
- Experimental asynchronous APIs.
- Include an example that illustrates how to use OpenCensus and the Cloud Bigtable C++ client library.
- Several cleanups around dependency management with CMake.
- Jason Zaman contributed improvements and fixes to support soversion numbers with CMake.
- Lots of improvements to the code coverage in the examples and tests.
- Fixed multiple documentation issues, including a much better landing page in the Doxygen documentation.
google::cloud::optional<T>
an intentionally incomplete implementation ofstd::optional<T>
to support C++11 and C++14 users.- Applications can configure
google::cloud::LogSink
to enable logging in some of the libraries and to redirect the logs to their preferred destination. The libraries do not enable any logging by default, not even tostderr
. google::cloud::SetTerminateHandler()
allows applications compiled without exceptions, but using the APIs that rely on exceptions to report errors, to configure how the application terminates when an unrecoverable error is detected by the libraries.
- Automatically compute MD5 hashes and CRC32C checksums when objects are uploaded and downloaded. Any hash or checksum mismatched results in an exception. Applications can MD5 hashes, CRC32C checksums or both on any request.
- Parse Bucket lock and retention policy attributes in object and bucket metadata.
- Add APIs to upload and download files with a single function call.
- Improved the error messages generated when the credentials file is missing or has invalid contents.
- Jason Zaman contributed improvements and fixes to support soversion numbers with CMake.
- Experimental asynchronous APIs.
- Include an example that illustrates how to use OpenCensus and the Cloud Bigtable C++ client library.
- Several cleanups around dependency management with CMake.
- Jason Zaman contributed improvements and fixes to support soversion numbers with CMake.
- Lots of improvements to the code coverage in the examples and tests.
- Fixed multiple documentation issues, including a much better landing page in the Doxygen documentation.
google::cloud::optional<T>
an intentionally incomplete implementation ofstd::optional<T>
to support C++11 and C++14 users.- Applications can configure
google::cloud::LogSink
to enable logging in some of the libraries and to redirect the logs to their preferred destination. The libraries do not enable any logging by default, not even tostderr
. google::cloud::SetTerminateHandler()
allows applications compiled without exceptions, but using the APIs that rely on exceptions to report errors, to configure how the application terminates when an unrecoverable error is detected by the libraries.
- Automatically compute MD5 hashes and CRC32C checksums when objects are uploaded and downloaded. Any hash or checksum mismatched results in an exception. Applications can MD5 hashes, CRC32C checksums or both on any request.
- Parse Bucket lock and retention policy attributes in object and bucket metadata.
- Add APIs to upload and download files with a single function call.
- Improved the error messages generated when the credentials file is missing or has invalid contents.
- Jason Zaman contributed improvements and fixes to support soversion numbers with CMake.
This is the v0.2.0 release of the Google Cloud C++ Client Libraries.
- Status: Beta.
- All data manipulation and admin APIs are implemented.
- All APIs have documentation and short examples showing how to use them.
- The API is not expected to change before 1.0
This is the v0.1.0 release.
- Status: Alpha.
- All synchronous APIs for data manipulation and for table administration are implemented.
- All APIs have integration tests and short examples.
This is the second pre-release of v0.1.0, to further refine the process.
- All synchronous APIs for data manipulation and table administration are implemented.
- We want to add better examples and additional unit tests to wrap up v0.1.0.
This release is mainly created so we can fine tune the process of creating releases. The relevant notes are:
- Synchronous API for data operations largely complete, only
SampleRowKeys()
andReadModifyWrite()
are missing. - Synchronous API for table admin operations is complete.