############# Release Notes ############# FoundationDB Alpha 5 ==================== Language support ---------------- * FoundationDB now supports :doc:`Ruby ` * FoundationDB now supports Node.js * FoundationDB now supports `Java `_ and other JVM languages. .. _alpha-5-rel-notes-features: Features -------- * A new :doc:`backup ` system allows scheduled backups of a snapshot of the FoundationDB database to an external filesystem. * :doc:`Integrated HTML documentation ` * :ref:`Snapshot reads ` allow API clients to selectively relax FoundationDB's strong isolation guarantee. Appropriate use can of them can reduce :ref:`conflict-ranges` but makes reasoning about concurrency harder. * :ref:`Streaming modes ` allow API clients to adjust how FoundationDB transfers data for range reads for improved performance. * Client APIs automatically detect the appropriate network interface (local address) when connecting to a cluster, and will look for a :ref:`default-cluster-file`. Compatibility ------------- * Tuples encoded with prior alpha versions are incompatible with the tuple layer in Alpha 5. * Databases created with Alpha 4 will be compatible. (See :ref:`Upgrading from older versions ` for upgrade instructions) * Databases created before Alpha 4 will be incompatible. (See :ref:`Upgrading from older versions ` for details) Changes to all APIs ------------------- * The API version has been updated to 14. * :ref:`Snapshot reads ` (see :ref:`Features `, above). * :ref:`Streaming modes ` (see :ref:`Features `, above). * Automatic network interface detection (see :ref:`Features `, above). * The tuple layer supports unicode strings (encoded as UTF-8), has a more compact encoding, and is not compatible with data from prior versions. * Reversed range reads are now exposed through a separate parameter rather than via a negative ``limit``. * Extensible options are now exposed at the network, cluster, database and transaction levels. The parameters to :c:func:`fdb_setup_network` and :py:func:`fdb.init` have been replaced by network options. * Option enumerations are available in a machine-readable format for the benefit of third-party language binding developers. Python API changes ------------------ * :py:func:`fdb.open` can be called with no parameters to use the :ref:`default-cluster-file`. * Waiting on a Future object has changed from ``.get()`` to :py:meth:`.wait() ` * Reversed range reads can by specified by passing a slice object with a -1 step. * The convenience read methods on :py:class:`fdb.Database` are now transactional. C API changes ------------- * Byte limits exposed in :c:func:`fdb_transaction_get_range`. These are not currently exposed by any of the higher level clients (and usually streaming modes should be preferred). * :c:func:`fdb_future_get_keyvalue_array` returns an explicit flag indicating whether there is more data in the range beyond the limits passed to :c:func:`fdb_transaction_get_range`. * ``fdb_transaction_get_range_selector`` has been eliminated - :c:func:`fdb_transaction_get_range` always takes key selectors.