github tarantool/tarantool 3.5.0

9 days ago

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 and decimal256.
  • Populated box.tuple.format objects with a new method validate (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 without box.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.
    The Caused by: prefix for cause frames is added when the compat option
    box_error_serialize_verbose is set to new.
  • 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 new memtx_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() and connpool.filter() upon the timeout configured using
    the connpool.set_idle_timeout() method or the connpool.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 methods call() and filter() 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 via fiber:wakeup() or fiber: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).

Don't miss a new tarantool release

NewReleases is sending notifications on new releases.