From d877fafb49f362d3dfae73945dc2e94904033420 Mon Sep 17 00:00:00 2001 From: lenkis Date: Thu, 15 Jan 2026 19:12:26 +0300 Subject: [PATCH 1/5] Add info on release 3.6 --- doc/release/3.6.0.rst | 84 +++++++++++++++++++++++ doc/release/_images/releases_calendar.svg | 2 +- doc/release/index.rst | 9 ++- 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 doc/release/3.6.0.rst diff --git a/doc/release/3.6.0.rst b/doc/release/3.6.0.rst new file mode 100644 index 000000000..e9dd4a8da --- /dev/null +++ b/doc/release/3.6.0.rst @@ -0,0 +1,84 @@ +Tarantool 3.6 +============= + +Release date: 2025-12-12 + +Releases on GitHub: :tarantool-release:`3.6.0` + +The 3.6 release of Tarantool adds the following main product features and improvements +for the Community and Enterprise editions: + +* **Community Edition (CE)** + + * Memtx: significantly faster snapshot recovery. + * New privileges: ``grant`` and ``metagrant``. + +* **Enterprise Edition (EE)** + + * Failover coordinator: synchronous replication for 2 DC topology. + * MemCS: multiple improvements. + +.. _3-6-faster-snapshot-recovery-ce: + +[CE] Memtx: significantly faster snapshot recovery +-------------------------------------------------- + +This release speeds up memtx snapshot recovery by up to 70% by offloading MsgPack decoding +to a separate thread. Space and transactional triggers (``space.on_replace``, ``space.before_replace``) +are now deprecated during recovery. + +.. _3-6-grant-metagrant-privileges-ce: + +[CE] New privileges: ``grant`` and ``metagrant`` +------------------------------------------------ + +This release introduces new privileges, ``grant`` and ``metagrant``. They allow Tarantool users +to create new users with a complete range of privileges, like the builtin ``admin`` user does. + +The ``grant`` privilege allows granting any privilege, except ``grant`` and ``metagrant``, +on an object, object class or universe. + +The ``metagrant`` privilege allows granting ``grant`` and ``metagrant`` privileges. + +Both ``grant`` and ``metagrant`` are only grantable on the universe and +allow granting privileges only to other users, not to the current user. + +.. _3-6-sync-replication-2-dc-ee: + +[EE] Failover coordinator: synchronous replication for 2 DC topology +-------------------------------------------------------------------- + +In previous releases, the failover coordinator supported synchronous replication for topologies with 3 and more data centers. +With N instances within a replica set, the minimal quorum size could be ``N/2 + 1``. +Topologies with 2 data centers were not supported because the quorum size could not be dynamically decreased if connection to the second data center was lost. +For example, in a minimal replica set of 2 instances the default quorum size is 2 (calculated as 2/2 + 1 = 2). +If one of the instances fails, no new transactions can be committed, because it is impossible to get an ack from the second instance. +So, new transactions are lost. + +Now, for *supervised failover*, Tarantool supports synchronous replication for topologies with 2 data centers. +The failover coordinator automatically decreases the quorum size if connection to the second data center is lost, +and restores the cluster's operability within the available data center. +When connection to the second data center is up again, the failover coordinator automatically restores the normal quorum size. +So, no transactions are lost. + +.. _3-6-memcs-improvements: + +[EE] MemCS: multiple improvements +--------------------------------- + +This release brings multiple minor enhancements to the MemCS engine, most of them focusing on indexes and performance. + +MemCS now supports: +* aggregates over decimal fields, +* null layout columns passed to ``insert_arrow``, +* inserting into the middle of MemCS primary index with aggregates, +* inserting columns in the REE encoding (except for columns that are part of index keys or skip indexes) +* specifying per-column layout in space format and secondary index definitions, +* LT, LE, and GT iterator types in Arrow streams, +* ``index:quantile()``, +* bloom aggregates, +* statistics of index aggregates and scanner, +* index aggregates exported to their Lua objects. + +Furthermore, the performance of MemCS skip index writes is increased. Now this index +doesn't reallocate blocks if they are not used by any read view. diff --git a/doc/release/_images/releases_calendar.svg b/doc/release/_images/releases_calendar.svg index b2962d686..4192490bd 100644 --- a/doc/release/_images/releases_calendar.svg +++ b/doc/release/_images/releases_calendar.svg @@ -1,4 +1,4 @@ -
2024
2024
2025
2025
2026
2026
2027
2027
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
3.0
3.0
3.0.1
3.0.1
Release
Release
Updates and fixes
Updates and fixes
Support
Support
x.y
x.y
EOL series
EOL series
x.y
x.y
Current series
Current series
3.1
3.1
3.1.0
3.1.0
3.0.2
3.0.2
3.1.1
3.1.1
3.2
3.2
3.2.0
3.2.0
Jan
Jan
3.1.2
3.1.2
3.2.1
3.2.1
3.3
3.3
3.3.0
3.3.0
3.3.1
3.3.1
3.4
3.4
3.4.0
3.4.0
Apr
Apr
Jul
Jul
3.0.0
3.0.0
3.5
3.5
3.5.0
3.5.0
Text is not SVG - cannot display
\ No newline at end of file +
2024
2024
2025
2025
2026
2026
2027
2027
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
Apr
Apr
Jul
Jul
Oct
Oct
Jan
Jan
3.0
3.0
3.0.1
3.0.1
Release
Release
Updates and fixes
Updates and fixes
Support
Support
x.y
x.y
EOL series
EOL series
x.y
x.y
Current series
Current series
3.1
3.1
3.1.0
3.1.0
3.0.2
3.0.2
3.1.1
3.1.1
3.2
3.2
3.2.0
3.2.0
Jan
Jan
3.1.2
3.1.2
3.2.1
3.2.1
3.3
3.3
3.3.0
3.3.0
3.3.1
3.3.1
3.4
3.4
3.4.0
3.4.0
Apr
Apr
Jul
Jul
3.0.0
3.0.0
3.5
3.5
3.5.0
3.5.0
3.6
3.6
3.6.0
3.6.0
Text is not SVG - cannot display
\ No newline at end of file diff --git a/doc/release/index.rst b/doc/release/index.rst index 115db782b..633b8b61a 100644 --- a/doc/release/index.rst +++ b/doc/release/index.rst @@ -63,8 +63,14 @@ For information about earlier versions, see :doc:`eos_versions`. - End of support - Versions - * - :doc:`3.5 ` + * - :doc:`3.6 ` + - **December 12, 2025** + - **Not planned yet** - **Not planned yet** + - | :tarantool-release:`3.6.0` + + * - :doc:`3.5 ` + - **August 27, 2025** - **Not planned yet** - **Not planned yet** - | :tarantool-release:`3.5.0` @@ -93,6 +99,7 @@ For information about earlier versions, see :doc:`eos_versions`. :maxdepth: 1 policy + 3.6.0 3.5.0 3.4.0 3.3.0 From 9034ddf32562bbe7ea9e387868e4be1c8d0b55ec Mon Sep 17 00:00:00 2001 From: lenkis Date: Thu, 15 Jan 2026 19:34:15 +0300 Subject: [PATCH 2/5] Fix markup --- doc/release/3.6.0.rst | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/doc/release/3.6.0.rst b/doc/release/3.6.0.rst index e9dd4a8da..d71aacd43 100644 --- a/doc/release/3.6.0.rst +++ b/doc/release/3.6.0.rst @@ -35,9 +35,7 @@ are now deprecated during recovery. This release introduces new privileges, ``grant`` and ``metagrant``. They allow Tarantool users to create new users with a complete range of privileges, like the builtin ``admin`` user does. -The ``grant`` privilege allows granting any privilege, except ``grant`` and ``metagrant``, -on an object, object class or universe. - +The ``grant`` privilege allows granting any privilege, except ``grant`` and ``metagrant``, on an object, object class or universe. The ``metagrant`` privilege allows granting ``grant`` and ``metagrant`` privileges. Both ``grant`` and ``metagrant`` are only grantable on the universe and @@ -69,16 +67,17 @@ So, no transactions are lost. This release brings multiple minor enhancements to the MemCS engine, most of them focusing on indexes and performance. MemCS now supports: -* aggregates over decimal fields, -* null layout columns passed to ``insert_arrow``, -* inserting into the middle of MemCS primary index with aggregates, -* inserting columns in the REE encoding (except for columns that are part of index keys or skip indexes) -* specifying per-column layout in space format and secondary index definitions, + +* Aggregates over decimal fields, +* Null layout columns passed to ``insert_arrow``, +* Inserting into the middle of MemCS primary index with aggregates, +* Inserting columns in the REE encoding (except for columns that are part of index keys or skip indexes) +* Specifying per-column layout in space format and secondary index definitions, * LT, LE, and GT iterator types in Arrow streams, * ``index:quantile()``, -* bloom aggregates, -* statistics of index aggregates and scanner, -* index aggregates exported to their Lua objects. +* Bloom aggregates, +* Statistics of index aggregates and scanner, +* Index aggregates exported to their Lua objects. Furthermore, the performance of MemCS skip index writes is increased. Now this index doesn't reallocate blocks if they are not used by any read view. From 6389d6e9b24b0fef95216a4a95b14bdf1335b53e Mon Sep 17 00:00:00 2001 From: lenkis Date: Mon, 19 Jan 2026 19:22:37 +0300 Subject: [PATCH 3/5] Integrate tech feedback --- doc/release/3.6.0.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/release/3.6.0.rst b/doc/release/3.6.0.rst index d71aacd43..e6c19ac1b 100644 --- a/doc/release/3.6.0.rst +++ b/doc/release/3.6.0.rst @@ -69,15 +69,13 @@ This release brings multiple minor enhancements to the MemCS engine, most of the MemCS now supports: * Aggregates over decimal fields, -* Null layout columns passed to ``insert_arrow``, * Inserting into the middle of MemCS primary index with aggregates, -* Inserting columns in the REE encoding (except for columns that are part of index keys or skip indexes) * Specifying per-column layout in space format and secondary index definitions, -* LT, LE, and GT iterator types in Arrow streams, * ``index:quantile()``, * Bloom aggregates, * Statistics of index aggregates and scanner, -* Index aggregates exported to their Lua objects. +* Index aggregates exported to their Lua objects, +* Some C API improvements related to inserting and scanning data in the Apache Arrow format. Furthermore, the performance of MemCS skip index writes is increased. Now this index doesn't reallocate blocks if they are not used by any read view. From a554148fba42940d1d3c9fc4b4f70e32dea65312 Mon Sep 17 00:00:00 2001 From: lenkis Date: Tue, 27 Jan 2026 13:13:52 +0300 Subject: [PATCH 4/5] Minor fixes in 3.5 + add info on 2 DCs to 3.6 --- doc/release/3.5.0.rst | 32 +++++++++++++------------- doc/release/3.6.0.rst | 52 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 25 deletions(-) diff --git a/doc/release/3.5.0.rst b/doc/release/3.5.0.rst index aac61c71c..bf93d063d 100644 --- a/doc/release/3.5.0.rst +++ b/doc/release/3.5.0.rst @@ -113,19 +113,19 @@ if the ``fail_if`` expression evaluates to ``true``. [CE] Faster large (500+) clusters reload ---------------------------------------- -The new patch processes an instance's configuration only when it is explicitly accessed, -such as through a ``config:get(<...>, {instance = <...>})`` call. This significantly speeds up startup and -configuration reloads, especially for large clusters. +The new release processes an instance's configuration only when it is explicitly accessed, +such as through a ``config:get(<...>, {instance = <...>})`` call. +This significantly speeds up startup and configuration reloads, especially for large clusters. .. _3-5-quorum-synchronous-replication: -[EE] Support of the quorum synchronous replication setup in three availability zones ------------------------------------------------------------------------------------- +[EE] Support for quorum synchronous replication setup in three availability zones +--------------------------------------------------------------------------------- -A new patchset makes the ``replication.failover = supervised`` mode supports the quorum synchronous +This release makes the ``replication.failover = supervised`` mode support quorum synchronous replication setup in three availability zones. -The patchset includes several preliminary patches, which make the ``appoint_commit`` logic more safe +This release includes several preliminary patches, which make the ``appoint_commit`` logic more safe in regards to various possible situations, and the main patch, which adds the ``box.ctl.promote()`` call to ``appoint_commit`` if the ``failover.replicasets..synchro_mode`` is set to ``true``. @@ -137,7 +137,7 @@ in regards to various possible situations, and the main patch, which adds the `` When applying centralized configuration updates, Tarantool supervised failover coordinator no longer performs RW switch within the replicaset if there are dead instances. -A new patch introduces a smarter configuration update process for the Tarantool supervised failover +This release introduces a smarter configuration update process for the Tarantool supervised failover coordinator. Previously, any change would trigger a full restart of all services, causing unnecessary downtime. Now, the system intelligently differentiates between option types: most settings can be applied dynamically without any restart. A restart will only occur if you modify critical core parameters, specifically any options under @@ -155,7 +155,7 @@ It is now possible to define a field with the ``decimal32/64/128/256`` type (fix (``MP_DECIMAL``) in all engines (MemTX, Vinyl, MemCS, Quiver (if applicable)). * The internal representation of fixed point decimal values remains the same as the exisitng decimal type (decNumber) in all engines except MemCS and Quiver. -* It is now possible to batch insert and scan fixed point decimal values in the Arrow format +* It is now possible to batch insert and scan fixed point decimal values in the Apache Arrow format in MemCS and Quiver engines. .. _3-5-memcs-brin-indexes: @@ -180,8 +180,8 @@ improvements of 2.5x for 10% filled columns and 11x for 1% filled columns. .. _3-5-memcs-index-batch-insertion: -Secondary index batch insertion performance is improved in MemCS ----------------------------------------------------------------- +[EE] Secondary index batch insertion performance is improved in MemCS +--------------------------------------------------------------------- This release introduces a new ``next_row`` method that significantly accelerates batch insertion and secondary index building. The method replaces the old tuple-based iterator, using a column mask to process only necessary @@ -190,8 +190,8 @@ index insertion has improved by over 550%, with rates jumping from ~10k to 62k r .. _3-5-memcs-storage-string-scanning: -Storage format and string scanning performance improvements in MemCS --------------------------------------------------------------------- +[EE] Storage format and string scanning performance improvements in MemCS +------------------------------------------------------------------------- This release combines a new optimized storage format for short strings with a powerful Arrow view layout to deliver huge performance improvements for string scanning. @@ -205,9 +205,9 @@ Storage format updates: * The ``memcs_column_data_size()`` API function has been split into ``memcs_column_int_data_size()`` and ``memcs_column_ext_data_size()`` to account for the new dual storage format. -Scan performance for 3 different sets of strings (the lengths are randomly distributed in the range 1-12, 1-100, 1-1000) -and 2 different modes, ``notouch`` and ``touch``. In the ``notouch`` mode strings are only scanned as a batch, without -accessing them; in the ``touch`` mode, strings are scanned and the first external character is checked: +We ran scan performance tests for 3 different sets of strings (the lengths were randomly distributed in the ranges 1-12, 1-100, 1-1000) +and 2 different modes, ``notouch`` and ``touch``. In the ``notouch`` mode strings were only scanned as a batch, without +accessing them; in the ``touch`` mode, strings were scanned and the first external character was checked: * Strings 1-12 chars: Up to 4.8x faster in the ``notouch`` mode, and 3.2x faster in the ``touch`` mode. * Strings 1-100 chars: Up to 3.1x faster in the ``notouch`` mode, and 1.8x faster in the ``touch`` mode. diff --git a/doc/release/3.6.0.rst b/doc/release/3.6.0.rst index e6c19ac1b..cc278f8c9 100644 --- a/doc/release/3.6.0.rst +++ b/doc/release/3.6.0.rst @@ -46,25 +46,59 @@ allow granting privileges only to other users, not to the current user. [EE] Failover coordinator: synchronous replication for 2 DC topology -------------------------------------------------------------------- -In previous releases, the failover coordinator supported synchronous replication for topologies with 3 and more data centers. +In previous releases, the failover coordinator supported synchronous replication +for topologies with data storages located in 3 and more data centers. With N instances within a replica set, the minimal quorum size could be ``N/2 + 1``. -Topologies with 2 data centers were not supported because the quorum size could not be dynamically decreased if connection to the second data center was lost. -For example, in a minimal replica set of 2 instances the default quorum size is 2 (calculated as 2/2 + 1 = 2). -If one of the instances fails, no new transactions can be committed, because it is impossible to get an ack from the second instance. +Topologies with 2 data centers were not supported because the quorum size could not be +dynamically decreased if connection to the second data center was lost. +For example, in a minimal replica set of 2 instances the default quorum size is 2 +(calculated as 2/2 + 1 = 2). +If one of the instances fails, no new transactions can be committed, because it is +impossible to get an ack from the second instance. So, new transactions are lost. -Now, for *supervised failover*, Tarantool supports synchronous replication for topologies with 2 data centers. -The failover coordinator automatically decreases the quorum size if connection to the second data center is lost, -and restores the cluster's operability within the available data center. -When connection to the second data center is up again, the failover coordinator automatically restores the normal quorum size. +Now, for *supervised failover*, Tarantool supports synchronous replication for topologies +with data storages located in 2 data centers. +The failover coordinator automatically decreases the quorum size if connection +to the second data center is lost, and restores the cluster's operability within +the available data center. +When connection to the second data center is up again, the failover coordinator +automatically restores the normal quorum size. So, no transactions are lost. +However, there are some limitations. +An important thing is that while data storages can be located in just 2 DCs, +the configuration storage (based on etcd or Tarantool) must be located in yet another DC +(a so-called "quorum DC"). So, the effective topology (also known as "2,5 DC topology") +implies 3 DCs all in all. + +Here are the cases when a topology with data storages located in 2 DCs may fail. + +**Case #1:** "interrupted data enrichment after DC failure" + +a. DC #1 goes down, while DC #2 is up. The failover coordinator decreases the quorum size + to 1. The cluster keeps serving the clients. +b. DC #1 goes up and starts obtaining missed data from DC #2. The quorum size is still 1. +c. The data enrichment process for DC #1 is still in progress, but DC #2 goes down now. + In this case, the cluster becomes unavailable. + +**Case #2:** "no multiple quorum decrease" + +a. DC #1 (2 instances) goes down, while DC #2 (2 instances) is up. +b. One of the 2 instances in DC #2 goes down. + In this case, the cluster becomes unavailable as well. + +**Case #3:** Both DCs go down -- the ultimate case when the cluster becomes unavailable. + +In other cases, the cluster will keep working. + .. _3-6-memcs-improvements: [EE] MemCS: multiple improvements --------------------------------- -This release brings multiple minor enhancements to the MemCS engine, most of them focusing on indexes and performance. +This release brings multiple minor enhancements to the MemCS engine, most of them +focusing on indexes and performance. MemCS now supports: From 27f65f4abf688039bb56757c75ec5c99f30a0021 Mon Sep 17 00:00:00 2001 From: lenkis Date: Tue, 27 Jan 2026 14:43:49 +0300 Subject: [PATCH 5/5] Integrated tech feedback on 2 DCs to 3.6 --- doc/release/3.6.0.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/release/3.6.0.rst b/doc/release/3.6.0.rst index cc278f8c9..57ca23f4e 100644 --- a/doc/release/3.6.0.rst +++ b/doc/release/3.6.0.rst @@ -67,12 +67,13 @@ automatically restores the normal quorum size. So, no transactions are lost. However, there are some limitations. -An important thing is that while data storages can be located in just 2 DCs, -the configuration storage (based on etcd or Tarantool) must be located in yet another DC -(a so-called "quorum DC"). So, the effective topology (also known as "2,5 DC topology") -implies 3 DCs all in all. +An important thing is that while data storages can be deployed in just 2 DCs, +we need yet another DC (a so-called "quorum DC") for an extra configuration storage +(based on etcd or Tarantool). So, the effective topology (also known as "2,5 DC topology") +implies 3 DCs all in all: two DCs with a complete set of components +(data storages, routers, configuration storages) + one DC with configuration storage. -Here are the cases when a topology with data storages located in 2 DCs may fail. +Here are the cases when a topology with data storages deployed in 2 DCs may fail. **Case #1:** "interrupted data enrichment after DC failure"