The current version (3.9.1) was released on January 21, 2023, and is available in Quicklisp.
Are there any documents for mk-defsystem out there? How does one add a path to its search path?
- Chapter 4 of Portable Utilities for Common Lisp—User Guide & Implementation Notes
- Archive from the CMU AI Repository has the above in PS and text format: mkantdoc.tgz
- Henrik Motakef's Fight the System explains how to use and load libraries with mk-defsystem.
Just to clarify: the CLOCC documentation is limited and needs to be updated. As per the specific question, both MK3 and MK4 now have a new function
which does the PUSH in a more meaningful way.
The y-or-n-p-wait function (which is also provided by text-query) uses a technique of busy-waiting on listen (or read-char-no-hang) that doesn't work everywhere. For example, it works in the LispWorks IDE for Windows, but doesn't work in the Windows Terminal. To disable the use of timeouts, you can do this:
ACL warns because some export forms are non-top-level. This is one of those things that changed when CLtL2 came around. Things like export (and proclaim, shadow, etc.) are supposed to be wrapped in an eval-when, or find another way to suppress the warnings. The variable *cltl1-compile-file-toplevel-compatibility-p* controls this behavior:
MK-DEFSYSTEM has its own (conditionalized) implementation of provide and require, because those functions were at risk of being deleted from ANSI Common Lisp, but they got deprecated instead. The definitions of these functions within defsystem.lisp caused MKCL to crash upon loading the FASL. So it's essential that the read-time conditionalization prevents that code from being read at all.
Did you know? You can also load foreign files with defsystem. For example, to define that C components are compiled by calling out to "make" and loaded using the foreign loader, try something like this example (originally from db-sockets):
then you define the relevant component like this:
- defsystem-3.x (3.6 Interim) is available in the CLOCC archive.
- defsystem-4 was an experimental CLOS-based MK:DEFSYSTEM.