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.
Old implementation of `asynchronous_signal_servicing_thread' was
reimplemented long time ago. Old implementation was still present in
sources surrounded with `#if 0 ... #endif'. Remove it.
Windows doesn't have `sys/utsname.h' and uname in current form can't
be used. It was carefully foreseen by a previous maintainer and works
OK, but the problem emerges when cross-compiling from linux. Fixes
Also add symbol with-clean-symbols to the symbols list. This utilities
are used all across the sources and it's easier to navigate and
understand ECL sources if all the utilities it uses are available.
Use ECL_ARRAYP instead of testing for a specific types of array. It's
worth to keep in mind, that STRING will be an array of integers, while
BASE-STRING will be an array of the ordinary chars. Fixes#142.
Some libraries somewhat abuse the CLOSE method specializing it on their
own stuff which isn't a stream. Calling the NEXT-METHOD triggers the
condition. For pragmatic reasons we'll honor this and will specialize
only on the streams.
Macroexpanding DEFMETHOD creates a partially initialized GF (not the
greatest idea in itself). function-lambda-list then croaks on the
LAMBDA-LIST slot being unbound.
Instead of occupying two vector elements (one for the actual value and
one for a bit indicating whether it's an eql-specializer) store cons
cells containing eql specializer values from
CLOS::GENERIC-FUNCTION-SPEC-LIST.
`fread' may buffer some input and `listen' will return an incorrect
value. This is mainly the case when we cross-compile and user is too
lazy to check his `stdio.h' file. Fixes#185.
Don't use C99 specific syntax for `for' loop and use functions
lib_init_* instead of main_lib_init_* which aren't exported.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Add pragmas to ecl-cmp.h to reduce Clang warnings (better fix: fix the
compiler to not produce the kind of code that triggers the warnings, but
this works for the time being.)
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>