From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Serge Petrenko Subject: [PATCH v3 0/5] decimal: expose decimal module to Lua. Date: Tue, 2 Jul 2019 20:27:47 +0300 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: vdavydov.dev@gmail.com Cc: tarantool-patches@freelists.org, Serge Petrenko List-ID: https://github.com/tarantool/tarantool/issues/692 https://github.com/tarantool/tarantool/tree/sp/gh-692-decimal-lua This patchset adds decimal module to lua. The first three patches address some bugs found in decimal during the review process. The first patch fixes ln operation being stuck in an infinite loop for some input values. The second patch makes sure infinities and NaNs cannot be constructed neither result in any operation. The third patch changes the snprint format specifier used in double to decimal conversion to the one trimming trailing zeros. Since FFI CDATA is chosen to store decimals on lua stack, a new helper to register FFI metatypes is added in the fourth patch. The fifth patch does the job itself of exposing the decimal module to lua and adds a minor test. The patch also contains a documentation request in the commit message. Changes in v3: - add 3 patches fixing bugs found during review. - increase test coverage. Changes in v2: - various review fixes requested by @vdavydov - clarify commit message and docbot request. - remove decimal.add and similar. Only leave the '+', ... operators for binary operations. - add more tests. - minor code cleanup. Serge Petrenko (5): decimal: fix ln hang on values between ~ 0.9 and 1.1 decimal: diallow infinity and NaN entirely. decimal: fix string formatting on construction from double lua/utils: add a function to register FFI metatypes. decimal: expose decimal type to lua. src/CMakeLists.txt | 1 + src/lib/core/decimal.c | 102 ++++----- src/lua/decimal.c | 351 +++++++++++++++++++++++++++++ src/lua/decimal.h | 47 ++++ src/lua/init.c | 2 + src/lua/utils.c | 28 +++ src/lua/utils.h | 13 ++ test/app/decimal.result | 452 ++++++++++++++++++++++++++++++++++++++ test/app/decimal.test.lua | 128 +++++++++++ test/unit/decimal.c | 24 +- test/unit/decimal.result | 71 +++--- 11 files changed, 1137 insertions(+), 82 deletions(-) create mode 100644 src/lua/decimal.c create mode 100644 src/lua/decimal.h create mode 100644 test/app/decimal.result create mode 100644 test/app/decimal.test.lua -- 2.20.1 (Apple Git-117)