A GUI toolkit for Common Lisp

Progress report #11

Written by Daniel Kochmański on 2018-01-27 15:00

Dear Community,

After three months of work, we are happy to present this progress report.

Some highlights for this iteration:

  • numerous bug fixes (and some regressions introduced)
  • graphics state has been factored into its own class hierarchy
  • clipping region may be an arbitrary region (not only a rectangle)
  • draw-design works correctly now for ellipses and patterns
  • major region code improvements including better coverage of region-intersection, region-contains-position-p, support for unsupported yet pairs (i.e standard-rectangle vs bounding-rectangle, standard-ellipse vs standard-rectangle and many others)
  • complete implementation of ellipsis with limited angles and rotations (region code and rendering)
  • numerous UX improvements for text-field, describe, drag-and-drop, scrolling, compose-space, resize-sheet, clim-debugger and listener
  • :pane option in define-application-frame is more useful now
  • clim-formatting-table code major refactor. One of the results is that borders may wrap table cells, columns and rows appropriately
  • drawing tests cleanups, improvements, and additions.

Some work has been done to improve CLX library. We have added a test suite and fixed its working on CCL (which had some problems with it). Thanks to that McCLIM works on CCL way faster than before (around 3x – subjective). We were also able to make CLIM-TOS (Franz's CLIM 2 fork) start simple applications on CCL and SBCL. I'm mentioning this because some people are not fond of McCLIM license and fact that we have two FOSS implementations of the same standard may be yet another good reason to start writing applications in CLIM.


All McCLIM bounties (both active and already solved) may be found here. Default bounty expiration date is 6 months after publishing it (a bounty may be reissued after that time period).

Bounties solved this iteration:

  • [$100] drag-test demo: dragging square to the empty position invokes the debugger
  • [$100] Text field pane height is too small, clipping the bottom of characters

Active bounties ($1600):

  • [$300] Listener: repl blocks when long process runs
  • [$500] Windows Backend
  • [$400] Fix Beagle backend
  • [$150] When flowing text in a FORMATTING-TABLE, the pane size is used instead of the column size
  • [$150] clx: input: english layout
  • [$100] Add PDF file generation (PDF backend)

Our current financial status is $2014 for bounties and $288 recurring monthly contributions from the supporters (thank you!).

Suggestions as to which other issues should have a bounty on them are appreciated and welcome. Please note that Bountysource has a functionality "Suggest an Issue" which may be found on the bounties page. If you would like to work on an issue that is not covered by the existing bounties, feel free to suggest a new bounty.

During this quarter we have noticed more interest in learning CLIM and developing applications with it among fellow Common Lisp programmers.

If you have any questions, doubts or suggestions – please contact me either by email (daniel@turtleware.eu) or on IRC (my nick is jackdaniel). McCLIM developers and users hang out on #clim IRC channel on Freenode.

Sincerely yours,
Daniel Kochmański

Here are some screenshots made in the meantime which are related to the changes: Ellipsis Ellipsis 3 Ellipsis 2 Scroll notes Slope lines Slope lines 2 Bordered table Bordered table 2 Address Book demo