Tarantool 1.6
Release: v. 1.6.0
Release 1.6.9
Release type: maintenance. Release date: 2016-09-27. Release tag: 1.6.9-4-gcc9ddd7. Release: v. 1.6.9
Since February 15, 2017, due to Tarantool issue (gh-2040)
there no longer is a storage engine named sophia
.
It will be superseded in version 1.7 by the vinyl
storage engine.
Incompatible changes:
- Support for SHA-0 (
digest.sha()
) was removed due to OpenSSL upgrade.- Tarantool binary now dynamically links with libssl.so during compile time instead of loading it at the run time.
- Fedora 22 packages were deprecated (EOL).
Functionality added or changed:
- Tab-based autocompletion in the interactive console (gh-86).
- LUA_PATH and LUA_CPATH environment variables taken into account, like in PUC-RIO Lua (gh-1428).
- Search for
.dylib
as well as for.so
libraries in OS X (gh-810).- A new
box.cfg { read_only = true }
option to emulate master-slave behavior (gh-246).if_not_exists = true
option added tobox.schema.user.grant
(gh-1683).clock_realtime()
/monotonic()
functions added to the public C API (gh-1455).space:count(key, opts)
introduced as an alias forspace.index.primary:count(key, opts)
(gh-1391).- Upgrade script for 1.6.4 -> 1.6.8 -> 1.6.9 (gh-1281).
- Support for OpenSSL 1.1 (gh-1722).
New rocks and packages:
- curl - non-blocking bindings for libcurl
- prometheus - Prometheus metric collector for Tarantool
- gis - full-featured geospatial extension for Tarantool.
- mqtt - MQTT protocol client for Tarantool
- luaossl - the most comprehensive OpenSSL module in the Lua universe
Release 1.6.8
Release type: maintenance. Release date: 2016-02-25. Release tag: 1.6.8-525-ga571ac0. Release: v. 1.6.8
Incompatible changes:
RPM packages for CentOS 7 / RHEL 7 and Fedora 22+ now use native systemd configuration without legacy sysvinit shell scripts. Systemd provides its own facilities for multi-instance management. To upgrade, perform the following steps:
- Ensure that
INSTANCENAME.lua
file is present in/etc/tarantool/instances.available
.- Stop INSTANCENAME using
tarantoolctl stop INSTANCENAME
.- Start INSTANCENAME using
systemctl start tarantool@INSTANCENAME
.- Enable INSTANCENAME during system boot using
systemctl enable tarantool@INTANCENAME
.
/etc/tarantool/instance.enabled
directory is now deprecated for systemd-enabled platforms.See the administration chapter for additional information.
Sophia was upgraded to v2.1 to fix upsert, memory corruption and other bugs. Sophia v2.1 doesn’t support old v1.1 data format. Please use Tarantool replication to upgrade (gh-1222).
Ubuntu Vivid, Fedora 20, Fedora 21 were deprecated due to EOL.
i686 packages were deprecated. Please use our RPM and DEB specs to build these on your own infrastructure.
Please update your
yum.repos.d
and/or aptsources.list.d
according to instructions at http://tarantool.org/download.html
Functionality added or changed:
Tarantool 1.6.8 fully supports ARMv7 and ARMv8 (aarch64) processors. Now it is possible to use Tarantool on a wide range of consumer devices, starting from popular Raspberry PI 2 to coin-size embedded boards and no-name mini-micro-nano-PCs (gh-1153). (Also qemu works well, but we don’t have real hardware to check.)
Tuple comparator functions were optimized, providing up to 30% performance boost when an index key consists of 2, 3 or more parts (gh-969).
Tuple allocator changes give another 15% performance improvement (gh-1298).
Replication relay performance was improved by reducing the amount of data directory re-scans (gh-1150).
A random delay was introduced into snapshot daemon, reducing the chance that multiple instances take a snapshot at the same time (gh-732).
Sophia storage engine was upgraded to v2.1:
- serializable Snapshot Isolation (SSI),
- RAM storage mode,
- anti-cache storage mode,
- persistent caching storage mode,
- implemented AMQ Filter,
- LRU mode,
- separate compression for hot and cold data,
- snapshot implementation for Faster Recovery,
- upsert reorganizations and fixes,
- new performance metrics.
Please note “Incompatible changes” above.
Allow to remove servers with non-zero LSN from
_cluster
space (gh-1219).
net.box
now automatically reloads space and index definitions (gh-1183).The maximal number of indexes in space was increased to 128 (gh-1311).
New native
systemd
configuration with support of instance management and daemon supervision (CentOS 7 and Fedora 22+ only). Please note “Incompatible changes” above (gh-1264).Tarantool package was accepted to the official Fedora repositories (https://apps.fedoraproject.org/packages/tarantool).
Tarantool brew formula (OS X) was accepted to the official Homebrew repository (https://formulae.brew.sh/formula/tarantool).
Clang compiler support was added on FreeBSD. (gh-786).
Support for musl libc, used by Alpine Linux and Docker images, was added (gh-1249).
Added support for GCC 6.0.
Ubuntu Wily, Xenial and Fedora 22, 23 and 24 are now supported distributions for which we build official packages.
box.info.cluster.uuid can be used to retrieve cluster UUID (gh-1117).
Numerous improvements in the documentation, added documentation for
syslog
,clock
,fiber.storage
packages, updated the built-in tutorial.
New rocks and packages:
- Tarantool switched to a new Docker-based cloud build infrastructure The new buildbot significantly decreases commit-to-package time. The official repositories at http://tarantool.org now contain the latest version of the server, rocks and connectors. See http://github.com/tarantool/build
- The repositories at http://tarantool.org/download.html were moved to http://packagecloud.io cloud hosting (backed by Amazon AWS). Thanks to packagecloud.io for their support of open source!
memcached
- memcached text and binary protocol implementation for Tarantool. Turns Tarantool into a persistent memcached with master-master replication. See https://github.com/tarantool/memcachedmigrate
- a Tarantool rock for migration from Tarantool 1.5 to 1.6. See https://github.com/bigbes/migratecqueues
- a Lua asynchronous networking, threading, and notification framework (contributed by @daurnimator). PR 1204.
Release 1.6.7
Release type: maintenance. Release date: 2015-11-17. Release: v. 1.6.7 Incompatible changes:
- The syntax of
upsert
command has been changed and an extrakey
argument was removed from it. The primary key for look up is now always taken from the tuple, which is the second argument of upsert.upsert()
was added fairly late at a release cycle and the design had an obvious bug which we had to fix. Sorry for this.fiber.channel.broadcast()
was removed since it wasn’t used by anyone and didn’t work properly.- tarantoolctl
reload
command renamed toeval
.
Functionality added or changed:
logger
option now accepts a syntax for syslog output. Use uri-style syntax for file, pipe or syslog log destination.replication_source
now accepts an array of URIs, so each replica can have up to 30 peers.- RTREE index now accept two types of
distance
functions:euclid
andmanhattan
.fio.abspath()
- a new function infio
rock to convert a relative path to absolute.- The process title now can be set with an on-board
title
rock.- This release uses LuaJIT 2.1.
New rocks:
memcached
- makes Tarantool understand Memcached binary protocol. Text protocol support is in progress and will be added to the rock itself, without changes to the server core.
Release 1.6.6
Release type: maintenance. Release date: 2015-08-28. Release: v. 1.6.6
Tarantool 1.6 is no longer getting major new features, although it will be maintained. The developers are concentrating on Tarantool version 1.9.
Incompatible changes:
- A new schema of
_index
system space which accommodates multi-dimensional RTREE indexes. Tarantool 1.6.6 works fine with an old snapshot and system spaces, but you will not be able to start Tarantool 1.6.5 with a data directory created by Tarantool 1.6.6, neither will you be able to query Tarantool 1.6.6 schema with 1.6.5 net.box.box.info.snapshot_pid
is renamed tobox.info.snapshot_in_progress
Functionality added or changed:
- Threaded architecture for network. Network I/O has finally been moved to a separate thread, increasing single instance performance by up to 50%.
- Threaded architecture for checkpointing. Tarantool no longer forks to create a snapshot, but uses a separate thread, accessing data via a consistent read view. This eliminates all known latency spikes caused by snapshotting.
- Stored procedures in C/C++. Stored procedures in C/C++ provide speed (3-4 times, compared to a Lua version in our measurements), as well as unlimited extensibility power. Since C/C++ procedures run in the same memory space as the database, they are also an easy tool to corrupt database memory. See The C API description.
- Multidimensional RTREE index. RTREE index type now support a large (up to 32) number of dimensions. RTREE data structure has been optimized to actually use R*-TREE. We’re working on further improvements of the index, in particular, configurable distance function. See https://github.com/tarantool/tarantool/wiki/R-tree-index-quick-start-and-usage
- Sophia 2.1.1, with support of compression and multipart primary keys. See https://groups.google.com/forum/#!topic/sophia-database/GfcbEC7ksRg
- New
upsert
command available in the binary protocol and in stored functions. The key advantage of upsert is that it’s much faster with write-optimized storage (sophia storage engine), but some caveats exists as well. See (gh-905) for details. Even though upsert performance advantage is most prominent with sophia engine, it works with all storage engines.- Better memory diagnostics information for fibers, tuple and index arena. Try a new command
box.slab.stats()
, for detailed information about tuple/index slabs,fiber.info()
now displays information about memory used by the fiber.- Update and delete now work using a secondary index, if the index is unique.
- Authentication triggers. Set
box.session.on_auth
triggers to catch authentication events. Trigger API is improved to display all defined triggers, easily remove old triggers.- Manifold performance improvements of
net.box
built-in package.- Performance optimizations of BITSET index.
panic_on_wal_error
is a dynamic configuration option now.- iproto
sync
field is available in Lua assession.sync()
.box.once()
- a new method to invoke code once in an instance and replica set lifetime. Useonce()
to set up spaces and uses, as well as do schema upgrade in production.box.error.last()
to return the last error in a session.
New rocks:
jit.*
,jit.dump
,jit.util
,jit.vmdef
modules of LuaJIT 2.0 are now available as built-ins. See http://luajit.org/ext_jit.htmlstrict
built-in package, banning use of undeclared variables in Lua. Strict mode is on when Tarantool is compiled with debug. Turn on/off withrequire('strict').on()
/require('strict').off()
.pg
andmysql
rocks, available at http://rocks.tarantool.org - working with MySQL and PostgreSQL from Tarantool.gperftools
rock, available at http://rocks.tarantool.org - getting performance data using Google’s gperf from Tarantool.csv
built-in rock, to parse and load CSV (comma-separated values) data.
New supported platforms:
- Fedora 22, Ubuntu Vivid