From: Igor Munkin <imun@tarantool.org> To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Cc: tarantool-patches@dev.tarantool.org, alexander.turenko@tarantool.org Subject: Re: [Tarantool-patches] [PATCH 2.X 5/7] module api: luaT_temp_luastate & luaT_release_temp_luastate Date: Tue, 29 Sep 2020 18:10:02 +0300 [thread overview] Message-ID: <20200929151002.GY18920@tarantool.org> (raw) In-Reply-To: <40b631b2-c660-32f7-c421-9770d5d06de4@tarantool.org> Vlad, I guess there should be a question to be asked in scope of the original series: what performance enhancement can we obtain with such hacky optimization? Do we have any benchmarks? If the performance impact is negligible I believe these interfaces should be left internal. On 29.09.20, Vladislav Shpilevoy wrote: > Thanks for the patch! > > I strongly don't like this export. It seems to be too internal. > > But I have no better ideas than propose to implement your own > lua_State cache in the merger module. It does not seem to be too > hard, and I don't think it would occupy much memory. Well, such exercise looks like fun but it's better to make it once and provide user-friendly interfaces by so called "modulekit" to be used in third party modules. Anyway, using this routine seems a bit complicated than <lua_newstate> and <luaT_newstate> (also fully implemented via Lua C standart API + already exported <luaT_call>). Ergo one ought to push extern developers using the new one besides exporting it. > > Just a simple list of lua_State objects, created by luaT_newthread > on demand, and put back into the list when unused. What is wrong > with that? Again, how much will performance be nerfed if we simply create a new Lua coroutine by demand? > > Adding Igor as Lua master to help with this. > > See 2 comments below. > > > diff --git a/src/lua/utils.h b/src/lua/utils.h > > index 9b1fe7e57..da0140076 100644 > > --- a/src/lua/utils.h > > +++ b/src/lua/utils.h > > @@ -554,6 +554,41 @@ luaL_iscallable(lua_State *L, int idx); > > struct lua_State * > > luaT_newthread(struct lua_State *L); > > <snipped> > > 2. I would encapsulate the out parameters into some kind of > luaT_temp_state_ctx or something like that. Probably not even > opaque, but extendible. Totally agree here. Current interface is too fragile and tricky and IMHO has to be redesigned/reworked prior to be exported for public usage. > > Also maybe worth grouping these methods by using a common prefix: > > luaT_temp_luastate_get > luaT_temp_luastate_release > > > + * > > + * Return NULL and set a diag at failure. > > + */ > > +struct lua_State * > > +luaT_temp_luastate(int *coro_ref, int *top); > > + > > +/** > > + * Release a temporary Lua state. > > + * > > + * It complements `luaT_temp_luastate()`. > > + */ > > +void > > +luaT_release_temp_luastate(struct lua_State *L, int coro_ref, int top); > > + > > /** \endcond public */ > > > > /** > > Finally, I see no strict arguments *for* exporting these routines, and have many doubts regarding its current design and *obligatoriness*. Yes, they may be useful inside the platform but do they look like ones user must have? I tend to "no" for now. -- Best regards, IM
next prev parent reply other threads:[~2020-09-29 15:20 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-24 17:00 [Tarantool-patches] [PATCH 2.X 0/7] RFC: module api: extend for external merger Lua module Timur Safin 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 1/7] module api: export box_tuple_validate Timur Safin 2020-09-28 22:20 ` Vladislav Shpilevoy 2020-10-02 12:24 ` Timur Safin 2020-10-09 1:11 ` Alexander Turenko 2020-10-09 20:11 ` Vladislav Shpilevoy 2020-10-10 1:19 ` Alexander Turenko 2020-09-29 5:25 ` Alexander Turenko 2020-10-05 7:35 ` Alexander Turenko 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 2/7] module api: export box_key_def_dup Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-09-29 5:03 ` Alexander Turenko 2020-09-29 23:19 ` Vladislav Shpilevoy 2020-10-01 3:05 ` Alexander Turenko 2020-10-02 12:25 ` Timur Safin 2020-10-02 12:26 ` Timur Safin 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 3/7] module api: luaT_newthread Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-10-02 12:27 ` Timur Safin 2020-10-02 21:48 ` Vladislav Shpilevoy 2020-09-29 6:25 ` Alexander Turenko 2020-10-02 12:26 ` Timur Safin 2020-10-02 12:53 ` Alexander Turenko 2020-09-29 15:19 ` Igor Munkin 2020-10-02 16:12 ` Timur Safin 2020-10-03 16:57 ` Igor Munkin 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 4/7] module api: luaL_register_module & luaL_register_type Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-09-29 5:09 ` Alexander Turenko 2020-09-29 23:20 ` Vladislav Shpilevoy 2020-09-30 6:31 ` Alexander Turenko 2020-09-30 6:33 ` Alexander Turenko 2020-10-02 16:14 ` Timur Safin 2020-09-29 8:03 ` Igor Munkin 2020-09-29 23:21 ` Vladislav Shpilevoy 2020-10-02 16:14 ` Timur Safin 2020-10-03 3:24 ` Alexander Turenko 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 5/7] module api: luaT_temp_luastate & luaT_release_temp_luastate Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-09-29 5:17 ` Alexander Turenko 2020-09-29 23:21 ` Vladislav Shpilevoy 2020-10-01 3:35 ` Alexander Turenko 2020-09-29 15:10 ` Igor Munkin [this message] 2020-09-29 21:03 ` Alexander Turenko 2020-09-29 23:23 ` Vladislav Shpilevoy 2020-09-30 10:09 ` Alexander Turenko 2020-10-01 15:06 ` Igor Munkin 2020-10-03 2:16 ` Alexander Turenko 2020-10-02 12:24 ` Timur Safin 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 6/7] module api: luaL_checkibuf & luaL_checkconstchar Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-09-29 5:53 ` Alexander Turenko 2020-09-29 23:25 ` Vladislav Shpilevoy 2020-10-01 3:00 ` Alexander Turenko 2020-10-02 16:14 ` Timur Safin 2020-10-02 21:48 ` Vladislav Shpilevoy 2020-10-08 13:50 ` Timur Safin 2020-09-24 17:00 ` [Tarantool-patches] [PATCH 2.X 7/7] module api: luaL_cdata_iscallable Timur Safin 2020-09-28 22:21 ` Vladislav Shpilevoy 2020-09-29 5:19 ` Alexander Turenko 2020-10-02 16:14 ` Timur Safin 2020-10-02 12:23 ` [Tarantool-patches] [PATCH 2.X 0/7] RFC: module api: extend for external merger Lua module Timur Safin 2020-10-02 21:49 ` Vladislav Shpilevoy 2020-10-03 2:54 ` Alexander Turenko
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=20200929151002.GY18920@tarantool.org \ --to=imun@tarantool.org \ --cc=alexander.turenko@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 2.X 5/7] module api: luaT_temp_luastate & luaT_release_temp_luastate' \ /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