Date: 2023-02-20
Tag: 1.10.15

## Overview

1.10.15 is the next stable release in the [long-term support (LTS)
version][release_policy][release_policy] 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 **TBD** version.

[release_policy]: https://www.tarantool.io/en/doc/1.10/dev_guide/release_management/#release-policy
[issues]: https://github.com/tarantool/tarantool/issues

## 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][upgrade] using the `box.schema.upgrade()` procedure to unlock
all the new features of the 1.10.x series.

[upgrade]: https://www.tarantool.io/en/doc/1.10/book/admin/upgrades/

## Functionality added or changed

### Build

* OpenSUSE 15.1 and 15.2 are no longer supported.
* Updated libcurl to version 7.87.0 (gh-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)`) (gh-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 (gh-3853).

* Added the `message` field when logging tables without such field in the JSON
  log format (gh-3853).

* Fixed an assertion on malformed JSON message written to the log (gh-7955).

### Vinyl

* Fixed a bug that could result in `select()` skipping an existing tuple after
  a rolled back `delete()` (gh-7947).

### LuaJIT

Backported patches from vanilla LuaJIT trunk (gh-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
  (gh-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 (gh-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 (gh-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
  (gh-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 (gh-7458).

Backported patches from vanilla LuaJIT trunk (gh-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` (gh-6647).

### Log

* Fixed an incorrect facility value in syslog on Alpine (gh-8269).

### Build

* Fixed `-Werror` build fail on Clang 15 (gh-8110).
