[PATCH v3 0/5] decimal: expose decimal module to Lua.

Serge Petrenko sergepetrenko at tarantool.org
Tue Jul 2 20:27:47 MSK 2019


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)




More information about the Tarantool-patches mailing list