On Mon, Feb 7, 2022 at 9:58 AM Hans Hagen <j.ha...@xs4all.nl> wrote: > On 2/7/2022 9:15 AM, luigi scarso wrote: > > Hi, > > here > > https://github.com/latex3/latex2e/issues/775 > > <https://github.com/latex3/latex2e/issues/775> > > there is an issue about the portability of the lua bytecode . > > Suggestions ? > > In any case, the patches are not for TeXLive 2022 . > Even with a patsh (not sure which one i only see akira mentioning the > size of a blob) it is not guaranteed to be portable and formats are > already not portable (endian wise) so why bother ... just make a new > format, right? We've dealt with it for > 15 years so ... anyway, Karl > doesn't mind if nothing changes so we're not really in a hurry ... > indeed not for upcoming. > > Btw, can't windows 32 be compiled with 64 bit pointers? Does the same > issue occur with the mingw binaries? >
Dunno... the scope of this thread is also to collect info about the current status of fmt portability (for luatex only). In web2c.pdf : 4.3.3 Hardware and memory dumps By default, memory dump files are generally sharable between architectures of different types; specifically, on machines of different endianness (see Section “Byte order” in GNU C Library). (This is a feature of the Web2c implementation, and is not true of all TEX implementations.) If you specify ‘--disable-dump-share’ to configure, however, memory dumps will be endian-dependent. The reason to do this is speed. To achieve endian-independence, the reading of memory dumps on LittleEndian architectures, such as PC’s and DEC architectures, is somewhat slowed (all the multibyte values have to be swapped). Usually, this is not noticeable, and the advantage of being able to share memory dumps across all platforms at a site far outweighs the speed loss. But if you’re installing Web2c for use on LittleEndian machines only, perhaps on a PC being used only by you, you may wish to get maximum speed. TEXnically, even without ‘--disable-dump-share’, sharing of .fmt files cannot be guar- anteed to work. Floating-point values are always written in native format, and hence will generally not be readable across platforms. Fortunately, TEX uses floating point only to represent glue ratios, and all common formats (plain, LATEX, AMSTEX, . . . ) do not do any glue setting at .fmt-creation time. Metafont does not use floating point in any dumped value at all. Incidentally, different memory dump files will never compare equal byte-for-byte, because the program always dumps the current date and time. So don’t be alarmed by just a few bytes difference. If you don’t know what endianness your machine is, and you’re curious, here is a little C program to tell you. (The configure script contains a similar program.) This is from the book C: A Reference Manual, by Samuel P. Harbison and Guy L. Steele Jr. (see Appendix B [References], page 55). main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; if (u.c[0] == 1) printf ("LittleEndian\n"); else if (u.c[sizeof (long) - 1] == 1) printf ("BigEndian\n"); else printf ("unknownEndian"); exit (u.c[sizeof (long) - 1] == 1); } -- luigi