Functions to print (nan,float)-to-string and and predicates are still
available, but ext:*-float-*-infinity aren't available if ECL is built
with option `--with-ieee-fp=no`.
Carry STORES to do-setf-method-expansion in order to fix bug with long
form of DEFSETF (using multiple values as assignment variables is
legal). Change is backwards compatible.
Emit ".cxx" source files instead of ".c" source if configured
"--with-cxx". This noticeably reduces the amount of whining from the
Clang compiler, which considered compiling ".c" as C++ a significant
deprecation.
Randomized init funciton name is used internally and prevents symbol
clashes which lead to bugs when loading systems of the same name
(bundles for instance).
On the other hand wrapper provides a way to initialize library from
the C code. In this case it is programmer responsibility to name his
system uniquely. It will initialize it's submodules fine.
Fixes#74. Fixes#177.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Both shared and static libraries might be linked from C code and names
of the initialization functions has to be known without parsing the
file. Related to #177 and #74. FWIW it doesn't introduce regression on
ADSF bundles (#74) and solves initialization problem (#177).
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Sometimes we want to build with objects from CFFI (like
wrappers). These doesn't have entry point and initialization
function. If we'll encounter such an object just attach it without
adding it to the initialization queue. Fixes#174.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
and "-INFINITY" for negative infinity. These corner-cases lead to
compilation error, so no regression will be imposed even against
non-c99 compilers.
INFINITY and NAN macros are introduced by C99 standard, so such code
requires C-backend to support this math extension. Fixes#156.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
This situation is unspecified by ANSI spec – also hard to find
situation, when such construct wouldn't be an error.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
This reverts commit ab50a55fb1.
We can't cast every 3rd argument to *(void **) - this breaks *things*.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Some compilers doesn't allow putting function pointers when parameter
type is declared (void *), but it's necessary if we want to use
callbacks. Fixes#99.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
fasl and program init function names are always the same, don't search
for tag in binary files for this two targets.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
This is necessary if we want to retrieve function name from compiled
binary, what is necessary if we want to use unique names for this
function. This is necessary for fix of issue #41.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Both byte and C compilers didn't bind lexically *readtable*, what lead
to pollution of other compiled packages. Fixes#95 and #59.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>