3.5.0
Date: 2025-08-27
Tag: 3.5.0
Overview
Tarantool 3.x is the recommended release series. Users of Tarantool 2.11 are
encouraged to update to the latest 3.x release.
This release introduces 17 improvements and resolves 6 bugs since 3.4.1.
Please consider the full list of user-visible changes below.
Compatibility
Tarantool 2.x and 3.x are compatible in the binary data layout, client-server
protocol, and replication protocol. It means upgrade may be performed
with zero downtime for read requests and the order-of-network-lag downtime for
write requests.
Please follow the upgrade procedure to plan your update actions.
Users of Tarantool 2.x may be interested in the compat options that
allow to imitate some 2.x behavior. This allows to perform application code
update step-by-step, not all-at-once.
Functionality added or changed
Core
- Added support for fixed point decimal types
decimal32
,decimal64
,
decimal128
anddecimal256
. - Populated
box.tuple.format
objects with a new methodvalidate
(gh-9979). - Populated space objects with a new field
format_object
(gh-9979). - A new
box_status
function is now available in the C API. It is accessible
in the TX thread withoutbox.info.status
Lua calls. - Introduced a new C API function,
box_tuple_data()
, for inspecting
the MsgPack tuple data without making copies (gh-11478).
App
- Decimal support is changed to fit new fixed point decimal types.
Limit on exponent is removed, precision is increased to 76 decimal digits
and printing is done in scientific notation. - Increased verbosity of logging system errors (gh-10116).
- Added conversion functions between
box_decimal_t
and scaled integers
to C box API. - Changed Lua
error.tostring()
to print error stack from effect to cause.
TheCaused by:
prefix for cause frames is added when the compat option
box_error_serialize_verbose
is set tonew
. - Added a new method,
is_closed()
, to popen handle to check if the handle
has been closed (gh-11492).
Memtx
- Now it is possible to sort secondary keys with a new O(n) sorting
algorithm that uses additional data written into the snapshot. The
feature can be enabled with a newmemtx_use_sort_data
option in
box.cfg
(gh-10847).
Config
- Introduced a
fail_if
tag for roles and scripts (gh-10987). SIGUSR2
now can be used to trigger YAML configuration reload (gh-11585).- Introduced a new
include
field for configuration files (gh-11510).
Connpool
experimental.connpool
now automatically closes unused connections opened by
connpool.call()
andconnpool.filter()
upon the timeout configured using
theconnpool.set_idle_timeout()
method or theconnpool.idle_timeout
configuration option.- The
experimental.connpool
methods now try to reconnect to recently accessed
instances when they become unavailable. Reconnect attempts happen after a
constant interval and are stopped if the instance is no longer needed. experimental.connpool
methodscall()
andfilter()
became faster. They do
not wait for unavailable instances if it is known they have been inaccessible
recently.
Bugs fixed
Core
- Fixed the creation of broken snapshots, which could contain outdated entries
also applied in the following xlog files. This could happen if the
transactions would pile up and fill the whole WAL queue
(box.cfg.wal_queue_max_size
was reached), and a snapshot was created at this
moment (gh-11180). - Fixed key corruption when pagination by tuple was used (gh-11221).
- Fixed a bug of missed setting box error name in some cases (gh-10708).
Replication
- Disabled informational log messages that were printed while sending WAL logs
to subscribed replicas (gh-11752). - Fixed inconsistent data which could appear when the synchro queue was full
(box.cfg.replication_synchro_queue_max_size
was reached) and the
transactions blocked on that queue were woken up or cancelled spuriously (for
example, manually viafiber:wakeup()
orfiber:cancel()
). Specifically,
transactions could get committed in a wrong order or newly joined replicas
could have data not present on the master (gh-11180).
Config
- Evaluate configurations for other cluster members lazily to speed up startup
and reload of large configurations (500 instances or more).