documentation/sphinx/source/release-notes/release-notes-023.rst
############# Release Notes #############
The Beta 3 release focuses on major improvements across our language APIs, including new capabilities for locality, watches, transaction cancellation and timeouts, explicit conflict ranges, and atomic operations. It also improves performance and removes known limitations.
locality <api-python-locality> API.watches <api-python-watches> that asynchronously report changes to the values of specified keys.Cancel <api-python-cancel> transactions or set them to automatically :ref:timeout <api-python-timeout> and cancel.conflict ranges <api-python-conflict-ranges>.atomic operations <api-python-transaction-atomic-operations> that transform a value (e.g. incrementing it) without client reads to avoid transaction conflicts.Based on customer feedback and internal testing, the API has been significantly revised for increased performance and ease of use. This is a breaking API change. We will continue to make the previous JAR available for the time being.
com.foundationdb.async). The library has a host of new members for greater flexibility and more predictable error handling.Database.run(...) can now return an arbitrary object from user code, simplifying use of this recommended retry loop.Function replaces several interfaces: Mapper, Block, Retryable, and AsyncRetryable.Future instance, even one not backed with native resources.onSuccess() and onFailure() in favor of map() and flatMap(). If code needs simple triggering, onReady() is still available.Transaction.getRange(...) starts fetching data immediately upon invocation. This simplifies development of code that reads ranges in parallel.accept a key <api-python-keys> will also accept a Python object with an as_foundationdb_key() method that returns a key. Likewise, methods that accept a value will also accept a Python object with an as_foundationdb_value() method that returns a value.location-aware load balancing <api-python-database-options>.GetRange request using a row limit and an end key selector that enters the system keyspace could return too few results.GetRange could improperly cache too large a range of data when the end key selector resolved past the end of user keyspace, temporarily resulting in incorrect answers to read requests.Beta 2 (API Version 22) <release-notes-022>Beta 1 (API Version 21) <release-notes-023>Alpha 6 (API Version 16) <release-notes-016>Alpha 5 (API Version 14) <release-notes-014>