No description
Find a file
Marius Gerbershagen ed11e2cc35 fix spinlock handling in queue_signal and pop_signal
We can't use the ECL_WITH_SPINLOCK_BEGIN/END macros since they check
for pending interrupts at the end of their unwind-protect frame. This
leads to various bugs:

- in queue_signal the to be queued interrupt is executed immediately
  after being queued even if interrupts are disabled
- in pop_signal if multiple interrupts are queued they are executed in
  reverse order

To fix these issues, use a) ecl_get/giveup_spinlock directly and b)
ecl_disable/enable_interrupts_env to prevent the spinlock not being
released due to an interrupt happening during the execution of the
main body of pop_signal/queue_signal.
2020-06-01 17:18:35 +02:00
contrib cosmetic: fix some compiler warnings 2020-04-29 20:35:37 +02:00
examples examples: add cmake example 2018-08-17 10:45:02 +02:00
msvc gc: remove unnecessary workarounds for old bdwgc versions 2020-05-10 19:47:05 +02:00
src fix spinlock handling in queue_signal and pop_signal 2020-06-01 17:18:35 +02:00
.gitignore add msvc/package-locks.asd to .gitignore 2019-03-19 12:52:48 +08:00
.gitlab-ci.yml Add .gitlab-ci.yml 2017-01-11 18:30:33 +00:00
appveyor.yml Add simple appveyor msvc build 2017-05-13 00:12:13 +02:00
CHANGELOG cmp: add support for precompiled header files 2020-05-16 18:53:57 +02:00
configure Preserve quoting when passing the arguments to the build directory 2008-08-27 09:50:44 +02:00
COPYING cosmetic: rename LGPL->COPYING 2016-10-08 14:24:31 +02:00
INSTALL doc: more detailed build instructions for MSVC 2020-03-01 18:49:49 +01:00
LICENSE copyright: add Marius to the maintainer list. 2019-02-22 18:43:37 +00:00
Makefile.in doc: set new doc as standard documentation 2019-01-03 19:14:28 +01:00
README.md update readme (typos) 2015-08-31 08:22:52 +00:00

ECL stands for Embeddable Common-Lisp. The ECL project aims to produce an implementation of the Common-Lisp language which complies to the ANSI X3J13 definition of the language.

The term embeddable refers to the fact that ECL includes a Lisp to C compiler, which produces libraries (static or dynamic) that can be called from C programs. Furthermore, ECL can produce standalone executables from Lisp code and can itself be linked to your programs as a shared library. It also features an interpreter for situations when a C compiler isn't available.

ECL supports the operating systems Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, Solaris (at least v. 9), Microsoft Windows (MSVC, MinGW and Cygwin) and OSX, running on top of the Intel, Sparc, Alpha, ARM and PowerPC processors. Porting to other architectures should be rather easy.