Does Emacs have problems with files larger than 8 megabytes?
============================================================
Old versions (i.e., anything before 19.29) of Emacs had problems
editing files larger than 8 megabytes. As of version 19.29, the
maximum buffer size is at least 2^27-1, or 134,217,727 bytes, or 132
MBytes. Emacs 20 can be compiled on some 64-bit systems in a way that
enlarges the buffer size up to 576,460,752,303,423,487 bytes, or
549,755,813 GBytes.
If you are using a version of Emacs older than 19.29 and cannot
upgrade, you will have to recompile. Leonard N. Zubkoff <lnz@lucid.com>
suggests putting the following two lines in `src/config.h' before
compiling Emacs to allow for 26-bit integers and pointers (and thus file
sizes of up to 33,554,431 bytes):
#define VALBITS 26
#define GCTYPEBITS 5
This method may result in "ILLEGAL DATATYPE" and other random errors on
some machines.
David Gillespie <daveg@csvax.cs.caltech.edu> explains how this
problems crops up; while his numbers are true only for pre-19.29
versions of Emacs, the theory remains the same with current versions.
Emacs is largely written in a dialect of Lisp; Lisp is a
freely-typed language in the sense that you can put any value of
any type into any variable, or return it from a function, and so
on. So each value must carry a "tag" along with it identifying
what kind of thing it is, e.g., integer, pointer to a list,
pointer to an editing buffer, and so on. Emacs uses standard
32-bit integers for data objects, taking the top 8 bits for the
tag and the bottom 24 bits for the value. So integers (and
pointers) are somewhat restricted compared to true C integers and
pointers.