[Ecls-list] Huge patches being committed

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Mon Jun 8 17:16:39 UTC 2009


I have uploaded a humongous patch (22 commits!) contaning many
improvements by Jean-Claude Beaudoin and which cover mainly the
debugger and inspector, but include aspects such as debugging of C
compiled code and better interaction with the debugger, which now
supports multithreaded environments. An excerpt of the changelog is
given below.

To give you a flavor of what is new, an example session follows also
at the end of this message.

Please note that this may affect the stability of ECL, but I thought
it was worth including this for the next release.

Juanjo

Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.
Top level.
> (si::system "cat foo.lsp")
(declaim (optimize (debug 3)))

(defun a (x)
  (cos x))

0
> (compile-file "foo" :load t)
;;; Compiling foo.
[...]
#P"/Users/jjgarcia/src/ecl/build.def/foo.fas"
NIL
NIL
> (a 'a)

In function COS, the value of argument is
        A
which is not of expected type NUMBER

Available restarts:

1. (QUIT-DEBUGGER) Quit debugger level 1.
2. (USE-VALUE) Supply a new value of type NUMBER.
3. (RESTART-TOPLEVEL) Go back to Top-Level REPL.

Broken at A.
 File: "/Users/jjgarcia/src/ecl/build.def/foo.lsp" (Form #1)
>> :b

Backtrace:
  > A
  > si:bytecodes [Evaluation of: (a 'a)]
  > si:bytecodes [Evaluation of: (si:top-level)]

>> :v
Local variables:
  X: A
>> :q

Top level.


 - A new configurable option ECL_OPT_THREAD_INTERRUPT_SIGNAL determines
   which Unix interrupt type is used to communicate between threads.

 - Some functions got new names: ecl_make_cfun, ecl_make_cfun_va,
   ecl_make_cclosure_va, ecl_def_c_function, ecl_def_c_function_va.

 - Compiled functions now carry information about their source file
   (based on patches by Jean-Claude Beaudoin)

 - The compiler can now generate some Lisp constants as static C expressions
   (based on patches by JCB)

 - The debugger is now fit for multithreaded environments (JCB)

 - Compiled functions with DEBUG=3 now produce information about their
   arguments and variables, that can be inspected in the debugger
   (evolved from patches by JCB).

 - When performing unoptimized function calls, the interpreter did not save
   actual value of the lexical environment, thus preventing the debugger from
   inspecting it (fixed by JCB).

-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com




More information about the ecl-devel mailing list