[Ecls-list] Latest changes

Juan Jose Garcia-Ripoll lisp at arrakis.es
Sat Jun 17 16:33:23 UTC 2006


These are the changes in CVS in the last weeks.

 - The second value of MACROEXPAND-1 is true whenever a macroexpansion
   happened; in other words, whenever an macro function was called. MACROEXPAND
   additionally checks whether the macroexpanded form is eq to the
   original one and complains of the infinite loop that results.

 - Configuration flag --with-tcp defaults to true.

 - [Win32] Add a :SYSTEM key argument to C::BUILDER, used when
building a program,
   to specify the type of executable. Possible values are :CONSOLE, to build a
   console program, and :WINDOWS, to build a Windows program. The
second case makes
   only sense when the program contains some GUI (M. Goffioul).

 - The compiler is slightly faster by avoiding use of EVAL.

 - APROPOS, APROPOS-LIST and EXT:HELP* are now case insensitive.

 - The compiler and the interpreter now share the same environment
   structure. This is important for issues like shadowing. Take the
   following code:
	(defmacro foo () 2)
	(defmacro test (symbol &environment env)
		(and (macro-function symbol env) t))
	(defun doit () (flet ((foo () 1)) (test foo))))
   If interpreted, DOIT is properly defined to return NIL, because the function
   FOO shadows the global macro definition. If compiled, MACRO-FUNCTION was
   unable to detect the shadowing definition. (B. Spilsbury)

 - The functions created by MACROLET must be compiled taking into account other
   enclosing MACROLET and SYMBOL-MACRO definitions. This allows one to write
   something like
	(defun a ()
	  (symbol-macro ((x 1))
	    (macrolet ((m () x))
	      (m))))
	(a) => 1
   This has been achieved by merging the C and bytecodes compiler environments.
   We have tried to implement this questionable feaure in the safest way, so
   that references to local variables, functions, blocks and tags
cause an error.
	> (defun a (x)
	   (macrolet ((m () x))
	     (m)))
	In a MACROLET function you tried to access a local variable, X,
	from the function in which it appears.
	Top level.
	>>

 - The garbage collector has been updated to version 6.7




More information about the ecl-devel mailing list