Tarantool 1.7 | Tarantool
Release notes / Tarantool 1.7
Release notes / Tarantool 1.7

Tarantool 1.7

Tarantool 1.7

Release 1.7.6

Release type: stable. Release date: 2017-11-07. Tag: 1.7.6-0-g7b2945d6c.


This is the next stable release in the 1.7 series. It resolves more than 75 issues since 1.7.5.

What’s new in Tarantool 1.7.6?

  • In addition to rollback of a transaction, there is now rollback to a defined point within a transaction – savepoint support.
  • There is a new object type: sequences. The older option, auto-increment, will be deprecated.
  • String indexes can have collations.

New options are available for:

Incompatible changes:

  • Layout of has been extended to support is_nullable and collation features. All new indexes created on columns with is_nullable or collation properties will have the new definition format. Please update your client libraries if you plan to use these new features. Issue 2802
  • fiber_name() now raises an exception instead of truncating long fiber names. We found that some Lua modules such as expirationd use as a key to identify background tasks. If a name is truncated, this fact was silently missed. The new behavior allows to detect bugs caused by truncation. Please use, { truncate = true }) to emulate the old behavior. Issue 2622
  • space:format() is now validated on DML operations. Previously space:format() was only used by client libraries, but starting from Tarantool 1.7.6, field types in space:format() are validated on the server side on every DML operation, and field names can be used in indexes and Lua code. If you used space:format() in a non-standard way, please update layout and type names according to the official documentation for space formats.

Functionality added or changed:

  • Hybrid schema-less + schemaful data model. Earlier Tarantool versions allowed to store arbitrary MessagePack documents in spaces. Starting from Tarantool 1.7.6, you can use space:format() to define schema restrictions and constraints for tuples in spaces. Defined field types are automatically validated on every DML operation, and defined field names can be used instead of field numbers in Lua code. A new function tuple:tomap() was added to convert a tuple into a key-value Lua dictionary.
  • Collation and Unicode support. By default, when Tarantool compares strings, it takes into consideration only the numeric value of each byte in the string. To allow the ordering that you see in phone books and dictionaries, Tarantool 1.7.6 introduces support for collations based on the Default Unicode Collation Element Table (DUCET) and the rules described in Unicode® Technical Standard #10 Unicode Collation Algorithm (UTS #10 UCA) See collations.
  • NULL values in unique and non-unique indexes. By default, all fields in Tarantool are “NOT NULL”. Starting from Tarantool 1.7.6, you can use is_nullable option in space:format() or inside an index part definition to allow storing NULL in indexes. Tarantool partially implements three-valued logic from the SQL standard and allows storing multiple NULL values in unique indexes. Issue 1557.
  • Sequences and a new implementation of auto_increment(). Tarantool 1.7.6 introduces new sequence number generators (like CREATE SEQUENCE in SQL). This feature is used to implement new persistent auto increment in spaces. Issue 389.
  • Vinyl: introduced gap locks in Vinyl transaction manager. The new locking mechanism in Vinyl TX manager reduces the number of conflicts in transactions. Issue 2671.
  • on_connect and on_disconnect triggers. Issue 2858.
  • Structured logging in JSON format. Issue 2795.
  • (Lua) Lua: string.strip() Issue 2785.
  • (Lua) added base64_urlsafe_encode() to digest module. Issue 2777.
  • Log conflicted keys in master-master replication. Issue 2779.
  • Allow to disable backtrace in Issue 2878.
  • Implemented tarantoolctl rocks make *.spec. Issue 2846.
  • Extended the default loader to look for .rocks in the parent dir hierarchy. Issue 2676.
  • SOL_TCP options support in socket:setsockopt(). Issue 598.
  • Partial emulation of LuaSocket on top of Tarantool Socket. Issue 2727.

Developer tools:

  • Integration with IntelliJ IDEA with debugging support. Now you can use IntelliJ IDEA as an IDE to develop and debug Lua applications for Tarantool. See Using IDE.
  • Integration with MobDebug remote Lua debugger. Issue 2728.
  • Configured /usr/bin/tarantool as an alternative Lua interpreter on Debian/Ubuntu. Issue 2730.

New rocks:

Release 1.7.5

Release type: stable. Release date: 2017-08-22. Tag: 1.7.5.


This is a stable release in the 1.7 series. This release resolves more than 160 issues since 1.7.4.

Functionality added or changed:

  • (Vinyl) a new force_recovery mode to recover broken disk files. Use box.cfg{force_recovery=true} to recover corrupted data files after hardware issues or power outages. Issue 2253.
  • (Vinyl) index options can be changed on the fly without rebuild. Now page_size, run_size_ratio, run_count_per_level and bloom_fpr index options can be dynamically changed via index:alter(). The changes take effect in newly created data files only. Issue 2109.
  • (Vinyl) improve and index:info() output. Issue 1662.
  • (Vinyl) introduce box.cfg.vinyl_timeout option to control quota throttling. Issue 2014.
  • Memtx: stable index:pairs() iterators for the TREE index. TREE iterators are automatically restored to a proper position after index’s modifications. Issue 1796.
  • (Memtx) predictable order for non-unique TREE indexes. Non-unique TREE indexes preserve the sort order for duplicate entries. Issue 2476.
  • (Memtx+Vinyl) dynamic configuration of max tuple size. Now box.cfg.memtx_max_tuple_size and box.cfg.vinyl_max_tuple_size configuration options can be changed on the fly without need to restart the server. Issue 2667.
  • (Memtx+Vinyl) new implementation. Space truncation doesn’t cause re-creation of all indexes any more. Issue 618.
  • Extended the maximal length of all identifiers from 32 to 65k characters. Space, user and function names are not limited by 32 characters anymore. Issue 944.
  • Heartbeat messages for replication. Replication client now sends the selective acknowledgments for processed records and automatically re-establish stalled connections. This feature also changes[replica_id].vclock. to display committed vclock of remote replica. Issue 2484.
  • Keep track of remote replicas during WAL maintenance. Replication master now automatically preserves xlogs needed for remote replicas. Issue 748.
  • Enabled to work without box.cfg(). Issue 2047.
  • box.atomic(fun, …) wrapper to execute function in a transaction. Issue 818.
  • box.session.type() helper to determine session type. Issue 2642.
  • Hot code reload for stored C stored procedures. Use box.schema.func.reload('modulename.function') to reload dynamic shared libraries on the fly. Issue 910.
  • string.hex() and str:hex() Lua API. Issue 2522.
  • Package manager based on LuaRocks. Use tarantoolctl rocks install MODULENAME to install MODULENAME Lua module from Issue 2067.
  • Lua 5.1 command line options. Tarantool binary now supports ‘-i’, ‘-e’, ‘-m’ and ‘-l’ command line options. Issue 1265.
  • Experimental GC64 mode for LuaJIT. GC64 mode allow to operate the full address space on 64-bit hosts. Enable via -DLUAJIT_ENABLE_GC64=ON compile-time configuration option. Issue 2643.
  • Syslog logger now support non-blocking mode. box.cfg{log_nonblock=true} now also works for syslog logger. Issue 2466.
  • Added a VERBOSE log level beyond INFO. Issue 2467.
  • Tarantool now automatically makes snapshots every hour. Please set box.cfg{checkpoint_interval=0 to restore pre-1.7.5 behavior. Issue 2496.
  • Increase precision for percentage ratios provided by Issue 2082.
  • Stack traces now contain symbols names on all supported platforms. Previous versions of Tarantool didn’t display meaningful function names in on non-x86 platforms. Issue 2103.
  • Allowed to create fiber with custom stack size from C API. Issue 2438.
  • Added ipc_cond to public C API. Issue 1451.

New rocks:

  • http.client (built-in) - libcurl-based HTTP client with SSL/TLS support. Issue 2083.
  • iconv (built-in) - bindings for iconv. Issue 2587.
  • authman - API for user registration and login in your site using email and social networks.
  • document - store nested documents in Tarantool.
  • synchronized - critical sections for Lua.

Release 1.7.4

Release type: release candidate. Release date: 2017-05-12. Release tag: Tag: 1.7.4.

Announcement: or!topic/tarantool/3x88ATX9YbY

This is a release candidate in the 1.7 series. Vinyl Engine, the flagship feature of 1.7.x, is now feature complete.

Incompatible changes

  • box.cfg() options were changed to add Vinyl support:

    • snap_dir renamed to memtx_dir
    • slab_alloc_arena (gigabytes) renamed to memtx_memory (bytes), default value changed from 1Gb to 256MB
    • slab_alloc_minimal renamed to memtx_min_tuple_size
    • slab_alloc_maximal renamed to memtx_max_tuple_size
    • slab_alloc_factor is deprecated, not relevant in 1.7.x
    • snapshot_count renamed to checkpoint_count
    • snapshot_period renamed to checkpoint_interval
    • logger renamed to log
    • logger_nonblock renamed to log_nonblock
    • logger_level renamed to log_level
    • replication_source renamed to replication
    • panic_on_snap_error = true and panic_on_wal_error = true superseded by force_recovery = false

    Until Tarantool 1.8, you can use deprecated parameters for both initial and runtime configuration, but such usage will print a warning in the server log. Issues 1927 and 2042.

  • Hot standy mode is now off by default. Tarantool automatically detects another running instance in the same wal_dir and refuses to start. Use box.cfg {hot_standby = true} to enable the hot standby mode. Issue 775.

  • UPSERT via a secondary key was banned to avoid unclear semantics. Issue 2226.

  • and format was changed to display information about upstream and downstream connections (Issue 723):

    • Added[instance_id].downstream.vclock to display the last sent row to remote replica.
    • Added[instance_id].id.
    • Added[instance_id].lsn.
    • Moved[instance_id].{vclock,status,error} to[instance_id].upstream.{vclock,status,error}.
    • All registered replicas from are included to output.
    • renamed
    • renamed
    • renamed
    • renamed to
    • and now return nil instead of -1 during initial cluster bootstrap.
  • added per-request options to all requests:

    •, arg1, arg2,...) changed to, {arg1, arg2, ...}, opts)
    • conn.eval(func_name, arg1, arg2,...) changed to conn.eval(func_name, {arg1, arg2, ...}, opts)
  • All requests now support timeout = <seconds>, buffer = <ibuf> options.

  • Added connect_timeout option to netbox.connect().

  • netbox:timeout() and conn:timeout() are now deprecated. Use netbox.connect(host, port, { call_16 = true }) for 1.6.x-compatible behavior. Issue 2195.

  • systemd configuration changed to support Type=Notify / sd_notify(). Now systemctl start tarantool@INSTANCE will wait until Tarantool has started and recovered from xlogs. The recovery status is reported to systemctl status tarantool@INSTANCE. Issue 1923.

  • log module now doesn’t prefix all messages with the full path to tarantool binary when used without box.cfg(). Issue 1876.

  • require('log').logger_pid() was renamed to require('log').pid(). Issue 2917.

  • Removed Lua 5.0 compatible defines and functions (Issue 2396):

    • luaL_reg removed in favor of luaL_Reg
    • luaL_getn(L, i) removed in favor of lua_objlen(L, i)
    • luaL_setn(L, i, j) removed (was no-op)
    • lua_ref(L, lock) removed in favor of luaL_ref(L, lock)
    • lua_getref(L,ref) removed in favor of lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))
    • lua_unref(L, ref) removed in favor of luaL_unref(L, ref)
    • math.mod() removed in favor of math.fmod()
    • string.gfind() removed in favor of string.gmatch()

Functionality added or changed:

  • (Vinyl) multi-level compaction. The compaction scheduler now groups runs of the same range into levels to reduce the write amplification during compaction. This design allows Vinyl to support 1:100+ ram:disk use-cases. Issue 1821.

  • (Vinyl) bloom filters for sorted runs. Bloom filter is a probabilistic data structure which can be used to test whether a requested key is present in a run file without reading the actual file from the disk. Bloom filter may have false-positive matches but false-negative matches are impossible. This feature reduces the number of seeks needed for random lookups and speeds up REPLACE/DELETE with enabled secondary keys. Issue 1919.

  • (Vinyl) key-level cache for point lookups and range queries. Vinyl storage engine caches selected keys and key ranges instead of entire disk pages like in traditional databases. This approach is more efficient because the cache is not polluted with raw disk data. Issue 1692.

  • (Vinyl) implemented the common memory level for in-memory indexes. Now all in-memory indexes of a space store pointers to the same tuples instead of cached secondary key index data. This feature significantly reduces the memory footprint in case of secondary keys. Issue 1908.

  • (Vinyl) new implementation of initial state transfer of JOIN command in replication protocol. New replication protocol fixes problems with consistency and secondary keys. We implemented a special kind of low-cost database-wide read-view to avoid dirty reads in JOIN procedure. This trick wasn’t not possible in traditional B-Tree based databases. Issue 2001.

  • (Vinyl) index-wide mems/runs. Removed ranges from in-memory and and the stop layer of LSM tree on disk. Issue 2209.

  • (Vinyl) coalesce small ranges. Before dumping or compacting a range, consider coalescing it with its neighbors. Issue 1735.

  • (Vinyl) implemented transnational journal for metadata. Now information about all Vinyl files is logged in a special .vylog file. Issue 1967.

  • (Vinyl) implemented consistent secondary keys. Issue 2410.

  • (Memtx+Vinyl) implemented low-level Lua API to create consistent backups. of Memtx + Vinyl data. The new feature provides box.backup.start()/stop() functions to create backups of all spaces. box.backup.start() pauses the Tarantool garbage collector and returns the list of files to copy. These files then can be copied be any third-party tool, like cp, ln, tar, rsync, etc. box.backup.stop() lets the garbage collector continue. Created backups can be restored instantly by copying into a new directory and starting a new Tarantool instance. No special preparation, conversion or unpacking is needed. Issue 1916.

  • (Vinyl) added statistics for background workers to Issue 2005.

  • (Memtx+Vinyl) reduced the memory footprint for indexes which keys are sequential and start from the first field. This optimization was necessary for secondary keys in Vinyl, but we optimized Memtx as well. Issue 2046.

  • LuaJIT was rebased on the latest 2.1.0b3 with out patches (Issue 2396):

    • Added JIT compiler backend for ARM64
    • Added JIT compiler backend and interpreter for MIPS64
    • Added some more Lua 5.2 and Lua 5.3 extensions
    • Fixed several bugs
    • Removed Lua 5.0 legacy (see incompatible changes above).
  • Enabled a new smart string hashing algorithm in LuaJIT to avoid significant slowdown when a lot of collisions are generated. Contributed by Yury Sokolov (@funny-falcon) and Nick Zavaritsky (@mejedi). See

  • box.snapshot() now updates mtime of a snapshot file if there were no changes to the database since the last snapshot. Issue 2045.

  • Implemented space:bsize() to return the memory size utilized by all tuples of the space. Contributed by Roman Tokarev (@rtokarev). Issue 2043.

  • Exported new Lua/C functions to public API:

    • luaT_pushtuple, luaT_istuple (issue 1878)
    • luaT_error, luaT_call, luaT_cpcall (issue 2291)
    • luaT_state (issue 2416)
  • Exported new Box/C functions to public API: box_key_def, box_tuple_format, tuple_compare(), tuple_compare_with_key(). Issue 2225.

  • xlogs now can be rotated based on size (wal_max_size) as well as the number of written rows (rows_per_wal). Issue 173.

  • Added string.split(), string.startswith(), string.endswith(), string.ljust(), string.rjust(), API. Issues 2211, 2214, 2415.

  • Added table.copy() and table.deepcopy() functions. Issue 2212.

  • Added pwd module to work with UNIX users and groups. Issue 2213.

  • Removed noisy “client unix/: connected” messages from logs. Use box.session.on_connect()/on_disconnect() triggers instead. Issue 1938.

    box.session.on_connect()/on_disconnect()/on_auth() triggers now also fired for admin console connections.

  • tarantoolctl: eval, enter, connect commands now support UNIX pipes. Issue 672.

  • tarantoolctl: improved error messages and added a new man page. Issue 1488.

  • tarantoolctl: added filter by replica_id to cat and play commands. Issue 2301.

  • tarantoolctl: start, stop and restart commands now redirect to systemctl start/stop/restart when systemd is enabled. Issue 2254.

  • added buffer = <buffer> per-request option to store raw MessagePack responses into a C buffer. Issue 2195.

  • added connect_timeout option. Issue 2054.

  • added on_schema_reload() hook. Issue 2021.

  • exposed conn.schema_version and space.connection to API. Issue 2412.

  • log: debug()/info()/warn()/error() now doesn’t fail on formatting errors. Issue 889.

  • crypto: added HMAC support. Contributed by Andrey Kulikov (@amdei). Issue 725.

Release 1.7.3

Release type: beta. Release date: 2016-12-24. Release tag: Tag: 1.7.3-0-gf0c92aa.


This is the second beta release in the 1.7 series.

Incompatible changes:

  • Broken coredump() Lua function was removed. Use gdb -batch -ex "generate-core-file" -p $PID instead. Issue 1886.
  • Vinyl disk layout was changed since 1.7.2 to add ZStandard compression and improve the performance of secondary keys. Use the replication mechanism to upgrade from 1.7.2 beta. Issue 1656.

Functionality added or changed:

  • Substantial progress on stabilizing the Vinyl storage engine:
    • Fix most known crashes and bugs with bad results.
    • Switch to use XLOG/SNAP format for all data files.
    • Enable ZStandard compression for all data files.
    • Squash UPSERT operations on the fly and merge hot keys using a background fiber.
    • Significantly improve the performance of index:pairs() and index:count().
    • Remove unnecessary conflicts from transactions.
    • In-memory level was mostly replaced by memtx data structures.
    • Specialized allocators are used in most places.
  • We’re still actively working on Vinyl and plan to add multi-level compaction and improve the performance of secondary keys in 1.7.4. This implies a data format change.
  • Support for DML requests for space:on_replace() triggers. Issue 587.
  • UPSERT can be used with the empty list of operations. Issue 1854.
  • Lua functions to manipulate environment variables. Issue 1718.
  • Lua library to read Tarantool snapshots and xlogs. Issue 1782.
  • New play and cat commands in tarantoolctl. Issue 1861.
  • Improve support for the large number of active network clients. Issue#5#1892.
  • Support for space:pairs(key, iterator-type) syntax. Issue 1875.
  • Automatic cluster bootstrap now also works without authorization. Issue 1589.
  • Replication retries to connect to master indefinitely. Issue 1511.
  • Temporary spaces now work with box.cfg { read_only = true }. Issue 1378.
  • The maximum length of space names increased to 64 bytes (was 32). Issue 2008.

Release 1.7.2

Release type: beta. Release date: 2016-09-29. Release tag: Tag: 1.7.2-1-g92ed6c4.


This is a release in the 1.7 series.

Incompatible changes:

  • A new binary protocol command for CALL, which no more restricts a function to returning an array of tuples and allows returning an arbitrary MsgPack/JSON result, including scalars, nil and void (nothing). The old CALL is left intact for backward compatibility. It will be removed in the next major release. All programming language drivers will be gradually changed to use the new CALL. Issue 1296.

Functionality added or changed:

  • Vinyl storage engine finally reached the beta stage. This release fixes more than 90 bugs in Vinyl, in particular, removing unpredictable latency spikes, all known crashes and bad/lost result bugs.
    • new cooperative multitasking based architecture to eliminate latency spikes,
    • support for non-sequential multi-part keys,
    • support for secondary keys,
    • support for auto_increment(),
    • number, integer, scalar field types in indexes,
    • INSERT, REPLACE and UPDATE return new tuple, like in memtx.
  • We’re still actively working on Vinyl and plan to add zstd compression and a new memory allocator for Vinyl in-memory index in 1.7.3. This implies a data format change which we plan to implement before 1.7 becomes generally available.
  • Tab-based autocompletion in the interactive console, require('console').connect(), tarantoolctl enter and tarantoolctl connect commands. Issues 86 and 1790. Use the TAB key to auto complete the names of Lua variables, functions and meta-methods.
  • A new implementation of improving performance and solving problems when the Lua garbage collector handles dead connections. Issues 799, 800, 1138 and 1750.
  • memtx snapshots and xlog files are now compressed on the fly using the fast ZStandard compression algorithm. Compression options are configured automatically to get an optimal trade-off between CPU utilization and disk throughput.
  • fiber.cond() - a new synchronization mechanism for cooperative multitasking. Issue 1731.
  • Tarantool can now be installed using universal Snappy packages ( with snap install tarantool --channel=beta.

New rocks and packages:

  • curl - non-blocking bindings for libcurl
  • prometheus - Prometheus metric collector for Tarantool
  • gis - a full-featured geospatial extension for Tarantool
  • mqtt - an MQTT protocol client for Tarantool
  • luaossl - the most comprehensive OpenSSL module in the Lua universe

Deprecated, removed features and minor incompatibilities:

  • num and str fields type names are deprecated, use unsigned and string instead. Issue 1534.

  • space:inc() and space:dec() were removed (deprecated in 1.6.x) Issue 1289.

  • fiber:cancel() is now asynchronous and doesn’t wait for the fiber to end. Issue 1732.

  • Implicit error-prone tostring() was removed from digest API. Issue 1591.

  • Support for SHA-0 (digest.sha()) was removed due to OpenSSL upgrade.

  • now uses one-based indexes for[x].parts. Issue 1729.

  • Tarantool binary now dynamically links with during compile time instead of loading it at the run time.

  • Debian and Ubuntu packages switched to use native systemd configuration alongside with old-fashioned sysvinit scripts.

    systemd provides its own facilities for multi-instance management. To upgrade, perform the following steps:

    1. Install new 1.7.2 packages.
    2. Ensure that INSTANCENAME.lua file is present in /etc/tarantool/instances.enabled.
    3. Stop INSTANCENAME using tarantoolctl stop INSTANCENAME.
    4. Start INSTANCENAME using systemctl start tarantool@INSTANCENAME.
    5. Enable INSTANCENAME during system boot using systemctl enable trantool@INTANCENAME.
    6. Say systemctl disable tarantool; update-rc.d tarantool remove to disable sysvinit-compatible wrappers.

    Refer to issue 1291 comment and the administration chapter for additional information.

  • Debian and Ubuntu packages start a ready-to-use example.lua instance on a clean installation of the package. The default instance grants universe permissions for guest user and listens on “localhost:3313”.

  • Fedora 22 packages were deprecated (EOL).

Release 1.7.1

Release type: alpha. Release date: 2016-07-11.


This is the first alpha in the 1.7 series. The main feature of this release is a new storage engine, called “vinyl”. Vinyl is a write optimized storage engine, allowing the amount of data stored exceed the amount of available RAM 10-100x times. Vinyl is a continuation of the Sophia engine from 1.6, and effectively a fork and a distant relative of Dmitry Simonenko’s Sophia. Sophia is superseded and replaced by Vinyl. Internally it is organized as a log structured merge tree. However, it takes a serious effort to improve on the traditional deficiencies of log structured storage, such as poor read performance and unpredictable write latency. A single index is range partitioned among many LSM data structures, each having its own in-memory buffers of adjustable size. Range partitioning allows merges of LSM levels to be more granular, as well as to prioritize hot ranges over cold ones in access to resources, such as RAM and I/O. The merge scheduler is designed to minimize write latency while ensuring read performance stays within acceptable limits. Vinyl today only supports a primary key index. The index can consist of up to 256 parts, like in MemTX, up from 8 in Sophia. Partial key reads are supported. Support of non-sequential multi part keys, as well as secondary keys is on the short term todo. Our intent is to remove all limitations currently present in Vinyl, making it a first class citizen in Tarantool.

Functionality added or changed:

  • The disk-based storage engine, which was called sophia or phia in earlier versions, is superseded by the vinyl storage engine.
  • There are new types for indexed fields.
  • The LuaJIT version is updated.
  • Automatic replica set bootstrap (for easier configuration of a new replica set) is supported.
  • The space_object:inc() function is removed.
  • The space_object:dec() function is removed.
  • The space_object:bsize() function is added.
  • The box.coredump() function is removed, for an alternative see Core dumps.
  • The hot_standby configuration option is added.
  • Configuration parameters revised or renamed:
    • slab_alloc_arena (in gigabytes) to memtx_memory (in bytes),
    • slab_alloc_minimal to memtx_min_tuple_size,
    • slab_alloc_maximal to memtx_max_tuple_size,
    • replication_source to replication,
    • snap_dir to memtx_dir,
    • logger to log,
    • logger_nonblock to log_nonblock,
    • snapshot_count to checkpoint_count,
    • snapshot_period to checkpoint_interval,
    • panic_on_wal_error and panic_on_snap_error united under force_recovery.
  • Until Tarantool 1.8, you can use deprecated parameters for both initial and runtime configuration, but Tarantool will display a warning. Also, you can specify both deprecated and up-to-date parameters, provided that their values are harmonized. If not, Tarantool will display an error.
  • Automatic replication cluster bootstrap; it’s now much easier to configure a new replication cluster.
  • New indexable data types: INTEGER and SCALAR.
  • Code refactoring and performance improvements.
  • Updated LuaJIT to 2.1-beta116.