Goals
- reduce binary size
- maintenance overhead for already installed systems
Drawbacks
This of course does not work for every UCD contents. All the tables can be easily loaded at runtime but if something's added that is currently translated into an enum class, that's still compile-time and cannot be runtime loaded, obviously.
Checklist
Implementation
I think the best would be to go with a double-layer principle, i.e. we still make use of mktables.py to create some .cpp & .h files, but have some of their table names flagged such that it's not populating them but use another API to access the runtime loaded ones instead.
Goals
Drawbacks
This of course does not work for every UCD contents. All the tables can be easily loaded at runtime but if something's added that is currently translated into an
enum class, that's still compile-time and cannot be runtime loaded, obviously.Checklist
codepoint_propertiesloader to populate UCD tables at runtime/usr/share/libunicode/ucd(or similar)ucd.hshould then most likely remain static and version controlled. (Can it still be auto-generated or should it be hand-maintained?)Implementation
I think the best would be to go with a double-layer principle, i.e. we still make use of
mktables.pyto create some .cpp & .h files, but have some of their table names flagged such that it's not populating them but use another API to access the runtime loaded ones instead.