From aac84bc5fb268535488dbce9fb4c0e9057e498c0 Mon Sep 17 00:00:00 2001 From: "a.ardeev" Date: Fri, 22 Aug 2025 14:50:24 +0300 Subject: [PATCH 1/3] Updates ``Releases`` section of the document Removes all info prior to 3.0 from the document Renames EOL to EOS versions Fixes #5281 --- doc/release/1.10.10.rst | 92 -- doc/release/1.10.11.rst | 180 --- doc/release/1.10.12.rst | 95 -- doc/release/1.10.13.rst | 107 -- doc/release/1.10.14.rst | 158 --- doc/release/1.10.15.rst | 113 -- doc/release/1.10.5.rst | 196 ---- doc/release/1.10.6.rst | 140 --- doc/release/1.10.7.rst | 70 -- doc/release/1.10.8.rst | 79 -- doc/release/1.10.9.rst | 97 -- doc/release/1.10.rst | 448 -------- doc/release/1.6.rst | 299 ----- doc/release/1.7.rst | 708 ------------ doc/release/1.8.rst | 77 -- doc/release/1.9.rst | 117 -- doc/release/2.1.2.rst | 192 ---- doc/release/2.10.0.rst | 1273 --------------------- doc/release/2.10.1.rst | 352 ------ doc/release/2.10.2.rst | 71 -- doc/release/2.10.3.rst | 126 -- doc/release/2.10.4.rst | 204 ---- doc/release/2.10.5.rst | 250 ---- doc/release/2.10.6.rst | 57 - doc/release/2.10.7.rst | 95 -- doc/release/2.10.8.rst | 201 ---- doc/release/2.11.0.rst | 623 ---------- doc/release/2.2.1.rst | 293 ----- doc/release/2.2.2.rst | 351 ------ doc/release/2.2.3.rst | 175 --- doc/release/2.3.1.rst | 623 ---------- doc/release/2.3.2.rst | 179 --- doc/release/2.3.3.rst | 100 -- doc/release/2.4.1.rst | 317 ----- doc/release/2.4.2.rst | 147 --- doc/release/2.4.3.rst | 100 -- doc/release/2.5.1.rst | 218 ---- doc/release/2.5.2.rst | 130 --- doc/release/2.5.3.rst | 135 --- doc/release/2.6.1.rst | 228 ---- doc/release/2.6.2.rst | 138 --- doc/release/2.6.3.rst | 238 ---- doc/release/2.7.1.rst | 192 ---- doc/release/2.7.2.rst | 236 ---- doc/release/2.7.3.rst | 369 ------ doc/release/2.8.1.rst | 348 ------ doc/release/2.8.2.rst | 384 ------- doc/release/2.8.3.rst | 131 --- doc/release/2.8.4.rst | 119 -- doc/release/_images/releases_calendar.svg | 2 +- doc/release/enterprise-changelog.rst | 6 +- doc/release/eol_versions.rst | 353 ------ doc/release/eos_versions.rst | 45 + doc/release/index.rst | 64 +- doc/release/legacy-policy.rst | 132 --- doc/release/major-features.rst | 147 --- 56 files changed, 59 insertions(+), 12261 deletions(-) delete mode 100644 doc/release/1.10.10.rst delete mode 100644 doc/release/1.10.11.rst delete mode 100644 doc/release/1.10.12.rst delete mode 100644 doc/release/1.10.13.rst delete mode 100644 doc/release/1.10.14.rst delete mode 100644 doc/release/1.10.15.rst delete mode 100644 doc/release/1.10.5.rst delete mode 100644 doc/release/1.10.6.rst delete mode 100644 doc/release/1.10.7.rst delete mode 100644 doc/release/1.10.8.rst delete mode 100644 doc/release/1.10.9.rst delete mode 100644 doc/release/1.10.rst delete mode 100644 doc/release/1.6.rst delete mode 100644 doc/release/1.7.rst delete mode 100644 doc/release/1.8.rst delete mode 100644 doc/release/1.9.rst delete mode 100644 doc/release/2.1.2.rst delete mode 100644 doc/release/2.10.0.rst delete mode 100644 doc/release/2.10.1.rst delete mode 100644 doc/release/2.10.2.rst delete mode 100644 doc/release/2.10.3.rst delete mode 100644 doc/release/2.10.4.rst delete mode 100644 doc/release/2.10.5.rst delete mode 100644 doc/release/2.10.6.rst delete mode 100644 doc/release/2.10.7.rst delete mode 100644 doc/release/2.10.8.rst delete mode 100644 doc/release/2.11.0.rst delete mode 100644 doc/release/2.2.1.rst delete mode 100644 doc/release/2.2.2.rst delete mode 100644 doc/release/2.2.3.rst delete mode 100644 doc/release/2.3.1.rst delete mode 100644 doc/release/2.3.2.rst delete mode 100644 doc/release/2.3.3.rst delete mode 100644 doc/release/2.4.1.rst delete mode 100644 doc/release/2.4.2.rst delete mode 100644 doc/release/2.4.3.rst delete mode 100644 doc/release/2.5.1.rst delete mode 100644 doc/release/2.5.2.rst delete mode 100644 doc/release/2.5.3.rst delete mode 100644 doc/release/2.6.1.rst delete mode 100644 doc/release/2.6.2.rst delete mode 100644 doc/release/2.6.3.rst delete mode 100644 doc/release/2.7.1.rst delete mode 100644 doc/release/2.7.2.rst delete mode 100644 doc/release/2.7.3.rst delete mode 100644 doc/release/2.8.1.rst delete mode 100644 doc/release/2.8.2.rst delete mode 100644 doc/release/2.8.3.rst delete mode 100644 doc/release/2.8.4.rst delete mode 100644 doc/release/eol_versions.rst create mode 100644 doc/release/eos_versions.rst delete mode 100644 doc/release/legacy-policy.rst delete mode 100644 doc/release/major-features.rst diff --git a/doc/release/1.10.10.rst b/doc/release/1.10.10.rst deleted file mode 100644 index d365a31c8b..0000000000 --- a/doc/release/1.10.10.rst +++ /dev/null @@ -1,92 +0,0 @@ -Tarantool 1.10.10 -================= - -Released on 2021-04-21. - -* Release :tarantool-release:`1.10.10`. -* Tagged ``1.10.10-0-gaea7ae7`` - - -Overview --------- - -1.10.10 is the next stable release in the -:doc:`long-term support (LTS) version ` -1.10.x release series. - -The label "stable" means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 12 improvements and resolves roughly 3 issues -since version :doc:`1.10.9 `. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- Tarantool build infrastructure now requires CMake version 3.1 or later. -- Binary packages for Fedora 33 (:tarantool-issue:`5502`) are now available. -- Binary packages for CentOS 6 and Debian Jessie won't be published since this version. -- Backported the ``-DENABLE_LTO=ON/OFF`` CMake option (:tarantool-issue:`3117`, - :tarantool-issue:`3743`). - It is useful for building packages for Fedora 33 (:tarantool-issue:`5502`). -- The built-in zstd is upgraded from v1.3.3 to v1.4.8 - (part of :tarantool-issue:`5502`). -- ``libcurl`` symbols in the case of bundled libcurl are now exported - (:tarantool-issue:`5223`, :tarantool-issue:`5542`). -- SMTP and SMTPS protocols are now enabled in the bundled ``libcurl`` (:tarantool-issue:`4559`). -- The ``libcurl`` headers are now shipped to system path ``${PREFIX}/include/tarantool`` - when ``libcurl`` is included as a bundled library or in a static build - (:tarantool-issue:`4559`). - -Testing -~~~~~~~ - -- Tarantool CI/CD has migrated to GitHub Actions (:tarantool-issue:`5662`). -- Implemented a self-sufficient LuaJIT testing environment. As a result, - LuaJIT build system is now partially ported to CMake and all testing - machinery is enclosed within the `tarantool/luajit `__ - repository (:tarantool-issue:`4862`, :tarantool-issue:`5470`). -- Python 3 is now the default in the test infrastructure (:tarantool-issue:`5652`). - -Bugs fixed ----------- - -Core -~~~~ - -- Extensive usage of ``uri`` and ``uuid`` modules with debug log level - no longer leads to crashes or corrupted results of the functions from these - modules. - Same problem is resolved for using these modules from the callbacks passed to ``ffi.gc()``, - and for some functions from the modules ``fio``, ``box.tuple``, and ``iconv`` - (:tarantool-issue:`5632`). - -Lua -~~~ - -- Fixed the `-e` option, when ``tarantool`` used to enter the interactive mode when - stdin is a TTY. Now, ``tarantool -e 'print"Hello"'`` doesn't enter the - interactive mode, but just prints "Hello" and exits - (:tarantool-issue:`5040`). - - -Build -~~~~~ - -- Recovering with ``force_recovery`` option now deletes vylog files newer than the snapshot. - It helps an instance recover after incidents during a checkpoint (:tarantool-issue:`5823`). diff --git a/doc/release/1.10.11.rst b/doc/release/1.10.11.rst deleted file mode 100644 index 968c98abec..0000000000 --- a/doc/release/1.10.11.rst +++ /dev/null @@ -1,180 +0,0 @@ -Tarantool 1.10.11 -================= - -Released on 2021-08-19. - -* Release :tarantool-release:`1.10.11`. -* Tagged ``1.10.11-0-gf0b0e7e`` - -Overview --------- - -1.10.11 is the next stable release in the -:doc:`long-term support (LTS) version ` -1.10.x release series. - -The label "stable" means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 2 improvements and resolves roughly 18 issues -since version :doc:`1.10.10 `. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Some changes are labeled as **[Breaking change]**. -It means that the old behavior was considered error-prone -and therefore changed to protect users from unintended mistakes. -However, there is a small probability that someone can rely on the old behavior, -and this label is to bring attention to the things that have been changed. - -Functionality added or changed ------------------------------- - -LuaJIT -~~~~~~ - -- Introduced support for ``LJ_DUALNUM`` mode in ``luajit-gdb.py`` - (:tarantool-issue:`6224`). - -Build -~~~~~ - -- Fedora 34 builds are now supported - (:tarantool-issue:`6074`). - -- Fedora 28 and 29 builds are no longer supported. - -Bugs fixed ----------- - -Core -~~~~ - -- **[Breaking change]** ``fiber.wakeup()`` in Lua and - ``fiber_wakeup()`` in C became NOP on the currently running fiber. - Previously they allowed “ignoring” the next yield or sleep, which - resulted in unexpected erroneous wake-ups. Calling these functions - right before ``fiber.create()`` in Lua or ``fiber_start()`` in C - could lead to a crash (in debug build) or undefined behaviour (in - release build) (:tarantool-issue:`6043`). - - There was a single use case for the previous behaviour: rescheduling - in the same event loop iteration, which is not the same as - ``fiber.sleep(0)`` in Lua and ``fiber_sleep(0)`` in C. It could be - done in the following way: - - in C: - - .. code:: c - - fiber_wakeup(fiber_self()); - fiber_yield(); - - and in Lua: - - .. code:: lua - - fiber.self():wakeup() - fiber.yield() - - To get the same effect in C, one can now use ``fiber_reschedule()``. - In Lua, it is now impossible to reschedule the current fiber directly - in the same event loop iteration. One can reschedule self - through a second fiber, but it is strongly discouraged: - - .. code:: lua - - -- do not use this code - local self = fiber.self() - fiber.new(function() self:wakeup() end) - fiber.sleep(0) - -- Fixed memory leak on ``box.on_commit()`` and - ``box.on_rollback()`` (:tarantool-issue:`6025`). - -- Fixed invalid results of the ``json`` module’s ``encode`` - function when it was used from the Lua garbage collector. For - example, this could happen in functions used as ``ffi.gc()`` - (:tarantool-issue:`6050`). - -- Fixed console client connection failure in case of request timeout - (:tarantool-issue:`6249`). - -- Added a missing broadcast to ``net.box.future:discard()`` so that now - fibers waiting for a request result wake up when the request is discarded - (:tarantool-issue:`6250`). - -- Fixed a bug when iterators became invalid (up to crash) after schema change - (:tarantool-issue:`6147`). - -- Fixed crash in case of reloading a compiled module when the new module lacks some functions - present in the former code. In turn, this event triggers a fallback procedure where we restore old functions, - but instead of restoring each function, we process a sole entry only, leading to the crash later - when these restored functions are called - (:tarantool-issue:`5968`). - -Vinyl -~~~~~ - -- Fixed possible keys divergence during secondary index build, which - might lead to missing tuples - (:tarantool-issue:`6045`). - -- Fix crash which may occur while switching read_only mode due to duplicating - transaction in tx writer list (:tarantool-issue:`5934`). - -- Fixed the race between Vinyl garbage collection and compaction that - resulted in a broken vylog and recovery failure - (:tarantool-issue:`5436`). - -Replication -~~~~~~~~~~~ - -- Fixed replication occasionally stopping with ``ER_INVALID_MSGPACK`` - when the replica is under high load (:tarantool-issue:`4040`). - -LuaJIT -~~~~~~ - -- Fixed optimization for single-char strings in the ``IR_BUFPUT`` assembly - routine. - -- Fixed slots alignment in the ``lj-stack`` command output when ``LJ_GC64`` - is enabled (:tarantool-issue:`5876`). - -- Fixed dummy frame unwinding in the ``lj-stack`` command. - -- Fixed detection of inconsistent renames even in the presence of sunk - values (:tarantool-issue:`4252`, :tarantool-issue:`5049`, :tarantool-issue:`5118`). - -- Fixed the VM register allocation order provided by LuaJIT frontend in case - of ``BC_ISGE`` and ``BC_ISGT`` (:tarantool-issue:`6227`). - -Lua -~~~ - -- When an error occurs during encoding call results, the auxiliary - lightuserdata value is not removed from the main Lua coroutine stack. - Before the fix, it led to undefined behaviour during the next - usage of this Lua coroutine (:tarantool-issue:`4617`). - -- Fixed a Lua C API misuse when the error is raised during call results - encoding in an unprotected coroutine and expected to be caught in a - different, protected coroutine (:tarantool-issue:`6248`). - -Triggers -^^^^^^^^ - -- Fixed a possible crash in case trigger removes itself. Fixed a - possible crash in case someone destroys a trigger when it - yields (:tarantool-issue:`6266`). \ No newline at end of file diff --git a/doc/release/1.10.12.rst b/doc/release/1.10.12.rst deleted file mode 100644 index 514ed4ecc5..0000000000 --- a/doc/release/1.10.12.rst +++ /dev/null @@ -1,95 +0,0 @@ -Tarantool 1.10.12 -================= - -Released on 2021-12-22. - -* Release: :tarantool-release:`1.10.12`. -* Tag: ``1.10.12``. - -Overview --------- - -1.10.12 is the next stable release in the :doc:`long-term support (LTS) version ` -1.10.x release series. - -The label “stable” means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 3 improvements and resolves roughly 10 issues -since the 1.10.11 version. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- Stop support of Ubuntu Trusty (14.04). (:tarantool-issue:`6502`) -- Bump debian package compatibility level to 10 (:tarantool-issue:`5429`). Bump minimal - required debhelper to version 10 (except for Ubuntu Xenial). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a crash caused by a race between box.session.push() and closing - connection (:tarantool-issue:`6520`). -- Fixed crash in case a fiber changing box.cfg.listen is woken up - (:tarantool-issue:`6480`). -- Fixed box.cfg.listen not reverted to the old address in case the new - one is invalid (:tarantool-issue:`6092`). - -Replication -~~~~~~~~~~~ - -- Fixed replica reconnecting to a living master on any - ``box.cfg{replication=...}`` change. Such reconnects could lead to - replica failing to restore connection for ``replication_timeout`` - seconds (:tarantool-issue:`4669`). - -LuaJIT -~~~~~~ - -- Fixed the order VM registers are allocated by LuaJIT frontend in case - of ``BC_ISGE`` and ``BC_ISGT`` (:tarantool-issue:`6227`). -- Fixed inconsistency while searching for an error function when - unwinding a C protected frame to handle a runtime error (e.g. an - error in \__gc handler). - -Lua -~~~ - -- When error is raised during encoding call results, auxiliary - lightuserdata value is not removed from the main Lua coroutine stack. - Prior to the fix it leads to undefined behaviour during the next - usage of this Lua coroutine (:tarantool-issue:`4617`). -- Fixed Lua C API misuse, when the error is raised during call results - encoding on unprotected coroutine and expected to be catched on the - different one, that is protected (:tarantool-issue:`6248`). - -Triggers -~~~~~~~~ - -- Fixed possibility crash in case when trigger removes itself. Fixed - possibility crash in case when someone destroy trigger, when it’s - yield (:tarantool-issue:`6266`). - -Build -~~~~~ - -- The Debian package does not depend on binutils anymore (:tarantool-issue:`6699`). -- Fix build errors with glibc-2.34 (:tarantool-issue:`6686`). diff --git a/doc/release/1.10.13.rst b/doc/release/1.10.13.rst deleted file mode 100644 index 0d4f757b6b..0000000000 --- a/doc/release/1.10.13.rst +++ /dev/null @@ -1,107 +0,0 @@ -Tarantool 1.10.13 -================= - -Released on 2022-04-25. - -* Release: :tarantool-release:`1.10.13`. -* Tag: ``1.10.13``. - -Overview --------- - -1.10.13 is the next stable release in the :doc:`long-term support (LTS) version ` -1.10.x release series. - -The label “stable” means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 1 improvement and resolves roughly 13 issues -since the :doc:`1.10.12 ` version. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- Support fedora-35 build (:tarantool-issue:`6692`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed memory leak in interactive console (:tarantool-issue:`6817`). - -- Fixed an assertion fail when passing tuple without primary key fields - to ``before_replace`` trigger. Now tuple format is checked before the - execution of ``before_replace`` triggers and after each one (:tarantool-issue:`6780`). - -- Now inserting a tuple with the wrong ``id`` field into the ``_priv`` space - returns the correct error (:tarantool-issue:`6295`). - -- Fixed a bug due to which all fibers created with - ``fiber_attr_setstacksize()`` leaked until the thread exit. Their - stacks also leaked except when ``fiber_set_joinable(..., true)`` was - used. - -- Fixed a crash when Tarantool was launched with multiple ``-e`` or ``-l`` - options without a space between the option and the value (:tarantool-issue:`5747`). - -Vinyl -~~~~~ - -- Immediate removal of compacted run files created after the last - checkpoint optimization now works for replica’s initial JOIN stage - (:tarantool-issue:`6568`). - -- Fixed crash during recovery of a secondary index in case the primary - index contains incompatible phantom tuples (:tarantool-issue:`6778`). - -Replication -~~~~~~~~~~~ - -- Fixed replicas failing to bootstrap when master is just re-started - (:tarantool-issue:`6966`). - -LuaJIT -~~~~~~ - -- Fixed top part of Lua stack (red zone, free slots, top slot) - unwinding in ``lj-stack`` command. - -- Added the value of ``g->gc.mmudata`` field to ``lj-gc`` output. -- ``string.char()`` builtin recording is fixed in case when no - arguments are given (:tarantool-issue:`6371`, :tarantool-issue:`6548`). - -- Actually made JIT respect ``maxirconst`` trace limit while recording - (:tarantool-issue:`6548`). - -Box -~~~ - -- Added iterator type checking and allow passing iterator as a - ``box.index.{ALL,GT,…}`` directly (:tarantool-issue:`6501`). - -Recovery -~~~~~~~~ - -- When ``force_recovery`` cfg option is set, Tarantool is able to boot - from ``snap``/``xlog`` combinations where ``xlog`` covers changes - committed both before and after ``snap`` creation. For example, - ``0...0.xlog``, covering everything up to ``vclock {1: 15}`` and - ``0...09.snap``, corresponding to ``vclock {1: 9}`` (:tarantool-issue:`6794`). - \ No newline at end of file diff --git a/doc/release/1.10.14.rst b/doc/release/1.10.14.rst deleted file mode 100644 index 483bc4741b..0000000000 --- a/doc/release/1.10.14.rst +++ /dev/null @@ -1,158 +0,0 @@ -Tarantool 1.10.14 -================= - -Released on 2022-08-08. - -* Release: :tarantool-release:`1.10.14`. -* Tag: ``1.10.14``. - -Overview --------- - -1.10.14 is the next stable release in the :doc:`long-term support (LTS) version ` -1.10.x release series. - -The label “stable” means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 10 improvements and resolves roughly 20 issues -since the :doc:`1.10.13 ` version. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- Fedora 35 is now supported (:tarantool-issue:`6692`). -- Fedora 36 is now supported. -- Ubuntu 22.04 (Jammy Jellyfish) is now supported. -- Fedora 30, 31, 32, and 33 are no longer supported. -- Ubuntu 21.04 (Hirsute Hippo) is no longer supported. -- Updated OpenSSL used for static builds to version 1.1.1n (:tarantool-issue:`6947`). -- Updated OpenSSL used for static builds to version 1.1.1q. -- Updated libcurl to version 7.83.0 (:tarantool-issue:`6029`). -- Updated libcurl to version 7.84.0. -- Updated libyaml to the version with fixed stack overflows. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a memory leak in the interactive console (:tarantool-issue:`6817`). -- Fixed an assertion fail when passing a tuple without the primary key - fields to a ``before_replace`` trigger. Now the tuple format is - checked before the execution of ``before_replace`` triggers and after - each of them (:tarantool-issue:`6780`). -- Now inserting a tuple with a wrong ``id`` field into the ``\_priv`` - space returns the correct error (:tarantool-issue:`6295`). -- Fixed a bug that was making all fibers created with - ``fiber_attr_setstacksize()`` leak until the thread exit. Their - stacks also leaked except when ``fiber_set_joinable(..., true)`` was - used. -- Fixed a crash that happened when Tarantool was launched with multiple - ``-e`` or ``-l`` options without spaces between the options and their - values (:tarantool-issue:`5747`). -- Fixed the usage of ``box.session.peer()`` in - ``box.session.on_disconnect()`` triggers. Now it’s safe to assume - that ``box.session.peer()`` returns the address of the disconnected - peer, not nil, as it used to (:tarantool-issue:`7014`). -- Fixed a bug in the sequence cache that could result in an error - creating a new sequence (:tarantool-issue:`5306`). - -Vinyl -~~~~~ - -- Immediate removal of compacted run files created after the last - checkpoint optimization now works for the initial JOIN stage of a - replica (:tarantool-issue:`6568`). -- Fixed a crash during the recovery of a secondary index in case the - primary index contains incompatible phantom tuples (:tarantool-issue:`6778`). -- Fixed a bug in the vinyl upsert squashing optimization that could - lead to a segmentation fault error (:tarantool-issue:`5080`). -- Fixed a bug in the vinyl read iterator that could result in a - significant performance degradation of range select requests in the - presence of an intensive write workload (:tarantool-issue:`5700`). - -Replication -~~~~~~~~~~~ - -- Fixed replicas failing to bootstrap when the master has just - restarted (:tarantool-issue:`6966`). - -LuaJIT -~~~~~~ - -- Fixed the top part of Lua stack (red zone, free slots, top slot) - unwinding in the ``lj-stack`` command. - -- Added the value of ``g->gc.mmudata`` field to ``lj-gc`` output. - -- Fixed a bug with ``string.char()`` builtin recording when no - arguments are provided (:tarantool-issue:`6371`, :tarantool-issue:`6548`). - -- Actually made JIT respect the ``maxirconst`` trace limit while - recording (:tarantool-issue:`6548`). - -- Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`6548`, :tarantool-issue:`7230`). - In the scope of this activity, the following issues have been resolved: - - - Fixed emitting for fuse load of constant in GC64 mode (:tarantool-issue:`4095`, - :tarantool-issue:`4199`, :tarantool-issue:`4614`). - - Now initialization of zero-filled struct is compiled (:tarantool-issue:`4630`, - :tarantool-issue:`5885`). - - Actually implemented ``maxirconst`` option for tuning JIT - compiler. - - Fixed JIT stack of Lua slots overflow during recording for - metamethod calls. - - Fixed bytecode dump unpatching for JLOOP in up-recursion compiled - functions. - - Fixed FOLD rule for strength reduction of widening in cdata - indexing. - - Fixed ``string.char()`` recording without arguments. - - Fixed ``print()`` behaviour with the reloaded default metatable - for numbers. - - ``tonumber("-0")`` now saves the sign of number for conversion. - - ``tonumber()`` now gives predictable results for negative - non-base-10 numbers. - - Fixed write barrier for ``debug.setupvalue()`` and - ``lua_setupvalue()``. - - ``jit.p`` now flushes and closes output file after run, not at - program exit. - - Fixed ``jit.p`` profiler interaction with GC finalizers. - - Fixed the case for partial recording of vararg function body with - the fixed number of result values in with ``LJ_GC64`` - (i.e. ``LJ_FR2`` enabled) (:tarantool-issue:`7172`). - - Fixed handling of errors during trace snapshot restore. - -Box -~~~ - -- Added the check of the iterator type in the ``select``, ``count``, - and ``pairs`` methods of the index object. Iterator can now be passed - to these methods directly: ``box.index.ALL``, ``box.index.GT``, and - so on (:tarantool-issue:`6501`). - -Recovery -~~~~~~~~ - -- With the ``force_recovery`` cfg option, Tarantool is now able to boot - from ``snap``/``xlog`` combinations where ``xlog`` covers changes - committed both before and after the ``snap`` was created. For - example, ``0...0.xlog`` that covers everything up to vclock - ``{1: 15}`` and ``0...09.snap`` corresponding to vclock ``{1: 9}`` - (:tarantool-issue:`6794`). diff --git a/doc/release/1.10.15.rst b/doc/release/1.10.15.rst deleted file mode 100644 index 6b9e5fcecf..0000000000 --- a/doc/release/1.10.15.rst +++ /dev/null @@ -1,113 +0,0 @@ -Tarantool 1.10.15 -================= - -Released on 2023-02-20. - -* Release: :tarantool-release:`1.10.15`. -* Tag: ``1.10.15``. - -Overview --------- - -1.10.15 is the next stable release in the :doc:`long-term support (LTS) version ` -1.10.x release series. - -The label “stable” means there are 1.10.x-based applications running in -production for quite a while without known crashes, incorrect results or -other showstopper bugs. - -This release introduces 2 improvements and resolves roughly 8 issues -since the :doc:`1.10.14 ` version. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- OpenSUSE 15.1 and 15.2 are no longer supported. -- Updated libcurl to version 7.87.0 (:tarantool-issue:`8150`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug when fields could be removed from a table stored in a - variable when a logging function was called on this variable (for - example, ``log.info(a)``) (:tarantool-issue:`3853`). - -- Fixed a logging bug: when logging tables with fields that have - reserved internal names (such as ``pid``) in the plain log format, - such fields weren’t logged (:tarantool-issue:`3853`). - -- Added the ``message`` field when logging tables without such field in - the JSON log format (:tarantool-issue:`3853`). - -- Fixed an assertion on malformed JSON message written to the log - (:tarantool-issue:`7955`). - -Vinyl -~~~~~ - -- Fixed a bug that could result in ``select()`` skipping an existing - tuple after a rolled back ``delete()`` (:tarantool-issue:`7947`). - -LuaJIT -~~~~~~ - -Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`7230`). In the scope of -this activity, the following issues have been resolved: - -- Fix overflow check in ``unpack()`` optimized by a compiler. -- Fix recording of ``tonumber()`` with cdata argument for failed - conversions (:tarantool-issue:`7655`). -- Fix concatenation operation on cdata. It always raises an error now. -- Fix ``io.close()`` for already closed standard output. -- Fix trace execution and stitching inside vmevent handler (:tarantool-issue:`6782`). -- Fixed ``emit_loadi()`` on x86/x64 emitting xor between condition - check and jump instructions. -- Fix stack top for error message when raising the OOM error (:tarantool-issue:`3840`). -- Disabled math.modf compilation due to its rare usage and difficulties - with proper implementation of the corresponding JIT machinery. -- Fixed inconsistent behaviour on signed zeros for JIT-compiled unary - minus (:tarantool-issue:`6976`). -- Fixed ``IR_HREF`` hash calculations for non-string GC objects for - GC64. -- Fixed assembling of type-check-only variant of ``IR_SLOAD``. -- Fixed the Lua stack dump command (``lj-stack``) not working on Python - 2. Previously, it used arguments unpacking within the list - initialization, which is not supported in Python 2 (:tarantool-issue:`7458`). - -Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`8069`). In the scope of -this activity, the following issues have been resolved: - -- Fixed loop realigment for dual-number mode -- Fixed os.date() for wider libc strftime() compatibility. - -Fiber -~~~~~ - -- Fixed the assertion fail in ``cord_on_yield`` (:tarantool-issue:`6647`). - -Log -~~~ - -- Fixed an incorrect facility value in syslog on Alpine (:tarantool-issue:`8269`). - -Build -~~~~~ - -- Fixed ``-Werror`` build fail on Clang 15 (:tarantool-issue:`8110`). diff --git a/doc/release/1.10.5.rst b/doc/release/1.10.5.rst deleted file mode 100644 index 98c750a415..0000000000 --- a/doc/release/1.10.5.rst +++ /dev/null @@ -1,196 +0,0 @@ -Tarantool 1.10.5 -================ - -Release: :tarantool-release:`1.10.5` - -Date: 2020-01-14 Tag: 1.10.5-0-g83a2ae9 - -Overview --------- - -1.10.5 is the next stable release of the 1.10.x series. The label -“stable” means there are 1.10.x-based applications running in production -for quite a while without known crashes, incorrect results or other -showstopper bugs. - -This release resolves roughly 30 issues since 1.10.4. There may be bugs -in less common areas. If you find any, feel free to report an issue at -`GitHub `_. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Lua -~~~ - -- Exit gracefully when a main script throws an error: notify systemd, - log the error (:tarantool-issue:`4382`). -- Enable ``__pairs`` and ``__ipairs`` metamethods from Lua 5.2 - (:tarantool-issue:`4560`). We still conform Lua 5.1 API that is not always - compatible with Lua 5.2. The change is only about those metamethods. - -Misc -~~~~ - -- Add package builds and deployment for the following Linux distros: - - - Ubuntu 19.10 Eoan Ermine, (:tarantool-issue:`4583`) - - CentOS 8, (:tarantool-issue:`4543`) - - Fedora 31, (:tarantool-issue:`4612`) - -Bugs fixed ----------- - -Core -~~~~ - -- fiber: make sure the guard page is created; refuse to create a new - fiber otherwise (:tarantool-issue:`4541`). It is possible in case of heavy - memory usage, say, when there is no resources to split VMAs. -- Forbid ``00000000-0000-0000-0000-000000000000`` as the value of - ``box.cfg({<...>})`` options: ``replicaset_uuid`` and - ``instance_uuid`` (:tarantool-issue:`4282`). It did not work as expected: - the nil UUID was treated as absence of the value. -- Update cache of universe privileges without reconnect (:tarantool-issue:`2763`). -- net.box: don’t fire the ``on_connect`` trigger on schema update - (:tarantool-issue:`4593`). Also don’t fire the ``on_disconnect`` trigger - if a connection never entered into the ``active`` state - (e.g. when the first schema fetch is failed). -- func: fix use-after-free on function unload. - `fce9cf96 `_ -- Don’t destroy a session until ``box.session.on_disconnect(<...>)`` - triggers are finished (:tarantool-issue:`4627`). This means, for example, that - ``box.session.id()`` can be safely invoked from the ``on_disconnect`` - trigger. Before this change ``box.session.id()`` returned garbage - (usually 0) after yield in the ``on_disconnect`` trigger. *Note*: - `tarantool/queue `_ module is - affected by this problem in `some - scenarios `__. It is - especially suggested to update Tarantool at least to this release if - you’re using this module. -- Handle OOM gracefully during allocating a buffer for binary protocol - response. - `5c5a4e2d `_ -- func: Fix ``box.schema.func.drop(<..>)`` to unload unused modules - (:tarantool-issue:`4648`). Also fix ``box.schema.func.create(<..>)`` - to avoid loading a module again when another function from the module is loaded. -- Encode Lua number -2^63 as integer in ``msgpack.encode()`` and box’s - functions (:tarantool-issue:`4672`). - -Replication -~~~~~~~~~~~ - -- Prefer to bootstrap a replica from a fully bootstrapped instance - rather than from an instance that is in the process of bootstrapping - (:tarantool-issue:`4527`). - - This change enables the case when two nodes (B, C) are being - bootstrapped simultaneously using the one that is already - bootstrapped (A), while A is configured to replicate from {B, C} and - B – from {A, C}. -- Return immediately from ``box.cfg{<...>}`` when an instance is - reconfigured with ``replication_connect_quorum = 0`` - (:tarantool-issue:`3760`). - - This change also fixes the behaviour of reconfiguration with non-zero - ``replication_connect_quorum``: ``box.cfg{<...>}`` returns - immediately regardless of whether connections to upstreams are - established. -- Auto reconnect a replica if password is invalid (:tarantool-issue:`4550`). -- Use empty password when a URI in ``box.cfg{replication = <...>}`` is - like ``login@host:port`` (:tarantool-issue:`4605`). - - This behaviour matches the net.box’s one now. - Explicit ``login:@host:port`` was necessary - before, otherwise a replica displayed the following error: - - Missing mandatory field 'tuple' in request - -- Fix segfault during replication configuration - (``box.cfg{replication = <...>}`` call) - (:tarantool-issue:`4440`, :tarantool-issue:`4576`, :tarantool-issue:`4586`, - :tarantool-issue:`4643`). -- Apply replication settings of ``box.cfg({<...>})`` in the strict - order (:tarantool-issue:`4433`). - -Lua -~~~ - -- Fix handling of a socket read error in the console client - (``console.connect()`` or ``tarantoolctl connect/enter <...>``). - `1f86e6cc `_ -- Handle the “not enough memory” error gracefully when it is raised - from ``lua_newthread()`` (:tarantool-issue:`4556`). There are several cases - when a new Lua thread is created: - - - Start executing a Lua function call or an eval request (from a - binary protocol, SQL or with ``box.func.<...>:call()``). - - Create of a new fiber. - - Start execution of a trigger. - - Start of encoding into a YAML format (``yaml.encode()``). - -- Fix stack-use-after-scope in ``json.decode()`` (:tarantool-issue:`4637`). -- Allow to use ``cdata`` (e.g. buffer.IBUF_SHARED) as - the argument to ``msgpack.encode()``. - `6d38f0c5 `_ - Before this change the ``cdata`` type was allowed, but - not the corresponding pointer type. -- A pointer returned by ``msgpack.decode*(cdata<[char] const *>)`` - functions can be assigned to buffer.rpos now (and the same for - msgpackffi) (:tarantool-issue:`3926`). - - All those functions now return - ``cdata`` or ``cdata`` depending of a passed - argument. Example of the code that did not work: - ``res, buf.rpos = msgpack.decode(buf.rpos, buf:size())``. -- Fix race in ``fio.mktree()`` when two tarantool processes create the - same directory tree simultaneously (:tarantool-issue:`4660`). This problem affects - `tarantool/cartrige `_, see - `cartrige#gh-382 `_. - -HTTP client -^^^^^^^^^^^ - -- Disable verbose mode when ``{verbose = false}`` is passed. - `28f8a5eb `_ -- Fix assertion fail after a curl write error (:tarantool-issue:`4232`). - -LuaJIT -~~~~~~ - -- Fix the “Data segment size exceeds process limit” error on - FreeBSD/x64: do not change resource limits when it is not necessary - (:tarantool-issue:`4537`). -- fold: keep type of emitted CONV in sync with its mode. - `LuaJIT#524 `_ This - fixes the following assertion fail: - - asm_conv: Assertion \`((IRType)((ir->t).irt & IRT_TYPE)) != st’ failed - -Misc -~~~~ - -- Fix CLI boolean options handling in ``tarantoolctl cat <...>``, such - as ``--show-system`` (:tarantool-issue:`4076`). -- Fix segfault (out of bounds access) when a stack unwinding error - occurs at backtrace printing (:tarantool-issue:`4636`). Backtrace is printed - on SIGFPE and SIGSEGV signals or when LuaJIT finds itself in the unrecoverable - state (``lua_atpanic()``). -- Clear terminal state on panic (:tarantool-issue:`4466`). - -Building from sources -^^^^^^^^^^^^^^^^^^^^^ - -- Fix OpenSSL linking problems on FreeBSD (:tarantool-issue:`4490`). -- Fix linking problems on Mac OS when several toolchains are in PATH - (:tarantool-issue:`4587`). -- Fix GCC 9 warning on ``strncpy()`` (:tarantool-issue:`4515`). diff --git a/doc/release/1.10.6.rst b/doc/release/1.10.6.rst deleted file mode 100644 index 805377d6bd..0000000000 --- a/doc/release/1.10.6.rst +++ /dev/null @@ -1,140 +0,0 @@ -Tarantool 1.10.6 -================ - -Release: :tarantool-release:`1.10.6` - -Date: 2020-04-20 Tag: 1.10.6-1-g47c009a - -Overview --------- - -1.10.6 is the next stable release of the 1.10.x series. The label -“stable” means there are 1.10.x-based applications running in production -for quite a while without known crashes, incorrect results or other -showstopper bugs. - -This release resolves roughly 20 issues since 1.10.5. There may be bugs -in less common areas. If you find any, feel free to report an issue at -GitHub. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. Please -upgrade using the box.schema.upgrade() procedure to unlock all the new -features of the 1.10.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- ``fiber.storage`` is cleaned between requests, and can be used as a - request-local storage. Previously ``fiber.storage`` could contain - some old values in the beginning of an iproto request execution, and - it needed to be nullified manually. Now the cleanup is unneeded - (:tarantool-issue:`4662`). -- ``tuple``/``space``/``index``:``update()``/``upsert()`` were fixed - not to turn a value into an infinity when a float value was added to - or subtracted from a float column and exceeded the float value range - (:tarantool-issue:`4701`). -- Make RTREE indexes handle the out of memory error: before this fix, - OOM during the recovery of an RTREE index resulted in segmentation - fault (:tarantool-issue:`4619`). -- Add cancellation guard to avoid WAL thread stuck (:tarantool-issue:`4127`). - -Replication -~~~~~~~~~~~ - -- Fix the rebootstrap procedure not working if the replica itself is - listed in ``box.cfg.replication`` (:tarantool-issue:`4759`). -- Fix possible user password leaking via replication logs - (:tarantool-issue:`4493`). -- Local space operations are now counted in 0th vclock component. Every - instance may have its own 0-th vclock component not matching others’. - Local space operations are not replicated at all, even as NOPs - (:tarantool-issue:`4114`). -- Gc consumers are now ordered by their vclocks and not by vclock - signatures. Only the WALS that contain no entries needed by any of - the consumers are deleted (:tarantool-issue:`4114`). - -Lua -~~~ - -- json: ``:decode()`` doesn’t spoil instance’s options with per-call - ones (when it is called with the second argument) (:tarantool-issue:`4761`). -- ``os.environ()`` is now changed when ``os.setenv()`` is called - (:tarantool-issue:`4733`). -- ``netbox.self:call/eval()`` now returns the same types as - ``netbox_connection:call``/``eval``. Previously it could return a - tuple or ``box.error`` cdata (:tarantool-issue:`4513`). -- libev: backport fix for listening for more then 1024 file descriptors - on Mac OS (:tarantool-issue:`3867`). - -HTTP client -^^^^^^^^^^^ - -- When building Tarantool with bundled ``libcurl``, link it with the - ``c-ares`` library by default (:tarantool-issue:`4591`). - -LuaJIT -~~~~~~ - -- ``__pairs``/``__ipairs`` metamethods handling is removed since we - faced the issues with the backward compatibility between Lua 5.1 and - Lua 5.2 within Tarantool modules as well as other third party code - (:tarantool-issue:`4770`). - -- Introduce ``luajit-gdb.py`` extension with commands for inspecting - LuaJIT internals. The extension obliges one to provide gdbinfo for - ``libluajit``, otherwise loading fails. The extension provides the - following commands: - - - ``lj-arch`` dumps values of LJ_64 and LJ_GC64 macro definitions - - ``lj-tv`` dumps the type and GCobj info related to the given - TValue - - ``lj-str`` dumps the contents of the given GCstr - - ``lj-tab`` dumps the contents of the given GCtab - - ``lj-stack`` dumps Lua stack of the given lua_State - - ``lj-state`` shows current VM, GC and JIT states - - ``lj-gc`` shows current GC stats - -- Fix string to number conversion: current implementation respects the - buffer length (:tarantool-issue:`4773`). - -- “FFI sandwich”(*) detection is introduced. If sandwich is detected - while trace recording the recording is aborted. The sandwich detected - while mcode execution leads to the platform panic. - -- luaJIT_setmode call is prohibited while mcode execution and leads to - the platform panic. - -(*) The following stack mix is called FFI sandwich: - - Lua-FFI -> C routine -> Lua-C API -> Lua VM - -This sort of re-entrancy is explicitly not supported by LuaJIT compiler. -For more info see (:tarantool-issue:`4427`). - -Vinyl -~~~~~ - -- Fix assertion fault due to triggered dump process during secondary - index build (:tarantool-issue:`4810`). - -Misc -~~~~ - -- Fix crashes at attempts to use ``-e`` and ``-l`` command line options - concatenated with their values, like this: ``-eprint(100)`` - (:tarantool-issue:`4775`). -- Update ``libopenssl`` version to 1.1.1f since the previous one was - EOLed (:tarantool-issue:`4830`). - -Building from sources -~~~~~~~~~~~~~~~~~~~~~ - -- Fix static build (``-DBUILD_STATIC=ON``) when ``libunwind`` depends - on ``liblzma`` (:tarantool-issue:`4551`). diff --git a/doc/release/1.10.7.rst b/doc/release/1.10.7.rst deleted file mode 100644 index c250e132bc..0000000000 --- a/doc/release/1.10.7.rst +++ /dev/null @@ -1,70 +0,0 @@ -Tarantool 1.10.7 -================ - -Release: :tarantool-release:`1.10.7` - -Date: 2020-07-17 Tag: 1.10.7-1-gb93a33a - -Overview --------- - -1.10.7 is the next stable release of the 1.10.x series. The label -“stable” means there are 1.10.x-based applications running in production -for quite a while without known crashes, incorrect results or other -showstopper bugs. - -This release resolves roughly 14 issues since 1.10.6. There may be bugs -in less common areas. If you find any, feel free to report an issue at -`GitHub `_. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. Please -upgrade using the box.schema.upgrade() procedure to unlock all the new -features of the 1.10.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug in C module reloading (:tarantool-issue:`4945`). -- Fixed races and corner cases in box (re)configuration (:tarantool-issue:`4231`). -- Fixed check of index field map size which led to crash (:tarantool-issue:`5084`). -- Fixed wrong mpsgpack extension type in an error message at decoding - (:tarantool-issue:`5017`). - -Lua -~~~ - -- Fixed error while closing socket.tcp_server socket (:tarantool-issue:`4087`). - -LuaRocks -~~~~~~~~ - -- Don’t ruin rock name when freshly installing \*.all.rock with - dependencies (:tarantool-issue:`4704`). - -Vinyl -~~~~~ - -- Fixed crash during compaction due to tuples with size exceeding - vinyl_max_tuple_size setting (:tarantool-issue:`4864`). -- Fixed crash during recovery of vinyl index due to the lack of file - descriptors (:tarantool-issue:`4805`). -- Fixed crash during executing upsert changing primary key in debug - mode (:tarantool-issue:`5005`). -- Fixed crash due to triggered dump process during secondary index - creation (:tarantool-issue:`5042`). -- Fixed crash/deadlock (depending on build type) during dump process - scheduling and concurrent DDL operation (:tarantool-issue:`4821`). -- Fixed crash during read of prepared but still not yet not committed - statement (:tarantool-issue:`3395`). -- Fixed squashing set and arithmetic upsert operations (:tarantool-issue:`5106`). -- Create missing folders for vinyl spaces and indexes if needed to - avoid confusing fails of tarantool started from backup (:tarantool-issue:`5090`). -- Fixed crash during squash of many (more than 4000) upserts modifying - the same key (:tarantool-issue:`4957`). diff --git a/doc/release/1.10.8.rst b/doc/release/1.10.8.rst deleted file mode 100644 index f72b5f9513..0000000000 --- a/doc/release/1.10.8.rst +++ /dev/null @@ -1,79 +0,0 @@ -Tarantool 1.10.8 -================ - -Release: :tarantool-release:`1.10.8` - -Date: 2020-10-22 Tag: 1.10.8-1-ge69e130 - -Overview --------- - -1.10.8 is the next stable release of the 1.10.x series. The label -“stable” means there are 1.10.x-based applications running in production -for quite a while without known crashes, incorrect results or other -showstopper bugs. - -This release resolves roughly 7 issues since the 1.10.7 version. There -may be bugs in less common areas. If you find any, feel free to report -an issue at `GitHub `_. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. Please -upgrade using the box.schema.upgrade() procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Module API -~~~~~~~~~~ - -- Exposed the box region, key_def and several other functions in order - to implement external tuple.keydef and tuple.merger modules on top of - them (:tarantool-issue:`5273`, :tarantool-issue:`5384`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed fibers switch-over to prevent JIT machinery misbehavior. Trace - recording is aborted when fiber yields the execution. The yield - occurring while the compiled code is being run (it’s likely a - function with a yield underneath called via LuaJIT FFI) leads to the - platform panic (:tarantool-issue:`1700`, :tarantool-issue:`4491`). -- Fixed fibers switch-over to prevent implicit GC disabling. The yield - occurring while user-defined \__gc metamethod is running leads to the - platform panic. - -Lua -~~~ - -- Fixed unhandled Lua error that might lead to memory leaks and - inconsistencies in ``:frommap()``, - ``:compare()``, ``:select()`` - (:tarantool-issue:`5382`). - -LuaJIT -~~~~~~ - -- Fixed the error occurring on loading luajit-gdb.py with Python2 - (:tarantool-issue:`4828`). - -Misc -~~~~ - -- Fixed potential lag on boot up procedure when system’s password - database is slow in access (:tarantool-issue:`5034`). - -.. _module-api-1: - -Module API -~~~~~~~~~~ - -- Get rid of typedef redefinitions for compatibility with C99 - (:tarantool-issue:`5313`). diff --git a/doc/release/1.10.9.rst b/doc/release/1.10.9.rst deleted file mode 100644 index ff91c5395d..0000000000 --- a/doc/release/1.10.9.rst +++ /dev/null @@ -1,97 +0,0 @@ -Tarantool 1.10.9 -================ - -Release: :tarantool-release:`1.10.9` - -Date: 2020-12-30 Tag: 1.10.9-0-g720ffdd23 - -Overview --------- - -1.10.9 is the next stable release in the -:doc:`long-term support (LTS) version ` -1.10.x release series. The label “stable” means there are 1.10.x-based -applications running in production for quite a while without known -crashes, incorrect results or other showstopper bugs. - -This release introduces one improvement and resolves roughly 7 issues -since the 1.10.8 version. - -Compatibility -------------- - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary -data layout, client-server protocol and replication protocol. Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 1.10.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- Deploy packages for Fedora 32 (:tarantool-issue:`4966`). -- Deploy packages for Debian Bullseye (:tarantool-issue:`5638`). - -Misc -~~~~ - -- Don’t start an ‘example’ instance after installing Tarantool - (:tarantool-issue:`4507`). - - Before this release the ``tarantool`` package for Debian and Ubuntu used to - automatically enable and start an 'example' instance, which would - listen on the TCP port ``3301``. Since this release the instance file - is installed to ``/etc/tarantool/instances.available/example.lua``, - but isn’t enabled by default and not started anymore. You can enable - and start it with the following commands: - - .. code:: bash - - ln -s /etc/tarantool/instances.available/example.lua \ - /etc/tarantool/instances.enabled/example.lua - systemctl start tarantool@example - - Existing configuration will not be updated automatically at package - update. If you don’t the need example instance, you can stop and - disable it with the following commands: - - .. code:: bash - - systemctl stop tarantool@example - rm /etc/tarantool/instances.enabled/example.lua - -Bugs fixed ----------- - -Core -~~~~ - -- ``fiber.cond:wait()`` now correctly throws an error when a fiber is - cancelled, instead of ignoring the timeout and returning without any - signs of an error (:tarantool-issue:`5013`). -- Fixed a memory corruption issue, which was most visible on macOS, but - could affect any system (:tarantool-issue:`5312`). -- A dynamic module now gets correctly unloaded from memory in case of - an attempt to load a non-existing function from it (:tarantool-issue:`5475`). -- The fiber region (the box region) won’t be invalidated on a read-only - transaction (:tarantool-issue:`5427`, :tarantool-issue:`5623`). - -LuaJIT -~~~~~~ - -- Dispatching ``__call`` metamethod no longer causes address clashing - (:tarantool-issue:`4518`, (:tarantool-issue:`4649`). -- Fixed a false positive panic when yielding in debug hook - (:tarantool-issue:`5649`). - -Lua -~~~ - -- An attempt to use a ``net.box`` connection which is not established - yet now results in a correctly reported error (:tarantool-issue:`4787`). -- Fixed a hang which occurred when ``tarantool`` ran a user script with - the ``-e`` option and this script exited with an error (like with - ``tarantool -e 'assert(false)'``) (:tarantool-issue:`4983`). diff --git a/doc/release/1.10.rst b/doc/release/1.10.rst deleted file mode 100644 index 8e2775993d..0000000000 --- a/doc/release/1.10.rst +++ /dev/null @@ -1,448 +0,0 @@ --------------------------------------------------------------------------------- -Tarantool 1.10 --------------------------------------------------------------------------------- - -Release: :tarantool-release:`1.10.0` - -.. _whats_new_110: - -.. _whats_new_1104: - -**Release 1.10.4** - -Release type: stable (lts). Release date: 2019-09-26. Tag: 1-10-4. - -Release: :tarantool-release:`1.10.4.` - -Overview - -1.10.4 is the next :ref:`stable (lts) ` release in the 1.10 series. -The label 'stable' means we have had systems running in production without known crashes, -bad results or other showstopper bugs for quite a while now. - -This release resolves about 50 issues since 1.10.3. - -Compatibility - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary data layout, -client-server protocol and replication protocol. -Please :ref:`upgrade ` using the ``box.schema.upgrade()`` -procedure to unlock all the new features of the 1.10.x series when migrating -from 1.9 version. - -Functionality added or changed - -* (Engines) Improve dump start/stop logging. When initiating memory dump, print - how much memory is going to be dumped, expected dump rate, ETA, and the recent - write rate. Upon dump completion, print observed dump rate in addition to dump - size and duration. -* (Engines) Look up key in reader thread. If a key isn't found in the tuple cache, - we fetch it from a run file. In this case disk read and page decompression is - done by a reader thread, however key lookup in the fetched page is still - performed by the TX thread. Since pages are immutable, this could as well - be done by the reader thread, which would allow us to save some precious CPU - cycles for TX - (:tarantool-issue:`4257`). -* (Core) Improve :ref:`box.stat.net ` - (:tarantool-issue:`4150`). -* (Core) Add ``idle`` to downstream status in ``box.info``. - When a relay sends a row it updates ``last_row_time`` value with the - current time. When ``box.info()`` is called, ``idle`` is set to - ``current_time`` - ``last_row_time``. -* (Replication) Print corrupted rows on decoding error. - Improve row printing to log. Print the header row by row, 16 bytes in a row, - and format output to match ``xxd`` output: - - .. code-block:: bash - - [001] 2019-04-05 18:22:46.679 [11859] iproto V> Got a corrupted row: - [001] 2019-04-05 18:22:46.679 [11859] iproto V> 00000000: A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53 60 5F 20 3F - [001] 2019-04-05 18:22:46.679 [11859] iproto V> 00000010: D8 E2 D6 E2 A3 02 D6 5A E4 D9 E7 68 A1 53 8D 53 - -* (Lua) Add type of operation to space :ref:`trigger parameters `. - For example, a trigger function may now look like this: - - .. code-block:: lua - - function before_replace_trig(old, new, space_name, op_type) - if op_type == 'INSERT' then - return old - else - return new - end - end - - (:tarantool-issue:`4099`). -* (Lua) Add ``debug.sourcefile()`` and ``debug.sourcedir()`` helpers - (and ``debug.__file__`` and ``debug.__dir__ shortcuts``) to determine - the location of a current Lua source file. - Part of (:tarantool-issue:`4193`). -* (HTTP client) Add ``max_total_connections`` option in addition to - ``max_connections`` to allow more fine-grained tuning of ``libcurl`` - connection cache. Don't restrict the total connections` with a constant value - by default, but use ``libcurl``'s default, which scales the threshold according - to easy handles count - (:tarantool-issue:`3945`). - -Bugs fixed - -* (Vinyl) Fix assertion failure in `vy_tx_handle_deferred_delete` - (:tarantool-issue:`4294`). -* (Vinyl) Don't purge deleted runs from vylog on compaction. - Cherry-picked from (:tarantool-issue:`4218`). -* (Vinyl) Don't throttle DDL - (:tarantool-issue:`4238`). -* (Vinyl) Fix deferred DELETE statement lost on commit - (:tarantool-issue:`4248`). -* (Vinyl) Fix assertion while recovering dumped statement - (:tarantool-issue:`4222`). -* (Vinyl) Reset dump watermark after updating memory limit - (:tarantool-issue:`3864`). -* (Vinyl) Be pessimistic about write rate when setting dump watermark - (:tarantool-issue:`4166`). -* (Vinyl) Fix crash if space is dropped while space.get is reading from it - (:tarantool-issue:`4109`). -* (Vinyl) Fix crash during index build - (:tarantool-issue:`4152`). -* (Vinyl) Don't compress L1 runs - (:tarantool-issue:`2389`). -* (Vinyl) Account statements skipped on read. -* (Vinyl) Take into account primary key lookup in latency accounting. -* (Vinyl) Fix ``vy_range_update_compaction_priority`` hang. -* (Vinyl) Free region on vylog commit instead of resetting it and clean up - region after allocating surrogate statement. -* (Vinyl) Increase even more the open file limit in ``systemd`` unit file. -* (Vinyl) Increment min range size to 128MB -* (Memtx) Cancel checkpoint thread at exit - (:tarantool-issue:`4170`). -* (Core) Fix crash for update with empty tuple - (:tarantool-issue:`4041`). -* (Core) Fix use-after-free in ``space_truncate`` - (:tarantool-issue:`4093`). -* (Core) Fix error while altering index with sequence - (:tarantool-issue:`4214`). -* (Core) Detect a new invalid json path case - (:tarantool-issue:`4419`). -* (Core) Fix empty password authentication - (:tarantool-issue:`4327`). -* (Core) Fix ``txn::sub_stmt_begin`` array size. -* (Core) Account ``index.pairs`` in ``box.stat.SELECT()``. -* (Replication) Disallow bootstrap of read-only masters - (:tarantool-issue:`4321`). -* (Replication) Enter orphan mode on manual replication configuration change - (:tarantool-issue:`4424`). -* (Replication) Set ``last_row_time`` to ``now`` in ``relay_new`` and ``relay_start``. - PR `4431 `_. -* (Replication) Stop relay on subscribe error - (:tarantool-issue:`4399`). -* (Replication) Init ``coio`` watcher before join/subscribe - (:tarantool-issue:`4110`). -* (Replication) Allow to change instance id during join - (:tarantool-issue:`4107`). -* (Replication) Fix garbage collection logic. -* (Replication) Revert packet boundary checking for iproto. -* (Replication) Do not abort replication on ER_UNKNOWN_REPLICA. -* (Replication) Reduce effects of input buffer fragmentation on large ``cfg.readahead``. -* (Replication) Fix upgrade from 1.7 (it doesn't recognize IPROTO_VOTE request type). -* (Replication) Fix memory leak in call / eval in the case when a transaction - is not committed - (:tarantool-issue:`4388`). -* (Lua) Fix ``fio.mktree()`` error reporting - (:tarantool-issue:`4044`). -* (Lua) Fix segfault on ``ffi.C_say()`` without filename - (:tarantool-issue:`4336`). -* (Lua) Fix segfault on ``json.encode()`` on a recursive table - (:tarantool-issue:`4366`). -* (Lua) Fix ``pwd.getpwall()`` and ``pwd.getgrall()`` hang on CentOS 6 - and FreeBSD 12 - (:tarantool-issue:`4447`, - :tarantool-issue:`4428`). -* (Lua) Fix a segfault during initialization of a cipher from ``crypto`` module - (:tarantool-issue:`4223`). -* (HTTP client) Reduce stack consumption during waiting for a DNS resolving result - (:tarantool-issue:`4179`). -* (HTTP client) Increase max outgoing header size to 8 KiB - (:tarantool-issue:`3959`). -* (HTTP client) Verify "headers" option stronger - (:tarantool-issue:`4281`, - :tarantool-issue:`3679`). -* (HTTP client) Use bundled ``libcurl`` rather than system-wide by default - (:tarantool-issue:`4318`, - :tarantool-issue:`4180`, - :tarantool-issue:`4288`, - :tarantool-issue:`4389`, - :tarantool-issue:`4397`). -* (HTTP client) This closes several known problems that were fixed in recent - ``libcurl`` versions, including segfaults, hangs, memory leaks and performance - problems. -* (LuaJIT) Fix overflow of snapshot map offset - Part of (:tarantool-issue:`4171`). -* (LuaJIT) Fix rechaining of pseudo-resurrected string keys - Part of (:tarantool-issue:`4171`). -* (LuaJIT) Fix fold machinery misbehaves - (:tarantool-issue:`4376`). -* (LuaJIT) Fix for `debug.getinfo(1,'>S')` - (:tarantool-issue:`3833`). -* (LuaJIT) Fix `string.find` recording - (:tarantool-issue:`4476`). -* (LuaJIT) Fixed a segfault when unsinking 64-bit pointers. -* (Misc) Increase even more the open file limit in ``systemd`` unit file. -* (Misc) Raise error in ``tarantoolctl`` when ``box.cfg()`` isn't called - (:tarantool-issue:`3953`). -* (Misc) Support ``systemd``’s NOTIFY_SOCKET on OS X - (:tarantool-issue:`4436`). -* (Misc) Fix ``coio_getaddrinfo()`` when 0 timeout is passed - (affects ``netbox``’s ``connect_timeout``) - (:tarantool-issue:`4209`). -* (Misc) Fix ``coio_do_copyfile()`` to perform truncate of destination - (affects ``fio.copyfile()``) - (:tarantool-issue:`4181`). -* (Misc) Make hints in ``coio_getaddrinfo()`` optional. -* (Misc) Validate ``msgpack.decode()`` cdata size argument - (:tarantool-issue:`4224`). -* (Misc) Fix linking with static ``openssl`` library - (:tarantool-issue:`4437`). - -Deprecations - -* (Core) Deprecate ``rows_per_wal`` in favor of ``wal_max_size``. - Part of (:tarantool-issue:`3762`). - -.. _whats_new_1103: - -**Release 1.10.3** - -Release type: stable (lts). Release date: 2019-04-01. Tag: 1-10-3. - -Release: :tarantool-release:`1.10.3.` - -Overview - -1.10.3 is the next :ref:`stable (lts) ` release in the 1.10 series. -The label 'stable' means we have had systems running in production without known crashes, -bad results or other showstopper bugs for quite a while now. - -This release resolves 69 issues since 1.10.2. - -Compatibility - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary data layout, client-server protocol and replication protocol. -Please :ref:`upgrade ` using the ``box.schema.upgrade()`` procedure to unlock all the new features of the 1.10.x series when migrating from 1.9 version. - -Functionality added or changed - -* (Engines) Randomize vinyl index compaction - (:tarantool-issue:`3944`). -* (Engines) Throttle tx thread if compaction doesn't keep up with dumps - (:tarantool-issue:`3721`). -* (Engines) Do not apply run_count_per_level to the last level - (:tarantool-issue:`3657`). -* (Server) Report the number of active iproto connections - (:tarantool-issue:`3905`). -* (Replication) Never keep a dead replica around if running out of disk space - (:tarantool-issue:`3397`). -* (Replication) Report join progress to the replica log - (:tarantool-issue:`3165`). -* (Lua) Expose snapshot status in box.info.gc() - (:tarantool-issue:`3935`). -* (Lua) Show names of Lua functions in backtraces in fiber.info() - (:tarantool-issue:`3538`). -* (Lua) Check if transaction opened - (:tarantool-issue:`3518`). - -Bugs fixed - -* (Engines) Tarantool crashes if DML races with DDL - (:tarantool-issue:`3420`). -* (Engines) Recovery error if DDL is aborted - (:tarantool-issue:`4066`). -* (Engines) Tarantool could commit in the read-only mode - (:tarantool-issue:`4016`). -* (Engines) Vinyl iterator crashes if used throughout DDL - (:tarantool-issue:`4000`). -* (Engines) Vinyl doesn't exit until dump/compaction is complete - (:tarantool-issue:`3949`). -* (Engines) After re-creating secondary index no data is visible - (:tarantool-issue:`3903`). -* (Engines) box.info.memory().tx underflow - (:tarantool-issue:`3897`). -* (Engines) Vinyl stalls on intensive random insertion - (:tarantool-issue:`3603`). -* (Server) Newer version of libcurl explodes fiber stack - (:tarantool-issue:`3569`). -* (Server) SIGHUP crashes tarantool - (:tarantool-issue:`4063`). -* (Server) checkpoint_daemon.lua:49: bad argument #2 to 'format' - (:tarantool-issue:`4030`). -* (Server) fiber:name() show only part of name - (:tarantool-issue:`4011`). -* (Server) Second hot standby switch may fail - (:tarantool-issue:`3967`). -* (Server) Updating box.cfg.readahead doesn't affect existing connections - (:tarantool-issue:`3958`). -* (Server) fiber.join() blocks in 'suspended' if fiber has cancelled - (:tarantool-issue:`3948`). -* (Server) Tarantool can be crashed by sending gibberish to a binary socket - (:tarantool-issue:`3900`). -* (Server) Stored procedure to produce push-messages never breaks on client disconnect - (:tarantool-issue:`3559`). -* (Server) Tarantool crashed in lj_vm_return - (:tarantool-issue:`3840`). -* (Server) Fiber executing box.cfg() may process messages from iproto - (:tarantool-issue:`3779`). -* (Server) Possible regression on nosqlbench - (:tarantool-issue:`3747`). -* (Server) Assertion after improper index creation - (:tarantool-issue:`3744`). -* (Server) Tarantool crashes on vshard startup (lj_gc_step) - (:tarantool-issue:`3725`). -* (Server) Do not restart replication on box.cfg if the configuration didn't change - (:tarantool-issue:`3711`). -* (Replication) Applier times out too fast when reading large tuples - (:tarantool-issue:`4042`). -* (Replication) Vinyl replica join fails - (:tarantool-issue:`3968`). -* (Replication) Error during replication - (:tarantool-issue:`3910`). -* (Replication) Downstream status doesn't show up in replication.info unless the channel is broken - (:tarantool-issue:`3904`). -* (Replication) replication fails: tx checksum mismatch - (:tarantool-issue:`3883`). -* (Replication) Rebootstrap crashes if master has replica's rows - (:tarantool-issue:`3740`). -* (Replication) After restart tuples revert back to their old state which was before replica sync - (:tarantool-issue:`3722`). -* (Replication) Add vclock for safer hot standby switch - (:tarantool-issue:`3002`). -* (Replication) Master row is skipped forever in case of wal write failure - (:tarantool-issue:`2283`). -* (Lua) space:frommap():tomap() conversion fail - (:tarantool-issue:`4045`). -* (Lua) Non-informative message when trying to read a negative count of bytes from socket - (:tarantool-issue:`3979`). -* (Lua) space:frommap raise "tuple field does not match..." even for nullable field - (:tarantool-issue:`3883`). -* (Lua) Tarantool crashes on net.box.call after some uptime with vshard internal fiber - (:tarantool-issue:`3751`). -* (Lua) Heap use after free in lbox_error - (:tarantool-issue:`1955`). -* (Misc) http.client doesn't honour 'connection: keep-alive' - (:tarantool-issue:`3955`). -* (Misc) net.box wait_connected is broken - (:tarantool-issue:`3856`). -* (Misc) Mac build fails on Mojave - (:tarantool-issue:`3797`). -* (Misc) FreeBSD build error: no SSL support - (:tarantool-issue:`3750`). -* (Misc) 'http.client' sets invalid (?) reason - (:tarantool-issue:`3681`). -* (Misc) Http client silently modifies headers when value is not a "string" or a "number" - (:tarantool-issue:`3679`). -* (Misc) yaml.encode uses multiline format for 'false' and 'true' - (:tarantool-issue:`3662`). -* (Misc) yaml.encode encodes 'null' incorrectly - (:tarantool-issue:`3583`). -* (Misc) Error object message is empty - (:tarantool-issue:`3604`). -* (Misc) Log can be flooded by warning messages - (:tarantool-issue:`2218`). - -Deprecations - -* Deprecate ``console=true`` option for :ref:`net.box.new() `. - -.. _whats_new_1102: - -**Release 1.10.2** - -Release type: stable (lts). Release date: 2018-10-13. Tag: 1-10-2. - -Release: :tarantool-release:`1.10.2.` - -This is the first :ref:`stable (lts) ` release in the 1.10 -series. -Also, Tarantool 1.10.2 is a major release that deprecates Tarantool 1.9.2. -It resolves 95 issues since 1.9.2. - -Tarantool 1.10.x is backward compatible with Tarantool 1.9.x in binary data -layout, client-server protocol and replication protocol. -You can :ref:`upgrade ` using the ``box.schema.upgrade()`` -procedure. - -The goal of this release is to significantly increase ``vinyl`` stability and -introduce automatic rebootstrap of a Tarantool replica set. - -Functionality added or changed: - - * (Engines) support ALTER for non-empty vinyl spaces - (:tarantool-issue:`1653`). - * (Engines) tuples stored in the vinyl cache are not shared among the indexes - of the same space - (:tarantool-issue:`3478`). - * (Engines) keep a stack of UPSERTS in ``vy_read_iterator`` - (:tarantool-issue:`1833`). - * (Engines) ``box.ctl.reset_stat()``, a function to reset vinyl statistics - (:tarantool-issue:`3198`). - - * (Server) :ref:`configurable syslog destination ` - (:tarantool-issue:`3487`). - * (Server) allow different nullability in indexes and format - (:tarantool-issue:`3430`). - * (Server) allow to - :ref:`back up any checkpoint `, - not just the last one - (:tarantool-issue:`3410`). - * (Server) a way to detect that a Tarantool process was - started / restarted by ``tarantoolctl`` - (:ref:`TARANTOOLCTL and TARANTOOL_RESTARTED ` - env vars) - (:tarantool-issue:`3384`, - :tarantool-issue:`3215`). - * (Server) :ref:`net_msg_max ` - configuration parameter to restrict the number of allocated fibers - (:tarantool-issue:`3320`). - - * (Replication) - display the connection status if the downstream gets disconnected from - the upstream - (:ref:`box.info.replication.downstream.status ` - ``= disconnected``) - (:tarantool-issue:`3365`). - * (Replication) :ref:`replica-local spaces ` - (:tarantool-issue:`3443`) - * (Replication) - :ref:`replication_skip_conflict `, - a new option in ``box.cfg{}`` to skip conflicting rows in replication - (:tarantool-issue:`3270`) - * (Replication) - remove old snapshots which are not needed by replicas - (:tarantool-issue:`3444`) - * (Replication) - log records which tried to commit twice - (:tarantool-issue:`3105`) - - * (Lua) new function :ref:`fiber.join() ` - (:tarantool-issue:`1397`). - * (Lua) new option ``names_only`` to :ref:`tuple:tomap() ` - (:tarantool-issue:`3280`). - * (Lua) support custom rock servers (``server`` and ``only-server`` - options for :ref:`tarantoolctl rocks ` - command) - (:tarantool-issue:`2640`). - - * (Lua) expose ``on_commit``/``on_rollback`` triggers to Lua - (:tarantool-issue:`857`). - * (Lua) new function :ref:`box.is_in_txn() ` - to check if a transaction is open - (:tarantool-issue:`3518`). - * (Lua) tuple field access via a json path - (by :ref:`number `, - :ref:`name `, and - :ref:`path `); - (:tarantool-issue:`1285`). - * (Lua) new function :ref:`space:frommap() ` - (:tarantool-issue:`3282`). - * (Lua) new module :ref:`utf8 ` that implements libicu's bindings - for use in Lua - (:tarantool-issue:`3290`, - :tarantool-issue:`3385`). diff --git a/doc/release/1.6.rst b/doc/release/1.6.rst deleted file mode 100644 index f5758f57ff..0000000000 --- a/doc/release/1.6.rst +++ /dev/null @@ -1,299 +0,0 @@ -------------------------------------------------------------------------------- -Tarantool 1.6 -------------------------------------------------------------------------------- - -Release: :tarantool-release:`1.6.0` - -.. _whats_new_16: - - -.. _whats_new_169: - -**Release 1.6.9** - -Release type: maintenance. Release date: 2016-09-27. Release tag: 1.6.9-4-gcc9ddd7. -Release: :tarantool-release:`1.6.9` - -Since February 15, 2017, due to Tarantool issue (:tarantool-issue:`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 - (:tarantool-issue:`86`). - * LUA_PATH and LUA_CPATH environment variables taken into account, - like in PUC-RIO Lua (:tarantool-issue:`1428`). - * Search for ``.dylib`` as well as for ``.so`` libraries in OS X - (:tarantool-issue:`810`). - * A new ``box.cfg { read_only = true }`` option to emulate master-slave - behavior (:tarantool-issue:`246`). - * ``if_not_exists = true`` option added to ``box.schema.user.grant`` - (:tarantool-issue:`1683`). - * ``clock_realtime()``/``monotonic()`` functions added to the public C API - (:tarantool-issue:`1455`). - * ``space:count(key, opts)`` introduced as an alias for - ``space.index.primary:count(key, opts)`` - (:tarantool-issue:`1391`). - * Upgrade script for 1.6.4 -> 1.6.8 -> 1.6.9 - (:tarantool-issue:`1281`). - * Support for OpenSSL 1.1 - (:tarantool-issue:`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 - -.. _whats_new_168: - -**Release 1.6.8** - -Release type: maintenance. Release date: 2016-02-25. Release tag: 1.6.8-525-ga571ac0. -Release: :tarantool-release:`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: - - 1. Ensure that ``INSTANCENAME.lua`` file is present in ``/etc/tarantool/instances.available``. - 2. Stop INSTANCENAME using ``tarantoolctl stop INSTANCENAME``. - 3. Start INSTANCENAME using ``systemctl start tarantool@INSTANCENAME``. - 4. Enable INSTANCENAME during system boot using ``systemctl enable tarantool@INTANCENAME``. - - ``/etc/tarantool/instance.enabled`` directory is now deprecated for systemd-enabled platforms. - - See :ref:`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 - (:tarantool-issue:`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 apt ``sources.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 - (:tarantool-issue:`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 - (:tarantool-issue:`969`). - * Tuple allocator changes give another 15% performance improvement - (:tarantool-issue:`1298`). - * Replication relay performance was improved by reducing the amount of data - directory re-scans - (:tarantool-issue:`1150`). - * A random delay was introduced into snapshot daemon, reducing the chance - that multiple instances take a snapshot at the same time - (:tarantool-issue:`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 - (:tarantool-issue:`1219`). - * ``net.box`` now automatically reloads space and index definitions - (:tarantool-issue:`1183`). - * The maximal number of indexes in space was increased to 128 - (:tarantool-issue:`1311`). - * New native ``systemd`` configuration with support of instance management - and daemon supervision (CentOS 7 and Fedora 22+ only). - Please note "Incompatible changes" above - (:tarantool-issue:`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. - (:tarantool-issue:`786`). - * Support for musl libc, used by Alpine Linux and Docker images, was added - (:tarantool-issue:`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 - (:tarantool-issue:`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/memcached - * ``migrate`` - a Tarantool rock for migration from Tarantool 1.5 to 1.6. - See https://github.com/bigbes/migrate - * ``cqueues`` - a Lua asynchronous networking, threading, and notification - framework (contributed by @daurnimator). - PR `1204 `_. - -.. _whats_new_167: - -**Release 1.6.7** - -Release type: maintenance. Release date: 2015-11-17. -Release: :tarantool-release:`1.6.7` -Incompatible changes: - - * The syntax of ``upsert`` command has been changed - and an extra ``key`` 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 to ``eval``. - -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`` and ``manhattan``. - * ``fio.abspath()`` - a new function in ``fio`` 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. - -.. _whats_new_166: - -**Release 1.6.6** - -Release type: maintenance. Release date: 2015-08-28. -Release: :tarantool-release:`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 to ``box.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 :ref:`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 (:tarantool-issue:`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 as ``session.sync()``. - * ``box.once()`` - a new method to invoke code once in an - instance and replica set lifetime. Use ``once()`` 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.html - * ``strict`` built-in package, banning use of undeclared variables in - Lua. Strict mode is on when Tarantool is compiled with debug. - Turn on/off with ``require('strict').on()``/``require('strict').off()``. - * ``pg`` and ``mysql`` 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 diff --git a/doc/release/1.7.rst b/doc/release/1.7.rst deleted file mode 100644 index 292ff57e59..0000000000 --- a/doc/release/1.7.rst +++ /dev/null @@ -1,708 +0,0 @@ --------------------------------------------------------------------------------- -Tarantool 1.7 --------------------------------------------------------------------------------- - -Release: :tarantool-release:`1.7.0` - -.. _whats_new_17: - -.. _whats_new_176: - -**Release 1.7.6** - -Release type: stable. Release date: 2017-11-07. Tag: 1.7.6-0-g7b2945d6c. -Release: https://groups.google.com/forum/#!topic/tarantool/hzc7O2YDZUc -or :tarantool-release:`1.7.6.` - -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 :ref:`rollback ` of a transaction, there is now - rollback to a defined point within a transaction -- :ref:`savepoint ` support. - * There is a new object type: :ref:`sequences `. - The older option, :ref:`auto-increment `, will be deprecated. - * String indexes can have :ref:`collations `. - -New options are available for: - - * :ref:`net_box ` (timeouts), - * :ref:`string ` functions, - * space :ref:`formats ` (user-defined field names and types), - * :ref:`base64 ` (``urlsafe`` option), and - * index :ref:`creation ` - (collation, :ref:`is-nullable `, field names). - -Incompatible changes: - - * Layout of ``box.space._index`` has been extended to support - :ref:`is_nullable ` - and :ref:`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 - (:tarantool-issue:`2802`). - * :ref:`fiber_name() ` now raises an exception instead of truncating long fiber names. - We found that some Lua modules such as `expirationd `_ use ``fiber.name()`` - 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 ``fiber.name()`` - truncation. Please use ``fiber.name(name, { truncate = true })`` to emulate - the old behavior - (:tarantool-issue:`2622`). - * :ref:`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 - :ref:`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 :ref:`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 :ref:`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 :ref:`space:format() ` - or :ref:`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 - (:tarantool-issue:`1557`). - * Sequences and a new implementation of :ref:`auto_increment() `. - Tarantool 1.7.6 introduces new - :ref:`sequence number generators ` (like CREATE SEQUENCE in SQL). - This feature is used to implement new persistent auto increment in spaces - (:tarantool-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 - (:tarantool-issue:`2671`). - * net.box: :ref:`on_connect ` - and :ref:`on_disconnect ` triggers - (:tarantool-issue:`2858`). - * Structured logging in :ref:`JSON format ` - (:tarantool-issue:`2795`). - * (Lua) Lua: :ref:`string.strip() ` - (:tarantool-issue:`2785`). - * (Lua) added :ref:`base64_urlsafe_encode() ` to ``digest`` module - (:tarantool-issue:`2777`). - * Log conflicted keys in master-master replication - (:tarantool-issue:`2779`). - * Allow to disable backtrace in :ref:`fiber.info() ` - (:tarantool-issue:`2878`). - * Implemented ``tarantoolctl rocks make *.spec`` - (:tarantool-issue:`2846`). - * Extended the default loader to look for ``.rocks`` in the parent dir hierarchy - (:tarantool-issue:`2676`). - * ``SOL_TCP`` options support in :ref:`socket:setsockopt() ` - (:tarantool-issue:`598`). - * Partial emulation of LuaSocket on top of Tarantool Socket - (:tarantool-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 :ref:`Using IDE `. - * Integration with `MobDebug `_ remote Lua debugger - (:tarantool-issue:`2728`). - * Configured ``/usr/bin/tarantool`` as an alternative Lua interpreter on Debian/Ubuntu - (:tarantool-issue:`2730`). - -New rocks: - - * `smtp.client `_ - support SMTP via ``libcurl``. - -.. _whats_new_175: - -**Release 1.7.5** - -Release type: stable. Release date: 2017-08-22. Tag: 1.7.5. -Release: :doc-issue:`289` -or :tarantool-release:`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 :ref:`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 - (:tarantool-issue:`2253`). - * (Vinyl) index options can be changed on the fly without rebuild. - Now :ref:`page_size `, - :ref:`run_size_ratio `, - :ref:`run_count_per_level ` - and :ref:`bloom_fpr ` - index options can be dynamically changed via :ref:`index:alter() `. - The changes take effect in newly created data files only - (:tarantool-issue:`2109`). - * (Vinyl) improve :ref:`box.info.vinyl() ` and ``index:info()`` output - (:tarantool-issue:`1662`). - * (Vinyl) introduce :ref:`box.cfg.vinyl_timeout ` option to control quota throttling - (:tarantool-issue:`2014`). - * Memtx: stable :ref:`index:pairs() ` iterators for the TREE index. - TREE iterators are automatically restored to a proper position after index's modifications - (:tarantool-issue:`1796`). - * (Memtx) :ref:`predictable order ` for non-unique TREE indexes. - Non-unique TREE indexes preserve the sort order for duplicate entries - (:tarantool-issue:`2476`). - * (Memtx+Vinyl) dynamic configuration of :ref:`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 - (:tarantool-issue:`2667`). - * (Memtx+Vinyl) new implementation. - Space :ref:`truncation ` doesn't cause re-creation of all indexes any more - (:tarantool-issue:`618`). - * Extended the :ref:`maximal length ` of all identifiers from 32 to 65k characters. - Space, user and function names are not limited by 32 characters anymore - (:tarantool-issue:`944`). - * :ref:`Heartbeat ` messages for replication. - Replication client now sends the selective acknowledgments for processed - records and automatically re-establish stalled connections. - This feature also changes :ref:`box.info.replication[replica_id].vclock `. - to display committed vclock of remote replica - (:tarantool-issue:`2484`). - * Keep track of remote replicas during WAL maintenance. - Replication master now automatically preserves xlogs needed for remote replicas - (:tarantool-issue:`748`). - * Enabled :ref:`box.tuple.new() ` to work without ``box.cfg()`` - (:tarantool-issue:`2047`). - * :ref:`box.atomic(fun, ...) ` wrapper to execute function in a transaction - (:tarantool-issue:`818`). - * :ref:`box.session.type() ` helper to determine session type - (:tarantool-issue:`2642`). - * Hot code :ref:`reload ` for stored C stored procedures. - Use ``box.schema.func.reload('modulename.function')`` - to reload dynamic shared libraries on the fly - (:tarantool-issue:`910`). - * :ref:`string.hex() ` and ``str:hex()`` Lua API - (:tarantool-issue:`2522`). - * Package manager based on LuaRocks. - Use ``tarantoolctl rocks install MODULENAME`` to install MODULENAME Lua module - from https://rocks.tarantool.org/. - (:tarantool-issue:`2067`). - * Lua 5.1 command line options. - Tarantool binary now supports '-i', '-e', '-m' and '-l' command line options - (:tarantool-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 - (:tarantool-issue:`2643`). - * Syslog logger now support non-blocking mode. - :ref:`box.cfg{log_nonblock=true} ` now also works for syslog logger - (:tarantool-issue:`2466`). - * Added a VERBOSE :ref:`log level ` beyond INFO - (:tarantool-issue:`2467`). - * Tarantool now automatically makes snapshots every hour. - Please set :ref:`box.cfg{checkpoint_interval=0 ` to restore pre-1.7.5 behavior - (:tarantool-issue:`2496`). - * Increase precision for percentage ratios provided by :ref:`box.slab.info() ` - (:tarantool-issue:`2082`). - * Stack traces now contain symbols names on all supported platforms. - Previous versions of Tarantool didn't display meaningful function names in - :ref:`fiber.info() ` on non-x86 platforms - (:tarantool-issue:`2103`). - * Allowed to create fiber with custom stack size from C API - (:tarantool-issue:`2438`). - * Added ``ipc_cond`` to public C API - (:tarantool-issue:`1451`). - -New rocks: - - * :ref:`http.client ` (built-in) - libcurl-based HTTP client with SSL/TLS support - (:tarantool-issue:`2083`). - * :ref:`iconv ` (built-in) - bindings for iconv - (:tarantool-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. - -.. _whats_new_174: - -**Release 1.7.4** - -Release type: release candidate. Release date: 2017-05-12. Release tag: Tag: 1.7.4. - -Release: :tarantool-release:`1.7.4` -or https://groups.google.com/forum/#!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 - (:tarantool-issue:`1927` and - :tarantool-issue:`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 - (:tarantool-issue:`775`). - * UPSERT via a secondary key was banned to avoid unclear semantics - (:tarantool-issue:`2226`). - * ``box.info`` and ``box.info.replication`` format was changed to display - information about upstream and downstream connections - ((:tarantool-issue:`723`): - - * Added ``box.info.replication[instance_id].downstream.vclock`` to display - the last sent row to remote replica. - * Added ``box.info.replication[instance_id].id``. - * Added ``box.info.replication[instance_id].lsn``. - * Moved ``box.info.replication[instance_id].{vclock,status,error}`` to - ``box.info.replication[instance_id].upstream.{vclock,status,error}``. - * All registered replicas from ``box.space._cluster`` are included to - ``box.info.replication`` output. - * ``box.info.server.id`` renamed ``box.info.id`` - * ``box.info.server.lsn`` renamed ``box.info.lsn`` - * ``box.info.server.uuid`` renamed ``box.info.uuid`` - * ``box.info.cluster.signature`` renamed to ``box.info.signature`` - * ``box.info.id`` and ``box.info.lsn`` now return `nil` instead of `-1` - during initial cluster bootstrap. - - * ``net.box``: added per-request options to all requests: - - * ``conn.call(func_name, arg1, arg2,...)`` changed to - ``conn.call(func_name, {arg1, arg2, ...}, opts)`` - * ``conn.eval(func_name, arg1, arg2,...)`` changed to - ``conn.eval(func_name, {arg1, arg2, ...}, opts)`` - - * All requests now support ``timeout = ``, ``buffer = `` 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 - (:tarantool-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`` - (:tarantool-issue:`1923`). - * ``log`` module now doesn't prefix all messages with the full path to - tarantool binary when used without ``box.cfg()`` - (:tarantool-issue:`1876`). - * ``require('log').logger_pid()`` was renamed to ``require('log').pid()`` - (:tarantool-issue:`2917`). - * Removed Lua 5.0 compatible defines and functions - (:tarantool-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 - (:tarantool-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 - (:tarantool-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 - (:tarantool-issue:`1692`). - * (Vinyl) implemented`). - 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 - (:tarantool-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 - (:tarantool-issue:`2001`). - * (Vinyl) index-wide mems/runs. - Removed ranges from in-memory and and the stop layer of LSM tree on disk - (:tarantool-issue:`2209`). - * (Vinyl) coalesce small ranges. - Before dumping or compacting a range, consider coalescing it with its - neighbors - (:tarantool-issue:`1735`). - * (Vinyl) implemented transnational journal for metadata. - Now information about all Vinyl files is logged in a special ``.vylog`` file - (:tarantool-issue:`1967`). - * (Vinyl) implemented consistent secondary keys - (:tarantool-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. - :ref:`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 - (:tarantool-issue:`1916`). - * (Vinyl) added statistics for background workers to ``box.info.vinyl()`` - (:tarantool-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 - (:tarantool-issue:`2046`). - * LuaJIT was rebased on the latest 2.1.0b3 with out patches - (:tarantool-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 https://github.com/tarantool/luajit/pull/2. - * ``box.snapshot()`` now updates mtime of a snapshot file if there were no - changes to the database since the last snapshot. - (:tarantool-issue:`2045`). - * Implemented ``space:bsize()`` to return the memory size utilized by all - tuples of the space. - Contributed by Roman Tokarev (@rtokarev). - (:tarantool-issue:`2043`). - * Exported new Lua/C functions to public API: - - * ``luaT_pushtuple``, ``luaT_istuple`` - (:tarantool-issue:`1878`) - * ``luaT_error``, ``luaT_call``, ``luaT_cpcall`` - (:tarantool-issue:`2291`) - * ``luaT_state`` - (:tarantool-issue:`2416`) - - * Exported new Box/C functions to public API: ``box_key_def``, ``box_tuple_format``, - ``tuple_compare()``, ``tuple_compare_with_key()``. - (:tarantool-issue:`2225`). - * xlogs now can be rotated based on size (``wal_max_size``) as well as - the number of written rows (``rows_per_wal``). - (:tarantool-issue:`173`). - * Added ``string.split()``, ``string.startswith()``, ``string.endswith()``, - ``string.ljust()``, ``string.rjust()``, ``string.center()`` API - (:tarantool-issue:`2211`, - :tarantool-issue:`2214`, - :tarantool-issue:`2415`). - * Added ``table.copy()`` and ``table.deepcopy()`` functions. - (:tarantool-issue:`2212`). - * Added ``pwd`` module to work with UNIX users and groups. - (:tarantool-issue:`2213`). - * Removed noisy "client unix/: connected" messages from logs. Use - ``box.session.on_connect()``/``on_disconnect()`` triggers instead. - (:tarantool-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 - (:tarantool-issue:`672`). - * tarantoolctl: improved error messages and added a new man page - (:tarantool-issue:`1488`). - * tarantoolctl: added filter by ``replica_id`` to ``cat`` and ``play`` commands - (:tarantool-issue:`2301`). - * tarantoolctl: ``start``, ``stop`` and ``restart`` commands now redirect to - ``systemctl start/stop/restart`` when systemd is enabled - (:tarantool-issue:`2254`). - * net.box: added ``buffer = `` per-request option to store raw - MessagePack responses into a C buffer - (:tarantool-issue:`2195`). - * net.box: added ``connect_timeout`` option - (:tarantool-issue:`2054`). - * net.box: added ``on_schema_reload()`` hook - (:tarantool-issue:`2021`). - * net.box: exposed ``conn.schema_version`` and ``space.connection`` to API - (:tarantool-issue:`2412`). - * log: ``debug()``/``info()``/``warn()``/``error()`` now doesn't fail on - formatting errors - (:tarantool-issue:`889`). - * crypto: added HMAC support. - Contributed by Andrey Kulikov (@amdei) - (:tarantool-issue:`725`). - -.. _whats_new_173: - -**Release 1.7.3** - -Release type: beta. Release date: 2016-12-24. Release tag: Tag: 1.7.3-0-gf0c92aa. - -Release: :tarantool-release:`1.7.3` - -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 - (:tarantool-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 - (:tarantool-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 - (:tarantool-issue:`587`). - * UPSERT can be used with the empty list of operations - (:tarantool-issue:`1854`). - * Lua functions to manipulate environment variables - (:tarantool-issue:`1718`). - * Lua library to read Tarantool snapshots and xlogs - (:tarantool-issue:`1782`). - * New ``play`` and ``cat`` commands in ``tarantoolctl`` - (:tarantool-issue:`1861`). - * Improve support for the large number of active network clients. - Issue#5#1892. - * Support for ``space:pairs(key, iterator-type)`` syntax - (:tarantool-issue:`1875`). - * Automatic cluster bootstrap now also works without authorization - (:tarantool-issue:`1589`). - * Replication retries to connect to master indefinitely - (:tarantool-issue:`1511`). - * Temporary spaces now work with ``box.cfg { read_only = true }`` - (:tarantool-issue:`1378`). - * The maximum length of space names increased to 64 bytes (was 32) - (:tarantool-issue:`2008`). - -.. _whats_new_172: - -**Release 1.7.2** - -Release type: beta. Release date: 2016-09-29. Release tag: Tag: `1.7.2-1-g92ed6c4`. - -Release: https://groups.google.com/forum/#!topic/tarantool-ru/qUYUesEhRQg -or :tarantool-release:`1.7.2` - -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 - (:tarantool-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 - (:tarantool-issue:`86` and - :tarantool-issue:`1790`). - Use the TAB key to auto complete the names of Lua variables, functions - and meta-methods. - * A new implementation of ``net.box`` improving performance and solving problems - when the Lua garbage collector handles dead connections - (:tarantool-issue:`799`, - :tarantool-issue:`800`, - :tarantool-issue:`1138` and - :tarantool-issue:`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 - (:tarantool-issue:`1731`). - * Tarantool can now be installed using universal Snappy packages - (http://snapcraft.io/) 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 - (:tarantool-issue:`1534`). - * ``space:inc()`` and ``space:dec()`` were removed (deprecated in 1.6.x) - (:tarantool-issue:`1289`). - * ``fiber:cancel()`` is now asynchronous and doesn't wait for the fiber to end - (:tarantool-issue:`1732`). - * Implicit error-prone ``tostring()`` was removed from ``digest`` API - (:tarantool-issue:`1591`). - * Support for SHA-0 (``digest.sha()``) was removed due to OpenSSL upgrade. - * ``net.box`` now uses one-based indexes for ``space.name.index[x].parts`` - (:tarantool-issue:`1729`). - * Tarantool binary now dynamically links with ``libssl.so`` 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 (:tarantool-issue:`1291`), - comment and :ref:`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). - -.. _whats_new_171: - -**Release 1.7.1** - -Release type: alpha. Release date: 2016-07-11. - -Release: https://groups.google.com/forum/#!topic/tarantool/KGYj3VKJKb8 -or :tarantool-release:`1.7.1` - -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 - :ref:`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 :ref:`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. diff --git a/doc/release/1.8.rst b/doc/release/1.8.rst deleted file mode 100644 index 0c423efe63..0000000000 --- a/doc/release/1.8.rst +++ /dev/null @@ -1,77 +0,0 @@ --------------------------------------------------------------------------------- -Tarantool 1.8 --------------------------------------------------------------------------------- - -Release: :tarantool-release:`1.8.0` - -.. _whats_new_18: - -.. _whats_new_181: - -**Release 1.8.1** - -Release type: alpha. Release date: 2017-05-17. Tag: 1.8.1. -Release: https://groups.google.com/forum/#!msg/tarantool-ru/XYaoqJpc544/mSvKrYwNAgAJ -or :tarantool-release:`1.8.1.` - -This is an alpha release which delivers support for a substantial subset -of the ISO/IEC 9075:2011 SQL standard, including joins, subqueries and views. -SQL is a major feature of the 1.8 release series, in which we plan to add -support for ODBC and JDBC connectors, SQL triggers, prepared statements, -security and roles, -and generally ensure SQL is a first class query language in Tarantool. - -Functionality added or changed: - - * A new function ``box.sql.execute()`` (later changed to ``box.execute`` - in Tarantool 2.1) was added to query Tarantool databases - using SQL statements, e.g.: - - .. code-block:: tarantoolsession - - tarantool> box.sql.execute([[SELECT * FROM _schema]]); - - * SQL and Lua are fully interoperable. - * New meta-commands introduced to Tarantool's console. - - You can now set input language to either SQL or Lua, e.g.: - - .. code-block:: tarantoolsession - - tarantool> \set language sql - tarantool> SELECT * FROM _schema - tarantool> \set language lua - tarantool> print("Hello, world!") - - * Most SQL statements are supported: - - * CREATE/DROP TABLE/INDEX/VIEW - - .. code-block:: tarantoolsession - - tarantool> CREATE TABLE table1 (column1 INTEGER PRIMARY KEY, column2 VARCHAR(100)); - - * INSERT/UPDATE/DELETE statements e.g.: - - .. code-block:: tarantoolsession - - tarantool> INSERT INTO table1 VALUES (1, 'A'); - ... - tarantool> UPDATE table1 SET column2 = 'B'; - - * SELECT statements, including complex complicated variants which include - multiple JOINs, nested SELECTs etc. e.g.: - - .. code-block:: tarantoolsession - - tarantool> SELECT sum(column1) FROM table1 WHERE column2 LIKE '_B' GROUP BY column2; - - * WITH statements e.g. - - .. code-block:: tarantoolsession - - tarantool> WITH cte AS ( SELECT SUBSTR(column2,1,2), column1 FROM table1 WHERE column1 >= 0) SELECT * FROM cte; - - * SQL schema is persistent, so it is able to survive ``snapshot()``/``restore()`` sequence. - * SQL features are described in a :ref:`tutorial `. - diff --git a/doc/release/1.9.rst b/doc/release/1.9.rst deleted file mode 100644 index 53a5e87a7e..0000000000 --- a/doc/release/1.9.rst +++ /dev/null @@ -1,117 +0,0 @@ --------------------------------------------------------------------------------- -Tarantool 1.9 --------------------------------------------------------------------------------- - -Release: :tarantool-release:`1.9.0` - -.. _whats_new_19: - -.. _whats_new_190: - -**Release 1.9.0** - -Release type: stable. Release date: 2018-02-26. Tag: 1.9.0-4-g195d446. - -Release: :tarantool-release:`1.9.0.` - -This is the successor of the 1.7.6 stable release. -The goal of this release is increased maturity of vinyl and master-master replication, -and it contributes a number of features to this cause. Please follow the download -instructions at https://tarantool.io/en/download/download.html to download and install -a package for your operating system. - -Functionality added or changed: - - * (Security) it is now possible to - :ref:`block/unblock ` users. - (:tarantool-issue:`2898`). - * (Security) new function :ref:`box.session.euid() ` to return effective user. - Effective user can be different from authenticated user in case of ``setuid`` - functions or ``box.session.su``. - (:tarantool-issue:`2994`). - * (Security) new :ref:`super ` role, with superuser access. Grant 'super' to guest to - disable access control. - (:tarantool-issue:`3022`). - * (Security) :ref:`on_auth ` trigger is now fired in case of both successful and - failed authentication. - (:tarantool-issue:`3039`). - * (Replication/recovery) new replication configuration algorithm: if replication - doesn't connect to replication_quorum peers in :ref:`replication_connect_timeout ` - seconds, the server start continues but the server enters the new :ref:`orphan ` status, - which is basically read-only, until the replicas connect to each other. - (:tarantool-issue:`3151` and - :tarantool-issue:`2958`). - * (Replication/recovery) after replication connect at startup, the server does - not start processing write requests before - :ref:`syncing up ` syncing up with all connected peers. - * (Replication/recovery) it is now possible to explicitly set - :ref:`instance_uuid ` and - :ref:`replica set uuid ` as configuration parameters. - (:tarantool-issue:`2967`). - * (Replication/recovery) :ref:`box.once() ` no longer fails on a read-only replica - but waits. - (:tarantool-issue:`2537`). - * (Replication/recovery) :ref:`force_recovery ` can now skip a corrupted xlog file. - (:tarantool-issue:`3076`). - * (Replication/recovery) improved replication monitoring: :ref:`box.info.replication ` - shows peer ip:port and correct replication lag even for idle peers. - (:tarantool-issue:`2753` and - :tarantool-issue:`2689`). - * (Application server) new :ref:`before ` triggers which can be used for conflict - resolution in master-master replication. - (:tarantool-issue:`2993`). - * (Application server) :ref:`http client ` now correctly parses cookies and supports - http+unix:// paths. - (:tarantool-issue:`3040` and - :tarantool-issue:`2801`). - * (Application server) ``fio`` rock now supports ``file_exists()``, - ``rename()`` works across filesystems, and ``read()`` without arguments - reads the whole file. - (:tarantool-issue:`2924`, - :tarantool-issue:`2751` and - :tarantool-issue:`2925`). - * (Application server) ``fio`` rock errors now follow Tarantool function call - conventions and always return an error message in addition to the error flag. - * (Application server) ``digest`` rock now supports pbkdf2 password hashing - algorithm, useful in PCI/DSS compliant applications. - (:tarantool-issue:`2874`). - * (Application server) :ref:`box.info.memory() ` provides a high-level overview of - server memory usage, including networking, Lua, transaction and index memory. - (:tarantool-issue:`934`). - * (Database) it is now possible to :ref:`add missing tuple fields ` to an index, - which is very useful when adding an index along with the evolution of the - database schema. - :tarantool-issue:`2988`). - * (Database) lots of improvements in field type support when creating or - :ref:`altering ` spaces and indexes. - (:tarantool-issue:`2893`, - :tarantool-issue:`3011` and - :tarantool-issue:`3008`). - * (Database) it is now possible to turn on :ref:`is_nullable ` property on a field - even if the space is not empty, the change is instantaneous. - (:tarantool-issue:`2973`). - * (Database) :ref:`logging ` has been improved in many respects: individual messages - (:tarantool-issue:`1972`, - :tarantool-issue:`2743`, - :tarantool-issue:`2900`), - more logging in cases when it was useful - (:tarantool-issue:`3096`, - :tarantool-issue:`2871`). - * (Vinyl storage engine) it is now possible to make a :ref:`unique ` vinyl index - non-unique without index rebuild. - (:tarantool-issue:`2449`). - * (Vinyl storage engine) improved UPDATE, REPLACE and recovery performance in - presence of secondary keys. - (:tarantool-issue:`2289`, - :tarantool-issue:`2875` and - :tarantool-issue:`3154`). - * (Vinyl storage engine) :ref:`space:len() ` and - :ref:`space:bsize() ` now work for - vinyl (although they are still not exact). - (:tarantool-issue:`3056`). - * (Vinyl storage engine) recovery speed has improved in presence of secondary - keys. - (:tarantool-issue:`2099`). - * (Builds) Alpine Linux support. - (:tarantool-issue:`3067`). - diff --git a/doc/release/2.1.2.rst b/doc/release/2.1.2.rst deleted file mode 100644 index 8b864b4ba3..0000000000 --- a/doc/release/2.1.2.rst +++ /dev/null @@ -1,192 +0,0 @@ - -------------------------------------------------------------------------------- -Tarantool 2.1.2 and earlier -------------------------------------------------------------------------------- - -Release: https://github.com/tarantool/tarantool/releases - -.. _whats_new_212: - -**Release 2.1.2** - -Release type: stable. Release date: 2019-04-05. - -Release: :tarantool-release:`2.1.2.` - -This is the first :ref:`stable ` release in the 2.x series. - -The goal of this release is to significantly extend SQL support and increase -stability. - -Functionality added or changed: - -* (SQL) ``box.sql.execute()`` replaced with - :ref:`box.execute() `. - It now works just like ``netbox.execute()``: - returns result set metadata, row count, etc. E.g.: - - .. code-block:: tarantoolsession - - box.execute("CREATE TABLE person(id INTEGER PRIMARY KEY, birth_year INT)") - --- - - row_count: 1 - ... - box.execute("SELECT birth_year FROM person") - --- - - metadata: - - name: birth_year - type: INTEGER - rows: - - [1983] - - [1984] - ... - -* (SQL) Type system was :ref:`significantly refactored `. - -* (SQL) There are cases in SQL when it is possible to do Tarantool’s - update operation for UPDATE statement, instead of doing delete + insert. - However, there are cases where SQL semantics is too complex. E.g.: - - .. code-block:: sql - - CREATE TABLE file (id INT PRIMARY KEY, checksum INT); - INSERT INTO stock VALUES (1, 3),(2, 4),(3,5); - CREATE UNIQUE INDEX i ON file (checksum); - SELECT * FROM file; - -- [1, 3], [2, 4], [3, 5] - UPDATE OR REPLACE file SET checksum = checksum + 1; - SELECT * FROM stock; - -- [1, 4], [3, 6] - - I.e. [1, 3] tuple is updated as [1, 4] and have replaced tuple [2, 4]. - This logic is implemented by preventive tuple deletion from all corresponding - indexes in SQL. - -* (SQL) Now SQL’s integer type is stored as integer in space’s format. - It was stored as scalar before, which made comparisons slow. - -* (SQL) It is now possible to define a constraint - :ref:`within column definition `. E.g.: - - .. code-block:: sql - - CREATE TABLE person (id INT PRIMARY KEY, age INT, CHECK (age > 10)); - -* (SQL) Syntax for the pragma ``pragma index_info`` is now unified with - ``table_info``. - E.g. to get information on index ``age_index`` of table ``person`` you can write: - - .. code-block:: sql - - pragma index_info(person.age_index); - -* (Server) It is now possible to index a field specified using JSON. E.g.: - - .. code-block:: lua - - person = box.schema.create_space("person") - name_idx = person:create_index('name', {parts = {{'[2]fname', 'str'}, {'[2]sname', 'str'}}}) - person:insert({1, {fname='James', sname='Bond'}, {town='London', country='GB', organization='MI6'}}) - -* (Server) In case of out of space event, Tarantool is now allowed to delete - backup WAL files not needed for recovery from the last checkpoint. - -* (Server) Add support for :ref:`tarantoolctl rocks pack / unpack ` - subcommands. The subcommands are used to create / deploy binary rock distributions. - -* (Server) ``string.rstrip`` and ``string.lstrip`` should accept symbols to - strip. Add optional 'chars' parameter for specifying the unwanted characters. E.g.: - - .. code-block:: lua - - local chars = "#\0" - str = "##Hello world!#" - print(string.strip(str, chars)) -- "Hello world!" - -* (Server) :ref:`on_shutdown ` trigger added. - It may be set in a way similar to ``space:on_replace`` triggers: - - .. code-block:: lua - - box.ctl.on_shutdown(new_trigger, old_trigger) - -* (Server) :ref:`on_schema_init ` trigger added. - It may be set before the first call to ``box.cfg()`` and is fired during - ``box.cfg()`` before user data recovery start. To set the trigger, say: - - .. code-block:: lua - - box.ctl.on_schema_init(new_trig, old_trig) - -* (Server) A new option for the snapshot daemon, - :ref:`box.cfg.checkpoint_wal_threshold `, - allows to limit the maximum disk size of maintained WALs. - Once the configured threshold is exceeded, the WAL thread notifies the - che ckpoint daemon that it's time to make a new checkpoint and delete old WAL files. - -* (Server) New types of :ref:`privileges ` -- - to create, alter and drop space -- were introduced. - In order to create, drop or alter space or index, you should have - a corresponding privilege. E.g.: - - .. code-block:: lua - - box.schema.user.create("optimizer", { password = 'secret' }) - box.schema.user.grant("optimizer", "alter", "space") - person = box.schema.space.create("person") - box.session.su("optimizer") - i = s:c reate_index("primary") -- success - s:insert{1} -- fail - s:select{} -- fail - s:drop() -- fail - - Notice the incompatible change: Tarantool 1.10 requires read/write/execute - privileges on an object to allow create, drop or alter. These privileges are - no longer sufficient in 2.1. To remedy the problem, Tarantool 2.1 automatically - grants create/drop/alter privileges on an object if a user has - read/write/execute privileges on it during schema upgrade. - But old scripts may stop working if read/write/execute is granted **after** - schema upgrade. - - Additionally, create/drop/alter privileges are already supported in 1.10, - which also supports the old semantics of read/write/execute. - You are encouraged to grant new privileges in 1.10 before upgrade - and modify your scripts. - -.. _whats_new_211: - -**Release 2.1.1** - -Release type: beta. Release date: 2018-11-14. - -Release: :tarantool-release:`2.1.1.` - -This release resolves all major bugs since 2.0.4 alpha and extends Tarantool's -SQL feature set. - -.. _whats_new_204: - -**Release 2.0.4** - -Release type: alpha. Release date: 2018-02-15. - -Release: :tarantool-release:`2.0.4.` - -This is a successor of the 1.8.x releases. -It improves the overall stability of the SQL engine and has some new features. - -Functionality added or changed: - - * Added support for SQL collations by incorporating libICU character set and - collation library. - * IPROTO interface was extended to support SQL queries. - * ``net.box`` subsystem was extended to support SQL queries. - * Enabled ``ANALYZE`` statement to produce correct results, necessary for - efficient query plans. - * Enabled savepoints functionality. ``SAVEPOINT`` statement works w/o issues. - * Enabled ``ALTER TABLE ... RENAME`` statement. - * Improved rules for identifier names: now fully consistent with Lua frontend. - * Enabled support for triggers; trigger bodies now persist in Tarantool snapshots - and survive server restart. - * Significant performance improvements. - diff --git a/doc/release/2.10.0.rst b/doc/release/2.10.0.rst deleted file mode 100644 index c011978766..0000000000 --- a/doc/release/2.10.0.rst +++ /dev/null @@ -1,1273 +0,0 @@ -Tarantool 2.10.0 -================ - -Released on 2022-05-22. - -* Release: :tarantool-release:`2.10.0`. -* Tag: ``2.10.0``. - -Overview --------- - -2.10.0 is the first -:doc:`stable ` version of the 2.10 release series. -It introduces 107 improvements and resolves 131 bugs since version :doc:`2.8.1 `. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - -Notable changes are: - - - HTTP client now supports HTTP/2. - - Support of the new DATETIME type. - - Improved type consistency in SQL. - - Added transaction isolation levels. - - Implemented fencing and pre-voting in RAFT. - - Introduced foreign keys and constraints. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Some changes are labeled as **[Breaking change]**. -It means that the old behavior was considered error-prone -and therefore changed to protect users from unintended mistakes. -However, there is a small probability that someone can rely on the old behavior, -and this label is to bring attention to the things that have been changed. - -The changes that break backward compatibility are listed below: - -* ``fiber.wakeup()`` in Lua and ``fiber_wakeup()`` in C became NOP on the - currently running fiber. - -* The ``timeout()`` method of ``net.box`` connection was dropped. - -* The net.box console support was dropped. - -* The return value type for all time64 functions was changed from ``uint64_t`` to - ``int64_t``. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- The ``UUID`` field type is now part of the ``SCALAR`` field type - (:tarantool-issue:`6042`). - -- The ``UUID`` field type is now available in SQL. A new ``UUID`` can - be generated using the new SQL built-in ``UUID()`` function - (:tarantool-issue:`5886`). - -- **[Breaking change]** The ``timeout()`` method of ``net.box`` connection, - marked deprecated more than four years ago (in ``1.7.4``), has been dropped. - It negatively affected the performance of hot ``net.box`` methods, - such as ``call()`` and ``select()`` if they were called without - specifying a timeout (:tarantool-issue:`6242`). - -- Improved ``net.box`` performance by up to 70% by rewriting hot code - paths in C (:tarantool-issue:`6241`). - -- Introduced compact tuples that allow saving 4 bytes per tuple in case - of small user data (:tarantool-issue:`5385`). - -- Now streams and interactive transactions over streams are implemented in iproto. - Every stream is associated with its ID, which is unique within one connection. - All requests with the same non-zero stream ID belong to the same stream. - All requests in the stream are processed synchronously. - The next request will not start executing until the previous one is completed. - If a request's stream ID is ``0``, it does not belong to a stream - and is processed in the old way. - - In ``net.box``, a stream is an object above the connection that has - the same methods but allows executing requests sequentially. The ID is - generated on the client-side automatically. - If a user writes his own connector and wants to use streams, - they must transmit the ``stream_id`` over the iproto protocol. - - The primary purpose of streams is transactions via iproto. - As each stream can start a transaction, several transactions can be multiplexed over one connection. - There are multiple ways to begin, commit, and rollback a transaction. - One can do that using the appropriate stream methods, ``call``, ``eval``, - or ``execute`` with the SQL transaction syntax. Users can mix these methods. - For example, one might start a transaction using ``stream:begin()``, - and commit it with ``stream:call('box.commit')`` or ``stream:execute('COMMIT')``. - - If any request fails during the transaction, it will not affect the other requests in the transaction. - If a disconnect occurs while there is an active transaction in the stream, - that transaction will be rolled back if it hasn't been committed before the connection failure - (:tarantool-issue:`5860`). - -- Added the new ``memtx_allocator`` option to ``box.cfg{}``. - It allows selecting the appropriate allocator for memtx tuples if necessary. - The possible values are ``system`` for malloc allocator and ``small`` for - the default small allocator. - - Implemented the system allocator based on malloc. The slab allocator, which is used for tuple allocation, - has a particular disadvantage -- it is prone to unresolvable fragmentation on specific workloads (size migration). - In this case, the user should be able to choose another allocator. - The system allocator is based on the malloc function but restricted by the same quota as the slab allocator. - The system allocator does not alloc all the memory at the start. Instead, it allocates memory as needed, - checking that the quota is not exceeded - (:tarantool-issue:`5419`). - -- Added ``box.stat.net.thread()`` for reporting per thread net - statistics (:tarantool-issue:`6293`). - -- Added the new ``STREAMS`` metric to ``box.stat.net``. It contains - statistics for iproto streams. The ``STREAMS`` contains the same counters - as the ``CONNECTIONS`` metric in ``box.stat.net``: ``current``, ``RPS``, and - ``total`` (:tarantool-issue:`6293`). - -- Extended the network protocol (IPROTO) with a new request type - (``IPROTO_ID``). It is supposed to be used for exchanging sets of - supported features between the server and client (:tarantool-issue:`6253`). - -- Added ``required_protocol_version`` and ``required_protocol_features`` - to ``net.box`` connection options. The new options allow specifying - the IPROTO protocol version and features that must be supported by the server - for the connection to pass (:tarantool-issue:`6253`). - -- **[Breaking change]** Added the ``msgpack.cfg.encode_error_as_ext`` - configuration option to enable/disable encoding errors as - ``MP_ERROR`` MsgPack extension. The option is enabled by default - (:tarantool-issue:`6433`). - -- **[Breaking change]** Removed ``box.session.setting.error_marshaling_enabled``. - Error marshalling is now enabled automatically if the connector supports it - (:tarantool-issue:`6428`). - -- Added the new ``REQUESTS_IN_PROGRESS`` and ``REQUESTS_IN_STREAM_QUEUE`` - metrics to ``box.stat.net`` that contains detailed statistics for iproto requests. - These metrics contain the same counters as other metrics in ``box.stat.net``: - ``current``, ``RPS``, and ``total`` (:tarantool-issue:`6293`). - -- Implemented a timeout for ``fiber:join`` in Lua (:tarantool-issue:`6203`). - -- Updated libev to version 4.33 (:tarantool-issue:`4909`). - -- Added the new ``box.txn_id()`` function. It returns the ID of the - current transaction if called within a transaction, nil otherwise. - -- Previously, if a yield occurs for a transaction that does not support - it, all its statements are rolled back but still its new - statements are processed (they will roll back with each yield). Also, the - transaction will be rolled back when a commit is attempted. Now we - stop processing any new statements right after the first yield if a - transaction does not support it. - -- Implemented a timeout for transactions after which they are rolled - back (:tarantool-issue:`6177`). - -- Implemented the new C API ``box_txn_set_timeout`` function to set a - timeout for transactions. - -- Implemented a timeout for iproto transactions after which they are - rolled back (:tarantool-issue:`6177`). - -- Implemented the new ``IPROTO_TIMEOUT 0x56`` key, which is used to set a - timeout for transactions over iproto streams. It is stored in the - body of ``IPROTO_BEGIN`` request. - -- Introduced ``box.broadcast`` and ``box.watch`` functions to - signal/watch user-defined state changes (:tarantool-issue:`6257`). - -- Added watchers support to the network protocol (:tarantool-issue:`6257`). - -- Added watchers support to the ``net.box`` connector (:tarantool-issue:`6257`). - -- Now error objects with the code ``box.error.READONLY`` now have - the additional fields explaining why the error happened. - - Also, there is a new field ``box.info.ro_reason``. It is ``nil`` on a - writable instance, but reports a reason when ``box.info.ro`` is ``true`` - (:tarantool-issue:`5568`). - -- Implemented the ability to open several listening sockets. In - addition to the ability to pass uri as a number or string, added the - ability to pass uri as a table of numbers or strings (:tarantool-issue:`3554`). - -- **[Breaking change]** ``net.box`` console support, which was marked - deprecated in 1.10, has been dropped. Use ``require('console').connect()`` - instead. - -- Added the ``takes_raw_args`` Lua function option for wrapping arguments - in ``msgpack.object`` to skip decoding (:tarantool-issue:`3349`). - -- Implemented the graceful shutdown protocol for IPROTO connections - (:tarantool-issue:`5924`). - -- Added ``fetch_schema`` flag to ``netbox.connect`` to control schema - fetching from remote instance (:tarantool-issue:`4789`). - -- Added linking type (dynamic or static) to Tarantool build info. - -- Changed log level of some information messages from critical to info - (:tarantool-issue:`4675`). - -- Added predefined system events: ``box.status``, ``box.id``, - ``box.election``, and ``box.schema`` (:tarantool-issue:`6260`). - -- Introduced transaction isolation levels in Lua and IPROTO (:tarantool-issue:`6930`). - -- Added support for backtrace feature on AARCH64 architecture - (:tarantool-issue:`6060`). - -- Implemented collection of parent backtrace for the newly created - fibers. To enable the feature, call ``fiber.parent_backtrace_enable``. To disable it, call - ``fiber.parent_backtrace_disable``: disabled by default (:tarantool-issue:`4302`). - -Memtx -~~~~~ - -- Introduced memtx MVCC memory monitoring (:tarantool-issue:`6150`). - -Vinyl -~~~~~ - -- Disabled the deferred ``DELETE`` optimization in Vinyl to avoid - possible performance degradation of secondary index reads. Now, to - enable the optimization, one has to set the ``defer_deletes`` flag in - space options (:tarantool-issue:`4501`). - -Replication -~~~~~~~~~~~ - -- Introduced ``box.info.replication[n].downstream.lag`` field to - monitor the state of replication. This member represents a lag between - the main node writing a certain transaction to its own WAL and the - moment it receives an ack for this transaction from a replica - (:tarantool-issue:`5447`). - -- Introduced ``on_election`` triggers. The triggers may be registered via - ``box.ctl.on_election()`` interface and are run asynchronously each - time ``box.info.election`` changes (:tarantool-issue:`5819`). - -- It is now possible to decode incoming replication data in a separate - thread. Added the ``replication_threads`` configuration option that - controls how many threads may be spawned to do the task (default is 1) - (:tarantool-issue:`6329`). - -Raft -~~~~ - -- Added the ``term`` field to ``box.info.synchro.queue``. It contains a - term of the last ``PROMOTE``. It is usually equal to - ``box.info.election.term`` but may be less than the election term - when the new round of elections started, but no one promoted yet. - -- Servers with elections enabled won’t start new elections as long as - at least one of their peers sees the current leader. They also won’t - start the elections when they don’t have a quorum of connected peers. - This should reduce cases when a server that has lost connectivity to - the leader disrupts the whole cluster by starting new elections - (:tarantool-issue:`6654`). - -- Added the ``leader_idle`` field to ``box.info.election`` table. The - value shows time in seconds since the last communication with a known - leader (:tarantool-issue:`6654`). - -LuaJIT -~~~~~~ - -- Introduced support for ``LJ_DUALNUM`` mode in ``luajit-gdb.py`` - (:tarantool-issue:`6224`). - -- Introduced preliminary support of GNU/Linux ARM64 and macOS M1. In - the scope of this activity, the following issues have been resolved: - - - Introduced support for a full 64-bit range of lightuserdata values - (:tarantool-issue:`2712`). - - - Fixed memory remapping issue when the page leaves 47-bit segments. - - - Fixed M1 architecture detection (:tarantool-issue:`6065`). - - - Fixed variadic arguments handling in FFI on M1 (:tarantool-issue:`6066`). - - - Fixed ``table.move`` misbehavior when table reallocation occurs - (:tarantool-issue:`6084`). - - - Fixed Lua stack inconsistency when xpcall is called with an - invalid second argument on ARM64 (:tarantool-issue:`6093`). - - - Fixed ``BC_USETS`` bytecode semantics for closed upvalues and gray - strings. - - - Fixed side exit jump target patching considering the range values - of the particular instruction (:tarantool-issue:`6098`). - - - Fixed current Lua coroutine restoring on an exceptional path on - ARM64 (:tarantool-issue:`6189`). - -- Now memory profiler records allocations from traces grouping them by - the trace number (:tarantool-issue:`5814`). The memory profiler parser can display - the new type of allocation sources in the following format: - - .. code-block:: none - - | TRACE [] started at @: - -- Now the memory profiler reports allocations made by the JIT engine while - compiling the trace as INTERNAL (:tarantool-issue:`5679`). - -- Now the memory profiler emits events of the new type when a function - or a trace is created. As a result, the memory profiler parser can - enrich its symbol table with the new functions and traces (:tarantool-issue:`5815`). - - Furthermore, there are symbol generations introduced within the - internal parser structure to handle possible collisions of function - addresses and trace numbers. - -- Now the memory profiler dumps symbol table for C functions. As a result, - memory profiler parser can enrich its symbol table with C symbols - (:tarantool-issue:`5813`). Furthermore, now memory profiler dumps special events for symbol - table when it encounters a new C symbol, that has not been dumped yet. - -- Introduced the LuaJIT platform profiler (:tarantool-issue:`781`) and the profile - parser. This profiler is able to capture both host and VM stacks, so - it can show the whole picture. Both C and Lua API’s are available for - the profiler. Profiler comes with the default parser, which produces - output in a ``flamegraph.pl``-suitable format. The following profiling - modes are available: - - - Default: only virtual machine state counters. - - Leaf: shows the last frame on the stack. - - Callchain: performs a complete stack dump. - -Lua -~~~ - -- Introduced the new method ``table.equals``. It compares two tables by value and - respects the ``__eq`` metamethod. - -- Added support of console autocompletion for ``net.box`` objects - ``stream`` and ``future`` (:tarantool-issue:`6305`). - -- Added the ``box.runtime.info().tuple`` metric to track the amount of - memory occupied by tuples allocated on runtime arena (:tarantool-issue:`5872`). - - It does not count tuples that arrive from memtx or vinyl but counts - tuples created on-the-fly: say, using ``box.tuple.new(<...>)``. - -Datetime -^^^^^^^^ - -- Added a new built-in module ``datetime.lua`` that allows operating - timestamps and intervals values (:tarantool-issue:`5941`). - -- Added the method to allow converting string literals in extended - iso-8601 or rfc3339 formats (:tarantool-issue:`6731`). - -- Extended the range of supported years in all parsers to cover fully - -5879610-06-22..5879611-07-11 (:tarantool-issue:`6731`). - -- Datetime interval support has been reimplemented in C to make - possible future Olson/tzdata and SQL extensions (:tarantool-issue:`6923`). - - Now all components of the interval values are kept and operated - separately (years, months, weeks, days, hours, seconds, and - nanoseconds). This allows applying date/time arithmetic correctly - when we add/subtract intervals to datetime values. - -- Extended datetime literal parser with the ability to handle known - timezone abbreviations (‘MSK’, ‘CET’, etc.) which are - deterministically translated to their offset - (:tarantool-issue:`5941`, :tarantool-issue:`6751`). - - Timezone abbreviations can be used in addition to the timezone offset - in the datetime literals. For example, these literals produce equivalent - datetime values: - - .. code-block:: lua - - local date = require('datetime') - local d1 = date.parse('2000-01-01T02:00:00+0300') - local d2 = date.parse('2000-01-01T02:00:00 MSK') - local d3 = date.parse('2000-01-01T02:00:00 MSK', {format = '%FT%T %Z'}) - - Parser fails if one uses ambiguous names (for example, ‘AT’) which could not - be directly translated into timezone offsets. - -- Enabled support for timezone names in the constructor and - ``date:set{}`` modifier via ``tz`` attribute. Currently, only - timezone name abbreviations are supported (:tarantool-issue:`7076`). - - Timezone abbreviations can be used in addition to the timezone - offset. They can be used during constructing or modifying a date - object, or while parsing datetime literals. Numeric time offsets and - named abbreviations produce equivalent datetime values: - - .. code-block:: lua - - local date = require('datetime') - local d2 = date.parse('2000-01-01T02:00:00 MSK') - - local d1 = date.new{year = 1980, tz = 'MSK'} - d2 = date.new{year = 1980, tzoffset = 180} - d2:set{tz = 'MSK'} - - Note that the timezone name parser fails if one uses ambiguous names, - which could not be translated into timezone offsets directly (for - example, ‘AT’). - -Digest -^^^^^^ - -- Introduced new hash types in digest module -- ``xxhash32`` and - ``xxhash64`` (:tarantool-issue:`2003`). - -Fiber -^^^^^ - -- Introduced ``fiber_object:info()`` to get ``info`` from fiber. Works - as ``require('fiber').info()`` but only for one fiber. - -- Introduced ``fiber_object:csw()`` to get ``csw`` from fiber - (:tarantool-issue:`5799`). - -- Changed ``fiber.info()`` to hide backtraces of idle fibers (:tarantool-issue:`4235`). - -- Improved fiber ``fiber.self()``, ``fiber.id()`` and ``fiber.find()`` - performance by 2-3 times. - -Log -^^^ - -- Implemented support of symbolic log levels representation in ``log`` - module (:tarantool-issue:`5882`). Now it is possible to specify levels the same way - as in ``box.cfg{}`` call. - - For example, instead of - - .. code-block:: lua - - require('log').cfg{level = 6} - - one can use - - .. code-block:: lua - - require('log').cfg{level = 'verbose'} - -Msgpack -^^^^^^^ - -- Added the ``msgpack.object`` container for marshaling arbitrary MsgPack - data (:tarantool-issue:`1629`, :tarantool-issue:`3349`, :tarantool-issue:`3909`, - :tarantool-issue:`4861`, :tarantool-issue:`5316`). - -Netbox -^^^^^^ - -- Added the ``return_raw`` net.box option for returning ``msgpack.object`` - instead of decoding the response (:tarantool-issue:`4861`). - -Schema -^^^^^^ - -- ``is_multikey`` option may now be passed to - ``box.schema.func.create`` directly, without ``opts`` sub-table. - -.. _2.10.0-sql: - -SQL -~~~ - -- Descriptions of type mismatch error and inconsistent type error - became more informative (:tarantool-issue:`6176`). - -- Removed explicit cast from ``BOOLEAN`` to numeric types and vice - versa (:tarantool-issue:`4770`). - -- Removed explicit cast from ``VARBINARY`` to numeric types and vice - versa (:tarantool-issue:`4772`, :tarantool-issue:`5852`). - -- Fixed a bug due to which a string that is not ``NULL``-terminated - could not be cast to ``BOOLEAN``, even if the conversion should be - successful according to the rules. - -- Now a numeric value can be cast to another numeric type only if the - cast is precise. In addition, a ``UUID`` value cannot be implicitly - cast to ``STRING``/``VARBINARY``. Also, a ``STRING``/``VARBINARY`` - value cannot be implicitly cast to a ``UUID`` (:tarantool-issue:`4470`). - -- Now any number can be compared to any other number, and values of any - scalar type can be compared to any other value of the same type. A - value of a non-numeric scalar type cannot be compared with a value of - any other scalar type (:tarantool-issue:`4230`). - -- SQL built-in functions were removed from the ``_func`` system space - (:tarantool-issue:`6106`). - -- Functions are now looked up first in SQL built-in functions and then - in user-defined functions. - -- Fixed incorrect error message in case of misuse of the function used - to set the default value. - -- The ``typeof()`` function with ``NULL`` as an argument now returns - ``NULL`` (:tarantool-issue:`5956`). - -- The ``SCALAR`` and ``NUMBER`` types have been reworked in SQL. Now - ``SCALAR`` values cannot be implicitly cast to any other scalar type, - and ``NUMBER`` values cannot be implicitly cast to any other numeric - type. This means that arithmetic and bitwise operations and - concatenation are no longer allowed for ``SCALAR`` and ``NUMBER`` - values. In addition, any ``SCALAR`` value can now be compared with - values of any other scalar type using the ``SCALAR`` rules (:tarantool-issue:`6221`). - -- The ``DECIMAL`` field type is now available in SQL. Decimal can be - implicitly cast to and from ``INTEGER`` and ``DOUBLE``, it can - participate in arithmetic operations and comparison between - ``DECIMAL``, and all other numeric types are defined (:tarantool-issue:`4415`). - -- The argument types of SQL built-in functions are now checked in most - cases during parsing. In addition, the number of arguments is now - always checked during parsing (:tarantool-issue:`6105`). - -- ``DECIMAL`` values can now be bound in SQL (:tarantool-issue:`4717`). - -- A value consisting of digits and a decimal point is now parsed as - ``DECIMAL`` (:tarantool-issue:`6456`). - -- The ``ANY`` field type is now available in SQL (:tarantool-issue:`3174`). - -- Built-in SQL functions now work correctly with ``DECIMAL`` values - (:tarantool-issue:`6355`). - -- The default type is now defined in case the argument type of an SQL - built-in function cannot be determined during parsing (:tarantool-issue:`4415`). - -- The ``ARRAY`` field type is now available in SQL. The syntax has also - been implemented to allow the creation of ``ARRAY`` values (:tarantool-issue:`4762`). - -- User-defined aggregate functions are now available in SQL (:tarantool-issue:`2579`). - -- Introduced SQL built-in functions ``NOW()`` and ``DATE_PART()`` - (:tarantool-issue:`6773`). - -- The left operand is now checked before the right operand in an - arithmetic operation. (:tarantool-issue:`6773`). - -- The ``INTERVAL`` field type is introduced in SQL (:tarantool-issue:`6773`). - -- Bitwise operations can now only accept ``UNSIGNED`` and positive - ``INTEGER`` values (:tarantool-issue:`5364`). - -- The ``MAP`` field type is now available in SQL. Also, the syntax has been - implemented to allow the creation of ``MAP`` values (:tarantool-issue:`4763`). - -- Introduced ``[]`` operator for ``MAP`` and ``ARRAY`` values - (:tarantool-issue:`6251`). - -Box -~~~ - -- Public role now has read, write access on ``_session_settings`` space - (:tarantool-issue:`6310`). - -- The ``INTERVAL`` field type is introduced to ``BOX`` (:tarantool-issue:`6773`). - -- The behavior of empty or nil ``select`` calls on user spaces was - changed. A critical log entry containing the current stack traceback - is created upon such function calls. The user can explicitly request - a full scan though by passing ``fullscan=true`` to ``select`` ’s - ``options`` table argument, in which case a log entry will not be - created (:tarantool-issue:`6539`). - -- Improved checking for dangerous ``select`` calls. The calls with - ``offset + limit <= 1000`` are now considered safe, which means a - warning is not issued. The ‘ALL’, ‘GE’, ‘GT’, ‘LE’, ‘LT’ iterators - are now considered dangerous by default even with the key present - (:tarantool-issue:`7129`). - -Datetime -~~~~~~~~ - -- Allowed using human-readable timezone names (for example, - ‘Europe/Moscow’) in datetime strings. Use IANA ``tzdata`` (Olson DB) - for timezone-related operations, such as DST-based timezone offset - calculations (:tarantool-issue:`6751`). - -- The ``isdst`` field in the datetime object is now calculated - correctly, according to the IANA ``tzdata`` (aka Olson DB) rules for - the given date/time moment (:tarantool-issue:`6751`). - -- The ``datetime`` module exports the bidirectional ``TZ`` array, which - can be used to translate the timezone index (``tzindex``) into - timezone names, and vice versa (:tarantool-issue:`6751`). - -Fiber -~~~~~ - -- Previously csw (Context SWitch) of a new fiber could be more than 0, - now it is always 0 (:tarantool-issue:`5799`). - -Luarocks -~~~~~~~~ - -- Set ``FORCE_CONFIG=false`` for luarocks config to allow loading - project-side ``.rocks/config-5.1.lua``. - -Xlog -~~~~ - -- Reduced snapshot verbosity (:tarantool-issue:`6620`). - -Build -~~~~~ - -- Support fedora-34 build (:tarantool-issue:`6074`). - -- Stopped support fedora-28 and fedora-29. - -- Stopped support of Ubuntu Trusty (14.04) (:tarantool-issue:`6502`). - -- Bumped Debian package compatibility level to 10 (:tarantool-issue:`5429`). - -- Bumped minimal required debhelper to version 10 (except for Ubuntu - Xenial). - -- Removed Windows binaries from Debian source packages (:tarantool-issue:`6390`). - -- Bumped Debian control Standards-Version to 4.5.1 (:tarantool-issue:`6390`). - -- Added bundling of libnghttp2 for bundled libcurl to support HTTP/2 - for http client. The CMake version requirement is updated from 3.2 to - 3.3. - -- Support fedora-35 build (:tarantool-issue:`6692`). - -- Added bundling of GNU libunwind to support backtrace feature on - AARCH64 architecture and distributives that don’t provide - libunwind package. - -- Re-enabled backtrace feature for all RHEL distributions by default, - except for AARCH64 architecture and ancient GCC versions, which - lack compiler features required for backtrace (:tarantool-issue:`4611`). - -- Updated ``libicu`` version to 71.1 for static build. - -- Bumped OpenSSL from 1.1.1f to 1.1.1n for static build (:tarantool-issue:`6947`). - -- Updated libcurl to version 7.83.0 (:tarantool-issue:`6029`). - -- Support Fedora-36 build. - -- Support Ubuntu Jammy (22.04) build. - -Bugs fixed ----------- - -Core -~~~~ - -- **[Breaking change]** ``fiber.wakeup()`` in Lua and - ``fiber_wakeup()`` in C became NOP on the currently running fiber. - - Previously they allowed ignoring the next yield or sleep, which - resulted in unexpected erroneous wake-ups. Calling these functions - right before ``fiber.create()`` in Lua or ``fiber_start()`` in C - could lead to a crash (in debug build) or undefined behaviour (in - release build) (:tarantool-issue:`6043`). - - There was a single use case for that—reschedule in the same event - loop iteration which is not the same as ``fiber.sleep(0)`` in Lua and - ``fiber_sleep(0)`` in C. It could be done in the following way: - - in C: - - .. code-block:: c - - fiber_wakeup(fiber_self()); - fiber_yield(); - - in Lua: - - .. code-block:: lua - - fiber.self():wakeup() - fiber.yield() - - To get the same effect in C, one can use ``fiber_reschedule()``. In Lua, it - is now impossible to reschedule the current fiber directly in the same - event loop iteration. One can reschedule self through a second fiber, - but it is strongly discouraged: - - .. code-block:: lua - - local self = fiber.self() - fiber.new(function() self:wakeup() end) - fiber.sleep(0) - -- Fixed memory leak on each ``box.on_commit()`` and - ``box.on_rollback()`` (:tarantool-issue:`6025`). - -- Fixed the lack of testing for non-joinable fibers in ``fiber_join()`` - call. This could lead to unpredictable results. Note the issue - affects C level only, in Lua interface ``fiber:join()`` the - protection is turned on already. - -- Now Tarantool yields when scanning ``.xlog`` files for the latest - applied vclock and when finding the right place in ``.xlog``\ s to - start recovering. This means that the instance is responsive right - after ``box.cfg`` call even when an empty ``.xlog`` was not created - on the previous exit. Also, this prevents the relay from timing out - when a freshly subscribed replica needs rows from the end of a - relatively long (hundreds of MBs) ``.xlog`` (:tarantool-issue:`5979`). - -- The counter in ``x.yM rows processed`` log messages does not reset on - each new recovered ``xlog`` anymore. - -- Fixed wrong type specification when printing fiber state change which - led to negative fiber’s ID logging (:tarantool-issue:`5846`). - - For example, - - .. code-block:: none - - main/-244760339/cartridge.failover.task I> Instance state changed - - instead of proper - - .. code-block:: none - - main/4050206957/cartridge.failover.task I> Instance state changed - -- Fiber IDs were switched to monotonically increasing unsigned 8-byte - integers so that there would not be IDs wrapping anymore. This allows - detecting fiber’s precedence by their IDs if needed (:tarantool-issue:`5846`). - -- Fixed a crash in JSON update on tuple/space when it had more than one - operation, they accessed fields in reversed order, and these fields - did not exist. Example: ``box.tuple.new({1}):update({{'=', 4, 4}, {'=', 3, 3}})`` - (:tarantool-issue:`6069`). - -- Fixed invalid results produced by the ``json`` module’s ``encode`` - function when it was used from Lua’s garbage collector. For instance, - in functions used as ``ffi.gc()`` (:tarantool-issue:`6050`). - -- Added check for user input of the number of iproto threads—value must - be > 0 and less than or equal to 1000 (:tarantool-issue:`6005`). - -- Fixed error related to the fact that if a user changed the listen - address, all iproto threads closed the same socket multiple times. - -- Fixed error related to Tarantool not deleting the unix socket path - when the work is finished. - -- Fixed a crash in MVCC during simultaneous update of a key in - different transactions (:tarantool-issue:`6131`). - -- Fixed a bug when memtx MVCC crashed during reading uncommitted DDL - (:tarantool-issue:`5515`). - -- Fixed a bug when memtx MVCC crashed if an index was created in the - transaction (:tarantool-issue:`6137`). - -- Fixed segmentation fault with MVCC when an entire space was updated - concurrently (:tarantool-issue:`5892`). - -- Fixed a bug with failed assertion after stress update of the same key - (:tarantool-issue:`6193`). - -- Fixed a crash that happened when a user called ``box.snapshot`` - during an incomplete transaction (:tarantool-issue:`6229`). - -- Fixed console client connection breakage if request times out - (:tarantool-issue:`6249`). - -- Added missing broadcast to ``net.box.future:discard()``. Now - fibers waiting for a request result are woken up when the request is - discarded (:tarantool-issue:`6250`). - -- ``box.info.uuid``, ``box.info.cluster.uuid``, and - ``tostring(decimal)`` with any decimal number in Lua sometimes could - return garbage if ``__gc`` handlers were used in the user’s code - (:tarantool-issue:`6259`). - -- Fixed the error message that happened in a very specific case during - MVCC operation (:tarantool-issue:`6247`). - -- Fixed a repeatable read violation after delete (:tarantool-issue:`6206`). - -- Fixed a bug when hash ``select{}`` was not tracked by MVCC engine - (:tarantool-issue:`6040`). - -- Fixed a crash in MVCC after the drop of a space with several indexes - (:tarantool-issue:`6274`). - -- Fixed a bug when GC at some state could leave tuples in secondary - indexes (:tarantool-issue:`6234`). - -- Disallowed yields after DDL operations in MVCC mode. It fixes a crash - which takes place in case several transactions refer to system spaces - (:tarantool-issue:`5998`). - -- Fixed a bug in MVCC connected which happened on a rollback after DDL - operation (:tarantool-issue:`5998`). - -- Fixed a bug when rollback resulted in unserializable behaviour - (:tarantool-issue:`6325`). - -- At the moment, when a ``net.box`` connection is closed, all requests - that have not been sent will be discarded. This patch fixes this - behavior: all requests queued for sending before the connection is - closed are guaranteed to be sent (:tarantool-issue:`6338`). - -- Fixed a crash during replace of malformed tuple into ``_schema`` system - space (:tarantool-issue:`6332`). - -- Fixed dropping incoming messages when the connection is closed or - ``SHUT_RDWR`` received and ``net_msg_max`` or readahead limit is - reached (:tarantool-issue:`6292`). - -- Fixed memory leak in case of replace during background alter of the - primary index (:tarantool-issue:`6290`). - -- Fixed a bug when rolled back changes appear in the - built-in-background index (:tarantool-issue:`5958`). - -- Fixed a crash while encoding an error object in the MsgPack format - (:tarantool-issue:`6431`). - -- Fixed a bug when an index was inconsistent after background build in - case the primary index was hash (:tarantool-issue:`5977`). - -- Now inserting a tuple with the wrong ``id``` field into the ``_priv`` - space returns the correct error (:tarantool-issue:`6295`). - -- Fixed dirty read in MVCC after space alter (:tarantool-issue:`6263`, :tarantool-issue:`6318`). - -- Fixed a crash in case the fiber changing ``box.cfg.listen`` is woken up - (:tarantool-issue:`6480`). - -- Fixed ``box.cfg.listen`` not reverted to the old address in case the - new one is invalid (:tarantool-issue:`6092`). - -- Fixed a crash caused by a race between ``box.session.push()`` and - closing connection (:tarantool-issue:`6520`). - -- Fixed a bug because of which the garbage collector could remove an - ``xlog`` file that was still in use (:tarantool-issue:`6554`). - -- Fixed crash during granting privileges from guest (:tarantool-issue:`5389`). - -- Fixed an error in listening when the user passed uri in numerical - form after listening unix socket (:tarantool-issue:`6535`). - -- Fixed a crash that could happen in case a tuple is deleted from a - functional index while there is an iterator pointing to it (:tarantool-issue:`6786`). - -- Fixed memory leak in interactive console (:tarantool-issue:`6817`). - -- Fixed an assertion fail when passing a tuple without primary key - fields to ``before_replace`` trigger. Now tuple format is checked - before execution of ``before_replace`` triggers and after each one - (:tarantool-issue:`6780`). - -- Banned DDL operations in space ``on_replace`` triggers, since they - could lead to a crash (:tarantool-issue:`6920`). - -- Implemented constraints and foreign keys. Now users can create - function constraints and foreign key relations (:tarantool-issue:`6436`). - -- Fixed a bug due to which all fibers created with - ``fiber_attr_setstacksize()`` leaked until the thread exit. Their - stacks also leaked except when ``fiber_set_joinable(..., true)`` was used. - -- Fixed a crash in MVCC related to a secondary index conflict - (:tarantool-issue:`6452`). - -- Fixed a bug which resulted in wrong space count (:tarantool-issue:`6421`). - -- ``SELECT`` in RO transaction now reads confirmed data, like a - standalone (autocommit) ``SELECT`` does (:tarantool-issue:`6452`). - -- Fixed a crash when Tarantool was launched with multiple ``-e`` or - ``-l`` options without a space between the option and the value - (:tarantool-issue:`5747`). - -- Fixed effective session and user not propagated to ``box.on_commit`` - and ``box.on_rollback`` trigger callbacks (:tarantool-issue:`7005`). - -- Fixed usage of ``box.session.peer()`` in ``box.session.on_disconnect()`` - trigger. Now it’s safe to assume that ``box.session.peer()`` returns - the address of the disconnected peer, not nil, as it used to (:tarantool-issue:`7014`). - -- Fixed creation of a space with a foreign key pointing to the same - space (:tarantool-issue:`6961`). - -- Fixed a bug when MVCC failed to track nothing-found range ``select`` - (:tarantool-issue:`7025`). - -- Allowed complex foreign keys with NULL fields (:tarantool-issue:`7046`). - -- Added decoding of election messages: ``RAFT`` and ``PROMOTE`` to - ``xlog`` Lua module (:tarantool-issue:`6088`). Otherwise ``tarantoolctl`` shows plain - number in ``type`` - - .. code-block:: yaml - - HEADER: - lsn: 1 - replica_id: 4 - type: 31 - timestamp: 1621541912.4592 - - instead of symbolic representation - - .. code-block:: yaml - - HEADER: - lsn: 1 - replica_id: 4 - type: PROMOTE - timestamp: 1621541912.4592 - -- **[Breaking change]** Return value signedness of 64-bit time - functions in ``clock`` and ``fiber`` was changed from ``uint64_t`` to - ``int64_t`` both in Lua and C (:tarantool-issue:`5989`). - -- Fixed reversed iterators gap tracking. Instead of tracking gaps for - the successors of keys, gaps for tuples shifted by one to the left of - the successor were tracked (:tarantool-issue:`7113`). - -Memtx -~~~~~ - -- Now memtx raises an error if the “clear” dictionary is passed to - ``s:select()`` (:tarantool-issue:`6167`). - -- Fixed MVCC transaction manager story garbage collection breaking - memtx TREE index iterator (:tarantool-issue:`6344`). - -Vinyl -~~~~~ - -- Fixed possible keys divergence during secondary index build, which - might lead to missing tuples (:tarantool-issue:`6045`). - -- Fixed the race between Vinyl garbage collection and compaction - that resulted in a broken vylog and recovery failure (:tarantool-issue:`5436`). - -- Immediate removal of compacted run files created after the last - checkpoint optimization now works for replica’s initial JOIN stage - (:tarantool-issue:`6568`). - -- Fixed crash during recovery of a secondary index in case the primary - index contains incompatible phantom tuples (:tarantool-issue:`6778`). - -Replication -~~~~~~~~~~~ - -- Fixed the use after free in the relay thread when using elections (:tarantool-issue:`6031`). - -- Fixed a possible crash when a synchronous transaction was followed by - an asynchronous transaction right when its confirmation was being - written (:tarantool-issue:`6057`). - -- Fixed an error where a replica, while attempting to subscribe to a foreign - cluster with a different replicaset UUID, did not notice it is impossible - and instead became stuck in an infinite retry loop printing - a ``TOO_EARLY_SUBSCRIBE`` error (:tarantool-issue:`6094`). - -- Fixed an error where a replica, while attempting to join a cluster with - exclusively read-only replicas available, just booted its own replicaset, - instead of failing or retrying. Now it fails with - an error about the other nodes being read-only so they can’t register - the new replica (:tarantool-issue:`5613`). - -- Fixed error reporting associated with transactions - received from remote instances via replication. - Any error raised while such a transaction was being applied was always reported as - ``Failed to write to disk`` regardless of what really happened. Now the - correct error is shown. For example, ``Out of memory``, or - ``Transaction has been aborted by conflict``, and so on (:tarantool-issue:`6027`). - -- Fixed replication stopping occasionally with ``ER_INVALID_MSGPACK`` - when replica is under high load (:tarantool-issue:`4040`). - -- Fixed a cluster that sometimes could not bootstrap if it contained - nodes with ``election_mode`` ``manual`` or ``voter`` (:tarantool-issue:`6018`). - -- Fixed a possible crash when ``box.ctl.promote()`` was called in a - cluster with >= 3 instances, happened in debug build. In release - build, it could lead to undefined behavior. It was likely to happen - if a new node was added shortly before the promotion (:tarantool-issue:`5430`). - -- Fixed a rare error appearing when MVCC (``box.cfg.memtx_use_mvcc_engine``) - was enabled and more than one replica was joined to a cluster. - The join could fail with the error - ``"ER_TUPLE_FOUND: Duplicate key exists in unique index 'primary' in space '_cluster'"``. - The same could happen at the bootstrap of a cluster having >= 3 nodes - (:tarantool-issue:`5601`). - -- Fixed replica reconnecting to a living master on any - ``box.cfg{replication=...}`` change. Such reconnects could lead to - replica failing to restore connection for ``replication_timeout`` - seconds (:tarantool-issue:`4669`). - -- Fixed potential obsolete data write in synchronous replication due - to race in accessing terms while disk write operation is in progress - and not yet completed. - -- Fixed replicas failing to bootstrap when the master has just - restarted (:tarantool-issue:`6966`). - -- Fixed a bug when replication was broken on the master side with - ``ER_INVALID_MSGPACK`` (:tarantool-issue:`7089`). - -Raft -~~~~ - -- Fixed ``box.ctl.promote()`` entering an infinite election loop when a - node does not have enough peers to win the elections (:tarantool-issue:`6654`). - -- Servers with elections enabled will resign the leadership and become - read-only when the number of connected replicas becomes less than a - quorum. This should prevent split-brain in some situations (:tarantool-issue:`6661`). - -- Fixed a rare crash with the leader election enabled (any mode except - ``off``), which could happen if a leader resigned from its role at - the same time as some other node was writing something related to the - elections to WAL. The crash was in debug build. In the release - build, it would lead to undefined behavior (:tarantool-issue:`6129`). - -- Fixed an error when a new replica in a Raft cluster could try to join - from a follower instead of a leader and failed with an error - ``ER_READONLY`` (:tarantool-issue:`6127`). - -- Reconfiguration of ``box.cfg.election_timeout`` could lead to a crash - or undefined behavior if done during an ongoing election with a - special WAL write in progress. - -- Fixed several crashes and/or undefined behaviors (assertions in debug - build) which could appear when new synchronous transactions were made - during ongoing elections (:tarantool-issue:`6842`). - -LuaJIT -~~~~~~ - -- Fixed optimization for single-char strings in the ``IR_BUFPUT`` - assembly routine. - -- Fixed slots alignment in ``lj-stack`` command output when ``LJ_GC64`` - is enabled (:tarantool-issue:`5876`). - -- Fixed dummy frame unwinding in ``lj-stack`` command. - -- Fixed top part of Lua stack (red zone, free slots, top slot) - unwinding in ``lj-stack`` command. - -- Added the value of ``g->gc.mmudata`` field to ``lj-gc`` output. - -- Fixed detection of inconsistent renames even in the presence of sunk - values (:tarantool-issue:`4252`, :tarantool-issue:`5049`, :tarantool-issue:`5118`). - -- Fixed the order VM registers are allocated by LuaJIT frontend in case - of ``BC_ISGE`` and ``BC_ISGT`` (:tarantool-issue:`6227`). - -- Fixed inconsistency while searching for an error function when - unwinding a C-protected frame to handle a runtime error (an error - in ``__gc`` handler). - -- ``string.char()`` builtin recording is fixed in case when no - arguments are given (:tarantool-issue:`6371`, :tarantool-issue:`6548`). - -- Actually made JIT respect ``maxirconst`` trace limit while recording - (:tarantool-issue:`6548`). - -Lua -~~~ - -- Fixed a bug when multibyte characters broke ``space:fselect()`` - output. - -- When an error is raised during encoding call results, the auxiliary - lightuserdata value is not removed from the main Lua coroutine stack. - Prior to the fix, it leads to undefined behavior during the next - usage of this Lua coroutine (:tarantool-issue:`4617`). - -- Fixed Lua C API misuse, when the error is raised during call results - encoding on unprotected coroutine and expected to be caught on the - different one that is protected (:tarantool-issue:`6248`). - -- Fixed ``net.box`` error in case connections are frequently opened and - closed (:tarantool-issue:`6217`). - -- Fixed incorrect handling of variable number of arguments in - ``box.func:call()`` (:tarantool-issue:`6405`). - -- Fixed ``table.equals`` result when booleans compared (:tarantool-issue:`6386`). - -- Tap subtests inherit strict mode from parent (:tarantool-issue:`6868`). - -- Fixed the behavior of Tarantool console on ``SIGINT``. Now ``Ctrl+C`` - discards the current input and prints the new prompt (:tarantool-issue:`2717`). - - -Triggers -^^^^^^^^ - -- Fixed the possibility of a crash in case when trigger removes itself. - -- Fixed the possibility of a crash in case someone destroys trigger - when it’s yielding (:tarantool-issue:`6266`). - -SQL -~~~ - -- User-defined functions can now return ``VARBINARY`` to SQL as a - result (:tarantool-issue:`6024`). - -- Fixed assert on a cast of ``DOUBLE`` value greater than -1.0 and less - than 0.0 to ``INTEGER`` and ``UNSIGNED`` (:tarantool-issue:`6255`). - -- Removed spontaneous conversion from ``INTEGER`` to ``DOUBLE`` in a - field of type ``NUMBER`` (:tarantool-issue:`5335`). - -- All arithmetic operations can now only accept numeric values - (:tarantool-issue:`5756`). - -- Now function ``quote()`` returns an argument in case the argument - is ``DOUBLE``. The same for all other numeric types. For types other - than numeric, ``STRING`` is returned (:tarantool-issue:`6239`). - -- The ``TRIM()`` function now does not lose collation when executed - with the keywords ``BOTH``, ``LEADING``, or ``TRAILING`` (:tarantool-issue:`6299`). - -- Now getting unsupported msgpack extension in SQL throws the correct error (:tarantool-issue:`6375`). - -- Now, when copying an empty string, an error will not be set - unnecessarily (:tarantool-issue:`6157`, :tarantool-issue:`6399`). - -- Fixed wrong comparison between ``DECIMAL`` and large ``DOUBLE`` - values (:tarantool-issue:`6376`). - -- Fixed truncation of ``DECIMAL`` during implicit cast to ``INTEGER`` - in ``LIMIT`` and ``OFFSET``. - -- Fixed truncation of ``DECIMAL`` during implicit cast to ``INTEGER`` - when value is used in an index. - -- Fixed assert on a cast of ``DECIMAL`` value that is greater than -1.0 - and less than 0.0 to ``INTEGER`` (:tarantool-issue:`6485`). - -- The ``HEX()`` SQL built-in function no longer throws an assert when - its argument consists of zero-bytes (:tarantool-issue:`6113`). - -- ``LIMIT`` is now allowed in ``ORDER BY`` where sort order is in both - directions (:tarantool-issue:`6664`). - -- Fixed a memory leak in SQL during calling of user-defined function - (:tarantool-issue:`6789`). - -- Fixed assertion or segmentation fault when ``MP_EXT`` received via ``net.box`` - (:tarantool-issue:`6766`). - -- Now the ``ROUND()`` function properly supports ``INTEGER`` and - ``DECIMAL`` as the first argument (:tarantool-issue:`6988`). - -- Fixed a crash when a table inserted data into itself with an - incorrect number of columns (:tarantool-issue:`7132`). - -Box -~~~ - -- Fixed ``log.cfg`` getting updated on ``box.cfg`` error (:tarantool-issue:`6086`). - -- Fixed the error message in an attempt to insert into a tuple the size - of which equals to ``box.schema.FIELD_MAX`` (:tarantool-issue:`6198`). - -- We now check that all privileges passed to ``box.schema.grant`` are - resolved (:tarantool-issue:`6199`). - -- Added iterator type checking and allow passing iterator as a - ``box.index.{ALL,GT,...}`` directly (:tarantool-issue:`6501`). - -.. _2.10.0-datetime: - -Datetime -~~~~~~~~ - -- Intervals received after datetime arithmetic operations may be - improperly normalized if the result was negative - - .. code-block:: lua - - tarantool> date.now() - date.now() - --- - - -1.000026000 seconds - ... - - It means that two immediately called ``date.now()`` produce very close values, - which difference should be close to 0, not 1 second (:tarantool-issue:`6882`). - -- Fixed a bug in datetime module when ``date:set{tzoffset=XXX}`` did - not produce the same result with ``date.new{tzoffset=XXX}`` for the - same set of attributes passed (:tarantool-issue:`6793`). - -HTTP client -~~~~~~~~~~~ - -- Fixed invalid headers after redirect (:tarantool-issue:`6101`). - -Mvcc -~~~~ - -- Fixed MVCC interaction with ephemeral spaces: TX manager now ignores - such spaces (:tarantool-issue:`6095`). - -- Fixed a loss of tuple after a conflict exception (:tarantool-issue:`6132`). - -- Fixed a segmentation fault in update/delete of the same tuple (:tarantool-issue:`6021`). - -Net.box -~~~~~~~ - -- Changed the type of the error returned by ``net.box`` on timeout from - ClientError to TimedOut (:tarantool-issue:`6144`). - -Recovery -~~~~~~~~ - -- When ``force_recovery`` cfg option is set, Tarantool is able to boot - from ``snap``/``xlog`` combinations where ``xlog`` covers changes - committed both before and after ``snap`` creation. For example, - ``0...0.xlog``, covering everything up to ``vclock {1: 15}`` and - ``0...09.snap``, corresponding to ``vclock {1: 9}`` (:tarantool-issue:`6794`). - -Tarantoolctl -~~~~~~~~~~~~ - -- Fixed the missing ``rocks`` keyword in ``tarantoolctl rocks`` help - messages. - -Build -~~~~~ - -- Bumped Debian packages tarantool-common dependency to use luarocks 3 - (:tarantool-issue:`5429`). - -- Fixed an error when it was possible to have new Tarantool package - (version >= 2.2.1) installed with pre-luarocks 3 tarantool-common - package (version << 2.2.1), which caused rocks install to fail. - -- The Debian package does not depend on binutils anymore (:tarantool-issue:`6699`). - -- Fixed build errors with glibc-2.34 (:tarantool-issue:`6686`). - -- Changed size of alt. signal stack for ASAN needs. - -- Fixed build errors on arm64 with ``CMAKE_BUILD_TYPE=Debug``. - diff --git a/doc/release/2.10.1.rst b/doc/release/2.10.1.rst deleted file mode 100644 index a5607f4931..0000000000 --- a/doc/release/2.10.1.rst +++ /dev/null @@ -1,352 +0,0 @@ -Tarantool 2.10.1 -================ - -Released on 2022-08-08. - -* Release: :tarantool-release:`2.10.1`. -* Tag: ``2.10.1``. - - -Overview --------- - -.. warning:: - - It is highly recommended to use Tarantool :doc:`v. 2.10.2 ` instead. - - The 2.10.1 release introduced a severe regression (:tarantool-issue:`7605`), - which may pass testing with a low amount of data but impact a production server heavily. - It may crash the process and, that is worse, feed incorrect data. - The Tarantool development team has `decided `_ - to remove all the packages associated with this release. - -2.10.1 is the second -:doc:`stable ` version of the 2.10 release series. -It introduces 17 improvements and resolves 52 bugs since 2.10.0. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - -Notable changes are: - -- Interactive transactions are now possible in remote binary consoles. -- Improved the string representation of datetime intervals. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- **[Breaking change]** Conflicted transactions now throw the - ``Transaction has been aborted by conflict`` error on any CRUD - operations until they are either rolled back (which will return no - error) or committed (which will return the same error) (:tarantool-issue:`7240`). -- Read-view transactions now become conflicted on attempts to perform - DML statements immediately. Previously, this was detected only on the - transaction preparation stage, that is, when calling ``box.commit`` - (:tarantool-issue:`7240`). -- Interactive transactions are now possible in remote binary consoles - (:tarantool-issue:`7413`). -- It is now possible to omit ``space`` in declarations of foreign keys - that refer to the same space (:tarantool-issue:`7200`). - -Datetime -~~~~~~~~ - -- Improved the string representation of datetime intervals. Now - nanoseconds aren’t converted and attached to seconds; the intervals - are displayed “as is”. Example: - - .. code:: lua - - local ival = date.interval.new{year = 12345, hour = 48, min = 3, sec = 1, - nsec = 12345678} - print(tostring(ival)) - - Before: - - :: - - '+12345 years, 48 hours, 3 minutes, 1.012345678 seconds' - - Now: - - :: - - '+12345 years, 48 hours, 3 minutes, 1 seconds, 12345678 nanoseconds' - -Decimal -~~~~~~~ - -- Added C module API for decimals (:tarantool-issue:`7228`). -- Added Lua/C accessors for decimals into the module API (:tarantool-issue:`7228`). - -Tuple -~~~~~ - -- Added the ``box_tuple_field_by_path()`` function into the module API. - It allow the access to tuple fields from C code using a JSON path - (:tarantool-issue:`7228`). - -Build -~~~~~ - -- Fedora 30, 31, 32, and 33 are no longer supported. -- Ubuntu 20.10 (Groovy Gorilla) and 21.04 (Hirsute Hippo) are no longer - supported. -- Updated libcurl to version 7.84.0. -- Updated OpenSSL used for static builds to version 1.1.1q. -- Ubuntu 21.10 (Impish Indri) is no longer supported. -- Updated Ncurses used for static builds to version 6.3-20220716 . -- Updated Readline used for static builds to version 8.0p1. -- Updated libyaml to the version with fixed stack overflows. -- Updated zstd to version 1.5.2. -- Updated zlib used for static builds to version 1.2.12. - -Bugs fixed ----------- - -Core -~~~~ - -- Improved validation of incoming tuples. Now tuples coming over the - network can’t contain malformed decimals, uuids, or datetime values - (:tarantool-issue:`6857`). - -- Fixed a bug in the net.box connector because of which a client could - fail to close its connection when receiving a shutdown request from - the server. This could lead to the server hanging on exit (:tarantool-issue:`7225`). - -- Fixed a crash and possible undefined behaviour when using ``scalar`` - and ``number`` indexes over fields containing both decimals and - double ``Inf`` or ``NaN``. - - For vinyl spaces, the above conditions could lead to wrong ordering - of indexed values. To fix the issue, recreate the indexes on such - spaces following this - `guide `__ - (:tarantool-issue:`6377`). - -- Fixed a bug because of which a net.box connection was not properly - terminated when the process had a child (for example, started with - ``popen``) sharing the connection socket fd. The bug could lead to a - server hanging on exit while executing the graceful shutdown protocol - (:tarantool-issue:`7256`). - -- Removed an assertion on ``fiber_wakeup()`` calls with dead fibers in - debug builds. Such behavior was inconsistent with release builds, in - which the same calls were allowed (:tarantool-issue:`5843`). - -- Fixed the ``exclude_null`` index option not working for multikey and - JSON indexes (:tarantool-issue:`5861`). - -- Fixed the performance degradation of fiber backtrace collection after - the backtrace rework (:tarantool-issue:`7207`). - -- Fixed a hang when a synchronous request was issued from a net.box - ``on_connect`` or ``on_schema_reload`` trigger. Now an error is - raised instead (:tarantool-issue:`5358`). - -- Fixed a crash that could happen on x86 systems without the ``RDTSCP`` - instruction (:tarantool-issue:`5869`). - -- Fixed a bug that allowed to access indexed fields of nested tuples - with ``[*]`` in Lua (:tarantool-issue:`5226`). - -- Fixed the behavior of ``space_object:fselect()`` on binary data - (:tarantool-issue:`7040`). - -- Fixed Tarantool not being able to recover from old snapshots when - ``box.cfg.work_dir`` and ``box.cfg.memtx_dir`` were both set - (:tarantool-issue:`7232`). - -- Fixed Tarantool terminations on error messages with invalid UTF-8 - sequences (:tarantool-issue:`6781` and :tarantool-issue:`6934`). - -- Fixed a bug when the ``Transaction is active at return from function`` - error was overwriting expression evaluation errors in case the - expression begins a transaction (:tarantool-issue:`7288`). - -- Added type checking for options in net.box’s remote queries and - connect method. Now graceful errors are thrown in case of incorrect - options (:tarantool-issue:`6063`, :tarantool-issue:`6530`). - -- Fixed ``space_object:format()`` and ``space_object.foreign_key`` - returning incorrect numbers of foreign key fields (:tarantool-issue:`7350`). - -- Fixed the foreign key check on ``space_object:truncate()`` calls - (:tarantool-issue:`7309`). - -- Fixed a crash when ``box.stat.net.thread[i]`` is called with invalid - ``i`` values (:tarantool-issue:`7196`). - -- Fixed a low-probability stack overflow bug in the qsort - implementation. - -Memtx -~~~~~ - -- Fixed the ability to perform read-only operations in conflicting - transactions in memtx, which led to spurious results (:tarantool-issue:`7238`). -- Fixed false assertion on repeatable ``replace`` with the memtx - transaction manager enabled (:tarantool-issue:`7214`). -- Fixed false transaction conflict on repeatable ``insert``/``upsert`` - with the memtx transaction manager enabled (:tarantool-issue:`7217`). -- Fixed dirty reads in the ``GT`` iterator of HASH indexes (:tarantool-issue:`7477`). -- Fixed phantom reads in reverse iterators (:tarantool-issue:`7409`). -- Fixed ``select`` with ``LE`` iterator in **memtx** **TREE** index - returning deleted tuple (:tarantool-issue:`7432`). -- Fixed incorrect handling of corner cases gap tracking in transaction - manager (:tarantool-issue:`7375`). -- Fixed a bug in the memtx hash index implementation that could lead to - uncommitted data written to a snapshot file (:tarantool-issue:`7539`). - -Vinyl -~~~~~ - -- Fixed a bug in the vinyl upsert squashing optimization that could - lead to a segmentation fault error (:tarantool-issue:`5080`). -- Fixed a bug in the vinyl garbage collector. It could skip stale - tuples stored in a secondary index if upsert operations were used on - the space before the index was created (:tarantool-issue:`3638`). -- Fixed a bug in the vinyl read iterator that could result in a - significant performance degradation of range select requests in the - presence of an intensive write workload (:tarantool-issue:`5700`). -- Explicitly disabled the hot standby mode for vinyl. Now an attempt to - enable the hot standby mode in case the master instance has vinyl - spaces results in an error. Before this change, the behavior was - undefined (:tarantool-issue:`6565`). - -Replication -~~~~~~~~~~~ - -- Added the logging of the error reason on a replica in case when the - master didn’t send a greeting message (:tarantool-issue:`7204`). -- Fixed replication being stuck occasionally for no obvious reasons. -- Fixed a possible split-brain when the old synchro queue owner might - finalize the transactions in the presence of the new owner (:tarantool-issue:`5295`). -- Improved the detection of possible split-brain situations, for - example, when multiple leaders were working independently due to - manually lowered quorum. Once a node discovers that it received some - foreign data, it immediately stops replication from such a node with - an ``ER_SPLIT_BRAIN`` error (:tarantool-issue:`5295`). -- Fixed a false positive split-brain error after ``box.ctl.demote()`` - (:tarantool-issue:`7286`). -- Fixed a bug when followers with ``box.cfg.election_mode`` turned on - did not notice the leader hang due to a long request, such as a - ``select{}`` from a large space or a ``pairs`` iteration without - yields between loop cycles (:tarantool-issue:`7512`). - -LuaJIT -~~~~~~ - -Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`6548` and :tarantool-issue:`7230`). -In the scope of this activity, the following issues have been resolved: - -- Fixed emitting for fuse load of constant in GC64 mode (:tarantool-issue:`4095`, - :tarantool-issue:`4199`, :tarantool-issue:`4614`). - -- Now initialization of zero-filled struct is compiled (:tarantool-issue:`4630`, - :tarantool-issue:`5885`). - -- Actually implemented ``maxirconst`` option for tuning JIT compiler. - -- Fixed JIT stack of Lua slots overflow during recording for metamethod - calls. - -- Fixed bytecode dump unpatching for JLOOP in up-recursion compiled - functions. - -- Fixed FOLD rule for strength reduction of widening in cdata indexing. - -- Fixed ``string.char()`` recording without arguments. - -- Fixed ``print()`` behaviour with the reloaded default metatable for - numbers. - -- ``tonumber("-0")`` now saves the sign of number for conversion. - -- ``tonumber()`` now gives predictable results for negative non-base-10 - numbers. - -- Fixed write barrier for ``debug.setupvalue()`` and - ``lua_setupvalue()``. - -- Fixed conflict between 64 bit lightuserdata and ITERN key for ARM64. - -- Fixed emitting assembly for HREFK on ARM64. - -- Fixed pass-by-value struct in FFI calls on ARM64. - -- ``jit.p`` now flushes and closes output file after run, not at - program exit. - -- Fixed ``jit.p`` profiler interaction with GC finalizers. - -- Fixed the case for partial recording of vararg function body with the - fixed number of result values in with ``LJ_GC64`` (i.e. ``LJ_FR2`` - enabled) (:tarantool-issue:`7172`). - -- Added ``/proc/self/exe`` symlink resolution to the symtab module to - obtain the ``.symtab`` section for the Tarantool executable. - -- Introduced stack sandwich support to sysprof’s parser (:tarantool-issue:`7244`). - -- Disabled proto and trace information dumpers in sysprof’s default - mode. Attempts to use them lead to a segmentation fault due to an - uninitialized buffer (:tarantool-issue:`7264`). - -- Fixed handling of errors during trace snapshot restore. - -Lua -~~~ - -- The ``fiber_obj:info()`` now correctly handles its options (:tarantool-issue:`7210`). -- Fixed a bug when Ctrl+C doesn’t discard the multiline input - (:tarantool-issue:`7109`). - -SQL -~~~ - -- Fixed the creation of ephemeral space format in ``ORDER BY`` - (:tarantool-issue:`7043`). -- The result type of arithmetic operations between two unsigned values - is now ``INTEGER`` (:tarantool-issue:`7295`). -- Fixed a bug with the ``ANY`` type in the ephemeral space format in - ``ORDER BY`` (:tarantool-issue:`7043`). -- Truncation of a space no longer corrupts prepared statements - (:tarantool-issue:`7358`). - -Datetime -~~~~~~~~ - -- Fixed a bug when ``date:set{hour=nil,min=XXX}`` did not retain the - original ``hour`` value (:tarantool-issue:`7298`). -- Introduced the validation of incoming data at the moment messagepack - is converted to datetime (:tarantool-issue:`6723`). - -HTTP client -~~~~~~~~~~~ - -- Enabled the automatic detection of system CA certificates in the - runtime (:tarantool-issue:`7372`). It was disabled in 2.10.0, which led to the - inability to use HTTPS without the ``verify_peer = false`` option. - - -Build -~~~~~ - -- Fixed a build failure with gcc if libpbf is installed (:tarantool-issue:`7292`). -- Fixed the static build on Mac OS 11 and newer (:tarantool-issue:`7459`). diff --git a/doc/release/2.10.2.rst b/doc/release/2.10.2.rst deleted file mode 100644 index 1c5c331afa..0000000000 --- a/doc/release/2.10.2.rst +++ /dev/null @@ -1,71 +0,0 @@ -Tarantool 2.10.2 -================ - -Released on 2022-09-01. - -* Release: :tarantool-release:`2.10.2`. -* Tag: ``2.10.2``. - -Overview --------- - -2.10.2 is the third -:doc:`stable ` version of the 2.10 release series. -It introduces 1 improvement and resolves 8 bugs since 2.10.1. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- Certain internal fibers, such as the connection’s worker fiber, vinyl - fibers, and some other fibers, cannot be cancelled from the Lua - public API anymore (:tarantool-issue:`7473`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a crash of secondary indexes without hints (a critical regression found in 2.10.1) - (:tarantool-issue:`7605`). -- Fixed a possible crash on concurrent ``fiber_object:join()`` - (:tarantool-issue:`7489`). -- Fixed a potential nil dereference and a crash in case of an active - log rotation during the program exit stage (:tarantool-issue:`4450`). -- Fixed crashes and undefined behaviour of triggers clearing other - triggers (:tarantool-issue:`4264`). - -Replication -~~~~~~~~~~~ - -- Fixed ``box.info.replication[id].downstream.lag`` growing - indefinitely on a server when it’s not writing any new transactions - (:tarantool-issue:`7581`). - -Box -~~~ - -- Fixed multiline commands being saved to ``~/.tarantool_history`` as - separate lines (:tarantool-issue:`7320`). -- Fixed inheritance of field options in indexes when index parts are - specified the old Tarantool 1.6 style: ``{, , ...}`` - (:tarantool-issue:`7614`). -- Fixed unauthorized inserts into the ``_truncate`` space (:tarantool-sec-issue:`5`). diff --git a/doc/release/2.10.3.rst b/doc/release/2.10.3.rst deleted file mode 100644 index 3a1b9c1368..0000000000 --- a/doc/release/2.10.3.rst +++ /dev/null @@ -1,126 +0,0 @@ -Tarantool 2.10.3 -================ - -Released on 2022-09-30. - -* Release: :tarantool-release:`2.10.3`. -* Tag: ``2.10.3``. - -Overview --------- - -2.10.3 is the fourth -:doc:`stable ` version of the 2.10 release series. -It introduces 2 improvements and resolves 19 bugs since 2.10.2. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Build -~~~~~ - -- RedOS 7.3 is now supported. -- Added the ``-DENABLE_HARDENING=ON/OFF`` CMake option that enables - hardening against memory corruption attacks (:tarantool-issue:`7536`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug introduced in Tarantool 2.10.2: log messages could be - written to data files thus causing data corruption. The issue was - fixed by reverting the fix for :tarantool-issue:`4450`. -- Switched from MT-Unsafe ``strerror()`` to MT-Safe ``strerror_r()``. - The usage of the unsafe function could result in corrupted error - messages. -- Fixed a bug when a single JSON update couldn’t insert and update a - field of a map or an array in two sequential calls. It would either - crash or return an error (:tarantool-issue:`7705`). - -Memtx -~~~~~ - -- Fixed incorrect handling of transaction conflicts in full scans by - HASH indexes (:tarantool-issue:`7493`). -- Fixed ``use after free`` that could occur in the transaction manager - in certain states (:tarantool-issue:`7449`). -- Fixed possible phantom reads with ``get`` on TREE indexes containing - nullable parts (:tarantool-issue:`7685`). -- Fixed an inconsistency in ``index:random`` in the context of - transaction management (:tarantool-issue:`7670`). -- Fixed unserializable reads tracked incorrectly after transaction - rollbacks (:tarantool-issue:`7343`). - -Replication -~~~~~~~~~~~ - -- Fixed a bug when a fiber committing a synchronous transaction could - hang if the instance got a term bump during that or its synchro-queue - was fenced in any other way (:tarantool-issue:`7253`). -- Fixed master occasionally deleting xlogs needed by replicas even - without a restart (:tarantool-issue:`7584`). - -Raft -~~~~ - -- Fixed a bug when ``box.ctl.promote()`` could hang and bump thousands - of terms in a row if called on more than one node at the same time - (part of :tarantool-issue:`7253`). -- Fixed a bug when a node with ``election_mode='voter'`` could hang in - ``box.ctl.promote()`` or become a leader (part of :tarantool-issue:`7253`). -- Fixed a bug when a replicaset could be split into parts if a node - voted for another instance while having local WAL writes unfinished - (part of :tarantool-issue:`7253`). - -Lua -~~~ - -Merger -^^^^^^ - -- Fixed ``use after free`` that could occur during iteration over - ``merge_source:pairs()`` or ``merger:pairs()`` (:tarantool-issue:`7657`). - -Popen -^^^^^ - -- Fixed a race condition in ``:signal()`` on Mac OS 12 - and newer (:tarantool-issue:`7658`). - -Box -~~~ - -- Fixed a bug when ``fiber.yield()`` might break the execution of a - shutdown trigger (:tarantool-issue:`7434`). -- Fixed a possible high CPU usage caused by shutdown triggers - (:tarantool-issue:`6801`). - -Synchro -~~~~~~~ - -- Fixed assertions in debug builds and undefined behaviour in release - builds when simultaneous elections started or another instance was - promoted while an instance was acquiring or releasing the synchro - queue (:tarantool-issue:`7086`). - -Uri -~~~ - -- Fixed a bug in the URI parser: tarantoolctl could not connect when - the host name was skipped (:tarantool-issue:`7479`). diff --git a/doc/release/2.10.4.rst b/doc/release/2.10.4.rst deleted file mode 100644 index e7c181f3c7..0000000000 --- a/doc/release/2.10.4.rst +++ /dev/null @@ -1,204 +0,0 @@ -Tarantool 2.10.4 -================ - -Released on 2022-11-11. - -* Release: :tarantool-release:`2.10.4`. -* Tag: ``2.10.4``. - -Overview --------- - -2.10.4 is the fifth -:doc:`stable ` version of the 2.10 release series. -It introduces 5 improvements and resolves 28 bugs since 2.10.3. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -.. note:: - - Now the empty string, ``n``, ``nu``, ``s``, and ``st`` (that is, leading parts of - ``num`` and ``str``) are not accepted as valid field types (:tarantool-issue:`5940`). - :ref:`This instruction ` will help you upgrade - to Tarantool 2.10.4 and newer if you've previously used these values in field types. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- The JSON log format can now be used with the syslog logger (:tarantool-issue:`7860`). - -SQL -~~~ - -- New rules are applied to determine the type of CASE operation - (:tarantool-issue:`6990`). -- Now ``NULLIF()`` call results have the same type as its first - argument (:tarantool-issue:`6989`). - -Build -~~~~~ - -- Diagnostics now provide relative file paths instead of absolute ones - (:tarantool-issue:`7808`). -- Now the compiler info displayed in ``tarantool.build.compiler`` and - ``tarantool --version`` shows the ID and the version of the compiler - that was used to build Tarantool. The output has the format - ``${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}``, for example, - ``Clang-14.0.0.14000029`` (:tarantool-issue:`7888`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed creation of spaces with a constraint and a foreign key on the - same field (:tarantool-issue:`7645`). -- Now the same error is returned when a password or a username provided - during authorization is incorrect. This prevents user enumeration - (:tarantool-sec-issue:`16`). -- Added boundary checking for ``getenv()`` return values. Also, for - security reasons, Tarantool code now copies these values instead of - using them directly (:tarantool-issue:`7797`). -- ``os.getenv()`` now always returns values of sane size (:tarantool-issue:`7797`). -- Fixed the ``BEGIN``, ``COMMIT``, and ``ROLLBACK`` counters in the - ``box.stat()`` output. Now they show the number of started, - committed, and rolled back transactions (:tarantool-issue:`7583`). -- Fixed a crash that could occur during log rotation and application - exit (:tarantool-issue:`4450`). -- Fixed a possible buffer overflow in ``mp_decode_decimal()`` and - ``decimal_unpack()`` when an input string was too long (:tarantool-sec-issue:`17`). -- Fixed a bug in the MsgPack library that could lead to a failure to - detect invalid MsgPack input and, as a result, an out-of-bounds read - (:tarantool-sec-issue:`18`). -- If an error occurs during a snapshot recovery, its log now contains - information about the row that caused the error (:tarantool-issue:`7917`). - -Memtx -~~~~~ - -- Fixed possible loss of committed tuples in secondary indexes with - MVCC transaction manager (:tarantool-issue:`7712`). -- Fixed an assertion being triggered on ``space:drop`` (:tarantool-issue:`7757`). -- Fixed possible violation of the secondary index uniqueness with the - transaction manager enabled (:tarantool-issue:`7761`). - -LuaJIT -~~~~~~ - -- Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`7230`). In the scope - of this activity, the following issues have been resolved: - - - Fix overflow check in ``unpack()`` optimized by a compiler. - - Fix recording of ``tonumber()`` with cdata argument for failed - conversions (:tarantool-issue:`7655`). - - Fix concatenation operation on cdata. It always raises an error - now. - -- Fixed the Lua stack dump command (``lj-stack``) to support Python 2: - unpacking arguments within the list initialization is not supported - in it (:tarantool-issue:`7458`). - -Lua -~~~ - -- Fixed a crash in ``msgpack.decode`` in case the input string contains - an invalid MsgPack header ``0xc1`` (:tarantool-issue:`7818`). - -SQL -~~~ - -- Fixed an assertion when ``INDEXED BY`` was used with an index that - was at least third in a space (:tarantool-issue:`5976`). -- Fixed a crash that could occur when selecting tuples with more fields - than specified in the space format (:tarantool-issue:`5310`, :tarantool-issue:`4666`). -- Fixed an assertion in ``JOIN`` when using an unsupported index - (:tarantool-issue:`5678`). -- Creating indexes on newly added fields no longer leads to assertions - in ``SELECT`` queries (:tarantool-issue:`5183`). -- Re-running a prepared statement that generates new auto-increment IDs - no longer causes an error (:tarantool-issue:`6422`). -- An error is now thrown if too many indexes were created in SQL - (:tarantool-issue:`5526`). - -Box -~~~ - -- Revoked execute access rights to the ``LUA`` function from the public - role (:tarantool-sec-issue:`14`). -- Now the empty string, ``n``, ``nu``, ``s``, and - ``st`` (that is, leading parts of ``num`` and ``str``) are not - accepted as valid field types (:tarantool-issue:`5940`). - :ref:`This instruction ` will help you upgrade - to Tarantool 2.10.4 and newer if you've previously used these values in field types. - -- Fixed a bug when ``type = box.NULL`` in ``key_def.new()`` resulted in - ``type = 'unsigned'`` (:tarantool-issue:`5222`). -- The ``_vfunc`` system space now has the same format as ``_func`` - (:tarantool-issue:`7822`). -- Fixed a crash on recovery from snapshots that don’t include system - spaces (:tarantool-issue:`7800`). -- Fixed a bug that occurred when a foreign key was created together - with fields that participate in that foreign key (:tarantool-issue:`7652`). - -Datetime -~~~~~~~~ - -- Fixed interval arithmetic for boundaries crossing DST (:tarantool-issue:`7700`). - - Results of datetime arithmetic operations could get a different - timezone if the DST boundary has been crossed during the operation: - - .. code-block:: tarantoolsession - - tarantool> datetime.new{year=2008, month=1, day=1, - tz='Europe/Moscow'} + - datetime.interval.new{month=6} - --- - - 2008-07-01T01:00:00 Europe/Moscow - ... - - Now we resolve ``tzoffset`` at the end of operation if ``tzindex`` is - not 0. - -- Fixed subtractions for datetimes with different timezones (:tarantool-issue:`7698`). - - Previously, the timezone difference (``tzoffset``) was ignored in - datetime subtraction operations: - - .. code-block:: tarantoolsession - - tarantool> datetime.new{tz='MSK'} - datetime.new{tz='UTC'} - --- - - +0 seconds - ... - tarantool> datetime.new{tz='MSK'}.timestamp - - datetime.new{tz='UTC'}.timestamp - --- - - -10800 - ... - - Now this difference is accumulated in the minute component of the - resulting interval: - - .. code-block:: tarantoolsession - - tarantool> datetime.new{tz='MSK'} - datetime.new{tz='UTC'} - --- - - -180 minutes - ... diff --git a/doc/release/2.10.5.rst b/doc/release/2.10.5.rst deleted file mode 100644 index 701e639fb8..0000000000 --- a/doc/release/2.10.5.rst +++ /dev/null @@ -1,250 +0,0 @@ -Tarantool 2.10.5 -================ - -Released on 2023-02-20. - -* Release: :tarantool-release:`2.10.5`. -* Tag: ``2.10.5``. - -Overview --------- - -2.10.5 is the sixth -:doc:`stable ` version of the 2.10 release series. -It introduces 5 improvements and resolves 44 bugs since 2.10.4. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- Introduced the ``_vspace_sequence`` system space view of the - ``_space_sequence`` system space (:tarantool-issue:`7858`). -- The log produced during ``box.cfg{}`` now contains the build target - triplet (for example, ``Linux-x86_64-RelWithDebInfo``). - -Build -~~~~~ - -- OpenSUSE 15.1 and 15.2 are no longer supported. -- Updated libcurl to version 7.87.0 (:tarantool-issue:`8150`). -- Alpine Linux 3.16 is now supported. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug in fiber switching that could lead to a segmentation - fault error on AArch64 systems (:tarantool-issue:`7523`, :tarantool-issue:`7985`). - -- Fixed wrong CPU architecture reported in ``tarantool.build.target`` - on M1/M2 Macs (:tarantool-issue:`7495`). - -- Fixed a bug when fields could be removed from a table stored in a - variable when a logging function was called on this variable (for - example, ``log.info(a)``) (:tarantool-issue:`3853`). - -- Fixed a logging bug: when logging tables with fields that have - reserved internal names (such as ``pid``) in the plain log format, - such fields weren’t logged (:tarantool-issue:`3853`). - -- Added the ``message`` field when logging tables without such field in - the JSON log format (:tarantool-issue:`3853`). - -- Fixed an assertion on malformed JSON message written to the log - (:tarantool-issue:`7955`). - -- Fixed the bug because of which ``box.session.on_auth`` triggers were - not invoked if the authenticated user didn’t exist (:tarantool-issue:`8017`). - -- Eliminated the possibility of user enumeration by analyzing errors - sent in reply to malformed authentication requests (:tarantool-sec-issue:`21`). - -- Fixed a bug when Tarantool could execute random bytes as a Lua code - after fork on systems with a glibc version earlier than 2.29 - (:tarantool-issue:`7886`). - -- A referenced space or a function being used in a constraint can now - be dropped in the same transaction with the referencing constraint or - space (:tarantool-issue:`7339`). - -- Fixed Tarantool being stuck during a crash on macOS (:tarantool-issue:`8023`). - -- Fixed a bug that prevented collection of crash reports (:tarantool-issue:`8083`). - -- Fixed a crash in ``net.box`` that happened if the error message - raised by the server contained ``printf`` formatting specifiers, such - as ``%d`` or ``%s`` (:tarantool-issue:`8043`). - -- Fixed read-only statements executing successfully in transactions - that were aborted by yield or timeout. Now, read-only statements fail - in this case, just like write statements (:tarantool-issue:`8123`). - -- Fixed a transaction conflict reported mistakenly when a key was - deleted twice with MVCC engine enabled (:tarantool-issue:`8122`). - -- ``net.box`` connections now contain information about sequences used - by remote spaces (:tarantool-issue:`7858`). - -- Fixed a crash that happened if a transaction was aborted (for - example, by fiber yield with MVCC off) while the space’s - ``on_replace`` or ``before_replace`` trigger was running (:tarantool-issue:`8027`). - -- Fixed a possible crash when attempting to update the same field in - ``tuple/space/index:update()`` more than once (:tarantool-issue:`8216`). - -- Fixed empty BITSET indexes crashing on ``len`` calls (:tarantool-issue:`5809`). - -- Fixed a crash when functional indexes were used with very specific - chunk size (:tarantool-issue:`6786`). - -Memtx -~~~~~ - -- Fixed a possible repeatable read violation with reverse iterators - (:tarantool-issue:`7755`). -- Fixed a crash on series of transactions in memtx (:tarantool-issue:`7756`). -- Fixed a phantom read that could happen after reads from different - indexes followed by a rollback (:tarantool-issue:`7828`). -- Fixed an assert in the MVCC engine (:tarantool-issue:`7945`). -- Fixed an assertion failure in MVCC during statement preparation - (:tarantool-issue:`8104`). -- Fixed possible loss of a committed tuple after rollback of a prepared - transaction (:tarantool-issue:`7930`). - -Vinyl -~~~~~ - -- Fixed a bug that could result in ``select()`` skipping an existing - tuple after a rolled back ``delete()`` (:tarantool-issue:`7947`). - -Replication -~~~~~~~~~~~ - -- Fixed local space writes failing with error ``Found uncommitted sync - transactions from other instance with id 1`` when synchronous - transaction queue belongs to another instance and isn’t empty - (:tarantool-issue:`7592`). - -- Fixed an assertion failure on master when a replica resubscribes with - a smaller vclock than previously seen (:tarantool-issue:`5158`). - -- A warning is now raised when ``replica_id`` is changed by a - ``before_replace`` trigger while adding a new replica. Previously, - there was an assertion checking this (:tarantool-issue:`7846`). - -- Fixed a segmentation fault that happened when a ``before_replace`` - trigger set on space ``_cluster`` returned nil (:tarantool-issue:`7846`). - -- Fixed possible transaction conflict errors on applying a replication - stream (:tarantool-issue:`8121`). - -Raft -~~~~ - -- Fixed an assertion failure in case when an election candidate is - reconfigured to a voter during an ongoning WAL write (:tarantool-issue:`8169`). -- Fixed nodes configured with ``election_mode = "manual"`` sometimes - increasing the election term excessively after their promotion - (:tarantool-issue:`8168`). - -LuaJIT -~~~~~~ - -Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`7230`). In the scope of -this activity, the following issues have been resolved: - -- Fix ``io.close()`` for already closed standard output. -- Fix trace execution and stitching inside vmevent handler (:tarantool-issue:`6782`). -- Fixed ``emit_loadi()`` on x86/x64 emitting xor between condition - check and jump instructions. -- Fix stack top for error message when raising the OOM error (:tarantool-issue:`3840`). -- Enabled external unwinding on several LuaJIT platforms. Now it is - possible to handle ABI exceptions from Lua code (:tarantool-issue:`6096`). -- Disabled math.modf compilation due to its rare usage and difficulties - with proper implementation of the corresponding JIT machinery. -- Fixed inconsistent behaviour on signed zeros for JIT-compiled unary - minus (:tarantool-issue:`6976`). -- Fixed ``IR_HREF`` hash calculations for non-string GC objects for - GC64. -- Fixed assembling of type-check-only variant of ``IR_SLOAD``. -- Enabled the platform profiler for Tarantool built with GC64 mode - (:tarantool-issue:`7919`). -- Added full-range lightuserdata support to the ``luajit-gdb.py`` - extension (:tarantool-issue:`6481`). - -Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`8069`). In the scope of -this activity, the following issues have been resolved: - -- Fixed loop realigment for dual-number mode -- Fixed os.date() for wider libc strftime() compatibility. -- Fix interval parsing for sysprof for dual-number mode. - -Lua -~~~ - -- Fixed alias detection in the YAML serializer in case the input - contains objects that implement the ``__serialize`` meta method - (:tarantool-issue:`8240`). - -SQL -~~~ - -- Fixed a bug when collation could change the type of a built-in - function argument (:tarantool-issue:`7992`). -- Fixed several bugs happening because of improper handling of - ``malloc()`` failures (:tarantool-sec-issue:`65`, :tarantool-sec-issue:`66`, - :tarantool-sec-issue:`67`, :tarantool-sec-issue:`68`). - -Box -~~~ - -- Fixed a possible error during rollback of read-only transaction - statements (:tarantool-issue:`5501`). -- Fixed a bug in ``space_object:create_index()`` when ``collation`` - option is not set. Now it is inherited from the space format - (:tarantool-issue:`5104`). -- Eliminated a code injection vulnerability in the processing of the - ``replication_synchro_quorum`` ``box.cfg()`` option (:tarantool-sec-issue:`20`, - `GHSA-74jr-2fq7-vp42 `__). - -Datetime -~~~~~~~~ - -- Fixed a segmentation fault that happened when the value passed to the - ``%f`` modifier of ``datetime_object:format()`` was too big (:tarantool-sec-issue:`31`). - -Fiber -~~~~~ - -- Fixed the assertion fail in ``cord_on_yield`` (:tarantool-issue:`6647`). - -Log -~~~ - -- Fixed an incorrect facility value in syslog on Alpine and OpenBSD - (:tarantool-issue:`8269`). - -.. _build-1: - -Build -~~~~~ - -- Fixed ``-Werror`` build fail on Clang 15 (:tarantool-issue:`8110`). diff --git a/doc/release/2.10.6.rst b/doc/release/2.10.6.rst deleted file mode 100644 index ede32d19a7..0000000000 --- a/doc/release/2.10.6.rst +++ /dev/null @@ -1,57 +0,0 @@ -Tarantool 2.10.6 -================ - -Released on 2023-03-22. - -* Release: :tarantool-release:`2.10.6`. -* Tag: ``2.10.6``. - -Overview --------- - -2.10.6 is the 7th -:doc:`stable ` version of the 2.10 release series. -It resolves 3 bugs since 2.10.5. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report -it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed various bugs related to unsafe (i.e., coming from an unknown - source) decoding and validating of MsgPack extensions (:tarantool-sec-issue:`73`). - -LuaJIT -~~~~~~ - -Backported patches from the vanilla LuaJIT trunk (:tarantool-issue:`8069`). -The following issues were fixed as part of this activity: - -- Fixed successful ``math.min/math.max`` call with no args (:tarantool-issue:`6163`). -- Fixed inconsistencies in ``math.min/math.max`` calls with a NaN arg - (:tarantool-issue:`6163`). -- Fixed ``pcall()`` call without arguments on arm64. -- Fixed assembling of ``IR_{AHUV}LOAD`` specialized to boolean for - aarch64. -- Fixed constant rematerialization on arm64. - -Box -~~~ - -- Fixed a bug where ``box.cfg.force_recovery`` doesn’t work when there - is no user spaces in a snapshot (:tarantool-issue:`7974`). diff --git a/doc/release/2.10.7.rst b/doc/release/2.10.7.rst deleted file mode 100644 index 72972f0a9d..0000000000 --- a/doc/release/2.10.7.rst +++ /dev/null @@ -1,95 +0,0 @@ -Tarantool 2.10.7 -================ - -Released on 2023-05-24. - -* Release: :tarantool-release:`2.10.7`. -* Tag: ``2.10.7``. - -Overview --------- - -2.10.7 is the 8th -:doc:`stable ` version of the 2.10 release series. -It resolves 17 bugs since 2.10.6. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report -it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a crash that could happen when preparing a crash report on macOS - (:tarantool-issue:`8445`). -- Fixed an integer overflow issue in ``net.box`` (:tarantool-sec-issue:`121`). -- An ``IPROTO_EVENT`` packet now has the same sync number as the last - corresponding ``IPROTO_WATCH`` request (:tarantool-issue:`8393`). -- Fixed a bug because of which a dirty (not committed to WAL) DDL record could - be written to a snapshot and cause a recovery failure (:tarantool-issue:`8530`). - -Replication -~~~~~~~~~~~ - -- Fixed a bug that occurred on applier failure: a node could start an election - without having a quorum to do this (:tarantool-issue:`8433`). -- Now if a join fails with some non-critical error, such as ``ER_READONLY``, - ``ER_ACCESS_DENIED``, or something network-related, the instance tries - to find a new master to join off and tries again (:tarantool-issue:`6126`, - :tarantool-issue:`8681`). -- States when joining a replica are renamed. Now the value of - ``box.info.replication[id].upstream.status`` during join can be either - ``wait_snapshot`` or ``fetch_snapshot`` instead of ``initial_join`` (:tarantool-issue:`6126`). -- Fixed replicaset bootstrap getting stuck on some nodes with ``ER_READONLY`` when - there are connectivity problems (:tarantool-issue:`7737`, :tarantool-issue:`8681`). -- Fixed a bug when a replicaset state machine that is tracking the number - of appliers according to their states could become inconsistent during - reconfiguration (:tarantool-issue:`7590`). - -LuaJIT -~~~~~~ - -Backported patches from the vanilla LuaJIT trunk (:tarantool-issue:`8069`, :tarantool-issue:`8516`). -The following issues were fixed as part of this activity: - -- Fixed ``emit_rma()`` for x64/GC64 mode for non-``mov`` instructions. -- Limited Lua C library path with the default ``PATH_MAX`` value of 4096 bytes. -- Fixed assembling of ``IR_LREF`` assembling for GC64 mode on x86_64. - -SQL -~~~ - -- Fixed an assertion when selecting tuples with incomplete internal - format (:tarantool-issue:`8418`). -- Fixed integer overflow issues in built-in functions (:tarantool-sec-issue:`119`). -- Fixed a possible assertion or segmentation fault when optimizing - ``INSERT INTO ... SELECT FROM`` (:tarantool-issue:`8661`). -- Fixed an integer overflow issue and added check for the ``printf()`` failure due - to too large size (:tarantool-sec-issue:`122`). - -Datetime -~~~~~~~~ - -- Fixed an error in ``datetime.set`` when ``timestamp`` is passed along with ``nsec``, - ``usec``, or ``msec`` (:tarantool-issue:`8583`). -- Fixed errors when the string representation of a datetime object had - a negative nanosecond part (:tarantool-issue:`8570`). - -Build -~~~~~ - -- Enabled compiler optimizations for static build dependencies, which were - erroneously disabled in version 2.10.3 (:tarantool-issue:`8606`). diff --git a/doc/release/2.10.8.rst b/doc/release/2.10.8.rst deleted file mode 100644 index 3d518d5dcc..0000000000 --- a/doc/release/2.10.8.rst +++ /dev/null @@ -1,201 +0,0 @@ -Tarantool 2.10.8 -================ - -Released on 2023-09-14. - -* Release: :tarantool-release:`2.10.8`. -* Tag: ``2.10.8``. - -Overview --------- - -2.10.8 is the ninth -:doc:`stable ` version of the 2.10 release series. -It introduces 5 improvements and resolves 28 bugs since 2.10.7. - -The “stable” label means that we have all planned features implemented -and we see no high-impact issues. However, if you encounter an issue, -feel free to `report -it `__ on GitHub. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please :doc:`upgrade ` using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Box -~~~ - -- The maximum length of ``box.cfg{}`` string parameters is now 512 - instead of 256. - -Test -~~~~ - -Fuzz -^^^^ - -- LuaJIT now can be fuzzed using grammar-based fuzzer (:tarantool-issue:`4823`). - -Build -~~~~~ - -- Hardening against memory corruption attacks is now enabled by default - on FreeBSD (:tarantool-issue:`7536`). -- Added the CMake option ``FIBER_STACK_SIZE`` to set the default fiber - stack size. -- Updated libcurl to version 8.3.0. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug when Tarantool failed to decode a request containing an - unknown IPROTO key. The bug resulted in broken connectivity between - Tarantool 2.10 and 2.11 (:tarantool-issue:`8745`). -- Fixed a bug causing the ``ER_CURSOR_NO_TRANSACTION`` failure for - transactions on synchronous spaces when the ``on_commit/on_rollback`` - triggers are set (:tarantool-issue:`8505`). -- Fixed a bug causing the effective session and user are not propagated - to ``box.on_commit`` and ``box.on_rollback`` trigger callbacks when - transaction is synchronous (:tarantool-issue:`8742`). -- Fixed a crash that could happen when Tarantool is started in the - :ref:`background mode ` (:tarantool-issue:`6128`). -- Fixed a bug when MVCC sometimes lost gap record (:tarantool-issue:`8326`). -- Fixed a bug when MVCC rollback of prepared statement could break - internal invariants (:tarantool-issue:`8648`). -- Now MVCC engine automatically aborts a transaction if it reads - changes of a prepared transaction and this transaction is aborted - (:tarantool-issue:`8654`). -- Fixed a bug that caused writing incorrect values into the - ``stream_id`` field of xlog headers (:tarantool-issue:`8783`). -- Fixed a bug when a space that is referenced by a foreign key could - not be truncated even if the referring space was empty (:tarantool-issue:`8946`). -- Fixed a crash that could happen when Tarantool is compiled by - ``clang`` version 15 and above with enabled AddressSanitizer - (`tarantool/tarantool-qa#321 `_). -- Fixed a use-after-free bug in iproto server code (:tarantool-issue:`9037`). -- Fixed a heap-buffer-overflow bug in fiber creation code (:tarantool-issue:`9026`). - -Memtx -~~~~~ - -- Fixed a heap-use-after-free bug in the transaction manager, which - could occur when performing a DDL operation concurrently with a - transaction on the same space (:tarantool-issue:`8781`). - -Vinyl -~~~~~ - -- Fixed a heap-use-after-free bug in the Vinyl read iterator caused by - a race between a disk read and a memory dump task. The bug could lead - to a crash or an invalid query result (:tarantool-issue:`8852`). - -Replication -~~~~~~~~~~~ - -- Fixed a possible failure to promote the desired node by - ``box.ctl.promote()`` on a cluster with nodes configured with - ``election_mode = "candidate"`` (:tarantool-issue:`8497`). -- Fixed nodes configured with ``election_mode = 'candidate'`` - spuriously detecting a split-vote when another candidate should win - with exactly a quorum of votes for it (:tarantool-issue:`8698`). - -LuaJIT -~~~~~~ - -Backported patches from the vanilla LuaJIT trunk (:tarantool-issue:`8516`, :tarantool-issue:`8825`). -The following issues were fixed as part of this activity: - -- Fixed canonicalization of +-0.0 keys for ``IR_NEWREF``. - -- Fixed result truncation for ``bit.rol`` on x86_64 platforms. - -- Fixed ``lua_yield()`` invocation inside C hooks. - -- Fixed memory chunk allocation beyond the memory limit. - -- Fixed TNEW load forwarding with instable types. - -- Fixed use-def analysis for ``BC_VARG``, ``BC_FUNCV``. - -- Fixed ``BC_UCLO`` insertion for returns. - -- Fixed recording of ``BC_VARG`` with unused vararg values. - -- Initialization instructions on trace are now emitted only for the - first member of a union. - -- Prevent integer overflow while parsing long strings. - -- Fixed various ``^`` operator and ``math.pow()`` function - inconsistencies. - -- Fixed parsing with predicting ``next()`` and ``pairs()``. - -- Fixed binary number literal parsing. Parsing of binary number with a - zero fractional part raises error too now. - -- Fixed load forwarding optimization applied after table rehashing. - -- Fixed recording of the ``BC_TSETM``. - -Lua -~~~ - -- Fixed the xlog reader Lua module to show unknown row header fields. - Before this change the xlog reader silently skipped them. - -Netbox -^^^^^^ - -- Fixed a heap-use-after-free bug in the function creating a tuple - format Lua object for ``net.box`` (:tarantool-issue:`8889`). - -.. _box-1: - -Box -~~~ - -- Fixed the memory leaks caused by the multi-statement transaction - errors in the space index building and the space format checking - operations (:tarantool-issue:`8773`). -- Fixed a bug in the box console implementation because of which the - ``language`` parameter was shared between connected clients - (:tarantool-issue:`8817`). -- Fixed an invalid memory access in a corner case of a specialized - comparison function (:tarantool-issue:`8899`). - -Console -~~~~~~~ - -- Fixed console ignoring ``-i`` flag in case stdin is not a tty - (:tarantool-issue:`5064`). - -Datetime -~~~~~~~~ - -- Fixed a bug raising a false positive error when creating new - intervals with range boundary values (:tarantool-issue:`8878`). -- Fixed a bug with buffer overflow in ``tnt_strptime`` (:tarantool-issue:`8502`). - -Http -~~~~ - -- Fixed a streaming connection stuck if etcd is stopped unexpectedly - (:tarantool-issue:`9086`). - -Msgpack -~~~~~~~ - -- Fixed decoding datetime intervals with fields larger than possible - int32 values (:tarantool-issue:`8887`). diff --git a/doc/release/2.11.0.rst b/doc/release/2.11.0.rst deleted file mode 100644 index cc96deefd1..0000000000 --- a/doc/release/2.11.0.rst +++ /dev/null @@ -1,623 +0,0 @@ -Tarantool 2.11 (LTS) -==================== - -Release date: May 24, 2023 - -Releases on GitHub: :tarantool-release:`2.11.7`, :tarantool-release:`2.11.6`, :tarantool-release:`2.11.5`, :tarantool-release:`2.11.4`, :tarantool-release:`2.11.3`, :tarantool-release:`2.11.2`, :tarantool-release:`2.11.1`, :tarantool-release:`2.11.0` - -The 2.11 release of Tarantool includes many new features and fixes. -This document provides an overview of the most important features for the Enterprise and Community editions. - -2.11 is the long-term support (LTS) release with two years of maintenance. -This means that you will receive all the necessary security fixes and bug fixes throughout this period, and -be able to get technical support afterward. -You can learn more about the Tarantool release policy from the :doc:`corresponding document `. - -.. container:: table - - .. list-table:: - :widths: 50 50 - :header-rows: 1 - - * - :ref:`Enterprise Edition <2-11-enterprise>` - - :ref:`Community Edition <2-11-community>` - - * - * :ref:`Security enhancements <2-11-security_enhancements>` - * :ref:`Read views <2-11-read_views>` - * :ref:`Data compression improvements <2-11-data_compression_improvements>` - * :ref:`WAL extensions <2-11-wal_extensions>` - - * :ref:`Pagination <2-11-pagination>` - * :ref:`Downgrading a database <2-11-downgrading_database>` - * :ref:`New bootstrap strategy <2-11-new_bootstrap_strategy>` - * :ref:`Limitation of fiber execution time <2-11-limit_fiber_execution>` - * :ref:`Per-module logging <2-11-per_module_logging>` - * :ref:`HTTP client enhancements <2-11-http_client>` - * :ref:`Linearizable read <2-11-linearizable_read>` - * :ref:`Explicit sequential scanning in SQL <2-11-sequential_scanning_sql>` - * :ref:`Strict fencing in RAFT <2-11-strict_fencing_raft>` - -.. _2-11-upgrades: - -Upgrading to Tarantool 2.11 ---------------------------- - -Tarantool provides the live upgrade mechanism that enables cluster upgrade without -downtime. In case of upgrade issues, you can roll back to the original state -without downtime as well. - -To learn how to upgrade to Tarantool 2.11, see :doc:`Upgrades `. - -.. _2-11-enterprise: - -Enterprise Edition ------------------- - - -.. _2-11-security_enhancements: - -Security enhancements -~~~~~~~~~~~~~~~~~~~~~ - - -.. _2-11-encrypted_ssl_tls_keys: - -Encrypted SSL/TLS keys -********************** - -Tarantool Enterprise Edition now supports encrypted SSL/TLS private key files protected with a password. -Given that most certificate authorities generate encrypted keys, this feature simplifies the maintenance of Tarantool instances. - -A password can be provided using either the new ``ssl_password`` URI parameter or in a text file specified using ``ssl_password_file``, for example: - -.. code-block:: lua - - box.cfg{ listen = { - uri = 'localhost:3301', - params = { - transport = 'ssl', - ssl_key_file = '/path_to_key_file', - ssl_cert_file = '/path_to_cert_file', - ssl_ciphers = 'HIGH:!aNULL', - ssl_password = 'topsecret' - } - }} - -To learn more, see :ref:`Traffic encryption `. - - -.. _2-11-security_enforcement_options: - -Security enforcement options -**************************** - -With 2.11, Tarantool Enterprise Edition includes new security enforcement options. -These options enable you to enforce the use of strong passwords, set up a maximum password age, and so on. -For example, the ``password_min_length`` configuration option specifies the minimum number of characters for a password: - -.. code-block:: lua - - box.cfg{ password_min_length = 10 } - -To specify the maximum period of time (in days) a user can use the same password, you can use the ``password_lifetime_days`` option, which uses the system clock under the hood: - -.. code-block:: lua - - box.cfg{ password_lifetime_days = 365 } - -Note that by default, new options are not specified. -You can learn more about all the available options from the -:ref:`Authentication restrictions ` and -:ref:`Password policy ` sections. - - -.. _2-11-pap_sha_256: - -PAP-SHA256 authentication method -******************************** - -By default, Tarantool uses the CHAP protocol to authenticate users and applies SHA-1 hashing to passwords. -In this case, password hashes are stored in the ``_user`` space unsalted. -If an attacker gains access to the database, they may crack a password, for example, using a rainbow table. - -With the Enterprise Edition, you can enable PAP authentication with the SHA256 hashing algorithm. -For PAP, a password is salted with a user-unique salt before saving it in the database. - -Given that PAP transmits a password as plain text, Tarantool requires configuring -:ref:`SSL/TLS `. -Then, you need to specify the ``box.cfg.auth_type`` option as follows: - -.. code-block:: lua - - box.cfg{ auth_type = 'pap-sha256' } - -Learn more from the :ref:`Authentication protocol ` section. - - - - -.. _2-11-read_views: - -Read views -~~~~~~~~~~ - -Starting with 2.11, Tarantool Enterprise Edition provides the ability to create read views - in-memory snapshots of the entire database that aren't affected by future data modifications. -Read views can be used to make complex analytical queries. -This reduces the load on the main database and improves RPS for a single Tarantool instance. - -Working with read views consists of three main steps: - -1. To create a read view, call the ``box.read_view.open()`` function: - - .. code-block:: tarantoolsession - - tarantool> read_view1 = box.read_view.open({name = 'read_view1'}) - -2. After creating a read view, you can access database spaces and their indexes and get data using the familiar ``select`` and ``pairs`` data-retrieval operations, for example: - - .. code-block:: tarantoolsession - - tarantool> read_view1.space.bands:select({}, {limit = 4}) - --- - - - [1, 'Roxette', 1986] - - [2, 'Scorpions', 1965] - - [3, 'Ace of Base', 1987] - - [4, 'The Beatles', 1960] - -3. When a read view is no longer needed, close it using the ``read_view_object:close()`` method: - - .. code-block:: tarantoolsession - - tarantool> read_view1:close() - -To learn more, see the :ref:`Read views ` topic. - - -.. _2-11-data_compression_improvements: - -Data compression improvements -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tarantool Enterprise Edition now includes the ``zlib`` algorithm for :ref:`tuple compression `. -This algorithm shows good performance in data decompression, -which reduces CPU usage if the volume of read operations significantly exceeds the volume of write operations. - -To use the new algorithm, set the ``compression`` option to ``zlib`` when formatting a space: - -.. code-block:: lua - - box.space.my_space:format{ - {name = 'id', type = 'unsigned'}, - {name = 'data', type = 'string', compression = 'zlib'}, - } - -The new :ref:`compress ` module provides an API for compressing and decompressing arbitrary data strings using the same algorithms available for tuple compression: - -.. code-block:: lua - - compressor = require('compress.zlib').new() - - data = compressor:compress('Hello world!') -- returns a binary string - compressor:decompress(data) -- returns 'Hello world!' - - - -.. _2-11-wal_extensions: - -WAL extensions -~~~~~~~~~~~~~~ - -Tarantool can use a write-ahead log not only to maintain data persistence and replication. -Another use case is implementing a CDC (Change Data Capture) utility that transforms a data replication stream and provides the ability to replicate data from Tarantool to an external storage. - -.. image:: _images/wal_extensions.png - :align: center - :alt: Write-ahead log extensions - -With 2.11, Tarantool Enterprise Edition provides WAL extensions that add auxiliary information to each write-ahead log record. -For example, you can enable storing old and new tuples for each write-ahead log record. -This is especially useful for the ``update`` operation because a write-ahead log record contains only a key value. - -See the :ref:`WAL extensions ` topic to learn how to enable and configure WAL extensions. - - - -.. _2-11-community: - -Community Edition ------------------ - -.. _2-11-pagination: - -Pagination -~~~~~~~~~~ - - -With the 2.11 version, Tarantool supports pagination and enables the ability to get data in chunks. -The :ref:`index_object:select() ` and :ref:`index_object:pairs() ` methods now provide the ``after`` option that specifies a tuple or a tuple's position after which ``select`` starts the search. -In the example below, the ``select`` operation gets maximum 3 tuples after the specified tuple: - -.. code-block:: tarantoolsession - - tarantool> bands.index.primary:select({}, {after = {4, 'The Beatles', 1960}, limit = 3}) - --- - - - [5, 'Pink Floyd', 1965] - - [6, 'The Rolling Stones', 1962] - - [7, 'The Doors', 1965] - ... - -The ``after`` option also accepts the position of the tuple represented by the base64 string. -For example, you can set the ``fetch_pos`` boolean option to ``true`` to return the position of the last selected tuple as the second value: - -.. code-block:: tarantoolsession - - tarantool> result, position = bands.index.primary:select({}, {limit = 3, fetch_pos = true}) - --- - ... - -Then, pass this position as the ``after`` parameter: - -.. code-block:: tarantoolsession - - tarantool> bands.index.primary:select({}, {limit = 3, after = position}) - --- - - - [4, 'The Beatles', 1960] - - [5, 'Pink Floyd', 1965] - - [6, 'The Rolling Stones', 1962] - ... - -The new ``after`` and ``fetch_pos`` options are also implemented by the built-in ``net.box`` connector. -For example, you can use these options to get data :ref:`asynchronously `. - - - -.. _2-11-downgrading_database: - -Downgrading a database -~~~~~~~~~~~~~~~~~~~~~~ - -The 2.11 version provides the ability to downgrade a database to the specified Tarantool version using the :ref:`box.schema.downgrade() ` method. -This might be useful in the case of a failed upgrade. - -To prepare a database for using it on an older Tarantool instance, call ``box.schema.downgrade`` and pass the desired Tarantool version: - -.. code-block:: tarantoolsession - - tarantool> box.schema.downgrade('2.8.4') - -To see Tarantool versions available for downgrade, call ``box.schema.downgrade_versions()``. -The earliest release available for downgrade is :doc:`2.8.2 `. - - - -.. _2-11-new_bootstrap_strategy: - -New bootstrap strategy -~~~~~~~~~~~~~~~~~~~~~~ - -In previous Tarantool versions, the :ref:`replication_connect_quorum ` option was used to specify the number of running nodes to start a replica set. -This option was designed to simplify a replica set bootstrap. -But in fact, this behavior brought some issues during a cluster lifetime and maintenance operations, for example: - -* Users who didn't change this option encountered problems with the partial cluster bootstrap. -* Users who changed the option encountered problems during the instance restart. - -With 2.11, ``replication_connect_quorum`` is deprecated in favor of :ref:`bootstrap_strategy `. -This option works during a replica set bootstrap and implies sensible default values for other parameters based on the replica set configuration. -Currently, ``bootstrap_strategy`` accepts two values: - -* ``auto``: a node doesn't boot if half or more of the other nodes in a replica set are not connected. - For example, if the replication parameter contains 2 or 3 nodes, a node requires 2 connected instances. - In the case of 4 or 5 nodes, at least 3 connected instances are required. - Moreover, a bootstrap leader fails to boot unless every connected node has chosen it as a bootstrap leader. -* ``legacy``: a node requires the ``replication_connect_quorum`` number of other nodes to be connected. - This option is added to keep the compatibility with the current versions of Cartridge and might be removed in the future. - - - -.. _2-11-limit_fiber_execution: - -Limitation of fiber execution time -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Starting with 2.11, if a fiber works too long without yielding control, you can use a fiber slice to limit its execution time. -The :ref:`fiber_slice_default ` ``compat`` option controls the default value of the maximum fiber slice. -In future versions, this option will be set to ``true`` by default. - -There are two slice types - a warning and an error slice: - -* When a warning slice is over, a warning message is logged, for example: - - .. code-block:: console - - fiber has not yielded for more than 0.500 seconds - -* When an error slice is over, the fiber is cancelled and the ``FiberSliceIsExceeded`` error is thrown: - - .. code-block:: console - - FiberSliceIsExceeded: fiber slice is exceeded - -Note that these messages can point at issues in the existing application code. -These issues can cause potential problems in production. - -The fiber slice is checked by all functions operating on spaces and indexes, -such as ``index_object.select()``, ``space_object.replace()``, and so on. -You can also use the ``fiber.check_slice()`` function in application code to check whether the slice for the current fiber is over. - -The example below shows how to use ``fiber.set_max_slice()`` to limit the slice for all fibers. -``fiber.check_slice()`` is called inside a long-running operation to determine whether a slice for the current fiber is over. - -.. code-block:: lua - - -- app.lua -- - fiber = require('fiber') - clock = require('clock') - - fiber.set_max_slice({warn = 1.5, err = 3}) - time = clock.monotonic() - function long_operation() - while clock.monotonic() - time < 5 do - fiber.check_slice() - -- Long-running operation ⌛⌛⌛ -- - end - end - long_operation_fiber = fiber.create(long_operation) - -The output should look as follows: - -.. code-block:: console - - $ tarantool app.lua - fiber has not yielded for more than 1.500 seconds - FiberSliceIsExceeded: fiber slice is exceeded - - -To learn more about fiber slices, see the :ref:`Limit execution time ` section. - - -.. _2-11-per_module_logging: - -Per-module logging -~~~~~~~~~~~~~~~~~~ - -Tarantool 2.11 adds support for modules in the :ref:`logging ` subsystem. -You can configure different log levels for each module using the ``box.cfg.log_modules`` configuration option. -The example below shows how to set the ``info`` level for ``module1`` and the ``error`` level for ``module2``: - -.. code-block:: tarantoolsession - - tarantool> box.cfg{log_level = 'warn', log_modules = {module1 = 'info', module2 = 'error'}} - --- - ... - -To create a log module, call the ``require('log').new()`` function: - -.. code-block:: tarantoolsession - - tarantool> module1_log = require('log').new('module1') - --- - ... - tarantool> module2_log = require('log').new('module2') - --- - ... - -Given that ``module1_log`` has the ``info`` logging level, calling ``module1_log.info`` shows a message but ``module1_log.debug`` is swallowed: - -.. code-block:: tarantoolsession - - tarantool> module1_log.info('Hello from module1!') - 2023-05-12 15:10:13.691 [39202] main/103/interactive/module1 I> Hello from module1! - --- - ... - tarantool> module1_log.debug('Hello from module1!') - --- - ... - -Similarly, ``module2_log`` swallows all events with severities below the ``error`` level: - -.. code-block:: tarantoolsession - - tarantool> module2_log.info('Hello from module2!') - --- - ... - - - - -.. _2-11-http_client: - -HTTP client enhancements -~~~~~~~~~~~~~~~~~~~~~~~~ - -.. _2-11-content_serialization: - -Content serialization -********************* - -The :ref:`HTTP client ` now automatically serializes the content in a specific format when sending a request based on the specified ``Content-Type`` header and supports all the Tarantool built-in types. -By default, the client uses the ``application/json`` content type and sends data serialized as JSON: - -.. code-block:: lua - - local http_client = require('http.client').new() - local uuid = require('uuid') - local datetime = require('datetime') - - response = http_client:post('https://httpbin.org/anything', { - user_uuid = uuid.new(), - user_name = "John Smith", - created_at = datetime.now() - }) - -The body for the request above might look like this: - -.. code-block:: console - - { - "user_uuid": "70ebc08d-2a9a-4ea7-baac-e9967dd45ac7", - "user_name": "John Smith", - "created_at": "2023-05-15T11:18:46.160910+0300" - } - - -To send data in a YAML or MsgPack format, set the ``Content-Type`` header explicitly to ``application/yaml`` or ``application/msgpack``, for example: - -.. code-block:: lua - - response = http_client:post('https://httpbin.org/anything', { - user_uuid = uuid.new(), - user_name = "John Smith", - created_at = datetime.now() - }, { - headers = { - ['Content-Type'] = 'application/yaml', - } - }) - - - - -.. _2-11-query_and_form_parameters: - -Query and form parameters -************************* - -You can now encode query and form parameters using the new ``params`` request option. -In the example below, the requested URL is ``https://httpbin.org/get?page=1``. - -.. code-block:: lua - - local http_client = require('http.client').new() - - response = http_client:get('https://httpbin.org/get', { - params = { page = 1 }, - }) - -Similarly, you can send form parameters using the ``application/x-www-form-urlencoded`` type as follows: - -.. code-block:: lua - - local http_client = require('http.client').new() - - response = http_client:post('https://httpbin.org/anything', nil, { - params = { user_id = 1, user_name = 'John Smith' }, - }) - - -.. _2-11-streaming: - -Streaming -********* - - -The HTTP client now supports chunked writing and reading of request and response data, respectively. -The example below shows how to get chunks of a JSON response sequentially instead of waiting for the entire response: - -.. code-block:: lua - - local http_client = require('http.client').new() - local json = require('json') - - local timeout = 1 - local io = http_client:get(url, nil, {chunked = true}) - for i = 1, 3 do - local data = io:read('\r\n', timeout) - if len(data) == 0 then - -- End of the response. - break - end - local decoded = json.decode(data) - -- <..process decoded data..> - end - io:finish(timeout) - -Streaming can also be useful to upload a large file to a server or to subscribe to changes in ``etcd`` using the gRPC-JSON gateway. -The example below demonstrates communication with the ``etcd`` stream interface. -The request data is written line-by-line, and each line represents an ``etcd`` command. - -.. code-block:: lua - - local http_client = require('http.client').new() - - local io = http_client:post('http://localhost:2379/v3/watch', nil, {chunked = true}) - io:write('{"create_request":{"key":"Zm9v"}}') - local res = io:read('\n') - print(res) - -- <..you can feed more commands here..> - io:finish() - - - - -.. _2-11-linearizable_read: - -Linearizable read -~~~~~~~~~~~~~~~~~ - -Linearizability of read operations implies that if a response for a write request arrived earlier than a read request was made, this read request should return the results of the write request. -Tarantool 2.11 introduces the new ``linearizable`` isolation level for :ref:`box.begin() `: - -.. code-block:: lua - - box.begin({txn_isolation = 'linearizable', timeout = 10}) - box.space.my_space:select({1}) - box.commit() - -When called with ``linearizable``, ``box.begin()`` yields until the instance receives enough data from remote peers to be sure that the transaction is linearizable. - -There are several prerequisites for linearizable transactions: - -* Linearizable transactions may only perform requests to synchronous, local, or temporary memtx spaces. -* Starting a linearizable transaction requires :ref:`box.cfg.memtx_use_mvcc_engine ` to be set to ``true``. -* The node is the replication source for at least ``N - Q + 1`` remote replicas. - Here ``N`` is the count of registered nodes in the cluster and ``Q`` is :ref:`replication_synchro_quorum `. - So, for example, you can't perform a linearizable transaction on anonymous replicas. - - - -.. _2-11-sequential_scanning_sql: - -Explicit sequential scanning in SQL -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tarantool is primarily designed for OLTP workloads. -This means that data reads are supposed to be relatively small. -However, a suboptimal SQL query can cause a heavy load on a database. - -The new ``sql_seq_scan`` :ref:`session setting ` is added to explicitly cancel full table scanning. -The request below should fail with the ``Scanning is not allowed for 'T'`` error: - -.. code-block:: sql - - SET SESSION "sql_seq_scan" = false; - SELECT a FROM t WHERE a + 1 > 10; - - -To enable table scanning explicitly, use the new ``SEQSCAN`` keyword: - -.. code-block:: sql - - SET SESSION "sql_seq_scan" = false; - SELECT a FROM SEQSCAN t WHERE a + 1 > 10; - -In future versions, ``SEQSCAN`` will be required for scanning queries with the ability to disable the check using the ``sql_seq_scan`` session setting. -The new behavior can be enabled using a :ref:`corresponding compat option `. - - -.. _2-11-strict_fencing_raft: - -Strict fencing in RAFT -~~~~~~~~~~~~~~~~~~~~~~ - -Leader election is implemented in Tarantool as a modification of the Raft algorithm. -The 2.11 release adds the ability to specify the leader fencing mode that affects the leader election process. - -.. NOTE:: - - Currently, Cartridge does not support leader election using Raft. - -You can control the fencing mode using the :ref:`election_fencing_mode ` property, which accepts the following values: - -* In ``soft`` mode, a connection is considered dead if there are no responses for ``4 * replication_timeout`` seconds both on the current leader and the followers. -* In ``strict`` mode, a connection is considered dead if there are no responses for ``2 * replication_timeout`` seconds on the current leader and ``4 * replication_timeout`` seconds on the followers. - This improves the chances that there is only one leader at any time. diff --git a/doc/release/2.2.1.rst b/doc/release/2.2.1.rst deleted file mode 100644 index 9578628c04..0000000000 --- a/doc/release/2.2.1.rst +++ /dev/null @@ -1,293 +0,0 @@ -.. _whats_new_221: - -Tarantool 2.2.1 -=============== - -Release: :tarantool-release:`2.2.1`. -Release type: beta. Release date: 2019-08-02. - -Overview --------- - -This is a :ref:`beta ` version of the 2.2 series. The label -"beta" means we have no critical issues and all planned features are there. - -The goal of this release is to introduce new indexing features, extend SQL -feature set, and improve integration with the core. - - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary data layout, -client-server protocol and replication protocol. -You can :ref:`upgrade ` using the ``box.schema.upgrade()`` -procedure. - -Functionality added or changed ------------------------------- - -* (SQL) ALTER now allows to add a constraint: - - .. code-block:: sql - - CREATE TABLE t2 (id INT PRIMARY KEY); - ALTER TABLE t2 ADD CONSTRAINT ck CHECK(id > 0); - -* (SQL) CHECK constraints are validated during DML operations performed - from the Lua land: - - .. code-block:: lua - - s = box.schema.space.create('withdata') - pk = s:create_index('pk') - s:format({{'idx', 'number'}}) - s:create_check_constraint('le10', '"idx" < 10') - - .. code-block:: tarantoolsession - - tarantool> s:insert({11}) - --- - - error: 'Check constraint failed ''le10'': "idx" < 10' - ... - -* (SQL) New :ref:`SQL types ` introduced: - VARBINARY, UNSIGNED, and `BOOLEAN`. - -* (SQL) CREATE TABLE statement (and all other data definition statements) - are now truly transactional. - -* (SQL) SQL now uses Tarantool diagnostics API to set errors, so error reporting - now provides an error code in addition to error message. - -* (SQL) Multiple improvements to the type system to make it more consistent. - -* (SQL) Added aliases for LENGTH() from ANSI SQL: - CHAR_LENGTH() and CHARACTER_LENGTH(). - -* (SQL) It is possible to use HAVING without GROUP BY. - -* (Server) New fixed point type (DECIMAL) introduced to Tarantool: - - .. code-block:: tarantoolsession - - decimal = require('decimal') - tarantool> a = decimal.new('123.456789') - --- - ... - tarantool> decimal.precision(a) - --- - - 9 - ... - tarantool> decimal.scale(a) - --- - - 6 - ... - tarantool> decimal.round(a, 4) - --- - - '123.4568' - ... - -* (Server) Multikey index support: - - .. code-block:: lua - - -- Multikey indexes (for memtx tree & vinyl); - -- cannot be primary; may be non-unique - s = box.schema.space.create('clients', {engine = 'vinyl'}) - pk = s:create_index('pk') - phone_type = s:create_index('phone_type', { - unique = false, - parts = {{'[3][*].type', 'str'}}}) - - s:insert({1, 'James', - {{type = 'home', number = '999'}, - {type = 'work', number = '777'} - }}) - s:insert({2, 'Bob', - {{type = 'work', number = '888'}}}) - s:insert({3, 'Alice', {{type = 'home', number = '333'}}}) - - .. code-block:: tarantoolsession - - tarantool> phone_type:select('work') - --- - - - [1, 'James', [{'type': 'home', 'number': '999'}, - {'type': 'work', 'number': '777'}]] - - [2, 'Bob', [{'type': 'work', 'number': '888'}]] - ... - -* (Server) Now it is possible to make functions persistent: - - .. code-block:: lua - - box.schema.func.create('summarize', - {body = [[function(a,b) return a+b end]], - is_deterministic = true}) - - .. code-block:: tarantoolsession - - tarantool> box.func.summarize - - aggregate: none - returns: any - exports: - lua: true - sql: false - id: 66 - is_sandboxed: false - setuid: false - is_multikey: false - is_deterministic: true - body: function(a,b) return a+b end - name: summarize - language: LUA - - tarantool> box.func.summarize:call({1, 2}) - --- - - 3 - ... - -* (Server) Functional indexes implemented: - - .. code-block:: lua - - -- Functional multikey indexes: define is_multikey = true - -- in function definition and return a table of keys from function - lua_code = [[function(tuple) - local address = string.split(tuple[2]) - local ret = {} - for _, v in pairs(address) do table.insert(ret, {utf8.upper(v)}) end - return ret - end]] - box.schema.func.create('addr_extractor', {body = lua_code, - is_deterministic = true, - is_sandboxed = true, - opts = {is_multikey = true}}) - s = box.schema.space.create('withdata') - pk = s:create_index('name', {parts = {1, 'string'}}) - idx = s:create_index('addr', {unique = false, func = box.func.addr_extractor.id, parts = {{1, 'string', collation = 'unicode_ci'}}}) - - s:insert({"James", "SIS Building Lambeth London UK"}) - s:insert({"Sherlock", "221B Baker St Marylebone London NW1 6XE UK"}) - - .. code-block:: tarantoolsession - - tarantool> idx:select('Sis') - --- - - - ['James', 'SIS Building Lambeth London UK'] - ... - -* Partial core dumps, which are now on by default. - It is now possible to avoid dumping tuples at all during core dump. - -* Data definition statements, such as create or alter index, which do not yield, - can now be used in a transaction. This in practice includes all statements - except creating an index on a non-empty space, or changing a format on - a non-empty space. - -* It is now possible to set a sequence not only for the first part of the index: - - .. code-block:: lua - - s.index.pk:alter{sequence = {field = 2}} - -* Allow to call ``box.session.exists()`` and ``box.session.fd()`` - without any arguments. - -* New function introduced to get an index key from a tuple: - - .. code-block:: lua - - s = box.schema.space.create('withdata') - pk = s:create_index('pk') - sk = s:create_index('sk', {parts = { - {2, 'number', path = 'a'}, - {2, 'number', path = 'b'}}}) - s:insert{1, {a = 1, b = 1}} - s:insert{2, {a = 1, b = 2}} - s:insert{3, {a = 3, b = 3}} - sk:select(2) - - key_def_lib = require('key_def') - key_def = key_def_lib.new(pk.parts) - for _, tuple in sk:pairs({1}) do - local key = key_def:extract_key(tuple) - pk:delete(key) - end - s:select() - -* (Engines) New protocol (called :ref:`SWIM `) implemented to keep - a table of cluster members. - -* (Engines) Removed yields from Vinyl DDL on commit triggers. - -* (Engines) Improved performance of SELECT-s on memtx spaces. - The drawback is that now every memtx-tree tuple consumes extra 8 bytes for - a search hint. - -* (Engines) Indexes of memtx spaces are now built in background fibers. - This means that we do not block the event loop during index build anymore. - -* Replication applier now can apply transactions which were concurrent - on the master concurrently on replica. This dramatically improves replication - peak performance, from ~50K writes per second to 200K writes per second and - higher on a single instance. - -* Transaction boundaries introduced to replication protocol. - This means that Tarantool replication is now transaction-safe, and also - reduces load on replica write ahead log in case the master uses a lot of - multi-statement transactions. - -* Tuple access by field name for ``net.box``: - - .. code-block:: lua - - box.cfg{listen = 3302} - box.schema.user.grant('guest','read, write, execute', 'space') - box.schema.user.grant('guest', 'create', 'space') - box.schema.create_space("named", {format = {{name = "id"}}}) - box.space.named:create_index('id', {parts = {{1, 'unsigned'}}}) - box.space.named:insert({1}) - - require('net.box').connect('localhost', 3302).space.named:get(1).id - -* Cluster id check is now the slave’s responsibility. - -* It is now possible to set the output format to Lua instead of YAML - in the :ref:`interactive console `. - -* Multiple new collations added. - New collations follow this naming pattern: - - .. code-block:: none - - unicode__ - - Three strengths are used: - - * Primary - "s1” - * Secondary - "s2" - * Tertiary - "s3" - - The following list contains so-called "stable" collations -- the - ones whose sort order doesn't depend on the ICU version: - - .. code-block:: none - - unicode_am_s3 - unicode_fi_s3 - unicode_de__phonebook_s3 - unicode_haw_s3 - unicode_he_s3 - unicode_hi_s3 - unicode_is_s3 - unicode_ja_s3 - unicode_ko_s3 - unicode_lt_s3 - unicode_pl_s3 - unicode_si_s3 - unicode_es_s3 - -* New function ``utime()`` introduced to the ``fio`` module. - -* :ref:`Merger ` for tuples streams added. diff --git a/doc/release/2.2.2.rst b/doc/release/2.2.2.rst deleted file mode 100644 index 9b95abb63e..0000000000 --- a/doc/release/2.2.2.rst +++ /dev/null @@ -1,351 +0,0 @@ -Tarantool 2.2.2 -=============== - -Release: :tarantool-release:`2.2.2` -Date: 2019-12-31 Tag: 2.2.2-0-g0a577ff - -Overview --------- - -2.2.2 is the first stable version of the 2.2 release series. The label -stable means we have all planned features implemented and we see no -high-impact issues. - -This release resolves roughly 75 issues since the latest beta version. -There may be bugs in less common areas, please feel free to file an -issue at `GitHub `_. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -There are changes labeled with **[Breaking change]**. It means that the -old behaviour was considered error-prone and therefore changed to -protect users from unintended mistakes. However, there is a little -probability that someone can lean on the old behaviour, and this label -is to bring attention to the things that have been changed. - -Core -~~~~ - -- **[Breaking change]** Drop ``rows_per_wal`` ``box.cfg()`` option in - favor of ``wal_max_size`` (:tarantool-issue:`3762`) - -Lua -~~~ - -- **[Breaking change]** json and msgpack serializers now raise an error - when a depth of data nesting exceeds ``encode_max_depth`` option - value. The default value of the option is increased from 32 to 128. - ``encode_deep_as_nil`` option was added to give ability to set the - old behaviour back (:tarantool-issue:`4434`). Note: Those options can be set using - ``json.cfg({<...>})`` or ``msgpack.cfg({<...>})``. Note: box data - modification functions (``insert``, ``replace``, ``update``, - ``upsert``) follows options of default msgpack serializer instance - and now they will raise an error by default on too nested data rather - then cut them silently. This behaviour can be configured using - ``msgpack.cfg({<...>})``. Note: ``box.tuple.new()``, - ``space:update()``, ``space:upsert()`` and several other functions - did not follow ``encode_max_depth`` option, now they do (see also - ‘Bug fixes’). Note: ``json.cfg`` and ``msgpack.cfg`` tables did not - updated when an option is changed, now they show actual values (see - also ‘Bug fixes’). -- Show line and column in json.decode() errors (:tarantool-issue:`3316`) -- Exit gracefully when a main script throws an error: notify systemd, - log the error (:tarantool-issue:`4382`) -- key_def: accept both ``field`` and ``fieldno`` in - ``key_def.new(<...>)`` (:tarantool-issue:`4519`). Originally ``key_def.new(<...>)`` - accepts only ``fieldno`` to allow creation with - ``.parts`` as argument. However index definition format - (``.create_index(<...>)``) is different and requires - ``field``. Now both are supported. -- Enable ``__pairs`` and ``__ipairs`` metamethods from Lua 5.2 (:tarantool-issue:`4560`). - We still conform Lua 5.1 API, which is not always compatible with Lua - 5.2. The change is only about those metamethods. - -Misc -~~~~ - -- tarantoolctl: allow to start instances with delayed box.cfg{} - (:tarantool-issue:`4435`) -- Add package builds and deployment for the following Linux distros: - - - Ubuntu 19.10 Eoan Ermine (:tarantool-issue:`4583`) - - CentOS 8 (:tarantool-issue:`4543`) - - Fedora 31 (:tarantool-issue:`4612`) - -Bugs fixed ----------- - -SQL -~~~ - -- Modify type of a binding value in a query response metainformation: - always return INTEGER rather then UNSIGNED, even for positive values. - This is necessary for consistency with integer literal types. - `c5246686 `_. -- Reuse noSQL way to compare floating point values with integral ones. - This allows to handle corner cases like - ``SELECT 18446744073709551615.0 > 18446744073709551615`` uniformly. - `12431ed4 `_. -- Create or alter of a table with a foreign key may lead to wrong - bytecode generation that may cause a crash or wrong result (:tarantool-issue:`4495`) -- Allow to update a scalar value using SQL in a space that was created - from Lua and contains ‘array’, ‘map’ or ‘any’ field (:tarantool-issue:`4189`). Note: - Tarantool/SQL provides operations on scalar types and does not - support ‘array’ and ‘map’ per se. -- ``INDEXED BY`` clause now obligates the query planner to choose - provided index, - `411be0f0 `_ -- Fix dirty memory access when constructing query plan involving search - of floating point value in index over integer field (:tarantool-issue:`4558`) - -.. _core-1: - -Core -~~~~ - -- Detect a new invalid json path case (:tarantool-issue:`4419`) -- Randomize the next checkpoint time also after a manual - ``box.snapshot()`` (:tarantool-issue:`4432`) -- Fix memory leak in call / eval in the case when a transaction is not - committed (:tarantool-issue:`4388`) -- Eliminate warning re ‘strip_core’ box.cfg option on MacOS and - FreeBSD (:tarantool-issue:`4464`) -- The msgpack serializer that is under ``box.tuple.new()`` (called - tuple serializer) did not reflect options set by - ``msgpack.cfg({<...>})``, part of (:tarantool-issue:`4434`). Aside of - ``box.tuple.new()`` behaviour itself, it may affect tuple:frommap(), - methods of key_def Lua module, tuple and table merger sources, - net.box results of ``:select()`` and ``:execute()`` calls, xlog Lua - module. -- box’s ``update`` and ``upsert`` now follow - ``msgpack.cfg({encode_max_depth = <...>}`` option, part of (:tarantool-issue:`4434`) -- fiber: make sure the guard page is created, refuse to create a new - fiber otherwise (:tarantool-issue:`4541`). It is possible in case of heavy memory - pressure, say, when there is no resources to split VMAs. -- recovery: build secondary indices in the hot standby mode without - waiting till the main instance termination (:tarantool-issue:`4135`) -- Fix error message for incorrect return value of functional index - extractor function (:tarantool-issue:`4553`) - - - Was: "Key format doesn’t match one defined in functional index ‘’ - of space ‘’: supplied key type is invalid: expected boolean’ - - Now: “<…>: expected array” - -- JSON path index did ignore is_nullable property when a space had a - format (:tarantool-issue:`4520`) -- Forbid ``00000000-0000-0000-0000-000000000000`` as - ``replicaset_uuid`` and ``instance_uuid`` ``box.cfg({<...>})`` - options value, (:tarantool-issue:`4282`). It did not work as expected: the nil UUID was - treated as absence of a value. -- Update cache of universe privileges without reconnect - (:tarantool-issue:`2763`) -- net.box: fix memory leak in ``net_box:connect()`` - (:tarantool-issue:`4588`) -- net.box: don’t fire ``on_connect`` trigger at schema update - (:tarantool-issue:`4593`). - Also don’t fire ``on_disconnect`` trigger if a connection never - entered into ‘active’ state (e.g. when a first schema fetch is - failed). -- func: fix use after free on function unload, - `64f4d06a `_ -- Fix bootstrap.snap file in order to overcome the following warning, - (:tarantool-issue:`4510`) > xlog.c:1934 E> can’t open tx: bootstrap: has some data - after eof marker at 5902 -- Don’t destroy a session until ``box.session.on_disconnect(<...>)`` - triggers will be finished (:tarantool-issue:`4627`). This means that, say, - ``box.session.id()`` can be safely invoked from the ``on_disconnect`` - trigger. Before this change ``box.session.id()`` returns garbage - (usually 0) after yield in the ``on_disconnect`` trigger. Note: - tarantool/queue module is affected by this problem in `some - scenarious `_. It is - especially suggested to update tarantool at least to this release if - you’re using this module. -- func: ``box.schema.func.drop(<..>)`` did not unload unused modules - (:tarantool-issue:`4648`). Also ``box.schema.func.create(<..>)`` did load of a module - again even when another function from the module is loaded. -- Encode Lua number -2^63 as integer in msgpack.encode() and box’s - functions (:tarantool-issue:`4672`) - -Replication -~~~~~~~~~~~ - -- Stop relay on subscribe error - (:tarantool-issue:`4399`) -- Set ``last_row_time`` to ``now`` in ``relay_new`` and - ``relay_start`` - (:tarantool-issue:`4431`) -- Do not abort replication on ER_UNKNOWN_REPLICA - (:tarantool-issue:`4455`) -- Enter orphan mode on manual replication configuration change - (:tarantool-issue:`4424`) -- Disallow bootstrap of read-only masters - (:tarantool-issue:`4321`) -- Prefer to bootstrap a replica from a fully bootstrapped instance - rather than currently bootstrapping one (:tarantool-issue:`4527`). This change enables - the case when two nodes (B, C) are being bootstrapped simultaneously - using the one that is already bootstrapped (A), while A is configured - to replicate from {B, C} and B from {A, C}. -- Return immediately from ``box.cfg{<...>}`` when an instance is - reconfigured with ``replication_connect_quorum = 0`` (:tarantool-issue:`3760`) - This change also fixes the behaviour of reconfiguration with non-zero - ``replication_connect_quorum``: ``box.cfg{<...>}`` returns - immediately regardless of whether connections to upstreams are - established. -- Apply replication ``box.cfg({<...>})`` settings in a strict order - (:tarantool-issue:`4433`) -- Auto reconnect a replica if password is invalid - (:tarantool-issue:`4550`) -- ``box.session.su()`` now reports an error correctly for - ```` longer then BOX_NAME_MAX, which is 65000, - `43e29191 `_ - Was: ‘C++ exception’ Now: ‘name length <…> is greater than - BOX_NAME_MAX’ -- Use empty password when an URI in ``box.cfg{replication = <...>}`` is - like ``login@host:port`` (:tarantool-issue:`4605`). The behaviour match net.box’s one - now. Explicit ``login:@host:port`` was necessary before, otherwise a - replica shows the following error: > Missing mandatory field ‘tuple’ - in request -- Fix segfault during replication configuration - (``box.cfg{replication = <...>}`` call) - (:tarantool-issue:`4440`, - :tarantool-issue:`4576`, - :tarantool-issue:`4586`, - :tarantool-issue:`4643`) - - -Lua -~~~ - -- Fix segfault on ``ffi.C._say()`` without filename - (:tarantool-issue:`4336`) -- Fix ``pwd.getpwall()`` and ``pwd.getgrall()`` hang on CentOS 6 and - FreeBSD 12 (:tarantool-issue:`4428`, :tarantool-issue:`4447`) -- json.encode() now follows ``encode_max_depth`` option for arrays that - leads to a segfault on recursive Lua tables with numeric keys - (:tarantool-issue:`4366`) -- fio.mktree() now reports an error for existing non-directory file - (:tarantool-issue:`4439`) -- Update ``json.cfg`` and ``msgpack.cfg`` tables when an option is - changed, part of (:tarantool-issue:`4434`) -- Fix handling of a socket read error on the console client - (``console.connect()`` or ``tarantoolctl connect/enter <...>``), - `b0b19992 `_ -- Handle ‘not enough memory’ gracefully when it is raised from - ``lua_newthread()`` (:tarantool-issue:`4556`). There are several places where a new Lua - thread is created: - - - Start execution a Lua function call or an eval request (from a - binary protocol, SQL or with ``box.func.<...>:call()``). - - Create of a new fiber. - - Start execution of a trigger. - - Start of encoding into a YAML format (``yaml.encode()``). - -- Fix stack-use-after-scope in json.decode() - (:tarantool-issue:`4637`) - -HTTP client -^^^^^^^^^^^ - -- Use bundled ``libcurl`` rather than system-wide by default, - (:tarantool-issue:`4318`, - :tarantool-issue:`4180`, - :tarantool-issue:`4288`, - :tarantool-issue:`4389`, - :tarantool-issue:`4397`). This closes several known problems - that were fixed in recent libcurl versions, including segfaults, - hangs, memory leaks and performance problems. -- Disable verbose mode when ``{verbose = false}`` is passed, - `5f3d9015 `_ -- Fix assertion fail after curl write error - (:tarantool-issue:`4232`) - -Console Lua output -^^^^^^^^^^^^^^^^^^ - -The new Lua output format is still in the alpha stage and has known -flaws, but we are working to make it rich and stable. - -- Output ``box.NULL`` as ``"box.NULL"`` rather then - ``"cdata: NULL"``, part of (:tarantool-issue:`3834`) (in quotes for now, yes, - due to (:tarantool-issue:`4585`) -- Add semicolon (``;``) as responses delimiter (EOS, end of - stream/statement), analogue of YAMLs end-of-document (``...``) - marker. This is vital for remote clients to determine an end of a - particular response, part of (:tarantool-issue:`3834`). -- Fix hang in the console client (``console.connect()`` or - ``tarantoolctl connect/enter <...>``) after - ``\set output lua[,block]`` command, part of (:tarantool-issue:`3834`). In order to - overcome it two changes were made: - - - Parse ``\set output lua[,block]`` command on a client prior to - sending it to a server, store current responses delimiter (EOS) - and use it to determine end of responses. - - Send ``\set output <...>`` command with a default output mode when - establishing a connection (it is matter if different default modes - are set). - -- Provide ability to get or set current responses delimiter using - ``console.eos([<...>])``, part of (:tarantool-issue:`3834`) - -LuaJIT -~~~~~~ - -- Fix fold machinery misbehaves - (:tarantool-issue:`4376`) -- Fix for ``debug.getinfo(1,'>S')`` - (:tarantool-issue:`3833`) -- Fix ``string.find`` recording - (:tarantool-issue:`4476`) -- Fixed ‘Data segment size exceeds process limit’ error on FreeBSD/x64: - do not change resource limits when it is not necessary - (:tarantool-issue:`4537`) -- fold: keep type of emitted CONV in sync with its mode, - `LuaJIT#524 `__ This - fixes the following assertion fail: > asm_conv: Assertion - \`((IRType)((ir->t).irt & IRT_TYPE)) != st’ failed - -Misc -~~~~ - -- Support ``systemd``\ ’s NOTIFY_SOCKET on OS X - (:tarantool-issue:`4436`) -- Fix linking with static ``openssl`` library - (:tarantool-issue:`4437`) -- Get rid of warning re empty ``NOTIFY_SOCKET`` variable - (:tarantool-issue:`4305`) -- rocks: fix ‘invalid date format’ error when installing a packed rock - (:tarantool-issue:`4481`) -- Remove libyaml from rpm/deb dependencies, because we use bunbled - version of libyaml for the packages (since 2.2.1) - (:tarantool-issue:`4442`) -- Fix boolean CLI options handling in ``tarantoolctl cat <...>``, such - as ``--show-system`` - (:tarantool-issue:`4076`) -- Fix segfault (out of bounds access) when unwinding error occurs at - backtrace printing (:tarantool-issue:`4636`). Backtrace is printed on SIGFPE and - SIGSEGV signal or when LuaJIT find itself in unrecoverable state - (lua_atpanic()). - -Building from sources -^^^^^^^^^^^^^^^^^^^^^ - -- Fix for GCC 4.8.5, which is default version on CentOS 7 - (:tarantool-issue:`4438`) -- Fix OpenSSL linking problems on FreeBSD - (:tarantool-issue:`4490`) -- Fix linking problems on Mac OS when several toolchains are in PATH - (:tarantool-issue:`4587`) -- Fix GCC 9 warning on strncpy() - (:tarantool-issue:`4515`) diff --git a/doc/release/2.2.3.rst b/doc/release/2.2.3.rst deleted file mode 100644 index 55631bfe61..0000000000 --- a/doc/release/2.2.3.rst +++ /dev/null @@ -1,175 +0,0 @@ -Tarantool 2.2.3 -=============== - -Release: :tarantool-release:`2.2.3` -Date: 2020-04-20 Tag: 2.2.3-1-g98ecc90 - -Overview --------- - -2.2.3 is the last stable version of the 2.2 release series. The label -stable means we have all planned features implemented and we see no -high-impact issues. - -This release resolves roughly 34 issues since the latest stable version. -There may be bugs in less common areas, please feel free to file an -issue at `GitHub `_. - -Please note, this release contains **no new features**. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `_ -using the box.schema.upgrade() procedure to unlock all the new features -of the 2.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- :ref:`fiber.storage ` is cleaned between requests, - and can be used as a - request-local storage. Previously ``fiber.storage`` could contain - some old values in the beginning of an iproto request execution, and - it needed to be nullified manually. Now the cleanup is unneeded - (:tarantool-issue:`4662`). -- ``tuple``/``space``/``index``:``update()``/``upsert()`` were fixed - not to turn a value into an infinity when a float value was added to - or subtracted from a float column and exceeded the float value range - (:tarantool-issue:`4701`). -- Fix potential execution abort when operating the system runs under - heavy memory load (:tarantool-issue:`4722`). -- Make RTREE indexes handle the out of memory error: before this fix, - OOM during the recovery of an RTREE index resulted in segmentation - fault (:tarantool-issue:`4619`). -- Fix the error message returned on using an already dropped sequence - (:tarantool-issue:`4753`). -- Add cancellation guard to avoid WAL thread stuck (:tarantool-issue:`4127`). -- Fix execution abort when ``memtx_memory`` and ``vinyl_memory`` are - set to more than 4398046510080 bytes. Now an error message is - returned (:tarantool-issue:`4705`). - -Replication -~~~~~~~~~~~ - -- Fix rebootstrap procedure not working in case replica itself is - listed in ``box.cfg.replication`` (:tarantool-issue:`4759`). -- Fix possible user password leaking via replication logs (:tarantool-issue:`4493`). -- Refactor vclock map to be exactly 4 bytes in size to fit all 32 - replicas regardless of the compiler used - (https://github.com/tarantool/tarantool/commit/e5679980aa5f813553a95ab7d31f111dd0893df6). -- Fix crash when the replication applier rollbacks a transaction - (:tarantool-issue:`4730`, (:tarantool-issue:`4776`). -- Local space operations are now counted in 0th vclock component. Every - instance may have its own 0-th vclock component not matching others’. - Local space operations are not replicated at all, even as NOPs - (:tarantool-issue:`4114`). -- Gc consumers are now ordered by their vclocks and not by vclock - signatures. Only the WALS that contain no entries needed by any of - the consumers are deleted (:tarantool-issue:`4114`). - -Lua -~~~ - -- json: ``:decode()`` doesn’t spoil instance’s options with per-call - ones (when it is called with the second argument) (:tarantool-issue:`4761`). -- Handle empty input for ``uri.format()`` properly (:tarantool-issue:`4779`). -- ``os.environ()`` is now changed when ``os.setenv()`` is called - (:tarantool-issue:`4733`). -- ``netbox.self:call/eval()`` now returns the same types as - ``netbox_connection:call``/``eval``. Previously it could return a - tuple or ``box.error`` cdata (:tarantool-issue:`4513`). -- ``box.tuple.*`` namespace is cleaned up from private functions. - :doc:`/reference/reference_lua/box_tuple/is` description is added to documentation (:tarantool-issue:`4684`). -- ``tarantoolctl rocks search``: fix the ``--all`` flag (:tarantool-issue:`4529`). -- ``tarantoolctl rocks remove``: fix the ``--force`` flag (:tarantool-issue:`3632`). -- libev: backport fix for listening for more then 1024 file descriptors - on Mac OS (:tarantool-issue:`3867`). - -SQL -~~~ - -- Fix ``box.stat()`` behavior: now it collects statistics on the - ``PREPARE`` and ``EXECUTE`` methods as expected (:tarantool-issue:`4756`). - -- The inserted values are inserted in the order in which they are given - in case of INSERT into space with autoincrement (:tarantool-issue:`4256`). - -HTTP client -^^^^^^^^^^^ - -- When building Tarantool with bundled ``libcurl``, link it with the - ``c-ares`` library by default (:tarantool-issue:`4591`). - -LuaJIT -~~~~~~ - -- ``__pairs``/``__ipairs`` metamethods handling is removed since we - faced the issues with the backward compatibility between Lua 5.1 and - Lua 5.2 within Tarantool modules as well as other third party code - (:tarantool-issue:`4770`). - -- Introduce ``luajit-gdb.py`` extension with commands for inspecting - LuaJIT internals. The extension obliges one to provide gdbinfo for - ``libluajit``, otherwise loading fails. The extension provides the - following commands: - - - ``lj-arch`` dumps values of LJ_64 and LJ_GC64 macro definitions - - ``lj-tv`` dumps the type and GCobj info related to the given - TValue - - ``lj-str`` dumps the contents of the given GCstr - - ``lj-tab`` dumps the contents of the given GCtab - - ``lj-stack`` dumps Lua stack of the given lua_State - - ``lj-state`` shows current VM, GC and JIT states - - ``lj-gc`` shows current GC stats - -- Fix string to number conversion: current implementation respects the - buffer length (:tarantool-issue:`4773`). - -- “FFI sandwich”(\*) detection is introduced. If sandwich is detected - while trace recording the recording is aborted. The sandwich detected - while mcode execution leads to the platform panic. - -- luaJIT_setmode call is prohibited while mcode execution and leads to - the platform panic. - -(\*) The following stack mix is called FFI sandwich: - - Lua-FFI -> C routine -> Lua-C API -> Lua VM - -This sort of re-entrancy is explicitly not supported by LuaJIT compiler. -For more info see gh-4427. - -Vinyl -~~~~~ - -- Fix assertion fault due to triggered dump process during secondary - index build (:tarantool-issue:`4810`). - -Misc -~~~~ - -- Fix crashes at attempts to use ``-e`` and ``-l`` command line options - concatenated with their values, like this: ``-eprint(100)`` - (:tarantool-issue:`4775`). -- Fix inability to upgrade from 2.1 if there was an automatically - generated sequence (:tarantool-issue:`4771`). -- Update ``libopenssl`` version to 1.1.1f since the previous one was - EOLed (:tarantool-issue:`4830`). - -Building from sources -^^^^^^^^^^^^^^^^^^^^^ - -- Fix build of the ``decNumber`` library under OSX (:tarantool-issue:`4580`). -- Update the ``decNumber`` library to silence the build warning - produced on too long integer constant - (https://github.com/tarantool/tarantool/commit/aab03a735c7a215b4371ef834f7d08432b1bf0f7). -- Fix static build (``-DBUILD_STATIC=ON``) when ``libunwind`` depends - on ``liblzma`` (:tarantool-issue:`4551`). diff --git a/doc/release/2.3.1.rst b/doc/release/2.3.1.rst deleted file mode 100644 index 45d6b18240..0000000000 --- a/doc/release/2.3.1.rst +++ /dev/null @@ -1,623 +0,0 @@ -Tarantool 2.3.1 -=============== - -Release: :tarantool-release:`2.3.1` -Date: 2019-12-31 Tag: 2.3.1-0-g5a1a220 - -Overview --------- - -2.3.1 is the beta version of the 2.3 release series. - -This release introduces roughly 38 features and resolves 102 bugs since -the 2.2.1 version. There may be bugs in less common areas. If you find -any, feel free to report an issue at -`GitHub `_. - -Notable changes are: - -- field name and JSON path updates -- anonymous replica -- new DOUBLE SQL type (and new ‘double’ box field type) -- stored and indexed decimals (and new ‘decimal’ field type) -- ``fiber.top()`` -- feed data from a memory during replica initial join -- SQL prepared statements -- sessions settings service space - -Aside of that many other features have been implemented and considerable -amount of bugs have been fixed. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -There are changes labeled with **[Breaking change]**. It means that the -old behaviour was considered error-prone and therefore changed to -protect users from unintended mistakes. However, there is a little -probability that someone can lean on the old behaviour, and this label -is to bring attention to the things that have been changed. - -SQL -~~~ - -- Introduce prepared statements support and prepared statements cache - (:tarantool-issue:`2592`, :tarantool-issue:`3292`). Using of prepared statements allows to eliminate - overhead of transmitting a statement text over a network and parsing - it each time before execution. Aside of this, it allows to acquire - binding parameters and result set columns metainformation prior to - actual execution of a statement. This feature is vital for - implementing standard DBMS APIs, such as ODBC and JDBC. - -- **[Breaking change]** Introduce \_session_setting service space as - replacement for PRAGMA keyword (:tarantool-issue:`4511`). All frontends (C, Lua, SQL, - binary protocol) can use this space to access or update session - settings. Removed ``count_changes``, ``short_column_names``, - ``sql_compound_select_limit``, ``vdbe_addoptrace`` pragmas. - Transformed others into \_session_settings tuples. - -- Extend SQL result set metadata (:tarantool-issue:`4407`), In addition to the ``name`` - and ``type`` fields, the ``collation``, ``is_nullable``, - ``is_autoincrement``, and ``span`` fields are added. These new fields - are shown when the ``full_metadata`` session setting is enabled but - always sent via binary protocol. - -- Add an ability to disable check constraints (:tarantool-issue:`4244`). Example: - ``ALTER TABLE foo {ENABLE|DISABLE} CHECK CONSTRAINT bar;``. For - details of using from Lua, refer to - `documentation `__. - -- AUTOINCREMENT for multipart primary key (:tarantool-issue:`4217`). The auto-increment - feature can be set to any ``INTEGER`` or ``UNSIGNED`` field of - ``PRIMARY KEY`` using one of the two ways: - - 1. ``AUTOINCREMENT`` in column definition: - - .. code-block:: sql - - CREATE TABLE t (i INT, a INT AUTOINCREMENT, PRIMARY KEY (i, a)); - CREATE TABLE t (i INT AUTOINCREMENT, a INT, PRIMARY KEY (i, a)); - - 2. ``AUTOINCREMENT`` in ``PRIMARY KEY`` definition: - - .. code-block:: sql - - CREATE TABLE t (i INT, a INT, PRIMARY KEY (i, a AUTOINCREMENT)); - CREATE TABLE t (i INT, a INT, PRIMARY KEY (i AUTOINCREMENT, a)); - -- Allow to create a view from any CTE (common table expression) using - ``WITH`` clause (:tarantool-issue:`4149`). - -- Support user-defined functions in SQL. ``box.schema.func.create()`` - API has been extended and should be used to make some function - available in SQL. For details on fields added, refer to the - description here: (:doc-issue:`879`). - Usage of legacy mechanism\ ``box.internal.sql_function_create`` is - forbidden now (:tarantool-issue:`2200`, :tarantool-issue:`2233`, :tarantool-issue:`4113`). - -- Scalar functions ``MIN/MAX`` are renamed to ``LEAST/GREATEST`` - (:tarantool-issue:`4405`) - -- Introduce ``WITH ENGINE`` clause for ``CREATE TABLE`` statement - (:tarantool-issue:`4422`). To allow a user to specify engine as per table option, - ``CREATE TABLE`` statement has been extended with optional - ``WITH ENGINE = `` clause. This clause comes at the end - of ``CREATE TABLE`` statement. For example: - - .. code-block:: sql - - CREATE TABLE t_vinyl (id INT PRIMARY KEY) WITH ENGINE = 'vinyl'; - - Refer also to `SQL reference - documentation `__. - -- Introduce ``DOUBLE`` type (:tarantool-issue:`3812`). - -- Display line and position in syntax errors (:tarantool-issue:`2611`). - -- Make constraint names unique within a table (:tarantool-issue:`3503`). - The SQL standard requires ``PRIMARY KEY``, ``UNIQUE``, ``FOREIGN KEY`` and ``CHECK`` - constraints to have the unique name within a table. Now Tarantool/SQL - follows this requirement. Please refer to (:doc-issue:`1053`). - -- Optimization: a tuple already stores a map of offsets of indexed - values. After the change, when a field after an indexed field is - accessed, the tuple is decoded from the indexed field rather then - from beginning (:tarantool-issue:`4267`). - -Core -~~~~ - -- **[Breaking change]** Drop ``rows_per_wal`` option of ``box.cfg()`` - in favor of ``wal_max_size`` (:tarantool-issue:`3762`). -- Decimals can now be stored in spaces. The corresponding field type is - introduced: ``decimal``. Decimal values are also allowed in the - ``scalar``, ``any``, and ``number`` fields. Decimal values can be - indexed (:tarantool-issue:`4333`). Also refer to documentation on - - - `data - types `__ - - `:create_index() `__ - -- Add support for decimals in update operations (:tarantool-issue:`4413`). - ``tuple:update()`` and ``:update()`` now support - decimal operands for arithmetic operations (‘+’ and ‘-’). The syntax - is as usual, for example: - - .. code-block:: tarantoolsession - - tarantool> d = box.tuple.new(decimal.new('1')) - --- - ... - tarantool> d:update{{'+', 1, decimal.new('0.5')}} - --- - - [1.5] - ... - - Insertion (‘!’) and assignment (‘=’) are also supported. See also the - full description of the ``update()`` function in - `documentation `__. -- Allow to encode/decode decimals to ``MsgPack`` and to encode to - ``YAML`` and ``JSON``. Part of (:tarantool-issue:`4333`); - `485439e3 `__; - documentation: (:doc-issue:`992`). -- Introduce field name and JSON path updates (:tarantool-issue:`1261`). - - Example of update - by a field name: ``box.space.test:update({{'=', 'foo', 42}})``. - - JSON path update allows to change a value that is nested inside an array - or a map. It provides convenient syntax (that is also available for - connectors), consumes less space in WAL than replace, and is faster - than replaces written in Lua. Example: - ``box.space.test:update({{'=', 'foo.bar[1]', 42}})``. Please refer to - documentation here: (:doc-issue:`1051`). -- Introduce ``double`` field type. Part of (:tarantool-issue:`3812`). Though is not very - usable in Lua, this new field type has been added in ``box`` as a - base for the SQL ``DOUBLE`` type. -- vinyl: don’t pin index for iterator lifetime (prerequisite for - snapshot iterators). - `02da82ea `_ -- vinyl: don’t exempt dropped indexes from dump and compaction - (prerequisite for snapshot iterators). - `d7387ec9 `_ - -Replication -~~~~~~~~~~~ - -- ``box.info().replication`` shows applier/replay’s latest error - message. Now it also shows the errno description for system errors - when it’s applicable (:tarantool-issue:`4402`). -- Feed data from a memory during replica initial join (:tarantool-issue:`1271`). Aside of - obvious speed up from reading from a memory instead of a disk, a read - view that is acquired to perform an initial join may be a way more - recent, that eliminates the need to play all xlog files since a last - snapshot. Now relay need to send only changes that occur during - initial join to finally join a replica. -- Introduce a new replica type - anonymous replica (:tarantool-issue:`3186`). Anonymous - replica is not present in cluster space and so there is no limitation - for its count in a replica set. Anonymous replica is read-only, but - can be deanonymized and enabled for writes. Please refer to - documentation: (:doc-issue:`1050`) for - API and details. - -Lua -~~~ - -- Expose ``require('tarantool').package`` which is ‘Tarantool’ for the - community version and ‘Tarantool Enterprise’ for the enterprise - version (:tarantool-issue:`4408`). This value is already displayed in a console - greeting and in ``box.info().package``, but it was not accessible - from Lua before the first ``box.cfg{<...>}`` call. -- decimal: add modulo operator (``decimal.new(172.51) % 1 == 0.51``), - part of (:tarantool-issue:`4403`). -- **[Breaking change]** JSON and msgpack serializers now raise an error - when a depth of data nesting exceeds the ``encode_max_depth`` option - value. The default value of the option has been increased from 32 to - 128. The ``encode_deep_as_nil`` option is added to give an ability to - set the old behaviour back (:tarantool-issue:`4434`). Notes: - - - These options can be set by using ``json.cfg({<...>})`` or - ``msgpack.cfg({<...>})``. - - ``box`` data modification functions (``insert``, ``replace``, - ``update`` and ``upsert``) follow the options of the default - msgpack serializer instance, and now these functions raise an - error on too many levels of nested data by default rather than cut - the data silently. This behaviour can be configured using - ``msgpack.cfg({<...>})``. - - previously,\ ``box.tuple.new()``, ``space:update()``, - ``space:upsert()`` and several other functions did not follow - ``encode_max_depth`` option; now they do (see also the **Bug - fixed** section). - - previously,\ ``json.cfg`` and ``msgpack.cfg`` tables was not - updated when an option had changed; now they show actual values - (see also the **Bug fixed** section). - -- Show line and column in ``json.decode()`` errors (:tarantool-issue:`3316`). -- Exit gracefully when a main script throws an error: notify systemd, - log the error (:tarantool-issue:`4382`). -- key_def: accept both ``field`` and ``fieldno`` in - ``key_def.new(<...>)`` (:tarantool-issue:`4519`). Originally ``key_def.new(<...>)`` - accepted only ``fieldno`` to allow creation with - ``.parts`` as argument. However, index definition - format (``.create_index(<...>)``) is different and - requires ``field``. Now both are supported. -- Enable ``__pairs`` and ``__ipairs`` metamethods from Lua 5.2 (:tarantool-issue:`4560`). - We still conform Lua 5.1 API that is not always compatible with Lua - 5.2. The change is only about those metamethods. -- Implement a new function ``fiber.top()``. It returns a table with all - fibers alive and lists their CPU consumption. For details, refer to - `documentation `__. - (:tarantool-issue:`2694`) -- Expose ``errno`` field for box.error objects representing system - errors. Part of (:tarantool-issue:`4402`). - -HTTP client -^^^^^^^^^^^ - -- Add ``accept_encoding`` option for HTTP client. For details, refer to - description here: (:doc-issue:`1036`). - (:tarantool-issue:`4232`). -- Add proxy server related options for HTTP client: - - - ``proxy`` - - ``proxy_port`` - - ``proxy_user_pwd`` - - ``no_proxy`` For details, refer to description - here: :doc-issue:`896` (:tarantool-issue:`4477`, - :tarantool-issue:`4472`). - -Misc -~~~~ - -- tarantoolctl: allow to start instances with delayed ``box.cfg{}`` - (:tarantool-issue:`4435`). -- Add package builds and deployment for the following Linux distros: - - - Ubuntu 19.10 Eoan Ermine (:tarantool-issue:`4583`) - - CentOS 8 (:tarantool-issue:`4543`) - - Fedora 31 (:tarantool-issue:`4612`) - -Bugs fixed ----------- - -SQL -~~~ - -- Modify type of a binding value in query response metainformation: - always return INTEGER rather than UNSIGNED, even for positive values. - This is necessary for consistency with integer literal types. - `b7d595ac `__. -- Reuse noSQL way to compare floating point values with integral ones. - This allows to handle corner cases like - ``SELECT 18446744073709551615.0 > 18446744073709551615`` uniformly. - `73a4a525 `__. -- Create or alter a table with a foreign key may lead to wrong bytecode - generation that may cause a crash or wrong result (:tarantool-issue:`4495`). -- Allow to update a scalar value using SQL in a space that was created - from Lua and contains ``array``, ``map`` or ``any`` fields (:tarantool-issue:`4189`). - Note: Tarantool/SQL provides operations on scalar types and does not - support ‘array’ and ‘map’ per se. -- Allow nil to be returned from user-defined function (created with - ``box.schema.func.create()``). - `1b39cbcf `__ -- Don’t drop a manually created sequence in DROP TABLE statement. - `a1155c8b `__ -- Remove grants associated with the table in DROP TABLE statement - (:tarantool-issue:`4546`). -- Fix segfault in ``sql_expr_coll()`` when ``SUBSTR()`` is called - without arguments. - `4c13972f `__ -- Fix converting of floating point values from range [2^63, 2^64] to - integer (:tarantool-issue:`4526`). -- Make type string case lower everywhere: in error messages, meta - headers, and results of the ``typeof()`` SQL function. - `ee60d31d `__ -- Make the\ ``LENGTH()`` function to accept boolean argument (:tarantool-issue:`4462`). -- Make implicit cast from BOOLEAN to TEXT to return uppercase for - consistency with explicit cast (:tarantool-issue:`4462`). -- Fix segfault on binding a value as LIKE argument (:tarantool-issue:`4566`). -- For user-defined functions, verify that the returned value is of the - type specified in the function definition (:tarantool-issue:`4387`). -- Start using comprehensive serializer ``luaL_tofield()`` to prepare - LUA arguments for user-defined functions. This allows to support - cdata types returned from Lua function (:tarantool-issue:`4387`). -- An error is raised when a user-defined function returns too many - values (:tarantool-issue:`4387`). -- Store a name of user-defined function in VDBE program instead of - pointer. This allows to normally handle the situation when a - user-defined function has been deleted to the moment of the VDBE code - execution (:tarantool-issue:`4176`). -- Fix casting of VARBINARY value to a NUMBER (:tarantool-issue:`4356`) -- Print the data type instead of the data itself in ``diag_set()`` in - case of binary data. The reason of this patch is that ``LibYAML`` - converts the whole error message to ``base64`` in case of - non-printable symbols. Part of (:tarantool-issue:`4356`). -- Remove ``ENGINE`` from the list of the reserved keywords and allow to - use it for identifiers: we are going to use the word as a name of - some fields for tables forming informational schema. -- Fix segfault when ``LEAST()`` or ``GREATEST()`` built-in function is - invoked without arguments (:tarantool-issue:`4453`). -- Fix dirty memory access when constructing query plan involving search - of floating point value in index over integer field (:tarantool-issue:`4558`). -- ``INDEXED BY`` clause now obligates the query planner to choose - provided index. - `49fedfe3 `__ - - - -Core -~~~~ - -- Make functional index creation transactional (:tarantool-issue:`4401`) -- Detect a new invalid JSON path case (:tarantool-issue:`4419`) -- Randomize the next checkpoint time after manual ``box.snapshot()`` - execution also (:tarantool-issue:`4432`). -- Fix memory leak in call/eval in case of a transaction is not - committed (:tarantool-issue:`4388`) -- Eliminate warning re ``strip_core`` option of ``box.cfg()`` on MacOS - and FreeBSD (:tarantool-issue:`4464`) -- The msgpack serializer that is under ``box.tuple.new()`` (called - tuple serializer) now reflects options set by - ``msgpack.cfg({<...>})``. Part of (:tarantool-issue:`4434`). Aside of - ``box.tuple.new()`` behaviour itself, it may affect - ``tuple:frommap()``, methods of key_def Lua module, tuple and table - merger sources, net.box results of ``:select()`` and ``:execute()`` - calls, and xlog Lua module. -- ``box`` functions ``update`` and ``upsert`` now follow - ``msgpack.cfg({encode_max_depth = <...>}`` option. Part of (:tarantool-issue:`4434`). -- fiber: make sure the guard page is created; refuse to create a new - fiber otherwise (:tarantool-issue:`4541`). It is possible in case of heavy memory - usage, say, when there is no resources to split VMAs. -- recovery: build secondary indices in the hot standby mode without - waiting till the main instance termination (:tarantool-issue:`4135`). -- Fix error message for incorrect return value of functional index - extractor function (:tarantool-issue:`4553`). - - - Was: “Key format doesn’t match one defined in functional index ‘’ - of space ‘’: supplied key type is invalid: expected boolean” - - Now: “<…>: expected array” - -- JSON path index now consider is_nullable property when a space had a - format (:tarantool-issue:`4520`). -- Forbid ``00000000-0000-0000-0000-000000000000`` as the value of - ``box.cfg({<...>})`` options: ``replicaset_uuid`` and - ``instance_uuid`` (:tarantool-issue:`4282`). It did not work as expected: the nil UUID - was treated as absence of the value. -- Update cache of universe privileges without reconnect (:tarantool-issue:`2763`). -- net.box: fix memory leak in ``net_box:connect()`` (:tarantool-issue:`4588`). -- net.box: don’t fire the ``on_connect`` trigger on schema update - (:tarantool-issue:`4593`). Also don’t fire the ``on_disconnect`` trigger if a connection - never entered into the ``active`` state (e.g. when the first schema - fetch is failed). -- func: fix use-after-free on function unload. - `fa2893ea `__ -- Don’t destroy a session until ``box.session.on_disconnect(<...>)`` - triggers are finished (:tarantool-issue:`4627`). This means, for example, that - ``box.session.id()`` can be safely invoked from the ``on_disconnect`` - trigger. Before this change ``box.session.id()`` returned garbage - (usually 0) after yield in the ``on_disconnect`` trigger. *Note*: - `tarantool/queue `_ module is - affected by this problem in `some - scenarios `_. It is - especially suggested to update Tarantool at least to this release if - you’re using this module. -- func: Fix ``box.schema.func.drop(<..>)`` to unload unused modules - (:tarantool-issue:`4648`). Also fix ``box.schema.func.create(<..>)`` to avoid loading a - module again when another function from the module is loaded. -- Encode Lua number -2^63 as integer in ``msgpack.encode()`` and box’s - functions (:tarantool-issue:`4672`). -- Forbid to drop admin’s universe access. - `2de398ff `__. - Bootstrap and recovery work on behalf of admin and should be able to - fill in the system spaces. Drop of admin’s access may lead to an - unrecoverable cluster. -- Refactor rope library to eliminate virtual calls to increase - performance of the library (mainly for JSON path updates). - `baa4659c `__ -- Refactor update operation code to avoid extra region-related - arguments to take some performance boost (mainly for JSON path - updates). - `dba9dba7 `__ -- Error logging has been removed in ``engine_find()`` to get rid of the - error message duplication. - `35177fe0 `__. -- decimal: Fix encoding of numbers with positive exponent. Follow-up - (:tarantool-issue:`692`). -- Increment schema version on DDL operations where it did not performed - before: alter of trigger, check constraint and foreign key - constraint. Part of (:tarantool-issue:`2592`). - - - -Replication -~~~~~~~~~~~ - -- Stop relay on subscribe error (:tarantool-issue:`4399`). -- Set ``last_row_time`` to ``now`` in ``relay_new`` and - ``relay_start`` (:tarantool-issue:`4431`). -- Do not abort replication on ER_UNKNOWN_REPLICA (:tarantool-issue:`4455`). -- Enter orphan mode on manual replication configuration change (:tarantool-issue:`4424`). -- Disallow bootstrap of read-only masters (:tarantool-issue:`4321`). -- Prefer to bootstrap a replica from a fully bootstrapped instance - rather than from an instance that is in the process of bootstrapping - (:tarantool-issue:`4527`). This change enables the case when two nodes (B, C) are being - bootstrapped simultaneously using the one that is already - bootstrapped (A), while A is configured to replicate from {B, C} and - B – from {A, C}. -- Return immediately from ``box.cfg{<...>}`` when an instance is - reconfigured with ``replication_connect_quorum = 0`` (:tarantool-issue:`3760`). This - change also fixes the behaviour of reconfiguration with non-zero - ``replication_connect_quorum``: ``box.cfg{<...>}`` returns - immediately regardless of whether connections to upstreams are - established. -- Apply replication settings of ``box.cfg({<...>})`` in a strict order - (:tarantool-issue:`4433`). -- Auto reconnect a replica if password is invalid (:tarantool-issue:`4550`). -- ``box.session.su()`` now correctly reports an error for - ```` longer than ``BOX_NAME_MAX`` which is 65000. - `8b6bdb43 `__ - - - Was: ‘C++ exception’ - - Now: ‘name length <…> is greater than BOX_NAME_MAX’ - -- Use empty password when a URI in ``box.cfg{replication = <...>}`` is - like ``login@host:port`` (:tarantool-issue:`4605`). The behaviour matches the - net.box’s one now. Explicit ``login:@host:port`` was necessary - before, otherwise a replica displayed the following error: > Missing - mandatory field ‘tuple’ in request -- Fix segfault during replication configuration - (``box.cfg{replication = <...>}`` call) (:tarantool-issue:`4440`, - :tarantool-issue:`4576`, :tarantool-issue:`4586`, :tarantool-issue:`4643`). -- Cancel a replica joining thread forcefully on Tarantool instance - exit (:tarantool-issue:`4528`). -- Fix the applier to run the ``.before_replace`` trigger during - initial join (:tarantool-issue:`4417`). - - - -Lua -~~~ - -- Fix segfault on ``ffi.C._say()`` without filename (:tarantool-issue:`4336`). -- Fix ``pwd.getpwall()`` and ``pwd.getgrall()`` hang on CentOS 6 and - FreeBSD 12 (:tarantool-issue:`4428`, :tarantool-issue:`4447`). -- json.encode() now follows ``encode_max_depth`` option for arrays that - leads to a segfault on recursive Lua tables with numeric keys - (:tarantool-issue:`4366`). -- fio.mktree() now reports an error for existing non-directory file - (:tarantool-issue:`4439`). -- ``json.cfg`` and ``msgpack.cfg`` tables were not updated when an - option is changed. Part of (:tarantool-issue:`4434`). -- Fix handling of a socket read error in the console client - (``console.connect()`` or ``tarantoolctl connect/enter <...>``). - `89ec1d97 `__ -- Handle the “not enough memory” error gracefully when it is raised - from ``lua_newthread()`` (:tarantool-issue:`4556`). There are several cases when a new - Lua thread is created: - - - Start executing a Lua function call or an eval request (from a - binary protocol, SQL or with ``box.func.<...>:call()``). - - Create of a new fiber. - - Start execution of a trigger. - - Start of encoding into a YAML format (``yaml.encode()``). - -- Fix stack-use-after-scope in ``json.decode()`` (:tarantool-issue:`4637`). -- Allow to register several functions using - ``box.schema.func.create()``, whose names are different only in - letters case (:tarantool-issue:`4561`). This make function names work consistently with - other names in tarantool (except SQL, of course). -- Fix decimal comparison with nil. Follow-up (:tarantool-issue:`692`). -- Fix decimal comparison with ``box.NULL`` (:tarantool-issue:`4454`). -- A pointer returned by ``msgpack.decode*(cdata<[char] const *>)`` - functions can be assigned to buffer.rpos now (and the same for - msgpackffi) (:tarantool-issue:`3926`). All those functions now return - ``cdata`` or ``cdata`` depending of a passed - argument. Example of the code that did not work: - ``res, buf.rpos = msgpack.decode(buf.rpos, buf:size())``. -- lua/pickle: fix typo that leads to reject of negative integers for - ‘i’ (integer) and ‘N’ (big-endian integer) formats in pickle.pack(). - `e2d9f664 `__ - - - -HTTP client -^^^^^^^^^^^ - -- Use bundled ``libcurl`` rather than system-wide by default. - (:tarantool-issue:`4318`, :tarantool-issue:`4180`, :tarantool-issue:`4288`, - :tarantool-issue:`4389`, :tarantool-issue:`4397`). This closes several known - problems that were fixed in recent libcurl versions, including segfaults, - hangs, memory leaks and performance problems. -- Fix assertion fail after a curl write error (:tarantool-issue:`4232`). -- Disable verbose mode when ``{verbose = false}`` is passed. - `72613bb0 `__ - -Console Lua output -^^^^^^^^^^^^^^^^^^ - -A new Lua output format is still in the alpha stage and has the known -flaws, but we are working to make it rich and stable. - -- Output ``box.NULL`` as ``"box.NULL"`` rather than - ``"cdata: NULL"``, part of (:tarantool-issue:`3834`) (in quotes for now, yes, - due to (:tarantool-issue:`4585`) -- Add semicolon (``;``) as responses delimiter (EOS, end of - stream/statement), analogue of YAMLs end-of-document (``...``) - marker. This is vital for remote clients to determine the end of a - particular response, part of (:tarantool-issue:`3834`). -- Fix hang in the console client (``console.connect()`` or - ``tarantoolctl connect/enter <...>``) after - ``\set output lua[,block]`` command, part of (:tarantool-issue:`3834`). In order to - overcome it, two changes have been made: - - - Parse ``\set output lua[,block]`` command on a client prior to - sending it to a server, store current responses delimiter (EOS) - and use it to determine end of responses. - - Send ``\set output <...>`` command with a default output mode when - establishing a connection (it is matter if different default modes - are set). - -- Provide an ability to get or set current responses delimiter using - ``console.eos([<...>])``, part of (:tarantool-issue:`3834`). - -LuaJIT -~~~~~~ - -- Fix fold machinery misbehaves (:tarantool-issue:`4376`). -- Fix for ``debug.getinfo(1,'>S')`` (:tarantool-issue:`3833`). -- Fix ``string.find`` recording (:tarantool-issue:`4476`). -- Fix the “Data segment size exceeds process limit” error on - FreeBSD/x64: do not change resource limits when it is not necessary - (:tarantool-issue:`4537`). -- fold: keep type of emitted CONV in sync with its mode. - `LuaJIT#524 `__ This - fixes the following assertion fail: > asm_conv: Assertion - \`((IRType)((ir->t).irt & IRT_TYPE)) != st’ failed - - - -Misc -~~~~ - -- Support ``systemd``\ ’s NOTIFY_SOCKET on OS X (:tarantool-issue:`4436`). -- Fix linking with static ``openssl`` library (:tarantool-issue:`4437`). -- Get rid of warning re empty ``NOTIFY_SOCKET`` variable (:tarantool-issue:`4305`). -- rocks: fix ‘invalid date format’ error when installing a packed rock - (:tarantool-issue:`4481`). -- Remove libyaml from rpm/deb dependencies, because we use bunbled - version of libyaml for the packages (since 2.2.1) (:tarantool-issue:`4442`). -- Fix CLI boolean options handling in ``tarantoolctl cat <...>``, such - as ``--show-system`` (:tarantool-issue:`4076`). -- Fix segfault (out of bounds access) when a stack unwinding error - occurs at backtrace printing (:tarantool-issue:`4636`). Backtrace is printed on the - SIGFPE and SIGSEGV signals or when LuaJIT finds itself in the - unrecoverable state (``lua_atpanic()``). -- Clear terminal state on panic (:tarantool-issue:`4466`). -- access: fix the invalid error type ``box.session.su()`` raises for a - not found user - - - was: ``SystemError`` - - now: ``ClientError`` - -Building from sources -^^^^^^^^^^^^^^^^^^^^^ - -- Fix for GCC 4.8.5, which is default version on CentOS 7 (:tarantool-issue:`4438`). -- Fix OpenSSL linking problems on FreeBSD (:tarantool-issue:`4490`). -- Fix linking problems on Mac OS when several toolchains are in PATH - (:tarantool-issue:`4587`). -- Fix GCC 9 warning on strncpy() (:tarantool-issue:`4515`). -- Fix build on Mac with gcc and XCode 11 (:tarantool-issue:`4580`). -- Fix LTO warnings that were treated as errors in a release build - (:tarantool-issue:`4512`). diff --git a/doc/release/2.3.2.rst b/doc/release/2.3.2.rst deleted file mode 100644 index c91e42cfea..0000000000 --- a/doc/release/2.3.2.rst +++ /dev/null @@ -1,179 +0,0 @@ -Tarantool 2.3.2 -=============== - -Release: :tarantool-release:`2.3.2` -Date: 2020-04-20 Tag: 2.3.2-1-g9be641b - -Overview --------- - -2.3.2 is the first stable version of the 2.3 release series. The label -stable means we have all planned features implemented and we see no -high-impact issues. - -This release resolves roughly 39 issues since the latest beta version. -There may be bugs in less common areas, please feel free to file an -issue at `GitHub `__. - -Please note, this release contains **no new features**. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the box.schema.upgrade() procedure to unlock all the new features -of the 2.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- :ref:`fiber.storage ` is cleaned between requests, - and can be used as a - request-local storage. Previously ``fiber.storage`` could contain - some old values in the beginning of an iproto request execution, and - it needed to be nullified manually. Now the cleanup is unneeded - (:tarantool-issue:`4662`). -- ``tuple``/``space``/``index``:``update()``/``upsert()`` were fixed - not to turn a value into an infinity when a float value was added to - or subtracted from a float column and exceeded the float value range - (:tarantool-issue:`4701`). -- Fix potential execution abort when operating the system runs under - heavy memory load (:tarantool-issue:`4722`). -- Make RTREE indexes handle the out of memory error: before this fix, - OOM during the recovery of an RTREE index resulted in segmentation - fault (:tarantool-issue:`4619`). -- Fix the error message returned on using an already dropped sequence - (:tarantool-issue:`4753`). -- Add cancellation guard to avoid WAL thread stuck (:tarantool-issue:`4127`). -- Fix execution abort when ``memtx_memory`` and ``vinyl_memory`` are - set to more than 4398046510080 bytes. Now an error message is - returned (:tarantool-issue:`4705`). -- Add Lua output format support for ``box.session.push()`` (:tarantool-issue:`4686`). - -Replication -~~~~~~~~~~~ - -- Fix rebootstrap procedure not working in case replica itself is - listed in ``box.cfg.replication`` (:tarantool-issue:`4759`). -- Fix possible user password leaking via replication logs (:tarantool-issue:`4493`). -- Refactor vclock map to be exactly 4 bytes in size to fit all 32 - replicas regardless of the compiler used - (https://github.com/tarantool/tarantool/commit/e5679980aa5f813553a95ab7d31f111dd0893df6). -- Fix crash when the replication applier rollbacks a transaction - (:tarantool-issue:`4730`, :tarantool-issue:`4776`). -- Fix segmentation fault on master side when one of the replicas - transitions from anonymous to normal (:tarantool-issue:`4731`). -- Local space operations are now counted in 0th vclock component. Every - instance may have its own 0-th vclock component not matching others’. - Local space operations are not replicated at all, even as NOPs - (:tarantool-issue:`4114`). -- Gc consumers are now ordered by their vclocks and not by vclock - signatures. Only the WALS that contain no entries needed by any of - the consumers are deleted (:tarantool-issue:`4114`). - -Lua -~~~ - -- json: ``:decode()`` does not spoil instance’s options with per-call - ones (when it is called with the second argument) (:tarantool-issue:`4761`). -- Handle empty input for ``uri.format()`` properly (:tarantool-issue:`4779`). -- ``os.environ()`` is now changed when ``os.setenv()`` is called - (:tarantool-issue:`4733`). -- ``netbox.self:call/eval()`` now returns the same types as - ``netbox_connection:call``/``eval``. Previously it could return a - tuple or ``box.error`` cdata (:tarantool-issue:`4513`). -- ``box.tuple.*`` namespace is cleaned up from private functions. - :doc:`/reference/reference_lua/box_tuple/is` description is added to documentation (:tarantool-issue:`4684`). -- ``tarantoolctl rocks search``: fix the ``--all`` flag (:tarantool-issue:`4529`). -- ``tarantoolctl rocks remove``: fix the ``--force`` flag (:tarantool-issue:`3632`). -- libev: backport fix for listening for more then 1024 file descriptors - on Mac OS (:tarantool-issue:`3867`). - -SQL -~~~ - -- Fix ``box.stat()`` behavior: now it collects statistics on the - ``PREPARE`` and ``EXECUTE`` methods as expected (:tarantool-issue:`4756`). -- Add an empty body to the ``UNPREPARE`` IProto response (:tarantool-issue:`4769`). -- Reset all the placeholders’ bound values after execution of a - prepared statement (:tarantool-issue:`4825`). -- The inserted values are inserted in the order in which they are given - in case of INSERT into space with autoincrement (:tarantool-issue:`4256`). - -HTTP client -~~~~~~~~~~~ - -- When building Tarantool with bundled ``libcurl``, link it with the - ``c-ares`` library by default (:tarantool-issue:`4591`). - -LuaJIT -~~~~~~ - -- ``__pairs``/``__ipairs`` metamethods handling is removed since we - faced the issues with the backward compatibility between Lua 5.1 and - Lua 5.2 within Tarantool modules as well as other third party code - (:tarantool-issue:`4770`). - -- Introduce ``luajit-gdb.py`` extension with commands for inspecting - LuaJIT internals. The extension obliges one to provide gdbinfo for - ``libluajit``, otherwise loading fails. The extension provides the - following commands: - - - ``lj-arch`` dumps values of LJ_64 and LJ_GC64 macro definitions - - ``lj-tv`` dumps the type and GCobj info related to the given - TValue - - ``lj-str`` dumps the contents of the given GCstr - - ``lj-tab`` dumps the contents of the given GCtab - - ``lj-stack`` dumps Lua stack of the given lua_State - - ``lj-state`` shows current VM, GC and JIT states - - ``lj-gc`` shows current GC stats - -- Fix string to number conversion: current implementation respects the - buffer length (:tarantool-issue:`4773`). - -- “FFI sandwich” (\*) detection is introduced. If sandwich is detected - while trace recording the recording is aborted. The sandwich detected - while mcode execution leads to the platform panic. - -- luaJIT_setmode call is prohibited while mcode execution and leads to - the platform panic. - -(\*) The following stack mix is called FFI sandwich: - - Lua-FFI -> C routine -> Lua-C API -> Lua VM - -This sort of re-entrancy is explicitly not supported by LuaJIT compiler. -For more info see :tarantool-issue:`4427`. - -Vinyl -~~~~~ - -- Fix assertion fault due to triggered dump process during secondary - index build (:tarantool-issue:`4810`). - -Misc -~~~~ - -- Fix crashes at attempts to use ``-e`` and ``-l`` command line options - concatenated with their values, like this: ``-eprint(100)`` - (:tarantool-issue:`4775`). -- Fix inability to upgrade from 2.1 if there was an automatically - generated sequence (:tarantool-issue:`4771`). -- Update ``libopenssl`` version to 1.1.1f since the previous one was - EOLed (:tarantool-issue:`4830`). - -Building from sources -^^^^^^^^^^^^^^^^^^^^^ - -- Update the ``decNumber`` library to silence the build warning - produced on too long integer constant - (https://github.com/tarantool/tarantool/commit/aab03a735c7a215b4371ef834f7d08432b1bf0f7). -- Fix static build (``-DBUILD_STATIC=ON``) when ``libunwind`` depends - on ``liblzma`` (:tarantool-issue:`4551`). diff --git a/doc/release/2.3.3.rst b/doc/release/2.3.3.rst deleted file mode 100644 index 0cfb2ce962..0000000000 --- a/doc/release/2.3.3.rst +++ /dev/null @@ -1,100 +0,0 @@ -Tarantool 2.3.3 -=============== - -Release: :tarantool-release:`2.3.3` -Date: 2020-07-17 Tag: 2.3.3-1-g43af95e - -Overview --------- - -2.3.3 is the last stable version of the 2.3 release series. The label -stable means we have all planned features implemented and we see no -high-impact issues. - -This release resolves roughly 26 issues since the latest stable version. -There may be bugs in less common areas, please feel free to file an -issue at `GitHub `__. - -Please note, this release contains **no new features**. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in binary -data layout, client-server protocol and replication protocol. - -Please -`upgrade `__ -using the box.schema.upgrade() procedure to unlock all the new features -of the 2.x series. - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a bug in altering a normal index to a functional one (n/a). -- Fixed a couple of internal symbols dangling in global namespace \_G - (:tarantool-issue:`4812`). -- Fixed bug when on_shutdown triggers were not executed after EOF - (:tarantool-issue:`4703`). -- Fixed a bug in C module reloading (:tarantool-issue:`4945`). -- Fixed assert outdated due to multikey index arrival (:tarantool-issue:`5132`). -- Fixed confusing implicit requirements for tuple fields (:tarantool-issue:`5027`). -- Added needed key validation to space_before_replace (:tarantool-issue:`5017`). -- Fixed check of index field map size which led to crash (:tarantool-issue:`5084`). -- Fixed NULL pointer dereference when merger is called via the binary - protocol (say, via net.box) (:tarantool-issue:`4954`). -- Fixed crash when invalid JSON was used in update() (:tarantool-issue:`5135`). - -Replication -~~~~~~~~~~~ - -- Fixed possible ER_TUPLE_FOUND error when bootstrapping replicas in an - 1.10/2.1.1 cluster (:tarantool-issue:`4924`). -- Fixed tx boundary check for half-applied txns (:tarantool-issue:`5125`). -- Fixed replication tx boundaries after local space rework (:tarantool-issue:`4928`). - -Lua -~~~ - -- Fixed error while closing socket.tcp_server socket (:tarantool-issue:`4087`). - -SQL -~~~ - -- Fixed wrong order of rows as a result of query containing column of - SCALAR type in ORDER BY clause (:tarantool-issue:`4697`). -- Fixed bug with the display of collation for scalar fields in - result, when ``sql_full_metadata`` is enabled (:tarantool-issue:`4755`). -- Block using HASH indexes in SQL since scheduler is unable to use it - properly (:tarantool-issue:`4659`). -- Fixed races and corner cases in box (re)configuration (:tarantool-issue:`4231`). - -Vinyl -~~~~~ - -- Fixed crash during compaction due to tuples with size exceeding - vinyl_max_tuple_size setting (:tarantool-issue:`4864`). -- Fixed crash during recovery of vinyl index due to the lack of file - descriptors (:tarantool-issue:`4805`). -- Fixed crash during executing upsert changing primary key in debug - mode (:tarantool-issue:`5005`). -- Fixed crash due to triggered dump process during secondary index - creation (:tarantool-issue:`5042`). -- Fixed crash/deadlock (depending on build type) during dump process - scheduling and concurrent DDL operation (:tarantool-issue:`4821`). -- Fixed crash during read of prepared but not committed statement - (:tarantool-issue:`3395`). -- Fixed squashing set and arithmetic upsert operations (:tarantool-issue:`5106`). -- Create missing folders for vinyl spaces and indexes if needed to - avoid confusing fails of tarantool started from backup (:tarantool-issue:`5090`). -- Fixed crash during squash of many (more than 4000) upserts modifying - the same key (:tarantool-issue:`4957`). - -Memtx -~~~~~ - -- Fixed concurrent replaces on index building. Tuples are now - referenced on all needed execution paths (:tarantool-issue:`4973`). diff --git a/doc/release/2.4.3.rst b/doc/release/2.4.3.rst deleted file mode 100644 index f071a3047b..0000000000 --- a/doc/release/2.4.3.rst +++ /dev/null @@ -1,100 +0,0 @@ -Tarantool 2.4.3 -=============== - -Release: :tarantool-release:`2.4.3` -Date: 2020-10-22 Tag: 2.4.3-1-g986fab7 - -Overview --------- - -This release resolves roughly 13 issues since the 2.4.2 version. There -may be bugs in less common areas. If you find any, feel free to report -an issue at `GitHub `_. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -Functionality added or changed ------------------------------- - -Module API -~~~~~~~~~~ - -- Exposed the box region, key_def and several other functions in order - to implement external tuple.keydef and tuple.merger modules on top of - them (:tarantool-issue:`5273`, :tarantool-issue:`5384`). - -Bugs fixed ----------- - -Core -~~~~ - -- Fixed a crash when JSON tuple field access was used to get a multikey - indexed field, and when a JSON contained [*] in the beginning - (:tarantool-issue:`5224`). -- Fixed msgpack extension types decoding error message (:tarantool-issue:`5016`). -- Dropped restrictions on nullable multikey index root. They were - introduced due to inaccuracy in multikey index realization. It is now - fixed. Also all fields are now nullable by default as it was before - 2.2.1 (:tarantool-issue:`5192`). -- Fixed fibers switch-over to prevent JIT machinery misbehavior. Trace - recording is aborted when fiber yields the execution. The yield - occurring while the compiled code is being run (it’s likely a - function with a yield underneath called via LuaJIT FFI) leads to the - platform panic (:tarantool-issue:`1700`, :tarantool-issue:`4491`). -- Fixed fibers switch-over to prevent implicit GC disabling. The yield - occurring while user-defined \__gc metamethod is running leads to the - platform panic. - -Replication -~~~~~~~~~~~ - -- Anonymous replica could be registered and could prevent WAL files - removal (:tarantool-issue:`5287`). -- XlogGapError is not a critical error anymore. It means, - box.info.replication will show upstream status as ‘loading’ if the - error was found. The upstream will be restarted until the error is - resolved automatically with a help of another instance, or until the - replica is removed from box.cfg.replication (:tarantool-issue:`5287`). - -LuaJIT -~~~~~~ - -- Fixed the error occurring on loading luajit-gdb.py with Python2 - (:tarantool-issue:`4828`). - -Lua -~~~ - -- Fixed unhandled Lua error that may lead to memory leaks and - inconsistencies in ``:frommap()``, - ``:compare()``, ``:select()`` - (:tarantool-issue:`5382`). - -SQL -~~~ - -- SQL view are not alterable anymore. Beforehand it led to undefined - behavior. - -Misc -~~~~ - -- Fixed potential lag on boot up procedure when system’s password - database is slow in access (:tarantool-issue:`5034`). - - -Module API -~~~~~~~~~~ - -- Get rid of typedef redefinitions for compatibility with C99 - (:tarantool-issue:`5313`). diff --git a/doc/release/2.5.1.rst b/doc/release/2.5.1.rst deleted file mode 100644 index 1606d69e7d..0000000000 --- a/doc/release/2.5.1.rst +++ /dev/null @@ -1,218 +0,0 @@ -Tarantool 2.5.1 -=============== - -Release: :tarantool-release:`2.5.1` -Date: 2020-07-17 Tag: 2.5.1-1-g635f6e5 - -Overview --------- - -2.5.1 is the beta version of the 2.5 release series. - -This release introduces roughly 11 features and resolves 34 bugs since -the 2.4.1 version. There may be bugs in less common areas. If you find -any, feel free to report an issue at -`GitHub `_. - -Notable changes are: - -- Synchronous replication (beta). -- Allow an anonymous replica follow another anonymous replica. -- Fixed numerous crashes in Vinyl. -- Make implicit cast rules for assignment operation more strict in SQL. -- Updated curl version to 7.71. - -Compatibility -------------- - -Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary -data layout, client-server protocol, and replication protocol. - -Please -`upgrade `_ -using the ``box.schema.upgrade()`` procedure to unlock all the new -features of the 2.x series. - -There are changes labeled with **[Breaking change]**. It means that the -old behavior was considered error-prone and therefore changed to protect -users from unintended mistakes. However, there is a little probability -that someone can lean on the old behavior, and this label is to bring -attention to the things that have been changed. - -Functionality added or changed ------------------------------- - -Core -~~~~ - -- **[Breaking change]** :doc:`/reference/reference_lua/box_session/push` - parameter ``sync`` is deprecated and deleted. It does not work anymore, and - a usage attempt leads to an error (:tarantool-issue:`4689`). -- **[Breaking change]** Define new rules for implicit cast for - assignment operation in SQL (:tarantool-issue:`3809`). Read more: :ref:`sql-implicit_cast`. -- Symbols of the Tarantool executable are not masked anymore. Some - private symbols may become visible and available for FFI and - ``dlopen()`` + ``dlsym()`` (:tarantool-issue:`2971`). -- Add ability to set up logging early without configuring the ``box`` - engine (:tarantool-issue:`689`). -- To retrieve information about memory usage, - :doc:`/reference/reference_lua/box_info/memory` can - be used (:tarantool-issue:`4688`). - -Vinyl -~~~~~ - -- ``box.snapshot()`` now ignores throttling of the scheduler and forces - the dump process immediately (:tarantool-issue:`3519`). - -SQL -~~~ - -- Use naming pattern “COLUMN_N” for automatically generated column’s - names (:tarantool-issue:`3962`). Read more: :ref:`sql_select_list`. - -Replication -~~~~~~~~~~~ - -- Add :doc:`/reference/reference_lua/box_info/replication_anon`. - When called, it lists anonymous - replicas in the same format as ``box.info.replication``, the only - exception is that anonymous replicas are indexed by their uuid - strings (:tarantool-issue:`4900`). -- Allow anonymous replicas to be followed by other ones (:tarantool-issue:`4696`). -- :ref:`Synchronous replication ` - can be enabled per-space using the ``is_sync`` space option (:tarantool-issue:`4842`). - -Build -~~~~~ - -- Add initial support for OpenBSD (:tarantool-issue:`4967`). - -Misc -~~~~ - -- Don’t start the :ref:`‘example’ instance ` - after installing Tarantool (:tarantool-issue:`4507`). - - Before this release, the Tarantool package for Debian and Ubuntu - automatically enable and start the ‘example’ instance, which listens - on the TCP port 3301. Starting from this release, the instance file - is installed to ``/etc/tarantool/instances.available/example.lua``, - but is not enabled by default and not started anymore. One may - perform the following actions to enable and start it: - - .. code-block:: bash - - ln -s /etc/tarantool/instances.available/example.lua \ - /etc/tarantool/instances.enabled/example.lua - systemctl start tarantool@example - - The existing configuration will not be updated automatically at - package update, so manual actions are required to stop and disable - the instance (if it is not needed, of course): - - .. code-block:: bash - - systemctl stop tarantool@example - rm /etc/tarantool/instances.enabled/example.lua - -- When LTO is enabled, Luajit is built with it (:tarantool-issue:`3743`). - -Bugs fixed ----------- - - -Core -~~~~ - -- Fixed assert outdated due to multikey index arrival (:tarantool-issue:`5132`). -- Fixed a bug in altering a normal index to a functional one (n/a). -- Fixed a couple of internal symbols dangling in global namespace \_G - (:tarantool-issue:`4812`). -- Fixed bug when on_shutdown triggers were not executed after EOF - (:tarantool-issue:`4703`). -- Fixed inability to handle ULL constants in Lua mode console - (:tarantool-issue:`4682`). -- Fixed a bug in C module reloading (:tarantool-issue:`4945`). -- Fixed confusing implicit requirements for tuple fields (:tarantool-issue:`5027`). -- Added needed key validation to space_before_replace (:tarantool-issue:`5017`). -- Fixed check of index field map size which led to crash (:tarantool-issue:`5084`). -- Fixed NULL pointer dereference when merger is called via the binary - protocol (say, via net.box) (:tarantool-issue:`4954`). -- Fix wrong mpsgpack extension type in an error message at decoding - (:tarantool-issue:`5017`). -- Fixed crash when invalid JSON was used in update() (:tarantool-issue:`5135`). - - -Replication -~~~~~~~~~~~ - -- Fixed possible ER_TUPLE_FOUND error when bootstrapping replicas in an - 1.10/2.1.1 cluster (:tarantool-issue:`4924`). -- Fixed tx boundary check for half-applied txns (:tarantool-issue:`5125`). -- Fixed replication tx boundaries after local space rework (:tarantool-issue:`4928`). - -Lua -~~~ - -- Added format string usage to form a CustomError message (:tarantool-issue:`4903`). - Read more: :ref:`Custom error `. -- Fixed error while closing socket.tcp_server socket (:tarantool-issue:`4087`). -- Extended box.error objects reference counter to 64 bit to prevent - possible overflow (:tarantool-issue:`4902`). -- Refactored Lua table encoding: removed excess Lua function object and - left protected Lua frame only for the case \__serialize is a function - to improve ``msgpack.encode()`` performance (no GH issue). -- Improved Lua call procedure for the case of built-in functions. - Prepared GCfunc object is used instead of temporary one, resulting in - 3-6% garbage collection reduction. -- Enabled luacheck in continuous integration (no GH issue). -- Fixed warnings (two of them were real bugs!) found by luacheck in a - source code (no GH issue). - - -SQL -~~~ - -- Fixed wrong order of rows as a result of query containing column of - SCALAR type in ORDER BY clause (:tarantool-issue:`4697`). -- Fixed bug with the display of collation for scalar fields in