Commit Briefs

df1029a091 Sergey Bronnikov

luacov config (ligurio/lua-and-c-coverage, origin/ligurio/lua-and-c-coverage)

NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal


320b6bdb33 Sergey Bronnikov

cmake: propagate code coverage flags

TODO: propagate flags commit c6794757ce71013d9137de124aec759209004882 "build: refactor passing compiler flags to dependencies" NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal


f2d83489db Sergey Bronnikov

make: update exclusion list in lcov

NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal


f30e2f1167 Sergey Bronnikov

make: merge Lua and C code coverage reports

luatest tests tarantoolctl rocks install https://raw.githubusercontent.com/tsafin/luacov/tarantool-master/luacov-scm-1.rockspec NOTE: Patch tets-run with --coverage ./test/test-run.py --build $(pwd)/build --luacov app-luatest/msgpack_test.lua или ./test/test-run.py --build $(pwd)/build --luacov --suite app-luatest box-luatest engine-luatest replication-luatest sql-luatest stat luacov.stats.out TAP tests ln -s $(pwd)/.rocks /tmp/.rocks ./test/test-run.py --build $(pwd)/build --luacov app-tap/datetime.test.lua luarocks --tree=/tmp/.rocks/ install https://raw.githubusercontent.com/tsafin/luacov/tarantool-master/luacov-scm-1.rockspec ln -s /tmp/.rocks/share/lua/5.1/ /tmp/.rocks/share/tarantool [001] Last 15 lines of Tarantool Log file [Instance "app_server"][/tmp/t/001_app-tap/datetime.test.lua.tarantool.log]: [001] LuajitError: module 'luacov' not found: [001] no field package.preload['luacov'] [001] no file '/tmp/t/001_app-tap/luacov.lua' [001] no file '/tmp/t/001_app-tap/luacov/init.lua' [001] no file '/tmp/t/001_app-tap/luacov.so' [001] no file '/tmp/t/001_app-tap/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/t/001_app-tap/.rocks/share/tarantool/luacov/init.lua' [001] no file '/tmp/t/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/t/.rocks/share/tarantool/luacov/init.lua' [001] no file '/tmp/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/.rocks/share/t [001] fatal error, exiting the event loop Blocked by https://github.com/tarantool/tarantool/issues/7839 $ export LUA_PATH="$LUA_PATH;$(pwd)/.rocks/share/tarantool/?.lua" ``` --- a/lib/luatest_server.py +++ b/lib/luatest_server.py @@ -35,7 +35,7 @@ class LuatestTest(Test): server.current_test = self script = os.path.join(os.path.basename(server.testdir), self.name) command = ['luatest', '-c', '-v', script, '-o', 'tap', '--shuffle', - 'none'] + 'none', '--coverage'] # Tarantool's build directory is added to PATH in # TarantoolServer.find_exe(). ``` $ ./build/src/tarantool /home/sergeyb/sources/MRG/tarantool/test-run/lib/luatest/bin/luatest -v --coverage test/app-luatest/ $ stat luacov.stats.out $ sed -i -e 's|builtin|'"$(realpath .)"/src/lua'|' luacov.stats.out TODO: Couldn't open ./src/lua/internal.print.lua: No such file or directory $ luacov $ tarantool tools/luacov_to_info.lua luacov.stats.out > luacov.report.out TODO: Fix builtins https://github.com/tarantool/tarantool/wiki/How-to-generate-Lua-coverage-report-for-built-in-module%3F $ lcov --add-tracefile coverage1.info -a coverage2.info -o merged.info TODO: Merge lcov reports https://github.com/daurnimator/luacov-reporter-lcov https://gitlab.nic.cz/analogic/knot-resolver/-/blob/a75f2e9964285c80ed17d4284b27ab28a31cde03/coverage.mk https://gitlab.nic.cz/analogic/knot-resolver/-/blob/a75f2e9964285c80ed17d4284b27ab28a31cde03/scripts/luacov_to_info.lua NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal


b4c49119d3 Sergey Bronnikov

cmake: pass --luacov to test-run on using ENABLE_GCOV

TODO: Проверить luacov для TAP и luatest тестов. NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal


256da01046 Vladimir Davydov

build: use relative paths in diagnostics and debugging information

Since our diagnostics use the `__FILE__` macro, they provide absolute paths, which is kind of redundant and inconsistent: replace them with relative ones. As for debugging information, replacing absolute paths with relative ones also requires an extra command to tell the debugger where to find the source files, which is not convenient for developers: provide a new `DEV_BUILD` option (turned off by default), which replaces absolute paths with relative ones in debugging information if turned off. Strip the prefix map flags from compiler flags exported to tarantool via `src/trvia/config.h`. Closes #7808 NO_DOC=<verbosity> NO_TEST=<verbosity>


e554e481fd Vladimir Davydov

test-run: bump new version

Fixes bug with determination of debug build (tarantool/test-run#352). NO_CHANGELOG=<internal submodule version update> NO_TEST=<submodule version update> NO_DOC=<submodule version update>


dd51a2fa39 Vladimir Davydov

build: refactor setting hardening compiler flags

Setting hardening compiler flags is used in three places: default build, static build and enterprise build — refactor it into a separate module. Follow-up e6abe1c NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring


c6794757ce Vladimir Davydov

build: refactor passing compiler flags to dependencies

e6abe1c passes compiler flags to dependencies via a `<project>_build` macro parameter, which is, firstly, inconvenient, and, secondly, as a result, not all dependencies got the required compiler flags passed: use global variables instead and pass these flags to skipped dependencies. Follow-up e6abe1c NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring


4aa9f15476 Vladimir Davydov

build: fix unsetting of variables in `add_compile_flags` macro

`add_compile_flags` macro relied on undefined behaviour: instead of unsetting the `_lang` and `_flag` variables, it tried to unset their values — fix this. NO_CHANGELOG=build NO_DOC=build NO_TEST=build


Branches



























































































Tags

Tree

.editorconfigcommits | blame
.gdbinitcommits | blame
.github/
.gitignorecommits | blame
.gitmodulescommits | blame
.luacheckrccommits | blame
.luacovcommits | blame
.pack.mkcommits | blame
.test.mkcommits | blame
AUTHORScommits | blame
CMakeLists.txtcommits | blame
CONTRIBUTING.mdcommits | blame
Doxyfilecommits | blame
Doxyfile.API.incommits | blame
FreeBSD/
LICENSEcommits | blame
README.FreeBSDcommits | blame
README.MacOSXcommits | blame
README.OpenBSDcommits | blame
README.mdcommits | blame
TODOcommits | blame
apk/
asan/
changelogs/
cmake/
debian/
doc/
extra/
perf/
rpm/
rump/
src/
static-build/
test/
test-run$commits | blame
third_party/
tools/

README.md

# Tarantool

[![Actions Status][actions-badge]][actions-url]
[![Code Coverage][coverage-badge]][coverage-url]
[![OSS Fuzz][oss-fuzz-badge]][oss-fuzz-url]
[![Telegram][telegram-badge]][telegram-url]
[![GitHub Discussions][discussions-badge]][discussions-url]
[![Stack Overflow][stackoverflow-badge]][stackoverflow-url]

[Tarantool][tarantool-url] is an in-memory computing platform consisting of a
database and an application server.

It is distributed under [BSD 2-Clause][license] terms.

Key features of the application server:

* Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler,
  based on LuaJIT 2.1.
* Cooperative multitasking, non-blocking IO.
* [Persistent queues][queue].
* [Sharding][vshard].
* [Cluster and application management framework][cartridge].
* Access to external databases such as [MySQL][mysql] and [PostgreSQL][pg].
* A rich set of built-in and standalone [modules][modules].

Key features of the database:

* MessagePack data format and MessagePack based client-server protocol.
* Two data engines: 100% in-memory with complete WAL-based persistence and an
  own implementation of LSM-tree, to use with large data sets.
* Multiple index types: HASH, TREE, RTREE, BITSET.
* Document oriented JSON path indexes.
* Asynchronous master-master replication.
* Synchronous quorum-based replication.
* RAFT-based automatic leader election for the single-leader configuration.
* Authentication and access control.
* ANSI SQL, including views, joins, referential and check constraints.
* [Connectors][connectors] for many programming languages.
* The database is a C extension of the application server and can be turned
  off.

Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD
(x86_64).

Tarantool is ideal for data-enriched components of scalable Web architecture:
queue servers, caches, stateful Web applications.

To download and install Tarantool as a binary package for your OS or using
Docker, please see the [download instructions][download].

To build Tarantool from source, see detailed [instructions][building] in the
Tarantool documentation.

To find modules, connectors and tools for Tarantool, check out our [Awesome
Tarantool][awesome-list] list.

Please report bugs to our [issue tracker][issue-tracker]. We also warmly
welcome your feedback on the [discussions][discussions-url] page and questions
on [Stack Overflow][stackoverflow-url].

We accept contributions via pull requests. Check out our [contributing
guide][contributing].

Thank you for your interest in Tarantool!

[actions-badge]: https://github.com/tarantool/tarantool/workflows/release/badge.svg
[actions-url]: https://github.com/tarantool/tarantool/actions
[coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master
[coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=master
[telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg
[telegram-url]: http://telegram.me/tarantool
[discussions-badge]: https://img.shields.io/github/discussions/tarantool/tarantool
[discussions-url]: https://github.com/tarantool/tarantool/discussions
[stackoverflow-badge]: https://img.shields.io/badge/stackoverflow-tarantool-orange.svg
[stackoverflow-url]: https://stackoverflow.com/questions/tagged/tarantool
[oss-fuzz-badge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg
[oss-fuzz-url]: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest
[tarantool-url]: https://www.tarantool.io/en/
[license]: LICENSE
[modules]: https://www.tarantool.io/en/download/rocks
[queue]: https://github.com/tarantool/queue
[vshard]: https://github.com/tarantool/vshard
[cartridge]: https://github.com/tarantool/cartridge
[mysql]: https://github.com/tarantool/mysql
[pg]: https://github.com/tarantool/pg
[connectors]: https://www.tarantool.io/en/download/connectors
[download]: https://www.tarantool.io/en/download/
[building]: https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/
[issue-tracker]: https://github.com/tarantool/tarantool/issues
[contributing]: CONTRIBUTING.md
[awesome-list]: https://github.com/tarantool/awesome-tarantool/