This is a release candidate for the upcoming RethinkDB 2.0 release. It is not for production use. It might still have bugs. If you decide to test it, please back up all your data first.
Please report any bugs you find on GitHub (http://github.com/rethinkdb/rethinkdb/issues/new) or on our mailing list (https://groups.google.com/forum/#!forum/rethinkdb).
Release highlights:
- Support for attaching a changefeed to the
get_all
andunion
commands - Improved support for asynchronous queries
Read the blog post for more details.
Download
1. Download the server
- Source tarball
- OS X 64 bit dmg
- CentOS 6 and 7 64 bit | 32 bit
- Ubuntu 10.04 lucid 64 bit | 32 bit
- Ubuntu 12.04 precise 64 bit | 32 bit
- Ubuntu 13.10 saucy 64 bit | 32 bit
- Ubuntu 14.04 trusty 64 bit | 32 bit
- Ubuntu 14.10 utopic 64 bit | 32 bit
- Debian wheezy 64 bit | 32 bit
- Debian jessie 64 bit | 32 bit
2. Download a driver
Update (03/31/2015): The drivers have been updated to include EventMachine (Ruby) and Tornado (Python) integration.
JavaScript
$ npm install http://download.rethinkdb.com/dev/2.0.0-0RC1/rethinkdb-2.0.0-RC1.nodejs.tgz
Python
$ pip install http://download.rethinkdb.com/dev/2.0.0-0RC1/rethinkdb-2.0.0rc2.python.tar.gz
Ruby
$ wget http://download.rethinkdb.com/dev/2.0.0-0RC1/rethinkdb-2.0.0.rc.2.gem
$ gem install rethinkdb-2.0.0.rc.2.gem
Compatibility
Data files accessed with this release candidate might be incompatible
with the final version of RethinkDB 2.0.
Handling of negative zero in indexes
IEEE 754 floating point numbers distinguish between negative (-0) and positive (+0) zero. The following information is only relevant if you are storing negative zero values in your documents. We expect very few users to be affected by this change.
ReQL compares -0 and +0 as equal in accordance with IEEE 754. In previous versions of RethinkDB, -0 and +0 were however treated as distinct values in primary and secondary indexes. This could lead to inconsistent behavior and wrong query results in some rare cases.
Starting with RethinkDB 2.0, -0 and +0 are indexed as equal values. Secondary indexes can be migrated online using the rethinkdb index-rebuild
utility. If any of your documents have negative zero values in their primary keys, those documents will become partially inaccessible in RethinkDB 2.0. You will need to
re-import the affected tables using the rethinkdb dump
and rethinkdb restore
commands. See the article "Back up your data" for more information.
If you are unsure if any of your documents are affected, you can run python -m rethinkdb._negative_zero_check
after upgrading both the server and Python driver. See the output of python -m rethinkdb._negative_zero_check --help
for additional options.
API-breaking changes
between
no longer acceptsnull
bounds. The newr.minval
andr.maxval
can be used instead- The
any
andall
commands have been removed. Theor
andand
commands can be used instead indexes_of
has been renamed tooffsets_of
- The
squash
argument tochanges
now defaults tofalse
- The type hierarchy for exception types in the Python driver changed. All exceptions including
RqlDriverError
now inherit from theRqlError
type.RqlRuntimeError
,RqlCompileError
andRqlClientError
additionally inherit from the newRqlQueryError
type
New Features
- ReQL
- Drivers
- Python driver
- Added an optional script that warns for documents with negative zero in a primary key (#3637)
Improvements
- Server
- Report open cursors as a single entry in the jobs table (#3662)
- Timestamps are no longer sent between servers in
batchspec_t
(#2671) - Some expensive changefeed checks are no longer performed in release mode (#3656)
- Include the remote port number in the heartbeat timeout message (#2891)
- Improved the ordering and throttling of reads and writes (#1606)
- Limit the number of documents per write batch to reduce the impact of large writes on other queries (#3806)
- Execute multiple queries in parallel on a single connection (#3296)
- Improved the performance of sending responses (#3744)
- Immediately send back an empty first batch when the result is a changefeed (#3852)
- Web UI
- ReQL
table.rebalance
with insufficient data is no longer an error (#3679)- Renamed
indexes_of
tooffsets_of
to avoid confusion with secondary indexes (#3265) - Removed
any
andall
in favor ofor
andand
(#1581) - Trivial changes are filtered out from
return_changes
(#3697) - Reduced the size of profiles (#3218)
- Changefeeds are no longer squashed by default (#3904)
- JavaScript driver
- Added an upper bound to the bluebird dependency (#3823)
- Ruby driver
- Build
- Packaging
- Tests
- Increased the number of retries in the
RDBBtree
tests to avoid false positives (#3805)
- Increased the number of retries in the
Bug Fixes
- Server
- Fixed a race condition that could be caused by concurrent queries (#3766)
- Deleted servers and tables are no longer counted during version checks (#3692)
- Made JSON parsing more strict (#3810)
- Fixed a bug that could cause the server to crash when killed (#3792)
- Databases can no longer be renamed to "rethinkdb" (#3858)
- Return an initial value for point changefeeds on system tables (#3723)
- Improved the handling of negative zero (#3637)
- Correctly abort
order_by.limit
changefeeds when a table become unavailable (#3932) - Do not unlink files early to avoid crashing in virtual environments (#3791)
- ReQL
- Web UI
- Fixed a bug that caused the status icon to be green when a table was unavailable (#3500)
- Fixed a bug that truncated labels in the performance graph (#3751)
- Correctly handle the escape key in modal dialogs (#3872)
- Fixed a bug that caused an
InternalError
when loading large tables (#3873) - Fixed a bug that caused the Data Explorer to break when reading older data from
localStorage
(#3935) - Fixed a bug that caused autocompletion to fail in certain cases (#3143)
- Python driver
- Fixed
rethinkdb export
compatibility between Python 2 and Python 3 (#3911)
- Fixed
- JavaScript driver
- Ruby driver
- Fixed a bug that caused failures when using JRuby (#3795)
Contributors
Many thanks to external contributors from the RethinkDB community for helping
us ship the RethinkDB 2.0 release candidate. In no particular order:
- Andrey Deryabin (@aderyabin)
- Angelo Ashmore (@angeloashmore)
- Armen Filipetyan (@armenfilipetyan)
- Bill Barsch (@billbarsch)
- Tinco Andringa (@d-snp)
- Elian Gidoni (@eliangidoni)
- Ed Costello (@epc)
- Jonathan Ong (@jonathanong)
- Justin Mealey (@justinmealey)
- Krishna Narasimhan (@krishnanm86)
- Andrei Horak (@linkyndy)
- Loring Dodge (@loringdodge)
- Mike Marcacci (@mike-marcacci)
- Param Aggarwal (@paramaggarwal)
- @sharow
- @tundrax
- Kai Curry (@webmasterkai)