- Aug 03, 2022
-
-
Igor Munkin authored
* Call error function on rethrow after trace exit. * Fix handling of errors during snapshot restore. Part of #7230 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
Serge Petrenko authored
Integrate Matthew Haggerty's patches silencing a bunch of gcc build warnings. NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
Serge Petrenko authored
Previous version was an intermediate one - 1.15.0-35 The update brings a bunch of CVE fixes: * CVE-2020-14354 fixed in c-ares 1.16.1 * CVE-2020-8277 fixed in c-ares 1.17.0 * CVE-2021-3672 fixed in c-ares 1.17.2 And a bunch of other security fixes NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
Vladimir Davydov authored
Updated third_party/zstd submodule from v1.5.0 to 1.5.2 version. The new version fixes a few bugs found by fuzzing testing. Note, the new zstd version contains a .S source file so we need to include ASM to the CMake project languages. NO_DOC=build NO_TEST=build
-
- Aug 02, 2022
-
-
Sergey Bronnikov authored
Patch updates libyaml to the version that contains fixes of stack overflows [1]. PR in upstream with original patch: "Avoid recursion in the document loader" [2]. 1. https://github.com/yaml/libyaml/issues/107 2. https://github.com/yaml/libyaml/pull/127 NO_DOC=internal NO_TEST=internal
-
Alexander Turenko authored
This is just regular update to bring bugfixes and improvements in the library into tarantool. https://github.com/nghttp2/nghttp2/releases/tag/v1.48.0 NO_DOC=there is no known behavior changes, consider the change as not visible for a user NO_TEST=there is no specific problem we want to solve and verify here NO_CHANGELOG=see NO_DOC
-
Vladimir Davydov authored
This is a backport of commit https://github.com/postgres/postgres/commit/9d6077abf9d6efd992a59f05ef5aba981ea32096 It's standard for quicksort implementations, after having partitioned the input into two subgroups, to recurse to process the smaller partition and then handle the larger partition by iterating. This method guarantees that no more than log2(N) levels of recursion can be needed. However, Bentley and McIlroy argued that checking to see which partition is smaller isn't worth the cycles, and so their code doesn't do that but just always recurses on the left partition. In most cases that's fine; but with worst-case input we might need O(N) levels of recursion, and that means that qsort could be driven to stack overflow. Such an overflow seems to be the only explanation for today's report from Yiqing Jin of a SIGSEGV in med3_tuple while creating an index of a couple billion entries with a very large maintenance_work_mem setting. Therefore, let's spend the few additional cycles and lines of code needed to choose the smaller partition for recursion. NO_DOC=bug fix NO_TEST=backport
-
Pavel Balaev authored
The current version of Luarocks used in tarantool has a security vulnerability: https://github.com/luarocks/luarocks/pull/1019 This issue is fixed in release 3.1.3, commit: 6ffa8cbe2bcdea2c1ee0f4b32291d179210707b6 Part of https://github.com/tarantool/security/issues/12 NO_DOC=bugfix NO_TEST=bugfix NO_CHANGELOG=bugfix
-
- Jul 27, 2022
-
-
Igor Munkin authored
* test: make sysprof tests more deterministic * test: increase sampling interval in sysprof tests * LJ_GC64: Fix IR_VARG offset for fixed number of results. * sysprof: implement stack sandwich support * symtab: fix .symtab section dump of the executable * sysprof: disable proto and trace dumps in default * ci: introduce GitHub action for environment setup * build: configure parallel jobs * ci: replace hw.ncpu with hw.logicalcpu for macOS * ci: add Tarantool integration testing * ci: remove GC64 matrix entries for ARM64 workflows * ci: fix --parallel argument for MacOS runners Closes #7172 Closes #7244 Closes #7264 Part of #7230 Needed for #7472 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Jul 14, 2022
-
-
Ilya Verbin authored
If MP_ERROR contains an error message with invalid UTF-8 sequences, encode it in Base64 to obtain printable string. Closes #6781 Closes #6934 NO_DOC=bugfix
-
- Jul 08, 2022
-
-
Sergey Bronnikov authored
Changelog: https://curl.se/changes.html#7_84_0 New release contains fixes for 4 security problems [1]. Patch adds a new option defined in curl build infrastructure with it's default value used in 7.84.0. NOTE: PSL is a Public Suffix List (PSL), it is a list of suffixes used for cookies. 1. https://curl.se/docs/releases.html NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump
-
- Jun 30, 2022
-
-
Igor Munkin authored
* Avoid conflict between 64 bit lightuserdata and ITERN key. * Reorganize lightuserdata interning code. * test: fix path storage for non-concatable objects * ARM64: Fix assembly of HREFK. * FFI/ARM64: Fix pass-by-value struct calling conventions. * test: set DYLD_LIBRARY_PATH environment variable * x64/LJ_GC64: Fix fallback case of asm_fuseloadk64(). * FFI: Handle zero-fill of struct-of-NYI. * Fix interaction between profiler hooks and finalizers. * Flush and close output file after profiling run. * Fix debug.debug() for non-string errors. * Fix write barrier for lua_setupvalue() and debug.setupvalue(). * Fix FOLD rule for strength reduction of widening. * Fix bytecode dump unpatching. * Fix tonumber("-0") in dual-number mode. * Fix tonumber("-0"). * Give expected results for negative non-base-10 numbers in tonumber(). * Add missing LJ_MAX_JSLOTS check. * Add stricter check for print() vs. tostring() shortcut. Closes #6548 Fixes #4614 Fixes #4630 Fixes #5885 Fixes tarantool/tarantool-qa#234 Fixes tarantool/tarantool-qa#235 Follows up #2712 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Jun 29, 2022
-
-
Nikolay Shirokovskiy authored
This will fix compilation on recent Archlinux. The issue is this distro installs libbpf in base configuration and nghttp2 1.46.0 tries to compile eBPF code if this library is present and failed if compiler is gcc. Closes #7292 NO_DOC=nghttp2 submodule bump NO_TEST=nghttp2 submodule bump
-
- Jun 18, 2022
-
-
Igor Munkin authored
* ci: add job for build using Ninja on Linux/x86_64 * build: create file lists outside of CMake commands * build: use unique names for CMake targets * Revert "test: disable PUC-Rio tests for several -l options" * ci: make GitHub workflows more CMake-ish * test: adapt PUC-Rio tests for debug line hook * test: adapt PUC-Rio test for tail calls debug info * test: adapt PUC-Rio test with reversed function Closes #5693 Closes #5702 Closes #5782 Follows up #5747 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump NO_CHANGELOG=LuaJIT submodule bump
-
- Jun 01, 2022
-
-
Andrey Saranchin authored
Since the use of sigprocmask() is unspecified in a multithreaded process we should use pthread_sigmask() instead. This patch replaces all the sigprocmask calls with pthread analogue. NO_TEST=refactoring NO_CHANGELOG=refactoring NO_DOC=refactoring
-
- May 25, 2022
-
-
Timur Safin authored
FreeBSD Tarantool port has some problems if build uses cmake' ExternalProject_Add which refers to the github repository. Sumodule works better - so switching to using it. NO_CHANGELOG=build NO_DOC=build NO_TEST=build
-
- May 20, 2022
-
-
Maxim Kokryashkin authored
LuaJIT submodule is bumped to introduce the following changes: * sysprof: change C configuration API * sysprof: enrich symtab on a new trace or a proto * sysprof: fix SYSPROF_HANDLER_STACK_DEPTH * sysprof: make internal API functions static * sysprof: add LUAJIT_DISABLE_SYSPROF to Makefile * symtab: check the _GNU_SOURCE definition Within this changeset Tarantool-specific backtrace handler is introduced and set to be used by sysprof machinery. Besides, all new public Lua C API introduced within this changeset is added to extra/exports. Follows up #781 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump NO_CHANGELOG=LuaJIT submodule bump
-
- May 19, 2022
-
-
Sergey Bronnikov authored
Changelog: https://curl.se/changes.html#7_83_0 Curl replaced prefix CURL_ with CMAKE_ in private identifiers [1] since the 'CMAKE_' prefix is reserved for CMake's own private use, see [2]. Patch adds a number of options defined in curl build infrastructure with their default values used in 7.83.0. 1. https://github.com/curl/curl/commit/9108da2c26d18e927b91e33d3729d9cf0f3eb8fa 2. https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump Follows up #6029
-
- Apr 25, 2022
-
-
Maxim Kokryashkin authored
LuaJIT submodule is bumped to introduce the following changes: * GC64: disable sysprof support * build: make -DLUAJIT_DISABLE_SYSPROF work * test: disable sysprof C API tests with backtrace * tools: introduce parsers for sysprof * sysprof: introduce Lua API * memprof: add profile common section * core: introduce lua and platform profiler * memprof: move symtab to a separate module * core: separate the profiling timer from lj_profile * vm: save topframe info into global_State Within this changeset a parser for binary data dumped via the sampling profiler to Tarantool binary. It is a set of the following Lua modules: * sysprof/parse.lua: decode the sampling profiler event stream * sysprof/collapse.lua: collapse stacks obtained while profiling * sysprof.lua: Lua script and module to display data Besides, all new public Lua C API introduced within this changeset is added to extra/exports. Closes #781 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
Sergey Bronnikov authored
Changelog: https://curl.se/changes.html#7_80_0 NO_DOC=libcurl submodule bump NO_CHANGELOG=libcurl submodule bump NO_TEST=libcurl submodule bump Closes: #6029 Closes: https://github.com/tarantool/security/issues/10
-
- Apr 22, 2022
-
-
Igor Munkin authored
LuaJIT submodule is bumped to introduce the following changes: * memprof: enrich symtab with newly loaded symbols * memprof: extend symtab with C symbols Within this changeset the new Lua module providing minimalistic AVL tree implementation required for processing C symbols is introduced: * utils/avl.lua: minimalistic AVL tree implementation Closes #5813 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump Signed-off-by:
Igor Munkin <imun@tarantool.org>
-
Mergen Imeev authored
Part of #6773 NO_DOC=INTERVAL has already been introduced earlier. NO_CHANGELOG=It will be added in another commit.
-
- Apr 12, 2022
-
-
Igor Munkin authored
* memprof: enrich symtab when new trace is compiled * memprof: substitute long proto names with aliases * memprof: enrich symtab when meeting new prototype * memprof: add symbol generations Closes #5815 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Apr 04, 2022
-
-
Timur Safin authored
Datetime module provides parse function to create datetime object given input string. `datetime.parse` function expect 1 required argument - which is input string, and set of optional parameters passed as table in 2nd argument. Allowed attributes in this optional table are: * `format` - should be either 'iso8601', 'rfc3339' or `strptime`-like format string. [strptime format will be added as part of next commit]; * `tzoffset` - to redefine offset of input string value, if there is no timezone provided. * `tz` - human-readable, Olson database, timezone identifier, e.g. 'Europe/Moscow'. Not yet implemented in this commit. ``` tarantool> T = date.parse('1970-01-01T00:00:00Z') tarantool> T - 1970-01-01T00:00:00Z tarantool> T = date.parse('1970-01-01T00:00:00', {format = 'iso8601', tzoffset = 180}) tarantool> T - 1970-01-01T00:00:00+0300 tarantool> T = date.parse('2017-12-27T18:45:32.999999-05:00', {format = 'rfc3339'}) tarantool> T - 2017-12-27T18:45:32.999999-0500 ``` Implemented as per RFC https://hackmd.io/@Mons/S1Vfc_axK#%D0%AD%D1%82%D0%B0%D0%BF-3-%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3-%D0%B4%D0%B0%D1%82-%D0%BF%D0%BE-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%83 Part of #6731 NO_DOC=internal NO_CHANGELOG=internal
-
- Mar 29, 2022
-
-
Georgiy Lebedev authored
Fiber call-chains end at `coro_{init, startup}`, but unwinders don't stop there, trying to use `coro_{init, startup}` stack frame's return address (which points to some garbage) and, in turn, failing. A similar issue was experienced by seastar and julia (see JuliaLang/julia#23074 and scylladb/scylla#1909). In order to make unwinding stop at `coro_{init, startup}`'s stack frame we need to annotate it with CFI assembly: previously, annotation was provided only for GCC on x86_64 — also provide it if ENABLE_BACKTRACE is set during configuration. Zero out rbp on x86_64 (to conform to x86_64 ABI): this requires setting "-fomit-frame-pointer" compile flag for coro.c. Backtrace collection from inactive fiber based on pseudo context-switch relied on the stack frame structure: remove redundant "-fno-omit-frame-pointer" and "-fno-stack-protector" compile flags for other Tarantool sources. For some reason unwinders ignore platform ABIs regarding ending of call-chains: explicitly invalidate the topmost (`coro_{init, startup}`) current frame information (CFI) for both x86_64 and AARCH64. References: 1. glibc: * clone: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/clone.S;h=31ac12da0cc08a934d514fed1de9eba1cb3e8ec5;hb=ebbb8c9f64c3486603ef4ccee4dd2a5574e41039 * start: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=9edd17b60cd54ec9eef11c76ab02322dcb5d057a;hb=5b736bc9b55115e67129e77db4de6cf193054cd2 2. seastar: * thread_context::main(): https://github.com/scylladb/seastar/blob/d27bf8b5a14e5b9e9c9df18fd1306489b651aa42/src/core/thread.cc#L278-L293 3. julia: * https://github.com/JuliaLang/julia/blob/2e2b1d2ad50fe12999cbded0b5acd3f0a36ec8c5/src/julia_internal.h#L90-L106 4. android: * https://cs.android.com/android/platform/superproject/+/master:bionic/libc/platform/bionic/macros.h;l=52-60;drc=2528dab7419a63f57fe20027886ba7dd3857aba8 Needed for #4002 NO_DOC=internal bug fix NO_CHANGELOG=internal bug fix NO_TEST=unwind information annotation in inline assembly
-
- Mar 18, 2022
-
-
Georgiy Lebedev authored
Investigation of GNU libunwind problems on the aarch64-linux-gnu platform drive us to the conclusion that libunwind-1.2.1 provided by major distribution packages is broken. Not to mention that its test suite fails with SEGFAULTs. Last but not least, some distributions, e.g. CentOS 8 (see #4611) do not provide a libunwind package. Hence, bundle libunwind: bundling is enabled by default on all platforms, except for macOS — a system package can be used if its version is greater or equal than 1.3.0 (minimal version that does not seem to be broken on aarch64-linux-gnu). * Add new submodule: bump it to current master. * Refactor libunwind package search logic out of compiler.cmake. * Add CMake script for building bundled libunwind. * Add CMake script for extracting version of libunwind. * Re-enable backtrace for all RHEL distributions by default. * Remove libunwind from static build. Needed for #4002 Closes #4611 NO_DOC=build system NO_TEST=build system
-
- Mar 03, 2022
-
-
Igor Munkin authored
* ci: introduce GitHub Actions NO_DOC=LuaJIT submodule bump NO_CHANGELOG=no visible changes
-
- Feb 17, 2022
-
-
Igor Munkin authored
* test: adapt tests checking loading bytecode files * test: adapt disabled tests from PUC-Rio * test: adapt tests checking traceback in tail call * test: adapt test checking global environment Closes #5687 Closes #5691 Closes #5703 Closes #5713 Part of #5870 NO_DOC=LuaJIT submodule bump NO_CHANGELOG=no visible changes
-
- Feb 11, 2022
-
-
Igor Munkin authored
* gdb: add mmudata value to lj-gc output * gdb: unwind Lua stack top part
-
- Feb 02, 2022
-
-
Igor Munkin authored
* memprof: report JIT-side allocations as internal Closes #5679
-
- Jan 28, 2022
-
-
Igor Munkin authored
* Actually implement maxirconst trace limit. * Fix string.char() recording with no arguments. Closes #6371 Part of #6548
-
- Dec 21, 2021
-
-
AnaNek authored
Before this patch Tarantool http client did not support HTTP/2. The reasons to enable HTTP/2 support are efficiency offered by the protocol and potential ability to interact with a GRPC server. The CMake version requirement is updated from 3.2 to 3.3, because we need generator expressions in cmake for setting multiple paths in CMAKE_FIND_ROOT_PATH for nghttp2 support. Closes #5771 @TarantoolBot document Title: Now we require CMake 3.3 to build tarantool In tarantool/doc#2065 we requested to update the CMake minimum version to 3.2. Now it is time for 3.3. See details in the linked commit.
-
- Dec 20, 2021
-
-
Timur Safin authored
Serialize `struct datetime` as newly introduced MP_EXT type. It saves 1 required integer field and 3 optional fields: - epoch is required field; - but nsec, tzoffset and tzindex are optional; * supported json, yaml serialization formats, lua output mode; Please refer to the https://hackmd.io/@Mons/S1Vfc_axK#%D0%A3%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B2-msgpack for a description of a messagepack serialization schema for datetime values. Follow-up to #5941 Part of #5946
-
- Dec 17, 2021
-
-
Vladimir Davydov authored
Needed for Tarantool EE. Off by default.
-
- Dec 10, 2021
-
-
Vladimir Davydov authored
This is needed to embed luarocks in static build.
-
- Nov 24, 2021
-
-
Igor Munkin authored
* memprof: add info about trace start to symtab * memprof: group allocations on traces by traceno * memprof: refactor location parsing * test: separate memprof Lua API tests into subtests Closes #5814
-
- Nov 23, 2021
-
-
Igor Munkin authored
* Fix frame traversal for __gc handler frames.
-
- Nov 16, 2021
-
-
Vladislav Shpilevoy authored
libuuid used to be a separate library since de11d68a ("CMake: refactor dependencies of internal libraries"). Unclear what was it done for. The commit says "fir unit tests". But they perfectly fine can depend on libcore like many of them do already. Because of libuuid being a separate library, libcore can't use tt_uuid, because that would be a cyclic dependency. And that won't allow to introduce tt_uuid-dependent API in a next patch. Hence libuuid is merged into libcore. Needed for #5568
-
- Oct 14, 2021
-
-
Timur Safin authored
Introduce a new builtin Tarantool module `datetime.lua` for timestamp and interval types support. New third_party module - c-dt ----------------------------- * Integrated chansen/c-dt parser as 3rd party module to the Tarantool cmake build process; * We use tarantool/c-dt instead of original chansen/c-dt to have an easier cmake build integration, as we have added some changes, which provide cmake support, and allow to rename symbols if necessary (this symbol renaming is similar to that we see with xxhash or icu). New built-in module `datetime` ------------------------------ * created a new Tarantool built-in module `datetime`, which uses `struct datetime` data structure for keeping timestamp values; * Lua module uses a number of `dt_*` functions from `c-dt` library, but they were renamed to `tnt_dt_*` at the moment of exporting from executable - to avoid possible name clashes with external libraries. * At the moment we libc `strftime` for formatting of datetime values according to flags passed, i.e. `date:format('%FT%T%z')` will return something like '1970-01-01T00:00:00+0000', but `date:format('%A %d, %B %Y')` will return 'Thursday 01, January 1970' * if there is no format provided then we use default `tnt_datetime_to_string()` function, which converts datetime to their default ISO-8601 output format, i.e. `tostring(date)` will return string like "1970-01-01T00:00:00Z" * There are a number of simplified interfaces - totable() for exporting table with attributes names as provided by `os.date('*t')` - set() method provides unified interface to set values using the set of attributes as defined above in totable() Example, ``` local dt = datetime.new { nsec = 123456789, sec = 19, min = 29, hour = 18, day = 20, month = 8, year = 2021, tzoffset = 180 } local t = dt:totable() --[[ { sec = 19, min = 29, wday = 6, day = 20, nsec = 123456789, isdst = false, yday = 232, tzoffset = 180, month = 8, year = 2021, hour = 18 } --]] dt:format() -- 2021-08-21T14:53:34.032Z dt:format('%Y-%m-%dT%H:%M:%S') -- 2021-08-21T14:53:34 dt:set { usec = 123456, sec = 19, min = 29, hour = 18, day = 20, month = 8, year = 2021, tzoffset = 180, } dt:set { timestamp = 1629476485.124, tzoffset = 180, } ``` Coverage is File Hits Missed Coverage ----------------------------------------- builtin/datetime.lua 299 23 92.86% ----------------------------------------- Total 299 23 92.86% Part of #5941 @TarantoolBot document Title: Introduced a new `datetime` module for timestamp and interval support Create `datetime` module for timestamp and interval types support. It allows to create date and timestamp values using either object interface, or via parsing of string values conforming to iso-8601 standard. One may manipulate (modify, subtract or add) timestamp and interval values. Please refer to https://hackmd.io/@Mons/S1Vfc_axK#Datetime-in-Tarantool for a more detailed description of module API.
-
- Oct 05, 2021
-
-
EvgenyMekhanik authored
Closes #4909
-