From: Konstantin Osipov <kostja.osipov@gmail.com> To: Igor Munkin <imun@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH] Move txn from shema to a separate module (use C API instead of FFI) Date: Thu, 28 Nov 2019 18:58:01 +0300 [thread overview] Message-ID: <20191128155801.GB11584@atlas> (raw) In-Reply-To: <20191128140340.GB1214@tarantool.org> * Igor Munkin <imun@tarantool.org> [19/11/28 17:08]: > Why should we be aiming at using FFI more? The root cause is that > current fiber machinery (as well as some parts of triggers mechanism) > doesn't respect the Lua coroutine switch semantics, thereby breaking > trace recording. Lua-C API implicitly (or non-intentionally) prevents > breakage by JIT trace aborts when recording FUNCC. It's not correct. The current FFI functions were carefully crafted to never lead to sandwich code: only those functions which can not trigger a return to Lua were implemented as FFI. There was one regression between 1.10 and in 2.3 because we started firing rollback triggers when rolling back to a savepoint, which was spotted by a failing tests. One more time: When FFI bindings were written we were aware of NYI and took it into account. > Therefore, I guess we should be aiming either at changing fiber > switching to the one respecting the LuaJIT runtime or at tuning JIT > compiler way more regarding the Lua-C usage. This is actually quite simple - we could easily call a LuaJIT hook whenever switching a fiber, to make sure that it carefully switches the internals as well. Mike Pall refused to cooperate on the matter, but now we (you) control our own destiny. > Besides, we can't fully prevent platform failures if there is an FFI > misusage in users code. Tarantool has never been claiming that it prevents people from shooting themselves in the foot. Performance is the ultimate design goal, at the cost of safety at times. > > What should be the rule of thumb in your opinion, ffi or > > lua/c? > > If you want to know my rule of thumb: FFI is for external existing > libraries to be used in Lua code (and all compiler related benefits are > nothing more than a godsend consequence, since all guest stack > manipulations are implemented in LuaJIT runtime, not in an external > code) and Lua-C is a well-designed and well-documented API for embedding > Lua into a host application / extending Lua with external low-lewel > libs. I totally do not insist on my point of view, since everyone has > it's own vision on LuaJIT features. OK, but there must be a single policy though. So far it was: everything that doesn't yield and doesn't call back to Lua uses FFI. Everything else *has* to use Lua/C API, UNTIL there is a way to safely sandwich FFI calls. -- Konstantin Osipov, Moscow, Russia
next prev parent reply other threads:[~2019-11-28 15:58 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-26 13:13 Leonid 2019-11-26 21:05 ` Konstantin Osipov 2019-11-26 21:17 ` Alexander Turenko 2019-11-27 8:31 ` Konstantin Osipov 2019-11-28 8:10 ` Leonid Vasiliev 2019-11-28 12:34 ` Konstantin Osipov 2019-11-28 13:00 ` Igor Munkin 2019-11-28 13:18 ` Konstantin Osipov 2019-11-28 14:03 ` Igor Munkin 2019-11-28 15:58 ` Konstantin Osipov [this message] 2019-11-28 18:36 ` Igor Munkin 2019-11-29 5:30 ` Konstantin Osipov 2019-11-29 17:43 ` Igor Munkin 2019-11-29 5:41 ` Konstantin Osipov 2019-11-29 17:37 ` Igor Munkin 2019-12-04 13:05 ` Leonid Vasiliev 2019-12-04 13:15 ` Konstantin Osipov 2019-12-05 8:27 ` Leonid Vasiliev 2020-03-20 18:48 ` Igor Munkin 2020-03-20 19:27 ` Konstantin Osipov 2019-12-11 22:21 ` Alexander Turenko 2019-12-12 8:23 ` Leonid Vasiliev 2020-01-15 17:05 ` Alexander Turenko 2019-12-12 8:49 ` Konstantin Osipov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191128155801.GB11584@atlas \ --to=kostja.osipov@gmail.com \ --cc=imun@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] Move txn from shema to a separate module (use C API instead of FFI)' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox