Skip to content
  • emarsden's avatar
    · 807d6f0f
    emarsden authored
    Add package locks. Bootfile boot8.lisp allows this to build without
    a cross-compile (or just select the CLOBBER-IT restart).
    
       - two extra PACKAGE-LOCK and PACKAGE-DEFINITION-LOCK slots added to
         the package structure. These can be modified using the
         EXT:PACKAGE-LOCK and EXT:PACKAGE-DEFINITION-LOCK accessors.
    
       - macro EXT:WITHOUT-PACKAGE-LOCKS that evaluates forms with all
         package locks disabled (this is done by binding the global
         variable CL::*ENABLE-PACKAGE-LOCKED-ERRORS*)
    
       - new PACKAGE-LOCKED-ERROR condition
    
       - in SETF-FDEFINITION-HOOK and in the DEFMACRO, DEFSTRUCT, DEFTYPE
         and DEFCLASS defining forms, check whether the definition would
         modify a package whose definition-lock is enabled, and signal a
         package-locked-error condition with restarts that allow you to
         unlock the package or ignore the lock
    
       - in EXPORT, UNEXPORT etc check whether the target package is
         guarded by a package-lock, and signal an error
    
       - disable package locks when loading a subsystem
    
       - disable package locks in certain areas of PCL and in the
         MAKE-LOAD-FORM support of the compiler, where code is generated
         inside system packages at runtime
    807d6f0f