CLIM mail archive


Porting CLIM

> From: "Marilyn S. Bunzo" <>
> Message-Id: <>

> I have been converting our code from ACL CLIM 1.1 to ACL CLIM 2.0 and a few
> questions have arisen.  Perhaps the problem is that I have the Symbolics
> documentation for CLIM 2.0 which we use to supplement the documentation from
> Franz.  A little knowledge is a dangerous thing.  ;-)  Both vendors did a
> good job with the documentation.  Having more than one source of information
> just makes it easier to resolve programming problems.  
> My concern is that I have noticed several cases where ACL CLIM 2.0 differs
> from Symbolics CLIM 2.0 on its treatment of some fairly basic functions
> (e.g. open-window-stream and define-application-frame).  I wondered if
> anyone out there had any experience with CLIM 2.0 from more than one vendor.
> Is code easily portable from one vendor's CLIM to another?  Does it require
> minor adjustment?  Major adjustment?  Are the required adjustments on "lower
> level" or less frequently used methods/functions or are they on common
> methods/functions?  Would you characterize CLIM 2.0 as being
> better|worse|equal to the portability of CLIM 1.1 between different vendors?
> Another valid question is, am I borrowing trouble by worrying about this?
> The red flag went up for me when I noticed differences in what I considered
> the most basic level of CLIM 2.0.  We occassionally pick up software from
> other users that is not necessarily developed on ACL CLIM.  The portability
> of CLIM is one of its major selling points for me.  Please let me know what
> your experiences have been with CLIM 2.0, especially anyone who can give me
> perspectives from other vendors.

CLIM 2.0 from Symbolics contained a considerable number of bugs and,
IMHO was unsatisfactory for delivering "real" products to "real"
customers.  Just before their most recent reorganization (recall:  SWM
moved to Harlequin) they release v-2.1 which has most of the bugs
fixed.  If you're still using 2.0, that may be causing part of your

We're 95% completed on converting a large graphics-intensive system
from DW to CLIM that runs on Genera and ACL 4.2.  I am optimistic that
the end poduct will be of sufficient quality for delivery to end-users
(although all is not lost if I'm wrong as we have "Plan B" also).  So
far we've found very little need to resort to #+Genera in the CLIM
specific code -- there's a lot more of those in the underlying "guts"
of our data manipulation code.

We originally made a partial port of the system when CLIM 1.1 was the
king of the hill.  I was very optimistic at that time as the existing
bugs were minor and quite obvious and I was confident that they'd be
corrected in the next major release.  How wrong was I!  CLIM 2.0 was a
complete rewrite with new specs that required so many changes to our
code that we decided to scrap the initial test port and start over.
Not only that, but our Beta 2.0 was so buggy that I recommended to
those in power that we not continue with the CLIM port until the system
stablized.  I was overruled and here we are today with a bunch of
internal kludgy fixes that are probably no longer needed as the bugs
they deal with have been fixed.  Of course, some of our work-arounds
actually backfired on us as new distributions of CLIM were received
from the vendors.

You are at somewhat of a disadvantage knowing CLIM 1.1 and converting
to 2.0 as you, like me, may use old outdated functions that appear to
still work but cause all kinds of other problems down the road.  The
only solution is to completely reread the manual.  At the time I was
upgrading to 2.0 the situation was even worse as the manual (Symbolics)
was only partially updated and still had 1.1 specs to throw you off.
As an example, I was using (CLIM:WINDOW-STACK-ON-BOTTOM ...) inside
(CLIM:WITH-MENU ..) macro.  The manual still listed this function and
it appeared to work since the window disappeared from view after
stacking it on the bottom.  Subsequent to executing this code all
menus; e.g., CLIM:MENU-CHOOSE, etc., were clobbered and stayed that way
until reboot.

Anyway, the bottom line is that porting from Symbolics Genera 8.3
running CLIM 2.1 to Unix running Allegro 4.2 CLIM 2.0 is rather smooth
requiring only minor fine-tuning.  We have to use different font specs
to achieve similar results on both platforms but otherwise the port is
quite smooth.

There are some attributes of ACL/CLIM that I'm dissatisfied with at the
moment.  Smoe of these problems may go away after we get a chance to
look into them deeper.  One very annoying feature is that our system
tends to decide to perform GC just as the user is interacting with the
system.  There's no message or any other indication (other than lights
flashing on the disks) that anything's going on and the user starts to
click here and there to see if the system still responds.  Of course,
all these clicks are saved on the queue and cause havoc when GC

Main Index | Thread Index