Ok, so I began to work on the
Makefile part to isolate changes introduced in Lua-i18n. The
idea is to have several Makefile variables, so that each i18n
facility can be enabled or disabled at compile time. So if you
disable all of them, you end up with the same result that you
get with the official Lua.
Ideally, you should just have to
let each internationalization cflags alone when you want the
feature, and comment the others. Then make should compile everything
seamlessly, the Makefile adding dependencies (or not) based on
cflags (un)definition state.
The easy portable part is defining
C macro variables in the Makefile to make changed code
conditional. The more difficult part is making part of
dependencies conditional in a portable fashion. Indeed
most make implementation out there include some conditional
control structure, but it's seems that currently there is no
standard straight forward portable solution. At least, I didn't
found one.
But maybe you have some thoughts to
share on the matter. :)
Related reading:
http://gallium.inria.fr/blog/portable-conditionals-in-makefiles/
https://docs.google.com/document/d/1oUR7iMnaNzkeT3TTOS-Gwul6_V3TE8caIDAd1FwPyNc/edit#
https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html
https://www.mkssoftware.com/docs/man5/makefile.5.asp
Le 22/11/2016 à 08:26, mathieu stumpf
guntz a écrit :
Le 22/11/2016 à 06:25, Dirk Laurie a écrit :
But (finally returning to the topic of the
thread) the fact that APL
and Lua for all practical purposes inhabit different lexical
worlds
makes it possible to write a single interpreter that mixes APL
and
Lua at use input level. I'd hate to give that up. Si I guess
that I don't
want internationalization in standard Lua. Call it Lua-i18n as
the
OP said, but please keep that i18n in the name at all levels.
Don't
call it Lua.
For the part which enable to use other lexems than the default
reserve ones, the idea is to make that only through a loadable
scope contained feature.
For the internationalization of error messages, it should not
introduce any change in the language interpretation. Possibly this
might have an impact on the executable size, but it also might
have some way to manage that as an optional feature at compile
time so you get zero extra weight. Possibly you may even scrape
some bytes with a "null" locale which get rid of messages or at
least use void string. Feedback is welcome if you have some
suggestions on this topic.
For the unicode support, I don't yet have enough knowledge to
forecast what the consequence would be. But once again, this might
be implemented as an optional feature at compile time. You might
even think of more character encoding if you are nostalgic of the
good old ISO 8859 mess or that you have some peace of software
that you need, can't make evolve, and rely on non-ASCII character
encoding.
Which point would still sound problematic to your mind? Can you
please provide some details, possibly with an concrete code
example of how it would be problematic to you?