The McCLIM developers are happy to release version 0.9.2 of McCLIM. It was tested on SBCL (both threaded and unthreaded), OpenMCL, CMUCL, Scieneer CL, and Allegro Common Lisp (ANSI mode only).
Get the tarball at http://common-lisp.net/project/mcclim/downloads/mcclim-0.9.2.tar.gz or install McCLIM via asdf-install.
We are looking forward to your comments and bug reports. Please send them to mcclim-devel@common-lisp.net. The list of currently known bugs can be found at http://mcclim.cliki.net/Bug.
Have fun using McCLIM (and build good things with it), The McCLIM developers.
RELEASE NOTES FOR McCLIM 0.9.2, "Laetare Sunday":
Compatibility =============
This release works on CMUCL, SBCL, CLISP, OpenMCL, Allegro CL, LispWorks, and the Scieneer CL, using the CLX X Window bindings.
Changes to the Install Process ==============================
Implementation-specific INSTALL.* files were removed. Generic and implementation-specific Installation instructions were improved and merged into the file INSTALL.
This release requires the "spatial-trees" library by Christophe Rhodes. Get it via asdf-install or at http://cliki.net/spatial-trees.
Changes to Backends ===================
Copy & Paste code in the CLX backend was improved and should now adhere more strictly to ICCCM.
Support for connecting to a ssh-forwarded display was restored.
Several unused parts (marked with #+unicode) of the CLX backend were removed, thus restoring buildability on installations of clisp that have the unicode feature turned on.
Double buffering for panes was implemented. To use it, create panes with the :double-buffering t initarg.
There is now rudimentary support for entering non-Ascii characters from X11 ports using SBCL CLX (a.k.a. telent CLX).
McCLIM ships experimental support for TrueType font rendering using the FreeType libraries and the free Bitstream Vera fonts. To use it, link Experimental/freetype/mcclim-freetype.asd to one of your asdf:*central-registry* directories and load the "MCCLIM-FREETYPE" system.
An experimental "Null" backend was added that should allow testing of CLIM functionality without requiring a GUI environment to run.
Changes to the Documentation ============================
A new chapter on contributed applications was added.
Several new figures and examples were added to the manual
Clemens Fruhwirth added a CLIM tutorial paper called "A Guided Tour to CLIM". It is available in Doc/Guided-Tour/.
Changes to Contributed Applications and Examples ================================================
New application: A CLIM Debugger (by Peter Mechlenborg). It resides in Apps/Debugger/.
New application: Functional-Geometry by Frank Buss and Rainer Joswig. It resides in Apps/Functional-Geometry/.
The Inspector now is now able to disassemble functions and inspect pathnames.
The Listener can now produce vertically-aligned graphs.
The Scigraph application now builds on SBCL again.
A demo for drag-and-drop-translators was added.
Further additions to McCLIM ===========================
There is now a test suite, located in Tests/. It contains tests for regions, bounding rectangles, transformations, commands, and the PostScript backend. With the addition of the Null backend, we hope to add several more tests for more chapters of the CLIM spec.
New Extension "conditional-commands": allows activation/deactivation of commands when other commands are invoked. It resides in Extensions/conditional-commands/.
Status of the CLIM 2 Spec Implementation ========================================
Here is a list of what we think works, organized by chapters and sections of the CLIM 2 specification.
Chapter 3 Regions
Mostly finished. There are some troublesome parts of the specification that may not be implemented for all possible regions, for instance region-contains-region-p. There may not be an efficient way of implementing this function for all kinds of regions.
Chapter 4, Bounding rectangles
Finished
Chapter 5, Affine transformations
Finished
Chapter 6, Overview of window facilities
Finished
Chapter 7, Properties of sheets
Finished, though the correct behavior of sheet transformations may not have been tested.
Chapter 8, Sheet protocols
Finished
Chapter 9, Ports, Grafts, and Mirrored sheets
Finished
Chapter 10, Sheet and medium output facilities
Finished
Chapter 11, Text styles
Mostly complete.
There is now experimental support for device font text styles (via make-device-font-text-style) for the CLX, PostScript, and CLX+FreeType backends.
Chapter 12, Graphics
Finished
Chapter 13, Drawing in Color
I am note sure about the state of this. I thought we were doing only full opacity and full transparency, but I see traces of more general designs.
Chapter 14, General Designs
The composition of designs is not supported. We do support regions as designs.
Chapter 15, Extended Stream Output
Extended output streams are fully supported.
Chapter 16, Output Recording
Output recording is mostly implemented.
This release ships with a standard-tree-output-record type for the first time. The tree output record type speeds up point- and region-based queries, but slows down insertion of output records by a bit.
make-design-from-output-record is not implemented. *Note*: the coordinates in output records are relative to the stream. This is in conformance with the Spec, but not necessarily compatible with other CLIM implementations.
Chapter 17, Table Formatting
Table formatting is completely implemented.
Chapter 18, Graph Formatting
Graph formatting is fully implemented. The :hash-table argument to format-graph-from-roots is ignored.
Support for a :dag graph type was added, as was support for vertically oriented graphs and support for the :arc-drawer argument to format-graph-from-roots.
Chapter 19, Bordered Output
Bordered output is fully supported.
Chapter 20, Text Formatting
With the exception of the :after-line-break-initially argument to filling-output, this chapter is fully implemented.
Chapter 21 Incremental Redisplay
The updating-output interface to incremental redisplay is implemented. McCLIM makes no effort to move i.e., bitblit, output records; they are always erased and redrawn if their position changes. This is much more compatible with support for partial transparency. The :x, :y, :parent-x and :parent-y arguments to redisplay-output-record are ignored. McCLIM follows the spirit of 21.3 "Incremental Redisplay Protocol", but we have not tried very hard to implement the vague description in the Spec. augment-draw-set, note-output-record-child-changed and propagate-output-record-changes-p are not implemented.
Incremental redisplay in McCLIM may still suffer from performance problems, despite the presence of spatially-organized compound output record types.
Chapter 22, Extended Stream Input
The implementation of extended input streams is quite complete. (setf* pointer-position) is not implemented. There is no stream numeric argument, so that slot of the accelerator-gesture condition is always 1.
Chapter 23 Presentation Types
Most of the literal specification of this chapter is implemented. Specific accept and present presentation methods for some types are not implemented, so the default method may be surprising.
The output record bounding rectangle is always used or highlighting and pointer testing.
presentation-default-processor is not implemented.
The presentation method mechanism supports all method combinations. The body of a presentation method is surrounded with a block of the same name as the presentation method, not just the magic internal name. The method by which presentation type parameters and options are decoded for the method bodies is a bit different from real CLIM. In particular, you cannot refer to the type parameters and options in the lambda list of the method.
The NIL value of presentation-single-box is now supported.
Presentation type histories are now partially implemented. The gesture C-M-y should recall the last entered presentation.
define-drag-and-drop-translator is now implemented.
Chapter 24 Input Editing and Completion Facilities
with-input-editor-typeout is not implemented.
The noise strings produced by input-editor-format and the strings produced by presentation-replace-input are not read-only. This could lead to interesting "issues" if the user edits them.
Only a few of the suggested editing commands are implemented. An additional command that is implemented is control-meta-B, which drops into the debugger. add-input-editor-command is not implemented.
with-accept-help is not implemented.
Chapter 25 Menu Facilities
The protocol is implemented, but McCLIM doesn't use it to draw command table menus.
Chapter 26 Dialog Facilities
McCLIM contains a basic, somewhat buggy implementation of accepting-values. There is little user feedback as to what has been accepted in a dialog. The user has to press the "OK" button to exit the dialog; there are no short cuts. There are no special accept-present-default methods for member or subset presentation types. Command-buttons are not implemented. There is no gadget-based implementation of accepting-values.
The internal structure of accepting-values should be "culturally compatible" with real CLIM; if you have some spiffy hack, check the source.
:own-window is now supported in accepting-values.
Chapter 27 Command Processing
command-line-complete-input is not implemented (the functionality does exist in the accept method for command-name).
display-command-table-menu and menu-choose-command-from-table are not implemented. Menu-command-parser is not implemented, though the functionality obviously is. Nothing is done about partial menu commands. There is no support for numeric arguments.
The command-or-form presentation type is not implemented.
Chapter 28 Application Frames
raise-frame, bury-frame and notify-user are not implemented.
:accept-values panes are not implemented.
frame-maintain-presentation-histories is not implemented.
frame-drag-and-drop-feedback and frame-drag-and-drop-highlighting are now implemented.
execute-frame-command ignores the possibility that frame and the current frame might be different.
display-command-menu isn't implemented.
Chapter 29 Panes
Due to the way the space-allocation protocol is implemented, it is not easy to create application-specific layout-panes. Client code needs to know about :AROUND methods to compose-space, but they are not mentioned in the spec.
restraining-pane is partially implemented.
Chapter 30 Gadgets
This chapter is implemented.
with-output-as-gadget is not quite working yet, but it was improved since the last release.
On 2006-03-26, McCLIM developers mcclim-devel@common-lisp.net wrote:
Get the tarball at http://common-lisp.net/project/mcclim/downloads/mcclim-0.9.2.tar.gz or install McCLIM via asdf-install.
If you just want to try out the cool demos, here's a pre-built binary with pre-loaded freetype, mcclim demos, functional geometry, the listener, the debugger and the inspector:
http://boinkor.net/lisp/mcclim-listener-0.9.2.tar.bz2.
It's based on a threaded SBCL 0.9.11 and requires Linux 2.6.x on an i386 machine.
Instructions ------------
Download the file (14MB), unpack it, and run the mcclim-listener-0.9.2/mcclim binary.
After a few seconds of initialization, a listener window should pop up, in which you can enter lisp expressions, like:
(/ 1 0) ; will open the clim debugger
or activate menu items like
Demos -> Plot Fishes using Functional Geometry
and, of course, explore. The listener, debugger and inspector applications have a lot of interesting functions.
If you liked this demo, you might enjoy the clim desktop, located at http://www.cliki.net/clim-desktop.
Have fun,
Andreas Fuchs asf@boinkor.net writes:
If you just want to try out the cool demos, here's a pre-built binary with pre-loaded freetype, mcclim demos, functional geometry, the listener, the debugger and the inspector:
http://boinkor.net/lisp/mcclim-listener-0.9.2.tar.bz2.
It's based on a threaded SBCL 0.9.11 and requires Linux 2.6.x on an i386 machine.
And the 2.6.x kernel must be compiled with support for the NPTL threading library.
Paolo
Paolo Amoroso amoroso@mclink.it writes:
Andreas Fuchs asf@boinkor.net writes:
If you just want to try out the cool demos, here's a pre-built binary with pre-loaded freetype, mcclim demos, functional geometry, the listener, the debugger and the inspector:
http://boinkor.net/lisp/mcclim-listener-0.9.2.tar.bz2.
It's based on a threaded SBCL 0.9.11 and requires Linux 2.6.x on an i386 machine.
And the 2.6.x kernel must be compiled with support for the NPTL threading library.
also, make sure your system has libfreetype.so (some Debian installations lack it, so you'll have to make a symlink libfreetype.so -> libfreetype.so.6).
cheers, --m
Michael Livshin gmane@cmm.kakpryg.net writes:
also, make sure your system has libfreetype.so (some Debian installations lack it, so you'll have to make a symlink libfreetype.so -> libfreetype.so.6).
Lack of a symlink like that is usually an indication of a missing -dev package.
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."
Nikodemus Siivola nikodemus@random-state.net writes:
Michael Livshin gmane@cmm.kakpryg.net writes:
also, make sure your system has libfreetype.so (some Debian installations lack it, so you'll have to make a symlink libfreetype.so -> libfreetype.so.6).
Lack of a symlink like that is usually an indication of a missing -dev package.
oh. right you are!
still wondering what exactly the logic behind this is, --m
On Mar 28, 2006, at 5:34 AM, Michael Livshin wrote:
Nikodemus Siivola nikodemus@random-state.net writes:
Michael Livshin gmane@cmm.kakpryg.net writes:
also, make sure your system has libfreetype.so (some Debian installations lack it, so you'll have to make a symlink libfreetype.so -> libfreetype.so.6).
Lack of a symlink like that is usually an indication of a missing - dev package.
oh. right you are!
still wondering what exactly the logic behind this is, --m
The symlink is only necessary if you're going to be linking against the library as ld won't resolve -lfreetype to libfreetype.so.someversion (and if you're missing the -dev package, you don't have headers either). SBCL acts more like a linker than a user binary in this case - the SBCL runtime itself is not linked against this library, so it must find and load it at runtime.
It would be an interesting project to munge up the runtime when doing save-lisp-and-die :executable t to link to any necessary alien libraries. One could also put the core in a segment of the binary instead of dumping a technically invalid ELF image, too. -- Brian Mastenbrook http://brian.mastenbrook.net/ brian@mastenbrook.net
Today, Paolo Amoroso amoroso@mclink.it wrote:
Andreas Fuchs asf@boinkor.net writes:
It's based on a threaded SBCL 0.9.11 and requires Linux 2.6.x on an i386 machine.
And the 2.6.x kernel must be compiled with support for the NPTL threading library.
Right, and on debian it needs the package libfreetype6-dev installed, as well. That should cover the dependencies, I think (:
Andreas Fuchs asf@boinkor.net writes:
On 2006-03-26, McCLIM developers mcclim-devel@common-lisp.net wrote:
Get the tarball at http://common-lisp.net/project/mcclim/downloads/mcclim-0.9.2.tar.gz or install McCLIM via asdf-install.
If you just want to try out the cool demos, here's a pre-built binary with pre-loaded freetype, mcclim demos, functional geometry, the listener, the debugger and the inspector:
Here is a similar binary for OS X / ppc. It's based on unithreaded SBCL, so some things may not work. http://www.doc.gold.ac.uk/~mas01cr/mcclim-listener-0.9.2.tar.bz2
In addition to the things which don't work because of single-threadedness, I have observed something strange: on OS X machines here, I need to press RET /twice/ in the listener to activate an expression: after
( * SPC 2 SPC 3 ) RET
nothing happens, but when I hit RET once more I get 6 back. Similarly, but equally weirdly, if I just type
x RET
I get a blank line followed by the CL-USER> prompt back, and only after the /next/ keystroke is the blank line filled with Input "x" does not match
However, I have had a report that someone else /doesn't/ see these symptoms. If people do download that binary, could they please report back to say whether or not they have these problems with it?
Thanks,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
Andreas Fuchs asf@boinkor.net writes:
On 2006-03-26, McCLIM developers mcclim-devel@common-lisp.net wrote:
Get the tarball at http://common-lisp.net/project/mcclim/downloads/mcclim-0.9.2.tar.gz or install McCLIM via asdf-install.
If you just want to try out the cool demos, here's a pre-built binary with pre-loaded freetype, mcclim demos, functional geometry, the listener, the debugger and the inspector:
Here is a similar binary for OS X / ppc. It's based on unithreaded SBCL, so some things may not work. http://www.doc.gold.ac.uk/~mas01cr/mcclim-listener-0.9.2.tar.bz2
In addition to the things which don't work because of single-threadedness, I have observed something strange: on OS X machines here, I need to press RET /twice/ in the listener to activate an expression: after
( * SPC 2 SPC 3 ) RET
nothing happens, but when I hit RET once more I get 6 back.
Inspecting the standard-input-editing-stream from the debugger I get by hitting C-c in my underlying lisp at this point -- that is, after the first RET and before the second -- I see
The object is a STANDARD-OBJECT of type CLIM:STANDARD-INPUT-EDITING-STREAM. 0. OPEN-P: T 1. STREAM: #<CLIM:INTERACTOR-PANE CLIM-LISTENER::INTERACTOR {12FA9391}> 2. AREA: #<GOATEE:SIMPLE-SCREEN-AREA X 63:113 Y 0:14 {12FA9B29}> 3. SNAPSHOT: #<GOATEE::EDITING-STREAM-SNAPSHOT {12FA9BC1}> 4. BUFFER: #(#( #* #\ #\2 #\ #\3 #)) 5. INSERTION-POINTER: 7 6. SCAN-POINTER: 7 7. RESCAN-QUEUED: NIL 8. RESCANNING-P: NIL 9. ACTIVATION-GESTURE: NIL
Cheers,
Christophe
Christophe Rhodes csr21@cam.ac.uk writes:
Here is a similar binary for OS X / ppc. It's based on unithreaded
[...]
In addition to the things which don't work because of single-threadedness, I have observed something strange: on OS X machines here, I need to press RET /twice/ in the listener to activate an expression: after
This comment in Apps/Functional-Geometry/geometry.lisp might be relevant:
;;; XXX The use of EXPRESSION in the OR presentation type exposes a bug in the ;;; accept method for expression when rescanning; you have to hit ENTER three ;;; times when entering an expression (e.g., a variable name) as a picture ;;; value. This will be fixed after .9.2.2. -- moore
Paolo
Paolo Amoroso amoroso@mclink.it writes:
Christophe Rhodes csr21@cam.ac.uk writes:
Here is a similar binary for OS X / ppc. It's based on unithreaded
[...]
In addition to the things which don't work because of single-threadedness, I have observed something strange: on OS X machines here, I need to press RET /twice/ in the listener to activate an expression: after
This comment in Apps/Functional-Geometry/geometry.lisp might be relevant:
;;; XXX The use of EXPRESSION in the OR presentation type exposes a bug in the ;;; accept method for expression when rescanning; you have to hit ENTER three ;;; times when entering an expression (e.g., a variable name) as a picture ;;; value. This will be fixed after .9.2.2. -- moore
I saw a similar comment in builtin-commands.lisp. However, there's something else going on, I suspect, because while the OS X binary running under Apple X11 exhibits this double-RET problem, the same binary displaying on Xorg on my workstation (tunnelled over ssh) does not have the same problem.
(I think the XXX comment doesn't apply in any case, because the EXPRESSION presentation type we ACCEPT in the listener has :PRESERVE-WHITESPACE T in its options. Still, it's possible that something in there is causing a problem...)
Cheers,
Christophe