On Thu, Jul 11, 2013 at 2:04 PM, Anton Vodonosov <avodonosov@yandex.ru> wrote:

I think (hope) there are not so many places in CL which allow to couple the code with the host compiler.
Maybe this example with most-postivive-fixnum (-negative-long-float, etc) is the only one?
If so, it must be very very rare case.

It is not so rare. Take for instance code that uses type comparisons. A macro may evaluate its constant arguments to determine whether they are of type fixnum and this result depends on the platform. I am pretty sure that those checks are quite pervasive in the libraries out there. There is also code that checks for the existence of certain specialized arrays (clx most notably) and creates buffers and constants based on that decision. This once more demands that target and host be tightly coupled: i.e. similar endianness, word size, etc.

What I mean is that people write code based on the assumption that they can, at runtime, learn things about the platform they will run on. If the target and host are quite different, these compile-time assumptions will be broken.

Of course those assumptions can be parameterized in the library, but this cannot be automated by the platform that runs the compiler (ECL)


Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)