We are happy and proud to announce that the Cafu engine now compiles, links and
works as a native 64-bit application on 64-bit systems!
Just about a week ago we installed a fresh
64-bit Ubuntu 9.04 on one of our AMD64
systems that was only running 32-bit Windows Vista before.
Up to this point, we had done all our development work on 32-bit systems only,
or more precisely, under the
ILP32 data model under Windows
and Linux.
ILP32 means that the basic C/C++ data types like
int,
long int and pointer (e.g.
void*) are all
32-bits wide.
The Microsoft Visual C++ compiler chooses to change the data model to
LLP64 on 64-bit Windows systems, where only pointers get 64
bits wide but the
int and
long int types remain at 32-bits
width.
Most other compilers however use the
LP64 model, including the
GCC compilers under Linux. In
LP64, both
long int and
pointers are 64 bits wide, which seems like a more challenging, but also a more
natural and logical model than
LLP64.
Thanks to the very portable and clean code of the Cafu engine, our port to the
LP64 model on our x86_64 Linux system was effectively
straightforward and simple.
However, things got somewhat thrilling when it came to reading and writing our
binary file formats: world files, texture images, model files, etc. - we found
that we too had made some (in hindsight "problematic") assumptions about the
sizes of data types when they are written to or read from a file.
Making all required changes
turned out to be very easy though, and we're very happy that Cafu and all it's
programs (map compilers, world editor, ...) work wonderfully now on true 64-bit
systems!
The next release of the Cafu engine will be available as both 32- and 64-bit
downloads.
Apropos the next release: We've been working on many other great enhancements
in the meanwhile, and will announce them in separate news posts soon!