[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
checking precedence changes (1/3)
- To: CommonLoops.pa@Xerox.COM
- Subject: checking precedence changes (1/3)
- From: kiuchi.pa@Xerox.COM
- Date: 18 Apr 89 14:04 PDT
- Cc: kiuchi.pa@Xerox.COM
- Reply-to: kiuchi.pa@Xerox.COM
We will release a new version of PCL in the very near future. In this
new version, there are some changes to the way class precedence list
computation and standard method combination work. These changes make
these facilities conform to the specification.
Most programs will be completely unaffected by these changes. But, for
the very few programs that are affected, the differences can be subtle.
To make this transition easier for you, I have written a program which
detects the effects of these changes. The way this program works is you
run it on your code in the current version of PCL. It will tell you how
your code will be affected in the next version of PCL so you can fix it
before you make the jump.
This program is designed to be compiled and loaded in the 12/7/88
version of PCL. Do not load it into later versions of PCL. The rest of
this message contains instructions on how to use this program. I will
be sending out two more messages which contain the actual code.
If there are any questions please feel free to contact me.
This is the instructions describing how to use PCL check program. The files
related with the check program are followings.
check.text [This file]
Instruction for using the check program.
a new definition of compute-combination-points
a new definition of compute-class-precedence-list
friendly code to check to see if the new definitions in check1.lisp
will affect a given system.
*** This program is designed to be compiled and loaded in the 12/7/88 ***
*** version of PCL. Attempting to load it into later versions of PCL ***
*** can cause bad surprises. ***
* The behavior of check program
The check program will gather all metaobjects in the Lisp image and
analyze if there is any difference of the behaviour of the program.
If there are any, the check program will warn about the changes. If
the check program cannot analyze the changes of behaviour of some
metaobjects, check program will explicitly point those out.
The process of the check program consists of three phase.
Phase 1: Gathering metaobjects
Gather the all metaobjects(classes, generic-functions, slot-definitions)
Phase 2: Analyzing
Analyze the effects of the changes on a given system written in PCL.
Phase 3: Description of effects of the changes.
Display the changes if any.
* How to use the check program
(1) load 12/7/88 version of PCL
(2) load and run the programs you want to analyze.
(3) compile and load check1.lisp and check2.lisp
(4) call (pcl::check-precedence)
Then, the check program will display the changes if any. If you have a
check-pointed lisp-image or sysout containing PCL and your programs, you
can start from (3).
* A known problem with the check program
The gather program contained in the check2.lisp doesn't gather those
generic-functions for which all of the methods have only EQL specializers.
If your program contains such generic-functions, you need to check by hand.