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.
emit_cxx_source_if_cxx
Emit ".cxx" source files instead of ".c" source if configured "--with-cxx". This noticeably reduces the amount of whining from the Clang compiler, which considers compiling ".c" as C++ a significant
deprecation. (Note: Need to update the install instructions somewhere to show Mac OS X-ers how to compile ecl with clang/clang++).
Also 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.)
See merge request !16
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>
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>
This results in twice as big array as we could use if uint32_t was
granted with C99 - half of the bytes on 64 bit platforms are filled
with 0. Despite that it's clean and portable solution without
immediate imposing dependency on C99.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
We have API changes (#$ and with-rwlock) and various bugfixes. Note
that it's not the release yet, just version bump.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Array used for initialization is an array of the final values of
internal vector used to generate next randoms which should be a
product of initialization from a random seed.
This ability is required by CLHS to be able to read back the printed
random state. To print readable representation of random state
*print-readably* should be bound to T.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
We want this to be able to initialize random state from the fixnum and
from the array (following commits). This also simplifies code a
little.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Previous code had some deviations from the original algorithm and a
bug preventing the use of the value acquired from /dev/urandom. This
is the corrected version.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Implementation of random seed buffer filler for windows were shadowing
using /dev/urandom source. I'm convinced that author's intention was
to put there "else".
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
directories: don't break on broken symlinks
ECL when asked for a truename of a broken symbolic link signalled an
`file-error'. This isn't non-conformity, because spec doesn't specify
such situation, but lead to annoying errors with DIRECTORIES when even
irrelevant files were broken symlinks.
New behavior is as follows - broken symlinks are treated as regular
files (of :LINK kind) and no error is signalled. They aren't ignored
due to a few corner cases related to PROBE-FILE, OPEN and such.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
See merge request !13
reader: fix backquote reader if the input is incomplete
This makes behaviour consistent with single-quote reader. Fixes#159.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
See merge request !12
ECL when asked for a truename of a broken symbolic link signalled an
`file-error'. This isn't non-conformity, because spec doesn't specify
such situation, but lead to annoying errors with DIRECTORIES when even
irrelevant files were broken symlinks.
New behavior is as follows - broken symlinks are treated as regular
files (of :LINK kind) and no error is signalled. They aren't ignored
due to a few corner cases related to PROBE-FILE, OPEN and such.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Each key used in core environment has to be declared beforehand in
`symbols_list.h'. Fixes#166. Fixes#149.
Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
Heap related fixes
- User-defined heap sizes can now exceed the size of a fixnum on 32-bit
Fixes issue #140
- The heap size limit was intended to be 1GB on 32-bit or 4GB on 64-bit
but inconsistency between ECL_FIXNUM_BITS and FIXNUM_BITS in the code
prevented the heap to grow for 64-bit. This now occurs, and a few
other less visible bugs were fixed by restoring consistency to
ECL_FIXNUM_BITS.
See merge request !11
Fixes issue #140
- The heap size limit was intended to be 1GB on 32-bit or 4GB on 64-bit
but inconsistency between ECL_FIXNUM_BITS and FIXNUM_BITS in the code
prevented the heap to grow for 64-bit. This now occurs, and a few
other less visible bugs were fixed by restoring consistency to
ECL_FIXNUM_BITS.