Daniel Kochmański
90a3a3165a
[needed?] implement software stack
2022-12-01 15:25:08 +01:00
Daniel Kochmański
2367aa2e48
nucleus: move "real" core runtime to runtime.c
...
Separate ecl_core from cl_core as representing the common language runtime
status (as opposed to common lisp status).
2022-11-29 16:29:18 +01:00
Daniel Kochmański
6f89059bfd
nucleus: define protect and dummy tags as constants
2022-11-29 16:29:18 +01:00
Daniel Kochmański
6d80adec60
nucleus: change constants from cl_core to globals in runtime
2022-11-29 16:29:18 +01:00
Daniel Kochmański
ee7dbbe576
nucleus: add a module runtime for managing the core
2022-11-29 16:29:18 +01:00
Daniel Kochmański
3129287b0c
nucleus: add a module for internal errors
...
- moved from error.d and ffi/backtrace.d
- move thread internal error to process.d
2022-11-29 16:29:18 +01:00
Daniel Kochmański
ced66bc8bc
c/makefile: group files in rough categories
2022-11-29 16:29:18 +01:00
Daniel Kochmański
b943a005b5
cleanup: separate process managament from threads
...
Additionally:
- make cl_core.processes a list (its access patterns align well)
- abstract platform specific functions with file-local macros
2022-11-29 16:29:04 +01:00
Daniel Kochmański
90483505bd
cleanup: remove unused slot ecl_process.queue_record
2022-11-25 20:44:33 +01:00
Daniel Kochmański
bd723748d7
alloc_2: initialize the type info in a separate function
...
The initialization is a lengthy function with clear responsibilities separate
from the gc initialization.
2022-11-25 17:07:36 +01:00
Daniel Kochmański
95d7f4691c
cleanup: refactor ecl_init_env into smaller functions
2022-11-25 17:07:34 +01:00
Daniel Kochmański
285c12a2c6
cosmetic: indentation, s/if/when/
2022-11-25 13:49:43 +01:00
Daniel Kochmański
1d5b8fd525
bignum: move ecl_init_bignum_registers to bignum.d
2022-11-25 13:49:43 +01:00
Daniel Kochmański
f9ad8de531
cl_core: remove unused slot .default_dispatch_macro
2022-11-25 10:47:10 +01:00
Daniel Kochmański
3ada3e96f7
stacks: initialize the lisp stack in init_stacks
2022-11-25 10:14:15 +01:00
Daniel Kochmański
9e10e9115e
cosmetic: introduce define ecl_thread_exit()
2022-11-25 10:13:49 +01:00
Daniel Kochmański
6ad85b259f
ecl_symbol: remove unused field
...
symbol.dynamic was only assigned, because we already encode this information
in a bitfield using the enum ecl_stype.
2022-11-24 19:47:27 +01:00
Daniel Kochmański
a886b04a9a
cosmetic: remove +x flag from source files
2022-11-24 19:47:26 +01:00
Daniel Kochmański
6c2cca684a
cleanup: remove lingering references to the old garbage collector
2022-11-24 19:47:26 +01:00
Daniel Kochmański
e53b3d14bd
ecl_list1: redefine as a preprocessor macro
...
This is the same as ecl_cons for all practical purposes so we simply put a
define `#define ecl_list1(x) ecl_cons(x, ECL_NIL)`.
2022-11-24 19:47:26 +01:00
Daniel Kochmański
93fabac00a
cosmetic: use ECL_NIL instead of a deprecated constant Cnil
2022-11-24 18:55:25 +01:00
Daniel Kochmański
2100549860
stacks.d: move the lisp stack from interpreter.d
2022-11-24 18:55:25 +01:00
Daniel Kochmański
c591cfdb47
stacks.d: always use explicit ecl_return1
2022-11-24 18:55:25 +01:00
Daniel Kochmański
2bbf490071
alloc_2.d: remove unused code paths
...
- GBC_BOEHM_OWN_ALLOCATOR is dead for a long time
- undef alloc_object was used the function rename to ecl_alloc_object
- remove mark phase ignored by the preprocessor
2022-11-24 18:54:39 +01:00
Daniel Kochmański
67f9d6af27
file.d: file_listen: refactor the function
...
- instead of a magic number -3 define a constant ECL_LISTEN_FALLBACK
- provide a separate definition for windows and not-windows
2022-11-24 18:46:16 +01:00
Daniel Kochmański
2b52fe3ecb
pathname_translations: use ecl_assqlp instead of @assoc
...
ecl_assqlp is sufficient and does not require argument parsing at runtime. host
is always checked to be a string, so the ecl_assoc test EQUAL will have the same
effect as the previously checked STRING-EQUAL.
2022-11-24 18:32:58 +01:00
Daniel Kochmański
f948001dee
reader: ensure the correct function arity
...
We've used void_reader as an implementation for sharp_{plus,minus}_reader -
sharp readers accept three arguments while void_reader accepted two.
- introduce void_reader3
- change sharp_{plus,minus}_reader to use void_reader3
- remove unused defines (leftovers from the past)
- remove unused void_reader (with two arguments)
2022-11-24 18:32:53 +01:00
Daniel Kochmański
4366fac6ad
portability: repair builds for --enable-threads=no
...
A few blocks were not guarded with
#ifdef ECL_THREADS
...
#endif
2022-11-24 18:32:45 +01:00
Marius Gerbershagen
b9ea8ac6ac
rename-file: fix error message
...
Don't use the filename encoded in utf8/utf16/whatever in the error
message.
2022-11-19 20:38:12 +01:00
Marius Gerbershagen
220faae167
fix encoding for standard input/output/error streams that are not Windows console streams
...
In commit 892a34e66d , I forgot to set
the encoding to the default value after we start when we are not on a
Windows console.
2022-11-19 20:34:32 +01:00
Marius Gerbershagen
fea8a9dde4
Merge branch 'fix-log-small-ratio' into 'develop'
...
log: add a separate path for ratios
See merge request embeddable-common-lisp/ecl!276
2022-11-18 15:59:57 +00:00
Daniel Kochmański
06e553157c
tests: add a regression test for (log small-ratio)
2022-11-16 00:31:26 +01:00
Daniel Kochmański
b45dec9c32
log: add a separate path for ratios
...
While not necessarily a bug, it is convenient to not overflow on very small
ratios. When feasible instead of converting to float, we compute log of the
number and the denominator and then return their difference.
c.f https://mailman.common-lisp.net/pipermail/ecl-devel/2022-July/011628.html
2022-11-16 00:31:19 +01:00
Marius Gerbershagen
4d7ee7a301
fix typo introduced in commit de15a8542
2022-10-22 20:02:07 +02:00
Marius Gerbershagen
de15a85420
cosmetic: fix some compiler warnings
2022-10-22 19:58:24 +02:00
Marius Gerbershagen
509a77335a
Merge branch 'fix-decode-float' into 'develop'
...
decode-float: fix the implementation
See merge request embeddable-common-lisp/ecl!275
2022-10-22 17:57:15 +00:00
Daniel Kochmański
3b4c4f3c98
tests: add a regression test for decode-float
...
Cases are hand picked.
2022-10-22 19:31:55 +02:00
Daniel Kochmański
4861e02c1f
decode-float: fix the implementation
...
The previous code returned 0 for negative floats. Moreover it did not honor
the signed negative zero wrt third returned value.
2022-10-22 19:22:51 +02:00
Daniel Kochmański
e760e9182b
Merge branch 'format-e-issues' into 'develop'
...
Fix several issues with the format ~e directive
Closes #499 and #632
See merge request embeddable-common-lisp/ecl!274
2022-10-02 19:28:00 +00:00
Marius Gerbershagen
482d09ed10
format.lsp: fix incorrect roundings for ~e directive
...
Due to rounding issues the exponent can be different than what we
guessed. For example in the following only one digit should appear
before the decimal point such that
(format nil "~,1e" 9.9) => 9.9e+0
is correct but
(format nil "~,1e" 9.9) => 10.0e+0
is incorrect, has to be 1.0e+1.
2022-09-24 21:04:43 +02:00
Marius Gerbershagen
0506ce34a3
format.lsp: fix format ~e with width argument
...
Fixes #632 .
2022-09-18 16:33:00 +02:00
Marius Gerbershagen
763369ee84
float_to_digits.d: add some comments
2022-09-18 16:02:47 +02:00
Daniel Kochmański
4252012a2e
Merge branch 'cmp-libs-ld-flags-non-backwards-compatible' into develop
2022-09-08 09:03:46 +02:00
Daniel Kochmański
6d191760b3
cosmetic: cmp: rename a function guess-ld-flags to guess-ld-libs
...
... to better reflect what it returns.
2022-09-08 09:02:42 +02:00
Marius Gerbershagen
d55d31df3b
format: print 0 after decimal point with ~e for integer input
...
Example: (format t "~e" 1.0) used to print 1.e+0, now prints 1.0e+0
Code adapted from SBCL.
2022-09-03 19:38:51 +02:00
Marius Gerbershagen
826cc92983
cmp: introduce new variables for linker flags
...
Split up the options into additional flags for the linker and
additional libraries.
Quoting from issue #636 :
> Here's an example, attempting to link one object file named
example.o into an executable named example. Libcrypto here is
superfluous and should be removed by --as-needed:
```
LDFLAGS="-Wl,--as-needed"
LIBS="-lcrypto"
gcc ${LDFLAGS} ${LIBS} example.o -o example # doesn't link libcrypto!
gcc example.o ${LDFLAGS} ${LIBS} -o example # doesn't honor --as-needed!
gcc ${LDFLAGS} example.o ${LIBS} -o example # works great!
```
> In short, the placement of your -l<foo> flags differs from that of
all the other linker flags. Since ECL is only providing one big
variable ld-flags for all of the linker flags, there's no correct
way to pass in options like --as-needed and -l<foo> at the same
time.
Fixes #636 .
2022-08-24 16:38:20 +02:00
Daniel Kochmański
d0a24fe283
Merge branch 'cmp-infinite-loop-circular-structure' into 'develop'
...
Fix #630
Closes #630
See merge request embeddable-common-lisp/ecl!273
2022-08-16 09:10:24 +00:00
Marius Gerbershagen
3db6ad91ff
cmp: fix infinite loop for files containing lists with the same circular structure
...
Closes #630 .
2022-08-14 17:17:57 +02:00
Marius Gerbershagen
3bf98a96e0
tests: fix typo in trap-fpe smoke test
...
Due to the typo, all floating point exceptions were enabled after the
test had run. This leads to failures in other tests for instance due
to floating-point-inexact errors. Now, the exception flags are
correctly restored again after the test is finished.
2022-08-13 20:58:23 +02:00
Daniel Kochmański
b3d1a3e343
trap-fpe: signal an error when invalid condition is supplied
...
We've allowed any symbol to be supplied as a condition, when it was not
recognized then we've not changed bits (they remained 0). From now on we signal
an error if the condition can't be signaled.
Since user reported the error with keywords used instead of cl symbols, we also
make the manual more clear regarding the package of condition symbols.
Appropriate smoke tests are added too.
Fixes #681 .
2022-07-28 21:08:31 +02:00