GMP manual at https://gmplib.org/manual/Custom-Allocation.html sates,
taht "GMP may use allocated blocks to hold pointers to other allocated
blocks. This will limit the assumptions a conservative garbage
collection scheme can make.", therefore we won't collect it's internal
blocks. Fixes#58.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Function for some types of streams without handler (not all) was
calling internal-error stopping whole implementation instead of
returning `INVALID_HANDLER'.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
A lot of code was duplicated due to creating descriptors for output,
input and error streams. It is reduced by extracting function
`create_descriptor'.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
This makes `stderr` same class citizen as `stdout` and `stdin`. In
order to make it work structure process has been changed to be able to
handle stream_error and index of `exit-code` and `status` are
1+. Access to stream is possible via last value of run-program, which
returns process itself.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Order of checking the same conditions in input and output was slighly
different without an obvious reason. Fixed that, so code is easier to
read.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
If `rlimit' is available (ie on linux), then don't extend stack above
maximum value. If we don't know limit or limit is `infinity', then
there is no protection and user extends heap on his own risk.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Now `si:set-limit' calculates size by itself, while `*_set_size' sets
size as name says. Extend `c-stack' by magnitude of two.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Add `serror' and `stack-error-handler', which behave like normal
`cerror' -> `universal-error-handler' call order, except fact, that
after handling stack-overflow condition they reset appropriate stack
limit. Fixes#56.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
When stack overflow condition is risen, to throw cerror stack limit
has to be raised by pre-allocated margin. This function resets stack
limit to original value. The only argument is stack designator.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
It is different from stack size, because limit is space available to
user, while stack size is larger by safe_area necessary to act on
stack overflow conditions.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Some functions were setting size of stack to provided value, while
other added (* 2 margin) to it, what wasn't consistant. Now each
function treats provided size as a limit and adds margin to it.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Use wget to download tests (ecl-curl failed on https), use ecl
binaries and libs from installation directory and fix tests target
order.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Documentation explicitly mentions this nickname, and it's common for
many implementations. Closes#72.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
This is required because format is working on string with fill pointer
making it an array - not simple-array what is expected.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
`multiple-value-prog1` was called outside `let` bindings, thereof it
lead to returning unbound access-forms.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
If printed float is effectively zero, then if not explicitly specified
by `fdigits` it should be printed as 0.0 (or .0 if width is too small).
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Bugfix: decrement number of digitse provided to `flonum-to-string` if
sign is also to be printed.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>