The number of arguments of a compound term may not exceed 255.
The number of atoms created may not exceed 1048575 (33554431) on 32-bit (64-bit) architectures.
The number of bytes making up the characters of an atom may not exceed 65535.
There are 256 “temporary” and 256 “permanent” variables available for compiled clauses.
Saved-states and `.po' files are not portable between 32-bit and 64-bit architectures.
Indexing on large integers or floats is coarse, i.e there is
essentially no indexing between different large integers or
floats. This can have a huge negative impact on performance,
e.g. when using hash codes or some such to represent a (hash-table)
as clauses. The hash predicates in library(terms)
avoids this,
by default, but it
has been known to cause hard to track down performance problems when
the number is created by some other means.