Move the ASDF cache initialization below it's inclusion and don't be so
noisy with swank.
Also add the function sysinit which downloads and installs the Quicklisp
and replaces it's interpreted gunzip with our precompiled deflate.
Don't statically link with the ECL. Use libecl.so instead. Thanks to
that we don't have to link explicitly with each module we want to use
and the whole process is simpler.
Separate different directories for the resources.
#P"SYS:" -> #P"lisp/lib" - ECLDIR with the modules
$HOME -> lisp/home - user provided files, quicklisp, 3rd party contribs
lisp/etc - init scripts and the configuration
`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>
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>