mp:without-interupts not supported on LispWorks
https://github.com/melisgl/mgl-mat/blob/94a6351f259fa6d0e0c34e266f72e0cd6bf9881f/src/cube.lisp#L67
mp:without-intterupts not actually supported on LispWorks for a long time, and gives an error (on SMP, but by now all LispWorks releases are SMP). https://www.lispworks.com/documentation/lw80/lw/lw-mp-151.htm
The actuallly block interrupts, you can use mp:with-interrupts-blocked instead: https://www.lispworks.com/documentation/lw80/lw/lw-mp-149.htm but this just blocks interrupts, it doesn't do any thread synchronization.
On Lispworks only lokcs (and other synchronization objects: https://www.lispworks.com/documentation/lw80/lw/lw-multiprocessing-ug-7.htm) can do synchronization, unless you want to use lower level operators like system:compare-and-swap.
Thanks. I pushed 88cfcad blind as I have no LispWorks.
Do you actually need to block interupts? I get the impression that really you only want thread synchronization, in which case you need to rely on the lock, and change it to just `(progn ,@body) like the "unknown case". Not obvious what other implementation do, without-interrupts doing synchronization on SMP is very bad for performance. For example, for SBCL I found this https://koji-kojiro.github.io/sb-docs/build/html/sb-sys/macro/WITHOUT-INTERRUPTS.html says explicitly that it doesn't do synchronization ("doesn't inhibit scheduling of othe threads").
I'm using this for async-unwind safety, not for synchronization.