- Sep 10, 2019
-
-
Kirill Yukhin authored
-
- Sep 09, 2019
-
-
Kirill Shcherbatov authored
The json.encode() used to cause a segfault in case of recursive table: tbl = {} tbl[1] = tbl json.encode(tbl) Library doesn't test whether given object on Lua stack parsed earlier, because it performs a lightweight in-depth traverse of Lua stack. However it must stop when encode_max_depth is reached (by design). Tarantool's lua_cjson implementation has a bug introduced during porting original library: it doesn't handle some corner cases: entering into a map correctly increases a current depth, while entering into an array didn't. This patch adopts author's approach to check encode_max_depth limit. Thanks to handling this constraint correctly the segfault no longer occurs. Closes #4366
-
- Aug 22, 2019
-
-
Serge Petrenko authored
Update decNumber library, add methods to convert decimals to uint64_t and int64_t, add unit tests. Also replace decimal_round() function with decimal_round_with_mode() to allow setting rounding mode. We need to round with mode DEC_ROUND_DOWN in to_int64 conversions in order to be consistent with double to int conversions. It will be needed to compute hints for decimal fields. Prerequisite #4333
-
Serge Petrenko authored
This patch adds the methods necessary to encode and decode decimals to MsgPack. MsgPack EXT type (MP_EXT) together with a new extension type MP_DECIMAL is used as a record header. The decimal MsgPack representation looks like this: +--------+-------------------+------------+===============+ | MP_EXT | length (optional) | MP_DECIMAL | PackedDecimal | +--------+-------------------+------------+===============+ The whole record may be encoded and decoded with mp_encode_decimal() and mp_decode_decimal(). This is equivalent to performing mp_encode_extl()/mp_decode_extl() on the first 3 fields and decimal_pack/unpack() on the PackedDecimal field. It is also possible to decode and encode decimals to msgpack from lua, which means you can insert decimals into spaces, but only into unindexed fields for now. Follow up #692 Part of #4333
-
- Aug 21, 2019
-
-
Mergen Imeev authored
Hold libcurl-7.65.3. This version is not affected by the following issues: * #4180 ('httpc: redirects are broken with libcurl-7.30 and older'); * #4389 ('libcurl memory leak'); * #4397 ('HTTPS seem to be unstable'). After this patch libcurl will be statically linked when ENABLE_BUNDLED_LIBCURL option is set. This option is set by default. Closes #4318 @TarantoolBot document Title: Tarantool dependency list was changed * Added build dependencies: autoconf, automake, libtool, zlib-devel (zlib1g-dev on Debian). * Added runtime dependencies: zlib (zlib1g on Debian). * Removed build dependencies: libcurl-devel (libcurl4-openssl-dev on Debian). * Removed runtime dependencies: curl. The reason is that now we use compiled-in libcurl: so we don't depend on a system libcurl, but inherit its dependencies.
-
- Aug 15, 2019
-
-
Kirill Yukhin authored
-
Kirill Yukhin authored
-
- Jul 24, 2019
-
-
Cyrill Gorcunov authored
We will use it for Lua console output format serialization Part-of #3834
-
Kirill Yukhin authored
-
- Jul 18, 2019
-
-
Kirill Yukhin authored
-
- Jun 16, 2019
-
-
Daniil Kotelnikov authored
Made tarantoolctl compatible with luarocks-3.x. Fixes #4052.
-
- Jun 13, 2019
-
-
Serge Petrenko authored
Add fixed-point decimal type to tarantool core. Adapt decNumber floating-point decimal library for the purpose, write a small wrapper and add unit tests. A new decimal type is an alias for decNumber numbers from the decNumber library. Arithmetic operations (+, -, *, /) and some mathematic functions (ln, log10, exp, pow, sqrt) are available together with methods to pack and unpack decimal to and from its packed representation (useful for serialization). We introduce a single context for all the arithmetic operations on decimals, which enforces both number precision and scale to be in range [0, 38]. NaNs and Infinities are restricted. Part of #692
-
- May 29, 2019
-
-
Kirill Yukhin authored
-
- May 28, 2019
-
-
Kirill Yukhin authored
-
- May 23, 2019
-
-
Kirill Yukhin authored
-
- Mar 15, 2019
-
-
Kirill Yukhin authored
Fixed GC issue.
-
- Feb 25, 2019
-
-
Alexander Turenko authored
yaml.encode() now wraps a string literal whose content is equal to a null or a boolean value representation in YAML into single quotes. Those literals are: 'false', 'no', 'true', 'yes', '~', 'null'. Reverted the a2d7643c commit to use single quotes instead of multiline encoding for 'true' and 'false' string literals. Follows up #3476 Closes #3662 Closes #3583
-
AKhatskevich authored
Use lua_is*() functions instead of explicit lua_gettop() checks in yaml.encode() and yaml.decode() functions. Behaviour changes: * yaml.decode(object, nil) ignores nil (it is consistent with encode behaviour). * yaml.encode() gives an usage error instead of "unsupported Lua type 'thread'". * yaml.encode('', {}, {}) ignores 3rd argument (it is consistent with decode behaviour).
-
- Nov 15, 2018
-
-
Yaroslav Dynnikov authored
I. Fixes tarantoolctl rocks install hanging in resctricted networks corner-case. A customer configured two rocks servers: 1. offline (file:///path/to/rocks) 2. and default online (rocks.tarantool.org) He tries to do `rocks install http 1.0.5-1`. Online server is unavailable due to his local network policy, but the rock is available offline. Despite anything, luarocks still tries to fetch manifest online, which results in 30 sec hang since network access is restricted. This change aborts scanning when exact match is found II. Remove cyclic dependencies This is required to embed luarocks into tarantool, as current tarantool preloader can't preload cyclic dependencies. There should be a unidirectional dependency graph and predictable order. Note: as a consequence of this patch, operating systems other that unix-compatible ones are no longer supported. This is because I had to manually resolve dependency graph for predictable require() order. III. Use digest.md5_hex to compute md5 digests instead of openssl luarocks has support for calculating md5 with 'md5' rock if it's present, but we don't have it in tarantool, and instead have the 'digest' module. That's why luarocks falls back to 'openssl' binary to calculate md5 digests. This patch will allow luarocks to use our internal digests module.
-
- Sep 13, 2018
-
-
Roman Khabibov authored
Add an ability to pass options to json.encode()/decode(). Closes: #2888. @TarantoolBot document Title: json.encode() json.decode() Add an ability to pass options to json.encode() and json.decode(). These are the same options that are used globally in json.cfg().
-
- Sep 06, 2018
-
-
Georgy Kirichenko authored
A possibility to build tarantool with included library dependencies. Use the flag -DBUILD_STATIC=ON to build statically against curl, readline, ncurses, icu and z. Use the flag -DOPENSSL_USE_STATIC_LIBS=ON to build with static openssl Changes: * Add FindOpenSSL.cmake because some distributions do not support the use of openssl static libraries. * Find libssl before curl because of build dependency. * Catch all bundled libraries API and export then it in case of static build. * Rename crc32 internal functions to avoid a name clash with linked libraries. Notes: * Bundled libyaml is not properly exported, use the system one. * Dockerfile to build static with docker is included Fixes #3445
-
- Jul 19, 2018
-
-
Kirill Shcherbatov authored
Strings containing "true" and "false" were converted to a boolean type when serializing. Fixed. Example: type(yaml.decode(yaml.encode('false'))) == string type(yaml.decode(yaml.encode('true'))) == string Closes #3476.
-
- Jul 13, 2018
-
-
Kirill Yukhin authored
New commit in third_party/libyaml downgrades required cmake version.
-
- Jul 12, 2018
-
-
Kirill Yukhin authored
Closes #3275.
-
- Jul 10, 2018
-
-
Kirill Shcherbatov authored
Now it is possible to specify a number in exponential form via all formats allowed by json standard. json.decode('{"remained_amount":2.0e+3}') json.decode('{"remained_amount":2.0E+3}') json.decode('{"remained_amount":2e+3}') json.decode('{"remained_amount":2E+3}') <-- fixed Closes #3514.
-
- May 31, 2018
-
-
Vladislav Shpilevoy authored
YAML formatting C API is needed for #2677, where it will be used to send text pushes and prints as tagged YAML documents. Push in the next patches is implemented as a virtual C method of struct session, so it is necessary to be able format YAML from C. Needed for #2677
-
Vladislav Shpilevoy authored
Yaml.decode tag_only option allows to decode a single tag of a YAML document. For #2677 it is needed to detect different push types in text console: print pushes via console.print, and actual pushes via box.session.push. To distinguish them YAML tags will be used. A client console for each message will try to find a tag. If a tag is absent, then the message is a simple response to a request. If a tag is !print!, then the document consists of a single string, that must be printed. Such a document must be decoded to get the printed string. So the calls sequence is yaml.decode(tag_only) + yaml.decode. The reason why a print message must be decoded is that a print() result on a server side can be not well-formatted YAML, and must be encoded into it to be correctly sent. For example, when I do on a server side something like this: console.print('very bad YAML string') The result of a print() is not a YAML document, and to be sent it must be encoded into YAML on a server side. If a tag is !push!, then the document is sent via box.session.push, and must not be decoded. It can be just printed or ignored or something. Needed for #2677
-
Vladislav Shpilevoy authored
Encode_tagged is a workaround to be able to pass options to yaml.encode(). Before the patch yaml.encode() in fact has this signature: yaml.encode(...). So it was impossible to add any options to this function - all of them would be treated as the parameters. But documentation says: https://tarantool.io/en/doc/1.9/reference/reference_lua/yaml.html?highlight=yaml#lua-function.yaml.encode that the function has this signature: yaml.encode(value). I hope if anyone uses yaml.encode(), he does it according to the documentation. And I can add the {tag_prefix, tag_handle} options to yaml.encode() and remove yaml.encode_tagged() workaround.
-
- May 30, 2018
-
-
Vladislav Shpilevoy authored
Encode_tagged allows to define one global YAML tag for a document. Tagged YAML documents are going to be used for console text pushes to distinguish actual box.session.push() from console.print(). The first will have tag !push, and the second - !print.
-
- May 07, 2018
-
-
Vladislav Shpilevoy authored
OOM is not single possible error. Yaml library during dump can raise such errors as YAML_MEMORY_ERROR, YAML_WRITER_ERROR, YAML_EMITTER_ERROR. And each of them can contain any error message that is skipped now, because Tarantool YAML does not provide such API, that can lead to a non-OOM error. But it is changed in next commits.
-
- May 03, 2018
-
-
Vladislav Shpilevoy authored
Any option of base64 leads to urlsafe encoding. It is wrong, and caused by incorrect flag checking. Fix it. Closes #3358
-
- Mar 30, 2018
-
-
Vladimir Davydov authored
Closes #3148
-
Vladimir Davydov authored
EV_USE_REALTIME and EV_USE_MONOTONIC, which force libev to use clock_gettime, are enabled automatically on Linux, but not on OS X. We used to forcefully enable them for performance reasons, but this broke compilation on certain OS X versions and so was disabled by commit d36ba279 ("Fix gh-1777: clock_gettime detected but unavailable in macos"). Today we need these features enabled not just because of performance, but also to avoid crashes when time changes on the host - see issue #2527 and commit a6c87bf9 ("Use ev_monotonic_now/time instead of ev_now/time for timeouts"). Fortunately, we have this cmake defined macro HAVE_CLOCKGETTIME_DECL, which is set if clock_gettime is available. Let's enable EV_USE_REALTIME and EV_USE_MONOTONIC if this macro is defined. Closes #3299
-
- Feb 26, 2018
-
-
Konstantin Osipov authored
-
- Jan 27, 2018
-
-
IlyaMarkovMipt authored
-
- Oct 05, 2017
-
-
Vladislav Shpilevoy authored
-
- Sep 26, 2017
-
-
Vladislav Shpilevoy authored
* no-wrap: do not wrap each 72 result symbols on a new line; * no-pad: do not add padding at the end of a result; * urlsafe: no-wrap + no-pad + replace '+' -> '-' and '/' -> '_'. Closes #2777 Closes #2478 Closes #2479
-
- Sep 18, 2017
-
-
Georgy Kirichenko authored
Update zstd submodule to v1.3.1 version.
-
- Sep 12, 2017
-
-
Roman Tsisyk authored
The fallthrough attribute with a null statement serves as a fallthrough statement. It hints to the compiler that a statement that falls through to another case label, or user-defined label in a switch statement is intentional and thus the -Wimplicit-fallthrough warning must not trigger. The fallthrough attribute may appear at most once in each attribute list, and may not be mixed with other attributes. It can only be used in a switch statement (the compiler will issue an error otherwise), after a preceding statement and before a logically succeeding case label, or user-defined label. https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
-
- Aug 22, 2017
-
-
Vladimir Davydov authored
ev_now()/ev_time() are affected by system time changes, which makes them impractical for calculating timeouts. Introduce ev_monotonic_now() and ev_monotonic_time() which work exactly as ev_now()/ev_time(), but use monotonic clock instead of realtime. Needed for #2527
-