The highlights of this release are the r.http
command for external
data access, change feed support via the new changes
command, and
full support for Node.js promises in the JavaScript driver.
http://rethinkdb.com/blog/1.13-release/
Compatibility
This release is not compatible with data files from earlier
releases. If you have data you want to migrate from an older version
of RethinkDB, please follow the migration instructions before
upgrading:
http://rethinkdb.com/docs/migration/
There are also some backwards incompatible changes in the JavaScript driver.
- The
hasNext
command for cursors has been removed.next
can be used instead.
New features
- ReQL
- Added
r.random
for generating random numbers (#865) - Made the second argument to
slice
optional (#2048) eq_join
now accepts a function as its first argument, and does not fail if the field doesn't exist (#1764)nth
can now return a selection, just likeget
(#348)- Improved the
master not available
error message (#1811) - Switched to the JSON protocol in the Ruby, JavaScript and Python drivers (#2224, #2390)
- Added the
changes
command for creating live change feeds (#997) - Added
r.args
to allow specifying a dynamic number of arguments to commands such asget_all
(#1854) - Added
r.http
for interfacing with external APIs (#1383)
- Added
- Server
- Added a JSON protocol to replace the protobuf protocol, which is now deprecated (#1868)
- Added a README describing the structure of the
src/
folder (#2301) - Switched to manual versioning of the intra-cluster protocol (#2295)
- Made the serialization format version-aware (#2308, #2353)
- Improved the error message when running out of disk space (#1945)
- JavaScript driver
- Tests
- Build
Improved performance
- Server
- Allocate smaller pages in the cache (#2130)
- Reduce overhead by handling requests locally on the primary if possible (#2083)
- Adjusted the value of
chunk_processing_semaphore
(#2392) - Improved backfilling on rotational drives (#2393)
- Metadata is no longer copied when evaluating
r.db
(#1907) - No longer update the stat block when updating secondary indexes (#2431)
- Block writes are better combined in the cache (#2127)
- Concurrent garbage collection to improve disk space efficiency (#2457)
- Testing
- Added automated performance regression tests (#1963)
Fixed bugs
- Server
- Fixed the threaded coroutine implementation (#2168, #2332)
- HTTP 500 errors are now accompanied by an error message (#511)
- Got rid of vestigial memcache support (#803)
- Made
order_by
and other sortings be stable (#2155) - Cleaned up blob_t code to make it more reliable (#2227)
- Fixed a bug that caused crashes when dropping secondary indexes under load (#2251)
- Fixed a bug in the JSON parsing code that caused a crash (#2489)
- Fixed a bug that could cause segfaults (#2491)
- Avoid high memory consumption on startup (#2329)
- Disabled Nagle algorithm for outgoing TCP connections (#2529)
- Remove some potentially objectionable server names (#2468)
- Fixed a bug that caused
Callstack overflow in a coroutine
errors (#2357) - Merged upstream fixes to
cJSON
(#2496) - Fixed a bug that could cause a segmentation fault (#2500)
- Fixed a bug in the serializer garbage byte calculation (#2541)
- ReQL
- Ruby driver
- JavaScript driver
- Improved the variable names in error messages (#2461)
- Web UI
- Fixed a bug that caused JavaScript exceptions (#2503)
- Fixed the per-server document count (#1836)
- The database name is now shown on the table page (#2366)
- Removed the inconsistent green tick next to the secondary index status (#2084)
- Fixed email highlighting (#2378)
- Large responses no longer cause the Data Explorer to become unresponsive (#2481)
- Fixed a bug triggered by clearing the Data Explorer history (#2389)
- Tests
- Converted the memcache tests to use ReQL (#803)
Contributors
Many thanks to external contributors from the RethinkDB community for
helping us ship RethinkDB 1.13. In no particular order:
- Liu Aleaxander (@Aleaxander)
- Nicolas Viennot (@nviennot)
- Elian Gidoni (@eliangidoni)
- Matthew Frazier (@leafstorm)
- Masatoshi Ishida (@Masatoshi)