lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On 11 February 2016 at 21:08, Marc Balmer <> wrote:
> We usually put some information strings into our modules, e.g.
>         lua_pushliteral(L, "_COPYRIGHT");
>         lua_pushliteral(L, "Copyright (C) 2014 micro systems marc balmer");
>         lua_settable(L, -3);
>         lua_pushliteral(L, "_DESCRIPTION");
>         lua_pushliteral(L, "EAN support functions");
>         lua_settable(L, -3);
>         lua_pushliteral(L, "_VERSION");
>         lua_pushliteral(L, "ean 1.0.1");
>         lua_settable(L, -3);
> How do other module-writer handle such?  Do you put such information into modules?  Do you think it makes sense?  Is it of any use at all?  Is it common practice? (yes, I am considering removing it...)

I find that I don't want it in *all* modules, but just for a project as a whole.
e.g. having `require"luatz"._VERSION` would be reasonable, but
`require "luatz.timetable"._VERSION` is a waste.

With lua-http I took a slightly different approach, and have a module
`require"http.version"`. This let me keep the version in one place,
while requiring it in from others (e.g. I pull it in to use as part of
the default user agent).

The other thing to note is that fields starting with '_' are
customarily reserved. From
"As a convention, programs should avoid creating names that start with
an underscore followed by one or more uppercase letters (such as

That said, if you do have these fields, it makes sense to use the
convention started by the old module() function. From
"initializes t._NAME with the given name, t._M with the module (t
itself), and t._PACKAGE with the package name (the full module name
minus last component; see below)"

Personally I haven't bothered adding in the fields for many of my
projects. Perhaps I should, depending on the outcome of this