Commit graph

353 commits

Author SHA1 Message Date
Daniel Kochmański
ba422ec9dd streams: add binary encoders and decoders to the mix
This will allow us to transcode characters to bytes and vice versa. This is
necessary to implement conductive UNREAD-BYTE and UNREAD-BYTE, but will allow us
to also add low-level parsers for binary objects in the future.
2025-08-11 10:01:40 +02:00
Daniel Kochmański
68a78e252f msvc: update makefile 2025-07-26 16:59:42 +02:00
Marius Gerbershagen
d51ce511f6 handle *features* entirely in the configure script
Previously, there were a lot of places that turned on or off C macros
which finally determined whether some particular entry was found
in *features* or not. Now, we do this all in the configure script.
This is necessary for cross compilation from a non-compatible host
which may have different features.
2025-07-19 16:33:22 +02:00
Daniel Kochmański
0f4e9b1e17 core: factor out process managament from thread managament
This is a preliminary step towards coroutines and for switching global env in
single-threaded builds.
2025-03-31 20:44:46 +02:00
Daniel Kochmański
09ebfb47dd core: add wrapper for manual memory managament
We will use this operators to allocate the first environment and stacks so that
there is no circularity between ecl_boot and starting the garbage collector.
2025-03-31 20:44:46 +02:00
Daniel Kochmański
cf7c195018 Release 24.5.10 2024-05-10 13:13:21 +02:00
Daniel Kochmański
1621f57cd9 Merge branch 'emscripten-shared-library-build' into 'develop'
Improvements for emscripten target

See merge request embeddable-common-lisp/ecl!321
2024-03-10 14:48:12 +01:00
Dmitry Solomennikov
12bf1a5243 Fix Windows scripts (quotes missing)
Signed-off-by: Dmitry Solomennikov <dmitrys99@mail.ru>
2024-03-10 14:48:12 +01:00
Marius Gerbershagen
f6083876fd support shared libraries for the emscripten target 2024-03-10 14:48:12 +01:00
Daniel Kochmański
b3d3a4e31c cleanup: update license to lgpl-2.1+ in both headers and text 2024-03-10 14:48:12 +01:00
Daniel Kochmański
0af7368857 release: update changelog and version number before the release
Fixes #706.
2023-09-03 13:46:23 +02:00
Daniel Kochmański
50c38970c7 dependencies: update bdwgc to 8.2.4 and libatomic_ops to 7.8.0 2023-06-12 10:33:47 +02:00
Daniel Kochmański
4a1902658c cmpc: move sysfun to the cxx backend
sysfun declarations revolve strictly around c function inlining that is specific
to the C backend.

Moreover be more explicit about symbol packages and check feature-conditioned
inlines at runtime (not at readtime) in case that we construct the inline
information for a cross-compiled target. This should be further improved.
2023-06-11 10:40:18 +02:00
Yuguo Zhang
6b0f6faa55 msvc: set HAVE_WCHAR_H in config.h 2021-12-23 09:39:44 +00:00
Marius Gerbershagen
de5d56b4c6 multithreading: replace various synchronization objects by native mutexes
- Spinlocks have been replaced by ordinary locks. Without access to
  the underyling scheduler, spinlocks provide no performace benefit
  and may even be harmful in case of high contention.
- Synchronization of process creation and exiting has been simplified.
  Instead of a spinlock, a barrier and atomic operations we now use
  only a single lock protecting the shared process state and a
  condition variable for implementing process joins.
- Some locks which were implemented using Lisp objects now directly
  use a native mutex.
- Our own mutex implementation has been removed as it is now unused.
2021-08-29 17:23:20 +02:00
Marius Gerbershagen
7431e6941c msvc: Makefile: use file stream instead of input stream for compile.lsp
Be consistent with unix Makefile, allow for debugging errors during the build.
2021-08-19 14:00:28 +02:00
Marius Gerbershagen
ecd86a2541 unicode: update unicode character database to version 13.0.0 2021-05-07 21:09:09 +02:00
Yuguo Zhang
1cd226f867 msvc: use :X86-64 feature keyword when make a 64bit build 2021-03-24 09:39:03 +08:00
Yuguo Zhang
7bee8a4172 msvc: fix Makefile for check target 2021-03-05 16:36:38 +08:00
Marius Gerbershagen
5cd97358af 21.2.1 release 2021-01-30 19:27:41 +01:00
Daniel Kochmański
7908ba8003 refactor: remove the file symbols_list2.h
The file symbols_list2.h was automatically generated from the file
symbols_list.h for dpp. This commit unifies said structure definition and
removes a step for generating symbols_list2.h.

From now on at runtime the structurecl_symbol_initializer has an additional
element storing the function name. That will help solving #543.
2020-12-23 12:08:33 +01:00
Pritam Baral
a1b2909b8a s/TCP/ECL_TCP/ among preprocessor defines 2020-11-22 21:04:16 +00:00
Marius Gerbershagen
e0bf0f5ac2 gc: remove unnecessary workarounds for old bdwgc versions 2020-05-10 19:47:05 +02:00
Daniel Kochmański
eea597de34 20.4.24 release
Announcement proposal. When this is merged to the develop branch, then
we should make a PR against master and merge. Then we shall publish
tarballs and the announcement on the website.
2020-04-21 11:24:02 +02:00
Marius Gerbershagen
f76bd95786 fix array dimension limit for msvc win64 2020-03-07 22:26:43 +01:00
Marius Gerbershagen
14fa51f172 fix config.h for MSVC win64 2020-03-01 18:49:50 +01:00
Yuguo Zhang
b59bbd6164 restore 21bit unicode on windows msvc build
ecl_character is a signed type actually,
16bit signed short is not big enough to hold big charsets, such as
CP936.

this commit rolls back 74b67347.
2020-02-26 11:36:34 +08:00
Marius Gerbershagen
c301b108a7 bignums: don't use ecl_alloc_atomic for gmp
The gmp manual (https://gmplib.org/manual/Custom-Allocation.html) states

> GMP may use allocated blocks to hold pointers to other allocated
  blocks. This will limit the assumptions a conservative garbage
  collection scheme can make.

Thus we can't use ecl_alloc_atomic. We could just use ecl_alloc
instead, however our implementation is already structured in such a
way that it is sufficient to use ecl_alloc_uncollectable. The reason
for that is that currently all bignums except those in the bignum
registers in the thread local environment are allocated as compact
objects so that we only need to call mpz_clear for the few non-compact
objects in the bignum registers.

See also commits 7b536161 and bd48b859.
Fixes #485.
2020-01-04 17:49:08 +01:00
Marius Gerbershagen
d7b2dfb722 Change handling of C stack size
Previously: unconditionally use the size from ECL_OPT_C_STACK_SIZE if
it is larger than the OS provided value and if possible resize the
stack at runtime.

Now: Use ECL_OPT_C_STACK_SIZE if provided. Otherwise, use a) the OS
provided value if we can resize the stack at runtime (for Unix) or b)
the new build option ECL_DEFAULT_C_STACK_SIZE (1 MB) if we can set the
stack size at link time (for Windows).
2019-12-26 19:13:31 +01:00
Marius Gerbershagen
a2319d3150 unixsys: check for system() in configure
Don't let a non-available system() function (happens e.g. on iOS)
prevent us from compiling ECL.
2019-12-08 10:26:52 +01:00
Daniel Kochmański
8b82c98cac Merge branch 'alt-fix-513' into 'develop'
Fix 513 2nd try

Closes #514

See merge request embeddable-common-lisp/ecl!159
2019-08-16 18:44:23 +00:00
Exaybachay
30f1ffcd5d buildsystem: remove unnecessary nodefaultlib linker flags(msvc)
MS link.exe can pick the right crt libraries according to the compiler flags,
such as /MD, /MDd etc.

So we remove them to keep the command line tidy and clean.
2019-07-26 11:55:52 +08:00
Daniel Kochmański
903156b8d6 preprocessor: error when ECL_C_ARGUMENTS_LIMIT changes
This is a canary which errors when code needs to be adjusted. When
appropriate definitions are added the error condition should be
changed accordingly.
2019-07-19 14:30:50 +02:00
Marius Gerbershagen
b891630699 ieee-fp: introduce new macro for toggling between Lisp and C fpe
This is primarly useful for embedding. Lisp code can be safely
executed without leaking the floating point environment into other C
code.
2019-06-30 13:01:06 +02:00
Daniel Kochmański
5dd4174225 msvc: gmp: add mpq sources 2019-05-05 10:38:02 +02:00
ZhangYuguo
913cab0bf9 enable long float support on windows msvc build.
since c99 is mandatory now, we should never consider msvc6 anymore.
2019-02-19 15:11:23 +08:00
ZhangYuguo
5eeae0d823 build system: suppress some logo(copyright) information for msvc toolchains. 2018-09-23 13:41:22 +00:00
Marius Gerbershagen
a3a44a0eeb debugger: add C backtrace for windows
Because that needs the DbgHelp library, an additional make
    option has been defined for users, who don't want to link to this
    library. Some msvc Makefile cleanup has also been done.
2018-05-08 19:36:11 +02:00
Yuguo Zhang
008422d75d add missing obj files to msvc Makefile 2018-05-07 11:02:59 +08:00
Daniel Kochmanski
0494fb1592 Moderate interface cleanup
- unicode name tables are always compiled in when we have unicode support
- thread local variables support is removed
- profile and rt contribs are deprecated
2018-05-01 10:16:20 +02:00
Daniel Kochmanski
c3244b0148 Remove deprecated 8-bit opcodes 2018-04-29 13:54:38 +02:00
Yuguo Zhang
74b673479e using 16bit unicode on windows platform.
because windows using utf16 internally, by using 16bit unicode chararcter,
there is no need to convert ecl_character to wchar_t in embedding
environment.
2017-08-08 14:10:58 +08:00
Yuguo Zhang
4a3418502c minor MSVC version modifications
due to C99 compilance, you need msvc 2013 at least to build ECL.
2017-08-08 13:14:15 +08:00
Yuguo Zhang
39ccfeaec9 windows build system clean/tidy up
upgrad yasm version from 1.2.0 to 1.3.0
2017-06-05 12:53:11 +08:00
Yuguo Zhang
fb716b4291 windows build system clean/tidy up
upgrade yasm version from 1.2.0 to 1.3.0
2017-06-05 12:49:12 +08:00
Daniel Kochmanski
4ace366a6e cleanup: remove leftover definition
ecl_dynamic_ffi was removed long time ago.
2017-05-13 18:53:55 +02:00
Daniel Kochmanski
72e422f1b3 cleanup: remove hierarchical packages interface
It didn't work for some cases and wasn't documented, so I'm removing
it. Freshly written tests are left in tests for someone, who would
like to reimplement them.
2017-05-13 18:06:26 +02:00
Daniel Kochmanski
716ab71010 windows: fix make check 2017-03-17 11:53:52 +01:00
Daniel Kochmański
e3b8c3a668 msvc: improve clean targets
Contributed on GitLab by @Exaybachay.
2017-02-17 09:01:06 +01:00
Daniel Kochmański
f4d0df651b buildsystem: fix for old msvc
Old MSVC apparently things, that char = unsigned char. Add explicit
prefixes to typedefs.

This is backward-compatibility fix, because this version of msvc doesn't
support some c99 types.

Reported and fixed by Jón Hallur Haraldsson.
2017-02-01 12:56:41 +01:00