[Tarantool-patches] [RFC] cmod user api
Cyrill Gorcunov
gorcunov at gmail.com
Mon Jan 25 23:35:50 MSK 2021
Hi guys! Recently I've sent a series which implements that
named "cmod" module which allows to load and run stored C
procedures similar to 'box.func' except they allows to run
such functions even on nodes in read-only mode.
The overall picture of api was not clear from changelog and
here I provide a short description to gather comments.
Entry point of any function comes from "module" instance.
To load a module one have to
module = require('cmod').load('path-to-module')
Note the path to the module should be shipped without .so
extension (or dylib for macos). I suspect we should support
both variants with and without file extension.
Once module is loaded we can associate a function from
this module with some Lua variable.
foo = module:load('name-of-function')
Then we can execute it
res = foo(arguments, ...)
Both function and module supports explicit unloading via
unload method.
foo:unload()
module:unload()
When function/module is unloaded any attempt to use this
variable will produce an error. If they are not explicitly
unloaded then GC will reap them.
Module Lua object provides :reload() method which re-reads
the shared library and updates associated functions such than
any new call will be executed via new code. If there are some
already executing functions which are in yield state then such
functions gonna finish execution of old code first and only
next calls will be pacing the new code.
Does such api looks sane or there some other ideas?
Cyrill
More information about the Tarantool-patches
mailing list