Opened 13 years ago

Last modified 7 years ago

#16 new enhancement

Re-evaluation of DEFPACKAGE form is ignored

Reported by: Mark Evenson Owned by: somebody
Priority: minor Milestone: unscheduled
Component: other Version: 1.0
Keywords: Cc:
Parent Tickets:

Description

Evaluation of DEFPACKAGE forms for existing packages are ignored.

Although this is allowed by the ANSI specification, no other non-trivial implementation of Common Lisp has this behavior as this is considered a major pain for developers working with packages to have to restart their system to make modifications in the package.

Change History (3)

comment:1 Changed 11 years ago by Mark Evenson

At a minimum in the near term we should warn the user of this behavior.

comment:2 Changed 11 years ago by Mark Evenson

As far as I understand a quick analysis of SBCL which is also a multi-threaded Lisp, to implement this we would have to:

  1. create a global mutex WITH-PACKAGES for FIND-PACKAGE, MAKE-PACKAGE, RENAME-PACKAGE, DELETE-PACKAGE, LIST-ALL-PACKAGES, INTERN, UNINTERN, EXPORT, UNEXPORT, IMPORT, SHADOWING-IMPORT, SHADOW, USE-PACKAGE, UNUSE-PACKAGE, and FIND-ALL-SYMBOLS.
  1. Check that nicknames are not being used as the redefined name (??)
  1. Warn about various changes (like unusing previously used packages)

comment:3 Changed 7 years ago by Mariano Montone

There's no need to restart to export a symbol. It is enough to eval (export <symbol>) from the package.

See: http://osdir.com/ml/armedbear-devel/2012-04/msg00032.html

But yes, this is annoying.

Note: See TracTickets for help on using tickets.