- Feb 04, 2022
-
-
Daniel Kochmański authored
cmp.0090.funcall/apply-inline-and-number-of-arguments called compile on a lambda that caused a call to cmperr - that made the console log when testing cluttered.
-
- Jan 31, 2022
-
-
Marius Gerbershagen authored
The pretty printer should handle this and we should not pretty print objects if *pretty-print* is false. Closes #673.
-
- Jan 29, 2022
-
-
Marius Gerbershagen authored
Closes #672.
-
- Jan 23, 2022
-
-
Marius Gerbershagen authored
Closes #669.
-
- Jan 15, 2022
-
-
Marius Gerbershagen authored
Fixes #667.
-
- Jan 09, 2022
-
-
Marius Gerbershagen authored
Let the sign of zero determine from which side branch cuts are approached, no matter whether we use C99 complex numbers or not. Disable the (acosh -∞) test. This test fails with the new code, but was supposed to be commented out anyway. In general, we don't guarantee anything about infinity if complex numbers are involved. Closes #661.
-
- Jan 06, 2022
-
-
Daniel Kochmański authored
- don't assume that any keyword is an option - don't process the same keyword twice New behavior could be summarized in these two cases: (restart-case t (retry () :retired ; <- form )) (restart-case t (retry () :report report ; <- expression :report "foo" ; <- form :test test ; <- form )) Fixes #666.
-
Daniel Kochmański authored
Functions wait-on-semaphore and try-get-semaphore are deprecated in favour of the new function.
-
- Dec 23, 2021
-
-
Daniel Kochmański authored
This function offers a functionality similar to sbcl, namely allows specifying the timeout and the resource count.
-
Daniel Kochmański authored
-
- Dec 21, 2021
-
-
Tarn Burton authored
-
Tarn Burton authored
-
- Dec 01, 2021
-
-
- Nov 22, 2021
-
-
Fixes #611. Co-authored-by: Daniel Kochmański <daniel@turtleware.eu>
-
- Nov 19, 2021
-
-
Daniel Kochmański authored
Previously c1make-var checked whether the symbol NAME is CONSTANTP, but ECL expands symbol macros in CONSTANTP so this returned false positives. A similar concern applied to the CMP-ENV-REGISTER-SYMBOL-MACRO-FUNCTION. C1EXPR-INNER when encountered a symbol tried to yield C1CONSTANT-VALUE for if it iwas CONSTANTP - this was correct except for that we didn't pass the environment to the predicate and symbols weren't shadowed. In this commit one function is added to the core - si:constp (with similar purpose to si:specialp) and one function to the compiler - constant-variable-p (similar to special-variable-p) and they are appropriately used when necessary. A regression test is added. Fixes #662.
-
- Nov 06, 2021
-
-
Daniel Kochmański authored
Previously it set the documentation slot for the function - it should do it for the compiler-macro. Fixes #658.
-
- Nov 05, 2021
-
-
Ulrich Müller authored
-
- Oct 05, 2021
-
-
Tarn Burton authored
-
Tarn Burton authored
-
- Sep 19, 2021
-
-
Marius Gerbershagen authored
Fixes #653.
-
- Sep 04, 2021
-
-
Marius Gerbershagen authored
-
- Aug 29, 2021
-
-
Marius Gerbershagen authored
There's little reason for not doing so and on Unix systems one can already interrupt sleeping threads.
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
Read-write locks are always provided; if no operating system primitives exist, emulate them using ordinary locks. Also provide a Windows implementation.
-
Marius Gerbershagen authored
- 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.
-
Marius Gerbershagen authored
The old implementation was not race condition free. If two threads (A and B) were writing at the same time while one thread (C) was reading, the following could happen: 1. thread A increases the write pointer (but does not store the message yet) 2. thread B increases the write pointer, stores the message and signals thread C 3. thread C tries to read from the location that thread A has not yet written to The new implementation is a simple and obvious solution using a common mutex and two condition variables for reading/writing. We don't bother with a (complex) interrupt safe implementation.
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
We already have a race condition between mp:get-lock and mp:holding-lock-p, there is no point in trying to make sure the lock is released at all costs during an interrupt.
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
Changes include: - consistent naming - replaced unnecessary use of (sleep) by better synchronization mechanisms - tests are run with timeouts - clean up stray threads which would otherwise wait for all eternity - better error messages in case of test failures
-
Marius Gerbershagen authored
Add new macro test-with-timeout, refactor various global variables for test statistics into a struct.
-
Marius Gerbershagen authored
Replace slow homegrown mutex implementation by standard OS functions. We try our best to be interrupt safe, however a completely safe implementation is impossible (unless one completely removes the ability to interrupt a thread waiting on a mutex). There is always a window after the OS specific function has returned, but before we can set the owner, in which interrupts will see an inconsistent state of the mutex with regards to owner and count. Condition variables are now based on OS functions as well. Timed waiting on condition variables has also been implemented.
-
- Aug 19, 2021
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
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.
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-