starwing / luautf8

a utf-8 support module for Lua and LuaJIT.
MIT License
412 stars 68 forks source link

Require string #7

Open daurnimator opened 8 years ago

daurnimator commented 8 years ago

Reported by @nadako

A require string that contains "-" undergoes a translation to "_" when looking for a C symbol.

luautf8 should use a require string and .so name of just "utf8" instead of the current "lua-utf8"

nadako commented 8 years ago

A require string that contains "-" undergoes a translation to "_" when looking for a C symbol.

That's not true actually, as Lua docs say:

Once it finds a C library, this searcher first uses a dynamic link facility to link the application with the library. Then it tries to find a C function inside the library to be used as the loader. The name of this C function is the string "luaopen_" concatenated with a copy of the module name where each dot is replaced by an underscore. Moreover, if the module name has a hyphen, its prefix up to (and including) the first hyphen is removed. For instance, if the module name is a.v1-b.c, the function name will be luaopen_b_c.

The issue arises when trying to compile luautf8 with luarocks on Windows, it generates a .def file with the invalid export function name: luaopen_lua-utf8 (or something like that), so I think it's more of a luarocks issue. I'm not familiar with lua world though, so I haven't reported any issue neither here, nor to luarocks repo.