Re: Musing about arcane (?) topics...
"David McClain (as dbm at refined-audiometrics dot com)" <[email protected]> Wed, 24 Jun 2026 03:46:38 -0700
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
Even more fundamental result: ABA problems *cannot* happen in Common Lisp proper (excluding FLI), nor in any other “Memory Safe” system. Storage for A (the old value) being held for use in a CAS operation, cannot be discarded by the GC and reused by an MRU allocator to produce a C object with Addr(C) = Addr(A). An ABA problem arises when ABA could become ABC, with Addr(C) = Addr(A), just prior to the CAS operation. The CAS will succeed and produce ABX, where X = the locking value, thereby discarding C, and hence producing an “ABA Problem”. When ABX later gets updated to ABA′. The A′ will have been produced using stale information, A, and history, in C, will have been discarded. There is no need to mandate immutability of data to avoid ABA problems in Lisp. They simply cannot ever happen. _______________________________________________ Lisp Hug - the mailing list for LispWorks users [email protected] http://www.lispworks.com/support/lisp-hug.html