Hi Troels and Andy :)
Thank you for answering so fast!
On Mon, 2008-02-18 at 17:01 +0100, Troels Henriksen wrote:
I build a very small GUI based on the calculator example. But when starting the GUI the CPU is constantly at 99%.
Is this normal?
No, it is not.
I am relieved :)
Are you using a single-threaded Lisp? I recall from ages past that this behaviour may occur under such circumstances, but I haven't used such a Lisp in a long time myself.
I am using cmucl and clim on Debian sid - both installed from the Debian packages.
It seems that cmucl does not have native threads on Linux:
- from http://www.cons.org/cmucl/FAQ.html Compared with SBCL (a fork from the CMUCL implementation), CMUCL a different set of features (it includes a Motif interface, but does not have SBCL's native threads on Linux/x86 platforms, nor Unicode support). CMUCL has a faster compiler, but compiled code runs at a similar speed to SBCL-generated code. SBCL is closer to the ANSI CL specification in some respects, and generally emits more warnings about ANSI-compliance. SBCL runs on a larger number of platforms than CMUCL, and in general is more actively developed than CMUCL.
- from http://sbcl.sourceforge.net/history.html CMUCL and SBCL each have their own unique set of features: for instance, SBCL features native machine threads on Linux/x86 (CMU has userspace threads), and CMUCL has the generational garbage collector on SPARC/Solaris. But in general the user-visible difference isn't huge, since most visible bug fixes and improvements are actively ported between the two systems.
Could this be related?
On Mon, 2008-02-18 at 11:24 -0500, Andy Hefner wrote:
I'm only aware of this occuring if you use CMUCL, in which case you need to execute (mp::startup-idle-and-top-level-loops) before running your CLIM program due to an implementation quirk. This still isn't ideal, as (at least in my experience with various several year old versions of CMUCL) it introduces a noticable latency in event handling (such as menus becoming sluggish). My advice in this case is to use SBCL instead.
I executed (mp::startup-idle-and-top-level-loops) before running the CLIM program - without any positive result: the CPU is still at 98% when I start the clim examples.
I after installed SBCL, also using the Debian package. But when trying to load/compile the clim demo I got tons of errors.
Here what I did: (from /usr/share/doc/cl-mcclim-examples/README.Debian )
(asdf:oos 'asdf:load-op :clim-examples) (clim-demo::demodemo)
...and here some of the errors:
The value :LOCKED is not of type (OR NULL SB-THREAD:THREAD). The function CLIM-SYS:MAKE-LOCK is undefined. There is no class named CLIM:WINDOW-REPAINT-EVENT. There is no class named CLIM:KEY-PRESS-EVENT. There is no class named CLIM:POINTER-BUTTON-PRESS-EVENT. ...and so on and so on...
Probably the sbcl and the clim packages do not match?
Should I install sbcl and clim from the sources?
Do you have some other idea how to proceed?
Which lisp do clim developers use?
Should I switch to sbcl or some other lisp when using clim?
Thanks for your help,
Dietrich