Commit graph

185 commits

Author SHA1 Message Date
Daniel Kochmański
38301ba9e7 Merge branch 'master' into develop 2026-05-05 11:33:01 +02:00
Daniel Kochmański
20d9266664 proclaim-class: use the correct env and don't redefine in bytecmp
PROCLAIM-CLASS in ccmp had the following form in its body:

(ext:with-backend
  :c/c++ (register-in-ccmp)
  :bytecmp (register-globally))

with a clear intention, that CCMP-compiled code should use the first path, and
BCMP-compiled code should use the second. But that's not what this operator
does. This operator caused, that when CCMP was compiled with CCMP, then it
always took (register-in-ccmp) path (even for bytecodes compiler(!)), while when
CCMP was compiled with BCMP (i.e with a flag --disable-shared and compiler is
not builtin), then modifying global instance was always called, disregrading
whether we were compiling with CCMP or BCMP at the moment.

We've replaced this with a more precise statement that decides at runtime which
compiler to chose:

(if *compiler-in-use*
    (register-in-ccmp)
    (register-globally))

The other part of the problem was that registering the class definition globally
in the bytecodes compiler (or in ccmp when --disable-shared was true), could
redefine existing class in runtime environment with a forward-referenced-class,
and that lead to the environment corruption. Consider:

(compile-file "foo.lisp" :load t)   ;defines globally at load time "#<standard-class foo>"
(compile-file "foo.lisp" :load nil) ;defines globally at compile time "#<forward-class foo>"

So after compiling the second file, we don't have the standard class foo, that
we may depend on in later files.

Fixes #843.
2026-05-05 11:00:38 +02:00
Daniel Kochmański
9ec0bef93d Update version number to 26.5.5. 2026-05-04 07:49:05 +02:00
Daniel Kochmański
c9fd019adc news: update the changelog 2026-05-04 07:26:37 +02:00
Daniel Kochmański
0e7c52f7be news: update the changelog 2026-05-01 23:14:33 +02:00
Daniel Kochmański
dcc3a3c05a boot: allocate first_env dynamically at startup
When mprotect is used as a cheap interrupt protection, the environment must be
page-aligned. For static data we'd need to use a kludge (or alignas that is not
part of C99) -- the simplest thing is to use the same mechanism to allocate the
first environment as the rest. That will ensure page alignment when mprotect is
used (that is, when mmap allocates the environment).

This was not possible before (in !341), because back then, when mmap was not
used, we've been using the garbage collector to allocate th environment, but now
we use the manual allocator.

Fixes #828.
2026-04-26 17:30:31 +02:00
Daniel Kochmański
61a14dfc66 boot: allocate first_env dynamically at startup
When mprotect is used as a cheap interrupt protection, the environment must be
page-aligned. For static data we'd need to use a kludge (or alignas that is not
part of C99) -- the simplest thing is to use the same mechanism to allocate the
first environment as the rest. That will ensure page alignment when mprotect is
used (that is, when mmap allocates the environment).

This was not possible before (in !341), because back then, when mmap was not
used, we've been using the garbage collector to allocate th environment, but now
we use the manual allocator.

Fixes #828.
2026-04-26 12:28:21 +02:00
Daniel Kochmański
5678c21cc3 Drop support for Microsoft Visual Studio Compiler
This compiler is:
- not fully conformant
- hard to obtain (despite free versions existing)
- requires numerous kludges
- requires separate build system so many changes need to be duplicated

Fixes #809.
2026-04-19 19:07:15 +02:00
Daniel Kochmański
6c9926cd56 update the changelog with the fix for #839 2026-04-17 15:58:06 +02:00
Daniel Kochmański
bab3c5b681 Update version number to 26.3.27 2026-03-27 08:48:06 +01:00
Daniel Kochmański
b74014c2f6 Update version number to 26.3.26 2026-03-20 09:13:07 +01:00
Daniel Kochmański
14603059a9 cosmetic: update changelog 2026-03-20 09:09:18 +01:00
Daniel Kochmański
86876f1dc3 Update changelog 2025-08-11 10:01:41 +02:00
Daniel Kochmański
c7b5b9f70e ecl_init_module: rebind *readtable* and *package* to protect the env
Fixes #785.
2025-07-17 16:02:18 +02:00
Daniel Kochmański
0857a438f6 logical pathnames: add a regression test and update the changelog
I've tested it against ansi-test and our own test suite and there are no
regressions.

Related to #784.
2025-06-26 14:31:07 +02:00
Daniel Kochmański
b1605eaeae update the changelog 2025-05-26 09:28:10 +02:00
Daniel Kochmański
f73d4babbd Revert "Merge branch 'remove-small-cons' into 'develop'" 2024-12-15 10:01:30 +00:00
Daniel Kochmański
31fdffa6ab core: remove the "small-cons" feature and build flag 2024-12-06 13:04:34 +00:00
Daniel Kochmański
193fa8dca0 changelog: add libgc bump to the changelog 2024-12-05 22:33:10 +01:00
Daniel Kochmański
c17627779b weak hash: add entry to changelog 2024-11-01 08:46:33 +01:00
Daniel Kochmański
4a49130ad5 tpl: repl and debugger use only *query-io* and *debug-io* 2024-10-31 17:54:40 +01:00
Daniel Kochmański
5b5e52601d Update changelog. 2024-10-29 10:07:12 +01:00
Daniel Kochmański
271166a5b0 hash-table: fix a potential deadlock while rehashing
Closes #760.
2024-10-29 10:05:45 +01:00
Daniel Kochmański
d83c0f07cf Merge branch 'master' into develop 2024-05-10 13:40:20 +02:00
Daniel Kochmański
cf7c195018 Release 24.5.10 2024-05-10 13:13:21 +02:00
Tarn W. Burton
fe6a9c306d
Update changelog 2024-05-10 06:40:51 -04:00
Marius Gerbershagen
61ac434c2f update changelog 2024-03-24 18:08:49 +01:00
Marius Gerbershagen
9e7d981b56 update changelog for the upcoming release 2024-03-10 19:29:21 +01:00
Tarn W. Burton
6d667b940b Update changelog for generic pathname/truename 2024-03-10 14:48:12 +01:00
Tarn W. Burton
8ef19ee131 Update for gray:stream-file-string-length 2024-03-10 14:48:12 +01:00
Tarn W. Burton
71c0ec4d5b Update docs for gray-streams changes 2024-03-10 14:48:11 +01:00
Tarn W. Burton
47c2663955
Update changelog for generic pathname/truename 2024-01-25 14:06:37 -05:00
Tarn W. Burton
10fa901e98
Update for gray:stream-file-string-length 2024-01-13 10:32:59 -05:00
Tarn W. Burton
e0aa99c610
Update docs for gray-streams changes 2023-11-20 15:21:35 -05:00
Marius Gerbershagen
9dcc26cdf2 changelog: add announcement for upcoming release 2023-09-03 15:32:42 +02:00
Daniel Kochmański
dba348902f changelog: add announcement placeholder and a new release node 2023-09-03 13:49:23 +02:00
Daniel Kochmański
0af7368857 release: update changelog and version number before the release
Fixes #706.
2023-09-03 13:46:23 +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
0660996c37 mp: semaphores: add tests and the documentation
Functions wait-on-semaphore and try-get-semaphore are deprecated in
favour of the new function.
2022-01-06 09:32:49 +01:00
Tarn W. Burton
130e0d8806 Update changelog and tests for real-valued columns in Gray methods 2021-12-21 10:05:33 -05:00
Tarn W. Burton
10947989ed Update changelog and add tests for condition readers 2021-10-05 05:46:37 -04:00
Marius Gerbershagen
ff8cf4d3c1 pathnames: handle unicode characters
On Unix, pathnames are converted into the default encoding specified
by ext:*default-external-format* and back. On Windows, the operating
system already gives us utf16 encoded pathnames, so we use those.

ecl_namestring with ECL_NAMESTRING_FORCE_BASE_STRING encodes with the
specified encoding. Decoding is handled individually in the filesystem
functions.

Includes a minor refactor of list_directory, changing the
PARSE_DIRECTORY_ENTRY macro into an inline function.

Closes #609, #549.
2021-08-19 14:00:28 +02:00
Tarn W. Burton
cb750d37d6 Add tests and documentation for ed hooks 2021-07-01 11:17:08 -04:00
Marius Gerbershagen
5cd97358af 21.2.1 release 2021-01-30 19:27:41 +01:00
Marius Gerbershagen
ca6297ddc8 cmp: disable precompiled headers by default
Precompiled headers may not work in every scenario (for example
compilation currently fails for the --with-cxx=yes configure option
due to precompiled headers). If we disable them by default, we are on
the safe side.
2020-12-29 20:43:04 +01:00
Marius Gerbershagen
0ddcc9a5f3 update CHANGELOG 2020-12-27 19:28:29 +01:00
Daniel Kochmański
4b9d6d2b34 cosmetic: add noteworthy changes to the changelog 2020-06-20 16:36:32 +02:00
Marius Gerbershagen
636cb4cf60 cmp: add support for precompiled header files
Improves compilation speed for single functions by about 40-50
percent. Precompiled headers are specific to the compiler version and
options in use. Due to this, we regenerate the header whenever the
compiler configuration changes.
2020-05-16 18:53:57 +02:00
Marius Gerbershagen
d8fbbb213e gc: fix type info for precise garbage collector mode 2020-05-08 21:10:41 +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