ToCDocOverviewCGDocRelNotesIndexPermutedIndex
Allegro CL version 6.2
Minimally revised from 6.1

Release Notes for Allegro CL 6.1

This document contains the following sections:

1.0 Introduction
2.0 All Lisp files must be recompiled (old fasl files will not load)
3.0 Release Notes for installation
4.0 Release notes for specific platforms
   4.1 Note on Windows XP
   4.2 Compaq Alpha running Tru64: default stack size should be increased
   4.3 Heap start locations
5.0 Release Notes for the base Lisp
   5.1 New features in the base Lisp
   5.2 Non-backward-compatible changes in the base Lisp
   5.3 Other changes in the base Lisp
   5.4 Base Lisp platform-specific information
      5.4.1 HP
      5.4.2 LINUX Redhat
      5.4.3 SPARC
      5.4.4 MacOS X
      5.4.5 Compaq ALPHA
6.0 Release Notes for CLIM
7.0 Release Notes for Common Graphics (Windows only)
   7.1 Information on avoiding deadlocks in Common Graphics applications
   7.2 Non-backward-compatible changes in Common Graphics
   7.3 Other changes in Common Graphics
8.0 Release Notes for AllegroStore
   8.1 Non-backward-compatible changes in AllegroStore
   8.2 Other changes in AllegroStore
      8.2.1 Special note for users on Linux
9.0 Release notes for Orblink
10.0 Availability of CLX for Allegro CL
Appendix A. Changes to the startup sequence for the Integrated Development Environment (IDE) on Windows
Appendix B. Common Graphics bug fixes and minor enhancements


1.0 Introduction

This document provides the release Notes for release 6.1 of Allegro Common Lisp and related products. The sections describe the release notes for the various components (Allegro CL and related products). Each section is divided into non-backward-compatible changes (that produce different behavior in release 6.1 compared to release 6.0) and changes unrelated to backward-compatibility. Note that a bug fix is not considered a backward-incompatible change even if it does result in changed behavior because the previous behavior was erroneous.

You may wish to look at the 6.0 Release Notes, available on the web at http://www.franz.com/support/documentation/6.0/doc/release-notes.htm.

This document describes the changes, major and minor, from 6.0 to 6.1. Please look particularly at these sections:

If you notice changed or unexpected behavior with an operator, variable, or facility, search for its name in this document to see whether there is an entry concerning it.



2.0 All Lisp files must be recompiled (old fasl files will not load)

fasl files (compiled Lisp files) created by releases of Allegro CL prior to 6.1 final (including 6.1.beta) will not load into Allegro CL 6.1. All such files must be recreated by compiling the associated Lisp source files. An error will be signaled if Lisp attempts to load an older, incompatible fasl file.



3.0 Release Notes for installation

  1. Version 6.1 uses the 6.0 installation procedure: this procedure is described in the 6.0 Release Notes in the Release Notes for installation section (available on the web at http://www.franz.com/support/documentation/6.0/doc/release-notes.htm#install-1). Installation is described in installation.htm.
  2. The distribution includes 8 bit and 16 bit character images (this information is repeated from the 6.0 Release Notes). Allegro CL 6.1 has images that support 8 bit characters only, or 16 bit characters only. It is our expectation that most users will use the 16 bit images. Executables supplied with the distribution either have or do not have `8' in the name. Those with 8 in the name (mlisp8 and alisp8, e.g.) support 8 bit characters. Those without a number in the name support 16 bit characters. Image (dxl) files also come in 8 and 16 varieties. Again, 8 in the name means 8 bit character support. Character support for images and executables must match. Trying to start an executable with the wrong type of image fails.
  3. No prebuilt Allegro Composer images in the distribution (this information is repeated from the 6.0 Release Notes). To create an Allegro Composer image, start Allegro CL and load buildcomposer.cl. That will produce composer and composer.dxl, or composer8 and composer8.dxl. Allegro Composer is available on Unix only.
  4. No prebuilt Allegro CLIM images in the distribution (this information is repeated from the 6.0 Release Notes). To create a CLIM image, start Allegro CL and load buildclim.cl. That will produce clim and clim.dxl, or clim8 and clim8.dxl.


4.0 Release notes for specific platforms

Allegro CL 6.1 is know to work with the following operating system versions.

Allegro CL 6.1 will typically work with OS releases that come out after Allegro CL 6.1 was released. If you have a problem with a later release, please contact bugs@franz.com. See Where to report bugs and send questions in introduction.htm for information on reporting bugs and problems.


4.1 Note on Windows XP

We expect that Allegro CL will be fully compatible with the upcoming release of Windows XP (which had not been release while Allegro CL 6.1 was developed). Allegro CL 6.1 has been tested on pre-release versions of XP, and no problems were detected. XP is similar to Windows NT/2000. In places in the documentation where Allegro CL behavior under different Windows OS's is mentioned, XP will work like NT/2000 rather than 95/98/Me.


4.2 Compaq Alpha running Tru64: default stack size should be increased

The default stack size limit on an Alpha is 2 Megabytes, which is too low for normal stack overflow handling. Doing

 limit stacksize unlimited

in a csh shell seems to allow up to 16 or 32 Mb, and users can run that command before running Allegro CL. (That command could be put into a .cshrc file.)

However, that only solves the problem in cases where the command is seen in the shell running Allegro CL. You can also change the default for the machine as a whole by doing something like the following. (This procedure is provided as an example of what might work. Please check your Tru64 system documentation or contact your Compaq service representative for the precise instructions.)

The procedure described here is best performed by a system administrator or similarly trained person. The vmunix file created and copied at the end is the UNIX kernel. Modifying it incorrectly or corrupting it can have serious consequences.

1. Log in as root. You must be root (or have superuser privileges) to perform most of the following operations.

2. Change into the /sys/conf/ directory.

  prompt# cd /sys/conf

3. Edit the file whose name is the machine name, which we will call MACHINE_NAME, as follows. (Such a file typically exists after normal Tru64 Unix install. If the file does not exist, the System Administrator will have to create one.

Change the line 

           dflssiz         2097152
to
           dflssiz         8388608
or
           dflssiz         16777216

The value of dflssiz may already be different than 2097152, which is 2 megabytes -- (* 2 (expt 2 20)). The new suggested values are 8388608, which is 8 megabytes and a good value for 32-bit Lisps, or 16777216, 16 megabytes and a good value for 64-bit Lisps.

4. Run /usr/sbin/doconfig as follows (recall that MACHINE_NAME is the file in /sys/conf whose name is the machine name):

 prompt# /usr/sbin/doconfig -c MACHINE_NAME

You should see output similar to:

*** KERNEL CONFIGURATION AND BUILD PROCEDURE ***

Saving /sys/conf/MACHINE_NAME as /sys/conf/MACHINE_NAME.bck

Do you want to edit the configuration file? (y/n) [n]: n


*** PERFORMING KERNEL BUILD ***
	Working....Thu Oct  4 09:58:16 PDT 2001

The new kernel is /sys/MACHINE_NAME/vmunix

5. Copy the new kernel to / with a command like the following

prompt# mv /sys/MACHINE_NAME/vmunix /

6. Reboot the system.


4.3 Heap start locations

When building large new images, it is often useful to specify Lisp Heap and C-heap start locations. See the discussion of the lisp-heap-start and c-heap-start keyword arguments in Arguments to build-lisp-image 2: defaults not inherited from the running image in building-images.htm. Here are the initial locations (called `bases') in Allegro CL 6.1 as delivered. Values are Hexadecimal integers.

Operating System Lisp base C base
Tru64 32-bit 0x30000000 0x54000000
Tru64 64-bit 0x1000000000 0x2000000000
FreeBSD 0x10000000 0x64000000
HP-UX 32-bit 0x10000000 0x64000000
HP-UX 64-bit 0x8000001000000000 0x8000002000000000
Linux (x86) 0x71000000 0xa0000000
Linux (PPC) 0x40000000 0x74000000
MacOS X 0x30000000 0x64000000
Windows 0x20000000 0x54000000
AIX 0x30000000 0x64000000
IRIX 0x30000000 0x64000000
Solaris 32-bit 0x4000000 0x54000000
Solaris 64-bit 0x1000000000 0x10000000000


5.0 Release Notes for the base Lisp

This main section contains three subsections: one on new features (Section 5.1 New features in the base Lisp), one on changes which are not backwards compatible and so may require code changes, (Section 5.2 Non-backward-compatible changes in the base Lisp), and one on miscellaneous changes Section 5.3 Other changes in the base Lisp).


5.1 New features in the base Lisp

We have added a number of new capabilities to Allegro CL. Here we give links to the documentation of the new features.

  1. Remote Procedure call support. The purpose of the RPC utility is to allow separate Lisp images to communicate with each other by remote procedure calls. See rpc.htm.
  2. Better support for localization. Localization refers to automatically using conventions specific to a locale for representation of time, money, and numbers. See Localization support in Allegro CL in iacl.htm.
  3. Support for comparing strings with non-ASCII characters. Functions like string< and string> may not order strings containing non-ASCII characters as expected because ordering is done using the char-code of those characters. (It is for this reason that all capital ASCII letters are less than all lowercase ASCII letters. New support has been added for comparing such strings. See String collation with international characters in iacl.htm.

5.2 Non-backward-compatible changes in the base Lisp

  1. Name changes for three low-level stream functions. The names of these three functions have been changed. Their old names are no longer exported symbol and cannot be used. single-channel-install-ef-methods is now install-single-channel-character-strategy; single-channel-install-ef-methods is now install-dual-channel-character-strategy; and string-install-ef-methods is now install-string-character-strategy.
  2. file-stream and string-stream classes now correctly placed in the hierarchy. In release 6.0, file-stream and simple-stream were not correctly placed in the stream class hierarchy. thus, a call to open produced a file-simple-stream or a excl::file-gray-stream but those classes were not subclasses of file-stream, as they should have been. In 6.1, file-stream has been inserted in the hierarchy as a subclass of stream and a superclass of file-simple-stream and excl::file-gray-stream. Similarly for string-stream.
  3. readtable-case is not ignored (by default) in non-ANSI case modes. In releases prior to 6.1, readtable-case was ignored when the case mode was anything other than :case-insensitive-upper (the ANSI case mode). In release 6.1 (and in 6.0 with a patch), readtable-case is (by default) never ignored. Control over this is provided by the function set-case-mode. It has a new keyword argument adjust-readtables-case. If that argument is true (the default), readtable-case will not be ignored and existing readtables are modified appropriately. If that argument is nil, readtable-case will be ignored in all case modes except :case-insensitive-upper (the ANSI case mode) and existing readtables are not modified. See set-case-mode for details.
  4. def-external-format no longer takes a size argument. In 6.0, size was a keyword argument to def-external-format. It is not accepted in 6.1. Instead, the keyword arguments width and nulls are accepted. The first specifies the number of octets needed to build a character. The second specifies the number of 0 octets that must trail a string. The older size argument was specifying both of these values, and this caused problems when they differed. See ef-nulls and ef-width. def-external-format now also takes a verbose keyword argument.
  5. ef-size function no longer defined and symbol is removed. As noted in the entry def-external-format no longer takes a size argument just above, the size slot of an external format has been replaced with two slots: nulls and width. The accessor functions are the newly-defined ef-width and ef-nulls.
  6. Second optional argument to listen changed. Allegro CL gives listen a second optional argument to allow specification of the size of characters. In release 6.0, this argument was a boolean. In 6.1, it takes a number or the symbol character as a value. See the description of listen in Implementation of Common Lisp Functions for Simple-Streams in streams.htm.
  7. enough-namestring may fail with arguments that (incorrectly) did not fail in 6.0. In prior releases, the string enough-namestring included a filename when not necessary. This was determined to be a bug and fixed, but the fix meant that the result is changed in 6.1 compared to prior releases, and in some cases an error is signaled in 6.1 where no error was signaled in prior releases.
    6.0: (enough-namestring "foo.cl" "foo.cl") RETURNS "foo"
    6.1: (enough-namestring "foo.cl" "foo.cl") RETURNS ""
    
    6.0: (enough-namestring "foo.cl" "foo.lisp") RETURNS "foo.cl"
    6.1: (enough-namestring "foo.cl" "foo.lisp") SIGNALS ERROR
      "Can't make a Unix namestring from a pathname with a :type and no :name."
    b
    6.0 WINDOWS: 
    (enough-namestring #p"c:\\foo\\bar\\" #p"c:\\foo\\file.cl") 
      RETURNS "bar\\file"
    6.1 WINDOWS: 
    (enough-namestring #p"c:\\foo\\bar\\" #p"c:\\foo\\file.cl") 
      RETURNS "bar\\"
    
    6.0 UNIX/LINUX: 
    (enough-namestring #p"/foo/bar/" #p"/foo/file.cl") 
      RETURNS "bar/file"
    6.1 UNIX/LINUX: 
    (enough-namestring #p"/foo/bar/" #p"/foo/file.cl") 
      RETURNS "bar/"
    
  8. String conversion in foreign calls is done automatically when def-foreign-call is called with nil arglist and strings-convert unspecified. If in a call to def-foreign-call defining a foreign function to Lisp, arglist (the second required argument) is nil (meaning that no information about the type or the number of arguments to the foreign function is supplied) and the strings-convert is not specified, string conversion is enabled and a warning is printed stating that fact. See the description of def-foreign-call, particularly Note 4 after the table describing the arguments.
  9. Calling compile or compile-file in a standard runtime image signals an error This was true in earlier releases as well, but the documentation incorrectly stated that instead of an error being signaled, the call was either ignored or a warning was signaled, as the variable *compiler-not-available-warning* was nil or true. In standard runtime images, that variable is ignored and an error with condition runtime-restriction is always signaled. See the description of *compiler-not-available-warning* for more information and further links.
  10. def-locale no longer accepts language and territory arguments In earlier releases, def-locale accepts the keyword arguments language and territory. These arguments are no longer accepted. The new localization facility (see Localization support in Allegro CL in iacl.htm) makes those arguments unnecessary.
  11. release-heap argument to def-foreign-call changed; new release-heap-ignorable argument added. The meaning of the release-heap to def-foreign-call has not changed, but it is now looked at on every platform, including non-os-threads platforms where it has no meaning. (The heap can only be released during a foreign call on platforms where multiprocessing is done using OS threads. On other platforms, multiprocessing is suspended during a foreign call.) On non-os-threads, the value should be specified :never. If it is not, a warning is signaled unless the new release-heap-ignorable keyword argument is specified t (its default is nil).

    The reason for the change is to ensure that the programmer understands that a meaningless value has been specified when the value on a non-os-threads platform is something other than :never. Assuming that the heap can be released on non-os-threads may affect behavior or performance. release-heap-ignorable is provided to allow the same def-foreign-call forms to be used on both os-threads and non-os-threads platforms without warnings being signaled and without conditionalizing the value of the release-heap argument.

  12. Runtime images can only be built with generate-application. The value of the runtime keyword argument must be nil when calling build-lisp-image directly. The value of the runtime keyword argument must be non-nil when calling generate-application. Only generate-application can be used to create runtime images. (The IDE menu command File | Build Project Distribution creates a runtime image by calling generate-application.) The values for the runtime are given in Arguments to build-lisp-image 2: defaults not inherited from the running image in building-images.htm.

5.3 Other changes in the base Lisp

  1. New function generate-executable. generate-executable is a wrapper for generate-application and produces an executable which accepts command-line arguments as input. generate-executable cannot do more than generate-application but has a simpler interface. It is only available in distributions licensed to produce runtime images.
  2. run-shell-command has new environment keyword argument. The value of this argument can be an alist of names and values (both should be strings), where the names name environment variables to set in the process being spawned, and the values are the values for those variables. See run-shell-command for details. If no value is specified for this argument, the behavior is the same as in previous releases.
  3. New function compose-encapsulating-streams. The function compose-encapsulating-streams can be used in setf methods for stream-external-format on custom stream classes. It configures a stream instance by adding or subtracting as many composing-stream encapsulations as are necessary to make it appropriate for a specified external-format. Usually, stream encapsulations are accomplished by wrapping the encapsulator around the encapsulatee but this would force the use of a different stream than the one which was originally opened, and the encapsulation as a whole would not have the same class/type as the original.
  4. stream-line-column setf'able for simple streams. See stream-line-column and Details of stream-line-column and charpos in streams.htm. Several control tables functions and variables are now named by exported symbols (see Control-character Processing in streams.htm). However, they are not intended for direct use in programs.
  5. internal-debug argument to build-lisp-image can be a pathname. The internal-debug keyword argument to build-lisp-image (actually documented in building-images.htm) can now be a pathname as well as a string naming a file to write image building information to. (Other true values cause the information to be written to a file build.out.)
  6. New emacs-lisp-interface function fi:goto-char for navigating files on Windows. This function, given a Common Lisp file-position, which counts octets, goes to the desired buffer position. This function is designed to work around the problem that on Windows, Emacs and Common Lisp have different views of the end of line convention. In Emacs, the end of line is a single character in the buffer. In Common Lisp on Windows, however, it is often two octets forming a single Lisp character whose location may not match what Emacs considers to be the "character position" in a buffer. (Common Lisp compiler warnings that report file positions differently from what is expected illustrates the difference.) Note that fi:goto-char may not work for external formats other than the default.
  7. New way to delay callback linking until runtime. The functions get-shared-library-handle and get-shared-library-name allow for a foreign function to be passed the Lisp shared library location at runtime so that functions that do callbacks need not link with that library prior to runtime. See Delaying linking the Allegro CL shared-library until runtime in foreign-functions.htm.
  8. Various foreign string manipulation functions are now in excl package. This was done in order to reduce the number of modules needed in an image and to unify foreign string manipulation functions in one location. The following mapping is from deprecated functions (all in the foreign-functions package) to preferred functions (all in the excl package). The deprecated functions are all in the :ffcompat module, which is not included in a default image. Use of some of these functions was already deprecated in release 6.0.
  9. def-external-format now takes a verbose keyword argument. The value, which defaults to t binds *load-verbose* when the external format is switched to runtime mode. See the information on other, non-backward-compatible changes to def-external-format in Section 5.2 Non-backward-compatible changes in the base Lisp.
  10. Modified behavior of socket:shutdown: Calling shutdown on a socket twice, once for :input and once for :output will cause the operating system file descriptor associated with the socket to be closed. Thus you need not call the Lisp function close.
  11. Various new pathname related functions:
  12. New close-oldspace argument to build-lisp-image. This new argument to build-lisp-image and generate-application (described in Arguments to build-lisp-image 2: defaults not inherited from the running image in building-images.htm) allows oldspaces (areas) to be closed in newly created images. A closed old area has no new objects stored in it (even if there is space) and is not garbage collected. Closed old areas are described in Parameters that control generations and tenuring in gc.htm.
  13. Storing of documentation strings for Lisp objects controlled by *load-documentation* variable. If the value of *load-documentation* is nil, documentation strings specified in definitions (for example, (defun foo (x) "Documentation string for foo" (+ 1 x))) are ignored. If the value is true, documentation strings are stored as usual. Control over storing of documentation strings is provided to allow creating smaller images by leaving out documentation strings when they are not in fact needed. The initial value of this variable is specified by the preserve-documentation-strings keyword argument to build-lisp-image (see building-images.htm). The initial value in images supplied with the distribution is true.
  14. New socket function set-socket-options: the new function set-socket-options allows modifying certain characteristics of existing sockets.
  15. On machines that have 32 and 64 bit Lisp versions, a flag must be used on the cc or cpp command line. Either -DAcl32Bit or -DAcl64Bit on the cc or cpp line whenever lisp.h is included, to allow 32 vs 64 bit ports be identified. the 6.1 ports that allow both are HP, Compaq Alpha, and Sparc.
  16. new location (:holes) for excl:print-type-counts: A new location type to print-type-counts has been added for 6.1: the :holes type. This shows the types and sizes of the objects that were removed on the most recent global-gc. No output is available until the first global-gc is done.
  17. Repeated entries are collapsed in the top-level history list. The Lisp top-level maintains a history list of forms and commands entered (see Command and expression history and the :history top-level command). Starting in release 6.1, repeated entries (the same form or command entered repeatedly with no intervening form or command) are collapsed into one entry.
  18. Error message for conflicting symbols has changed. When you cause package pack-a, which includes (perhaps because it imports) pack-a::foo, to use package pack-b which exports the symbol pack-b::foo, you have to tell Lisp which symbol an unqualified foo will reference. In earlier releases, the error message associated with this problem was very confusing. The message has been changed in release 6.1 so that what you should do is clearer. See Using package [package] results in name conflicts... in errors.htm for the old and new messages.
  19. Non-compliance of assoc-if, assoc-if-not, rassoc-if, and rassoc-if-not fixed: assoc-if, assoc-if-not, rassoc-if, and rassoc-if-not did not accept the key keyword argument in releases prior to 6.1. They do in release 6.1. Compliance issues are documented in Compliance with the ANSI specification in implementation.htm.
  20. Non-compliance of shadow fixed: shadow now accepts strings as well as symbols, as required by ANSI, fixing a non-conformity is earlier releases. Compliance issues are documented in Compliance with the ANSI specification in implementation.htm.
  21. apropos and apropos-list accept case-insensitive as a third optional argument. This was actually implemented in an earlier release but not before documented. See Extensions to cl:make-package, cl:disassemble, cl:open, cl:apropos in implementation.htm.
  22. New feature :dlmac. The :dlmac feature is used for the MacOSX port to identify its style of foreign loading. See Different versions of Allegro CL load foreign code differently in foreign-functions.htm.
  23. New follow-symbolic-links argument to map-over-directory. The new follow-symbolic-links keyword argument to map-over-directory allows programmers to specify whether symbolic links which point to directories should be followed (and thus treated as other subdirectories) or treated as files (so files in the directory linked to are ignored). The default is t, which preserves the version 6.0 behavior and acts on the files in the directory named by the link. The argument is ignored on Windows, where there are no symbolic links.

5.4 Base Lisp platform-specific information

There are notes for HP, LINUX Redhat SPARC, MACOS X, and Compaq ALPHA.


5.4.1 HP


5.4.2 LINUX Redhat

Redhat 5 no longer supported. Allegro CL 6.1 will only work on Redhat 6 and Redhat 7 operating systems.


5.4.3 SPARC

A 64-bit version of Allegro CL for Sparcs is now available.


5.4.4 MacOS X

A version of Allegro CL for MacOSX is now available.

CLIM does not work with Allegro CL 6.1 on MacOSX.

Note: Allegro CL does not conform to Apple's "bundle" concept. A bundle is a directory which is treated as a complete unit, and which the Finder will show as if it were a file, with its icon, and if you click on that icon the application will start up.

In the document Inside Mac OS X: System Overview, available at some Apple sites, there are several chapters on bundles and types of bundles. Chapter 5 is the chapter describing bundles and their contents, and Chapters 6, 7, and 8 describe Application packaging and Frameworks (dynamically loadable bundles, plug-ins, etc).

Allegro CL does not conform to these directory structures, and so none of the elements that make up Allegro CL (e.g. the mlisp or alisp, the libacl*.dylib, or the *.dxl images) are clickable by the Finder (the file browser on the Mac). Instead, the Lisp must be started programmatically or from the Terminal application, which is available under Applications / Utilities in the Finder.


5.4.5 Compaq ALPHA

The default stacksize limit in the Tru64 operating system is 2 megabytes, which is too low for normal stack overflow handling. See Section 4.2 Compaq Alpha running Tru64: default stack size should be increased for information on changing it.



6.0 Release Notes for CLIM

(Repeated from 6.0 Release Notes.) The documentation for CLIM is in an online PDF file, clim-ug.pdf. It has been updated since release 2.0 and is called The CLIM 2.2 User Guide. That document includes material formerly in the (printed) CLIM Release Notes.

  1. In Allegro CL 6.1, CLIM does not work on MacOSX. It works on all other Allegro CL 6.1-supported platforms.
  2. Users wishing to display Japanese characters need the k14 font. The k14 font is needed to display Japanese characters in a CLIM demo. This font appears to be missing from most X server font libraries. We are making available a public domain version of this font in the file [Allegro directory]/misc/k14.pcf. Please see your X server documentation for information on how to install this file as a valid font.


7.0 Release Notes for Common Graphics (Windows only)

The first subsection is a brief note pointing to a new discussion on and a new function for avoiding deadlocks in Common Graphics applications.

The second subsection describes changes to Common Graphics and the IDE that are non backward-compatible. Please review this section and make whatever necessary changes to your code to obtain the desired behavior in release 6.1.

The third subsection describes other changes to Common Graphics and the IDE. These should not require code changes (please tell us if any do, because that may indicate a bug), but note that certain function and argument names have been deprecated in favor of new names, and that new code should reflect these changes, and old code should be revised at some point.

The appendix Appendix B Common Graphics bug fixes and minor enhancements describes minor bug fixes and changes.


7.1 Information on avoiding deadlocks in Common Graphics applications

The section About design considerations for event-driven applications in cgide.htm discusses the issue of deadlocks (i.e. hanging) in Common Graphics applications. The new function post-funcall-in-cg-process is useful is protecting against deadlocks.


7.2 Non-backward-compatible changes in Common Graphics

  1. right-indentation of rich-edit-pane now measured from right rather than left. The right-indentation of a rich-edit-pane is now measured from the right side rather than from the left. Applications that use this property will need to convert to the new scheme.
  2. font property removed from menu-item. Windows does not support multiple fonts within or across menus. Therefore, the font property of menu-items had no effect and has been removed. There is also no font property of menus. A single font is used in all menus in Windows. That font is set in the Windows Control Panel.
  3. visible-box method for dialog-item removed. The visible-box method for dialog-item has been removed. This function should only be passed a window (as documented), and the dialog-item method did not return the coordinates that visible-box should return. Calling box on a dialog-item will return what the visible-box method for dialog-item had returned.
  4. New sort-on-click property. The new sort-on-click property provides a simpler and more intuitive interface for grid-widget sorting functionality for instances of classes inheriting from row-section-with-sort-gadget-mixin). Its initial value is t, which invokes the new option (and makes the change non-backward-compatible). The value nil must be used if the earlier behavior of the row-section-with-sort-gadget-mixin is desired.
  5. The IDE startup sequence has significantly changed. See Appendix A Changes to the startup sequence for the Integrated Development Environment (IDE) on Windows for details. See also About IDE startup in cgide.htm.
  6. New configuration option initial-package specifies starting value of *package* in IDE listeners. When an IDE listener (such as that in the Debug window) is started, the initial value of *package* is set to the value returned by initial-package on the current configuration (i.e. the value returned by (initial-package (configuration *system*))). In earlier releases, it was set to the :common-graphics-user package. See the note at the end of About IDE startup in cgide.htm for information on specifying a different initial package.
  7. Some functions and variables relating to startup and exit removed. As part of the revision to startup mentioned in the last item, the following functions and variables have been removed in release 6.1: *session-startup-hook*, session-init-functions, session-exit-functions, and session-variables.
  8. *after-session-init-functions-hook* replaced with *ide-startup-hook*. As part of the revision to startup mentioned in two items above, users are advised to use *ide-startup-hook* in place of *after-session-init-functions-hook*.
  9. Gaps in multi-picture-button controls are implemented better and somewhat changed. The range of a multi-picture-button control is a list of button-info instances (defining the buttons to be displayed) and, optionally, the keyword :gap separating button-info instances. The gap adds space between buttons (so they appear in groupings) and, when button-3d-border is :when-pressed in the multi-picture-button control, the gap is further indicated by a vertical line. The gap is in addition to the spacing between buttons.

    The size of the gap is determined by the new (in release 6.1) gap-size property of the multi-picture-button. Its value specifies a number of pixels and its initial value is 8.

    In release 6.0, the gap size was not settable and was 6 (rather than the new default 8). Further, because of a bug, the spacing was not included, so gaps actually typically reduced the distance between buttons.

  10. Case mode no longer a choice on Options dialog and current-case-mode function removed. The Environment tab of the Options dialog no longer has a control for case mode, and the current-case-mode generic function has been removed. The preferred way to use a particular case mode is to run an existing image that uses that mode, if any, and otherwise to generate such an image. (6.2 note: the Options dialog has been revised and there is no Environment tab in the revision.)
  11. edge-position function changed. For a grid-row or a grid-column, the value returned by edge-position no longer includes the edge-position of the parent grid-section. In earlier releases, it did.
  12. HLS color functionality corrected. In release 6.0, the range of the hue in calls to make-hls was specified to be 0.0 to 1.0 inclusive. This was incorrect. The actual range for hue is 0.0 to 360.0 inclusive. (Lightness and saturation do have ranges from 0.0 to 1.0 inclusive.) See make-hls for details.
  13. transparent-character-background does not work with dashed-lines. In fact, transparent-character-background has not worked with dashed lines for some time, but was incorrectly documented to do so in the 5.0.1 and 6.0 documentation. Indeed, dashed lines do not erase the window where the gaps between the dashes lie. The behavior for dashed lines can be emulated by first calling erase-line (with the line-dashing of the window set to :solid) before calling draw-line with line-dashing set to some other value to draw the dashed line.
  14. make-window and open-menu return nil if operating system is unable to create a menu. In earlier releases, make-window and open-menu signaled an error when the operating system was unable to comply with their requests (typically because system tables of windows and menus became full). These functions now return nil. (It is harder to handle errors.) Programs should ensure they interpret nil correctly and do not expect the window or menu to exist when no error is signaled.
  15. Changes to window location functions when :owned-p is true. The functions front-window, nth-window, windows, and windows-scratch-list now return nil when passed a child window or the screen along with a true :owned-p argument. Similarly, the do-windows macro will do nothing in this case. The :owned-p argument means to return or process only owned windows that are not also child windows of the specified window or screen, and only top-level windows can have this sort of owned window. In prior releases, child windows were always returned or processed when a child window or the screen was specified, even when :owned-p was true. If an application depended on the former behavior, it should now avoid passing :owned-p as true when passing a child window or the screen to these functions.
  16. lisp-group-box class now named group-box; lisp-group-box-pane now named group-box-pane. The class named lisp-group-box in releases prior to 6.1 is now named group-box. lisp-group-box names a class which is a subclass of group-box with no additions. The class lisp-group-box-pane is now named group-box-pane. The symbol lisp-group-box-pane no longer exists.
  17. property generic function removed, replaced by property-value. In 6.0 and earlier, the generic function property took as arguments an object and a property name and returned the property value. This generic function has been removed and replaced with property-value, which takes an object and a property object or name, and returns the property value (thus possibly avoiding a lookup of a property value from a name).
  18. standard-toolbar-icons: the elements of the list which is the value of this property (accessed and set by standard-toolbar-icons) are now keywords (rather than symbols in cg-related packages). See standard-toolbar-icons for details on the value of this property.
  19. The functions open-command, close-command, save-command, and save-as-command were incorrectly named by exported symbols in release 6.0. However, they are internal IDE functions not intended for users of applications. The symbols naming them have been unexported in release 6.1 and the associated functions are no longer documented or supported for user or application use.
  20. Symbols naming functions related to registration removed: The following seventeen exported CG symbols have been removed for 6.1. They are related to managing ole/activex features in an IDE project, but that facility was never implemented.

    on-registration, on-unregistration, on-factory-registration, on-factory-unregistration, do-default-registration, do-default-unregistration, do-factory-unregistration, do-default-factory-unregistration, do-default-server-initialization, registration-function, unregistration-function, factory-registration-function, factory-unregistration-function, class-factory, server-class-id, program-name, readable-program-name.

  21. Creating a new project no longer asks which type of project to make. The only type available is "Standard EXE".
  22. Symbol naming function do-default-initialization unexported. That function was never intended for users. It is used internally.
  23. Default on-change-test for multi-item-lists and list-views changed. The default on-change-test for multi-item-list and list-view controls is now equal rather than eql, because the values are lists, and different lists are never eql to each other.
  24. New option means that user must click on a gadget in a grid-widget. The new grid-widget option click-must-be-on-gadget prevents the user from changing values in combo-box-column-mixin and check-box-column-mixin grid cells unless they click directly on the drop arrow or the check-box. This option is on by default, and must be turned off if the former behavior is desired. Also, the combo-box-column-mixin class has the on-print property for customizing the appearance of the displayed choices more easily than by writing a menu-items-for-combo-box-range method.
  25. Some Common Graphics functions wrap code in without-interrupts. Calls to without-interrupts have been added in certain places in Common Graphics, such as around calls to redisplay-window, to workaround a slowdown in win2k due to it switching threads much more often. Applications might find it useful to add calls to without-interrupts in particular places as well.
  26. Copying down a form in the IDE listener copies the whole form. When copying a lisp form from an earlier evaluation to the current prompt in an IDE listener by moving the text cursor to the form and pressing ENTER, you can now place the text cursor anywhere within the form or just before or just after it. Until now you had to place the text cursor just before the form to copy the whole thing, since ENTER would copy down whatever form started at the text cursor position. This technique is an alternative to using the history list at the top of the IDE listener. Thus, if the cursor (|) is placed as indicated: (+ 1 |(* 3 4) 5), pressing ENTER will copy (+ 1 (* 3 4) 5), not just (* 3 4).

7.3 Other changes in Common Graphics

  1. Handling of errors in standalone Common Graphics applications. If an error is signaled in a standalone Common Graphics app after the developer has turned off the console tray icon when ready for delivery (see the Build tab of the Project Manager dialog), and the error is not handled by the application, then a modal dialog will be invoked indicating that an unhandled application error has occurred, that the application will now exit, and what the error message string was. Formerly an app would continue to run while being in an unexpected state where the bug occurred. When the console tray icon is still present for debugging, on the other hand, an error in the standalone app will expose the console to make it clear that an error has occurred, and a new restart will allow continuing from otherwise unhandled errors.
  2. Abort restart in standalone Common Graphics apps. Standalone Common Graphics apps now have an abort restart (in each event-handling thread) to throw back to the usual event-handling loop after an error. This restart may be selected in the Console to continue running a standalone app after an arbitrary error.
  3. New profile control dialog. There is a new Profile Control dialog for doing any type of profile interactively, rather than just a time profile with no call counts on all threads as with the menu-bar commands previously. The existing Profile Results dialog has a new tab showing call counts. The keyboard shortcuts for starting, suspending, and stopping a profile are now global to allow doing this in application windows without switching to or from the IDE while sampling may be occurring.
  4. Argument to get-focus now optional and always ignored. In earlier releases, get-focus had one required argument, a parent stream (i.e. a window with subwindows). In fact, this argument was always ignored since focus is a global (per-thread) property, not a property of specific window hierarchies. In release 6.1, get-focus accepts one optional argument, and this argument is ignored. Since the required argument was in fact ignored in earlier releases, the behavior has not in fact changed.
  5. New configuration option controls whether a dialog displays warnings during compilation. See show-dialog-on-compiler-warnings. The dialog appeared in all cases in release 6.0.
  6. New property for outline-items prevents leaf pixmap from showing when range items will be supplied. The new property has-range-on-open for outline-items can be set to true (it is initially nil) if the item has no child items initially but a range-on-open method that the application has supplied for this outline is expected to return one or more child items for this item.
  7. New type of file in projects: distributed file. Arbitrary files may now be added to projects simply to make File | Build Project Distribution copy them to the project's distribution directory. See distributed-files. Also, when pressing the Add File button in the Project Manager dialog, a dialog asks which type of module is to be added, to clarify what types are available and to default the file selection dialog to files of the desired type.
  8. conserve-indentation now on Editor tab of Options dialog. The conserve-indentation configuration property has been added to the Editor tab of the Options dialog.
  9. New macroexpansion commands on Edit menu. There are two new macro expansion commands on the Edit menu, called Walk Form and Compiler Walk Form, for expanding every macro call in an expression rather than only the top-level calls.
  10. Handling of errors during compilation. When an error occurs during compiling while using the File | Compile, File | Compile and Load, or Tools | Incremental Compile commands, a new restart will appear on the restarts dialog that will (if selected) invoke the IDE editor on the form being compiled, with the text cursor showing the position of the actual error.
  11. New editor command to jump to a character location. There is a new IDE editor command to jump to an arbitrary character index in the buffer. It is documented only in the Shortcut Keys dialog (displayed with Help | Shortcut Keys), as with other editor comtab bindings, where it appears as go-to-character-index-command, with the keyboard shortcut alt-shift-G.
  12. It is easier now to put a project into a custom package. Each form now continues to default lazily to the package of the project, so changing the project's package changes each form's package as well, except for forms that have been given specific packages. The package widget on the Project Manager now maps typed package names or nicknames to real packages regardless of the typed string case. The finder-function and maker-function of a form are always written out in the package of the form (which defaults to the package of the project).
  13. How to enter non-typable characters into an IDE editor. Any non-typable ASCII character or Latin1 character may now be inserted into the IDE editor by typing alt-Q to invoke the new insert-ascii-character command. (See the Shortcut Keys dialog for this and other otherwise undocumented editor commands.)
  14. Forms may have a specified package. The new function form-package-name returns or sets a package to use for the generated code of a form, to override the package of the whole project.
  15. The right-button shortcut menu in an IDE backtrace window has new entry. The menu now includes a command to inspect the function object of the selected backtrace frame.
  16. combo-box-column-mixin now accepts typable initarg. The :typable-p initarg of combo-box-column-mixin (for grid-widgets) is now called :typable to match the corresponding initarg for the combo-box widget, though :typable-p still works for backward compatibility. The accessor is now the exported symbol typable rather than the internal cg::column-typable-p.
  17. Changes in file saving when a project is run. Run | Run Project will not show the Save All dialog if there are modified editor buffers but nothing associated with the project is modified. File | Build Project Distribution and File | Build Project Exe will always offer to save everything if the project is modified, and will never proceed unless everything in the project is saved.
  18. justification is now a property of editable-text controls. The justification property has been added to editable-text, the single-line text editing control. Note that this officially requires win98 or win2000 or later.
  19. Symbol completion now case-insensitive. Symbol completion in the IDE now does a case-insensitive search for symbols to complete.
  20. Trace dialogs have more color control. The new function process-trace-color and the new macro with-trace-color allow color-coding Trace Dialog output to distinguish output in different processes or different trace tests.
  21. add-tab can take tab-info objects rather than just names. add-tab can now take a tab-info object rather than its name only.
  22. New configuration option allows user-specific prefs files. In earlier releases, there was a single master preferences file named prefs.cl and located in the Allegro directory. In 6.1, you can have user-specific prefs files (the system will look in user's home directory first and use the main prefs file only if no user-specific one exists). See save-options-to-user-specific-file.
  23. New macro with-printer makes it easier to get information about a printer without outputting a page. with-printer allows opening a printer stream to query its properties without ejecting any paper from the printer as with-output-to-printer (or open-stream followed by close) does.
  24. New generic function flood-fill. The function flood-fill implements an Operating System feature which fills in contiguous pixels of the same color with the foreground color (filling in the sea on a picture of a map, for example).
  25. New keyboard interface to widgets on form windows. The arrow keys can be used on form windows to move the selected widget(s) by single pixels. Red lines are drawn to show the alignment of the moving widgets at each step. (This is like the Form | Show Alignment command, except that the lines are drawn for the moving widgets only.) If the control key is held down while the arrow keys are pressed, then the widget(s) are resized rather than moved. If the alt key is held down, then the widget(s) are moved or resized by ten pixels rather than by one. Also, the tab key can now be used on form windows to move the selection to the next widget in the tab order (and shift-tab moves to the previous widget); this also highlights the alignment for the tabbed-to widget. Also, the main ENTER key will inspect the selected widget and select the inspector window.
  26. New vk-[button] constants. There are a number of constants in Common Graphics corresponding to keyboard keys (see key-names). Added in release 6.1 are: vk-xbutton1, vk-xbutton2, vk-left-shift, vk-right-shift, vk-left-control, vk-right-control, vk-left-alt, vk-right-alt, vk-left-windows, vk-right-windows, vk-applications, vk-add, vk-subtract, vk-multiply, vk-divide, vk-decimal, vk-separator, vk-numpad0, vk-numpad1, vk-numpad2, vk-numpad3, vk-numpad4, vk-numpad5, vk-numpad6, vk-numpad7, vk-numpad8, vk-numpad9.
  27. New variables first-x-button and second-x-button: first-x-button and second-x-button are constants similar to left-mouse-button, corresponding to the first and second mouse X button in a button-state argument. X buttons are found on the side of some newer mice, where the frontmost button is the "first" and the rearmost button is the "second". See *ignore-mouse-x-buttons* and the next entry.
  28. New variable *ignore-mouse-x-buttons* controls whether X mouse buttons are ignored. The X mouse buttons are found on the side of some newer mice. When this variable is true, which is the default, those buttons are ignored. Note: an apparent Operating System error causes the OS to claim that the first X button is down on some machines where the mouse has no X buttons. If you would like to use X buttons in an application, then you can set this variable to nil as long as you do not experience a problem with an X button claiming to be down when it is not.
  29. New special variable *default-cg-message-timeout*. The variable *default-cg-message-timeout* controls how long a Common Graphics thread waits for a reply before timing out with an error when it sends a message to a window that was created in another thread.
  30. New generic function default-command-line-arguments allows specifying command-line arguments in a project. The value returned by default-command-line-arguments is a string indicating the command-line arguments that will be embedded in the resources area of the standalone executable that is generated for the specified project. The Advanced tab of the Project Manager Dialog has a control for specifying this value.
  31. New property autoload-warning for projects. The property autoload-warning specifies the value of the autoload-warning argument to build-lisp-image and generate-application when a project exe or distribution is built. The Advanced tab of the Project Manager Dialog has a control for specifying this value.
  32. Changes to the project manager Build Includes list. The Advanced tab of the Project Manager Dialog has a Build Includes field for specifying modules to include in the project. This list now includes local-name-info; when selected, variable names are not discarded from the code in the generated application, which may help with debugging. Also, source-file-info and xref-info no longer appear in this list, as this information is never loaded into applications generated from projects.
  33. use-real-combo-box allows using a real combo box in grid-columns: the use-real-combo-box property of instances of grid-column and of the mixin class combo-box-column-mixin allows specifying whether an actual combo-box or a simulation (such as a pop-up menu) should be used to implement the drop-down list of choices.
  34. Use of directory-subdirectories: use of the function directory-subdirectories is deprecated. See the description page for directory-subdirectories for code for defining your own version of this function (which continues to exist in release 6.1 but likely will not in the next release).
  35. Use of files-to-list-box, subdirectories-to-list-box, and pathname-string-from-directory-list-box is deprecated. The functions files-to-list-box and subdirectories-to-list-box are hooked directly into older Windows functionality and are used for listing the files of a directory into a list-box control (a single-item-list, multi-item-list, or combo-box). The problem with using them is that they do not handle long file names, and they are somewhat awkward to use. It is more straightforward to simply call directory to find the files that are in a directory, and then call (setf range) on the control to list the files there. Subdirectories only may be shown by including only those files for which file-directory-p returns true. The use of pathname-string-from-directory-list-box, which works with the result of the functions already named, is thus deprecated as well.
  36. Mouse wheel events now handled. See mouse-wheel for details.
  37. mask-handle returns the handle of the mask of a pixmap just as pixmap-handle returns the pixmap handle. See pixmap-handle, open-pixmap-handle, and mask-handle for details on pixmap handles. mask-handle is new in 6.1.
  38. foreground-window function tells whether Lisp is currently-selected application. If it is, foreground-window returns the selected Lisp window. If it is not, foreground-window returns nil.
  39. down-key-names now returns longer list of down keys: through version 6.0, the list of down keys returned by down-key-names did not include elements for the keys associated with lisp characters (The A key, the B key, etc.). It only included the vk-... symbols that are in the list that is the value of key-names. Thus some but not all the pressed keys were listed. In 6.1, all keys on standard PC keyboards that are down should be listed.
  40. New function draw-arrowhead. The draw-arrowhead function may be used to place arrowheads on lines drawn with draw-line. Arguments to draw-arrowhead control the color and appearance.
  41. list-view controls support foreground-color. list-view controls now support the foreground-color property.
  42. Changes to the password property of editable-text controls. The password property of an editable-text control is now setf'able. (In earlier releases, it could only be set when the control instance was created). Also, its value can now be a Lisp character as well as t (echo an asterisk for each actual character typed) or nil (password property off, so echo the actual character typed). If the value is a Lisp character, that character is echoed for each actual character typed.
  43. Package List dialog works somewhat differently. In release 6.0 and earlier, simply selecting a package in the Package List changed the of *package* in the IDE Listener Thread (the Debug Window) to the newly selected package. In 6.1, more action is required: you must in addition either press the Set Current Package button, press the Enter key, or double-click on the desired package.
  44. create-icon-handle: a problem in releases prior to 6.1 where create-icon-handle would only create black and white icons has been fixed.
  45. New generic function proxy-menu-bar-window. The proxy-menu-bar-window generic function determines which menu on which window will be activated by an event-synonym entered in a window, thus allowing, say, entering a keychord in a child window to activate a menu command on the parent or owner window.
  46. New frame section keywords for mouse clicks in the frame of a window. The event functions called when there is a mouse event in the frame of a window (such as nc-mouse-left-down and nc-mouse-moved) take a frame-section keyword argument which indicates the general area of the frame in which the event occurred. (This function is called by the system, which passes the correct value of that argument.) The list of keywords which might be the value of that argument includes three new keywords in release 6.1: :object, :close, and :help.
  47. nc-mouse-middle-double-click generic function supplied. The function nc-mouse-middle-double-click, analogous to nc-mouse-double-click, is defined in 6.1 (and was not in 6.0).
  48. icon-index keyword argument added to load-pixmap and load-texture. load-pixmap and load-texture now accept a icon-index keyword argument which allows specifying which icon in a .ico file that contains several icons should be loaded.
  49. combo-box-column-mixin uses edit-start and end triggers. The edit-start-trigger and edit-end-trigger options of editable-text-column-mixin are now supported by combo-box-column-mixin as well.
  50. New argument for push-lisp-clipboard. The function push-lisp-clipboard takes a new empty-os-clipboard keyword argument.
  51. New section-scrolled function. section-scrolled is called whenever a grid-section is scrolled.
  52. set-focus accepts a nil argument. set-focus may now be passed nil instead of a window in order to remove the keyboard focus from any window in that thread that might have the focus.
  53. on-print handler added to list-view-column. The on-print event-handler has been added to list-view-column so that individual columns may format their displayed values in different ways. Its value is nil by default. If non-nil for a particular column, its value overrides the on-print for the whole list-view control on that column.
  54. New function mci-set-window. The new function mci-set-window may be called to play a .avi animation file in a particular window.
  55. show-selection-when-unfocused works on editable-text. The show-selection-when-unfocused property of multi-line-editable-text is now also implemented on the (single-line) editable-text control.
  56. New menus and options example. There is a new "Menus and Help Options" example (see the examples tab of the Navigator dialog). It covers both pop-up menus and menu-bars plus various ways of triggering help and displaying status-bar messages and tooltips.
  57. Typed input automatically run through on-print function in lisp-text controls. When a user types a value into a lisp-text widget whose delayed property is true, the typed value is now replaced with the string returned by the widget's on-print function. This formerly had been done for lisp-text widgets only when setting the value programmatically.


8.0 Release Notes for AllegroStore

The information in the next two subsections applies to the release of AllegroStore with Allegro CL 6.1.

The version of AllegroStore for Allegro CL release 6.1 is 2.1.

The AllegroStore manual is available online in PDF format, allegrostore.pdf. A printed copy is available.


8.1 Non-backward-compatible changes in AllegroStore

AllegroStore is no longer supported on Silicon Graphics machines.


8.2 Other changes in AllegroStore

These changes to AllegroStore are backward compatible.

  1. New function instance-count. The new function instance-count takes two arguments, a persistent-standard-class and a database. It returns the nonnegative integer count of instances of the specified class in the specified database. The persistent-standard-class argument may be a class object or a symbol class name. This function might be useful when debugging and when trying to choose the block arguments to for-each*. This function is documented in section 7.2.7 Query language, in the AllegroStore manual.

8.2.1 Special note for users on Linux

AllegroStore 2.1 works on Redhat Linux 7.



9.0 Release notes for Orblink

Most of the Orblink work between release 6.0 and 6.1 involved making the system more robust and fixing bugs.

A new function, orblink:break-pending-requests, allows an application to arrange for error responses when a socket closes while CORBA requests are pending. See [Allegro directory]/orblink/doc/connections.htm.



10.0 Availability of CLX for Allegro CL

CLX (Common Lisp X) provides an interface between Common Lisp and the X window system. Allegro CL includes a compiled version of CLX (code/clx.fasl, loaded by evaluating (require :clx)) with the distribution. The Allegro CL products CLIM and Allegro Composer use CLX. Users wanting low-level access to an X server in Lisp may also want to use CLX. CLX is not supported by Franz Inc.

The sources to CLX are supplied with the regular Allegro CL distributions in the contrib/clx/ directory. Note that during installation, you are asked whether you wish to install the contrib/ directory and the default is not to install it. CLX is not supplied with the Allegro CL Trial distributions.

The sources to CLX are also available on the Franz Inc. web site (www.franz.com), at the location ftp://ftp.franz.com/pub/clx/.



Appendix A: Changes to the startup sequence for the Integrated Development Environment (IDE) on Windows

The 6.1 IDE startup procedure is documented in About IDE startup in cgide.htm. In this appendix, we describe the changes in the startup procedure between release 6.0 and release 6.1.

See About IDE startup in cgide.htm for a description of the startup procedure..



Appendix B: Common Graphics bug fixes and minor enhancements

The following are minor changes and bug fixes. See Section 7.0 Release Notes for Common Graphics (Windows only) for major changes to Common Graphics and the Integrated Development Environment.

  1. When the layout-style property of a list-view is changed at runtime, the icons are now automatically arranged so that the icons at their new size once again fit the widget's dimensions according to the current alignment property.
  2. Clicking on a returned value (rather than an evaluated expression) in the Debug Window's drop-down history list now does a Return Selected Object on the value instead of inspecting it. This is expected to be more often useful, and you can still inspect the value by doing an Inspect Returned Object just afterward.
  3. The splash screen is now removed once the main window of a standalone Common Graphics app has been returned from the project's on-initialization function (if the splash screen is still up at that time), to ensure that the app window initially has the keyboard focus, and to not leave the splash screen in the way when the app is all ready to go.
  4. If a grid-widget had a resizable main section that had no proportional sibling sections, then resizing that section smaller would leave an empty area in the grid that displayed screen garbage. Now the last section will be expanded in this case to fill the empty space, even though it is officially not proportional.
  5. The dialog displaying warnings during compilation now includes warnings about calls to undefined functions. Further, warnings from multiple project files are now combined into a single dialog, rather than showing a separate dialog for each file that had warnings.
  6. A problem where the IDE sometimes did not initially have the keyboard focus just after starting it up in win2000 has been fixed.
  7. A problem where the IDE Profile Results dialog and profile graph inappropriately abbreviated the names of certain nodes for such things as closures and flet functions has been fixed.
  8. When an IDE help command shows help in the currently running HTML browser, it now brings the browser to the front rather than merely flashing its taskbar icon as it has in earlier releases in win98 and win2k.
  9. When a custom on-initialization function of a project returns something other than an open window, the standalone application generated from the project now exits when the on-initialization function returned, as documented. A bug in earlier releases caused the program to enter an indefinite event-handling loop.
  10. The bug where calling with-events-disabled on a dialog did not disable keyboard events on a child control that had the keyboard focus at the time has been fixed.
  11. In the packages dialog, a button must now be pressed to change the current package, rather than simply selecting another item in the list of packages.
  12. When deleting selected text in a text-edit-pane where the selection begins not at the beginning of a line and ends at the end of a line (including the newline character), the final newline is no longer deleted. This matches other applications such as WordPad.
  13. A problem where the menu editor sometimes did not refresh its outline immediately to show certain edits is fixed.
  14. The value of a single-item-list or combo-box may now be set to nil to deselect any current value. Previously, an arbitrary non-nil value that isn't in the range had to be used.
  15. A problem where calling (setf exterior) on a window that had a scrolled non-parent owner window (this scenario is probably rare) placed the window incorrectly is fixed.
  16. The single method for nstream-string-corners was inadvertently left out of release 6.0 and is back in release 6.1.
  17. The :pretty-print choice of the pretty-printer configuration works once again. It was broken in 6.0.
  18. IDE listeners now handle multiple forms entered at a single prompt.
  19. A problem where calling y-or-n-p in an IDE lisp crashed if called in a thread other than an IDE listener thread, the IDE GUI thread, or a user thread that has called event-loop is fixed.
  20. A problem where box and position arguments were not being copied before being stored on the trace dialog, and so did not reflect their actual values for the call if modified afterward is fixed. This problem manifested itself by having supposed boxes or positions appear as garbage non-lisp objects or vectors if they had been stack-allocated with with-positions or with-boxes.
  21. A problem where reading and printing was sometimes done in IDE listeners with *package* not bound to the proper package is fixed.
  22. When using an IDE listener's toolbar to yank history forms to the prompt, the prompt position is no longer moved to the beginning of the yanked form. This allows appending one or more history forms to the end of a new form that has been partially typed at the current prompt. (There is no change in the typical case where there is nothing after the prompt when the yank is done.)
  23. A problem where the file selection dialog errored when canceled is fixed.
  24. Using the IDE while a busy loop is going in another thread is more feasible now that we no longer place certain hidden internal windows that are in the listener threads into the IDE window hierarchy. Also, the modal error dialog that appears when pressing the break key is no longer owned by the IDE owner window, so that you can use the IDE windows without first exiting from the break key dialog. Thus, the break key will now work in the IDE to directly interrupt an IDE Listener thread.
  25. Various problems with packages and IDE controls and windows have been fixed. Sometimes IDE windows read or printed forms in the package of the IDE GUI thread rather than the package of the thread of the currently selected IDE listener. In particular, the Find Definitions Dialog symbol widget, the class browser's class name widget, and the project manager's list of modules did this. Also, load-project broke if called with *package* bound to a package that does not use the CG package. And the Package List dialog set *package* in the IDE GUI thread rather than the thread of the currently selected IDE listener.
  26. A problem where a grid-widget was not redrawn as needed when changing cell-border properties programmatically or in the inspector is fixed.
  27. A problem where continuing from a continuable error in an IDE backtrace exited the IDE listener thread entirely is fixed.
  28. A problem where edge-position did not return its coordinate as described in the documentation when called on a grid-column or grid-row is fixed.
  29. File | Save All now asks for the pathnames in the order: project, first form, second form, and so on, rather than the reverse.
  30. A problem where Undo was not working after pasting into a text-edit-pane in win2000 is fixed.
  31. A problem where the clipboard special variables =, ==, and === were not set properly in IDE Listener threads due to being bound per-thread is fixed.
  32. The File | Save command is now implemented for the trace dialog to save all the trace info (except the stack for each call) as an indented text file.
  33. A problem where a multi-line-editable-text widget or text-edit-pane window whose available property was off when the window was first created did not have a grayed background color as it does when made unavailable later is fixed.
  34. A problem where a standalone application generated from an IDE project did not automatically load the project's shared libraries, unlike when using Run Project in the IDE is fixed.
  35. A problem where the menu editor sometimes confused the hierarchical structure of the menu-items being edited, especially if entering a three-deep hierarchy is fixed.
  36. It is now possible to define a widget subclass (or window subclass) in the .cl file of a form module that uses this class on the form. Previously the class had to be defined in an earlier file of the project, but no longer since the projects facility will now load the .cl file (its fasl actually) before the .bil file, rather than vice versa as before.
  37. A problem when copying all of the rich text from a rich-edit-pane and later using it to replace all of the rich text in a rich-edit-pane, the final paragraph did not retain its paragraph format is fixed. Related to this, problems with a final paragraph break in the rich text being added or dropped has been fixed, especially with concatenate-rich-text.
  38. A problem where changing the alignment property of a list-view at run time failed to retain the order of the items is fixed.
  39. A problem where changing the tabs property of an item-list did not automatically redisplay it is fixed.
  40. A problem where find-links did not find links that reside at the very beginning or end of a rich text paragraph is fixed.
  41. A problem where a multi-picture-button with :breadthwise fill-order sometimes did not display all of its buttons just after resizing it smaller in such as way that its orientation became reversed is fixed.
  42. A problem where resizing a scroll-bar control while it has the keyboard focus and its current value is not its minimum value left the flashing effect (which shows the focus on the slider) in the old slider position is fixed.
  43. A problem where certain printer attributes passed to open-stream (including orientation) were ignored on the first printer job of a lisp session if :no-dialog-p was passed as true and no :printer-name argument was passed and the printer setup dialog had not been invoked, is fixed.
  44. A problem where the IDE failed when there were problems compiling project files is fixed. The problem was manifested when the IDE was started with an initial project (by double-clicking a .lpr file or by passing it as the -project command line argument) and compiler warnings occurred while compiling out-of-date files while opening the project. In that case then the IDE failed to finish coming up due to attempting to print the warnings to the IDE listener which did not exist yet. Now the warnings will be shown in the modal dialog only and the IDE will come up successfully.
  45. If a message timeout error occurs when one IDE thread tries to send a message to a window in another thread that is busy for longer than *default-cg-message-timeout* (default is six seconds), you can now continue from the error when the second thread is no longer busy, rather than aborting the operation being done in the first thread.
  46. A problem where if reinitialize-instance is called on a Common Graphics window, a redundant second window on the screen was created is fixed.
  47. A problem where clicking on a lisp-widget when the keyboard focus was on an OS widget could make the on-kill-focus and on-set-focus functions of the OS widget get called an extra time is fixed.
  48. A problem where menu-item-highlighted sometimes did not get called for a pop-up-menu if no window in the calling thread was passed to pop-up-menu is fixed. A problem where menu-item-highlighted was called with an incorrect menu-bar-p argument if the menu was added to a parent menu with add-to-menu rather than with open-menu is also fixed.
  49. When moving or resizing a widget on a form, or invoking the Undo command on it, any inspectors that happen to be inspecting the widget will now automatically refresh to show the new values of any properties that changed by the move, resize, or undo.
  50. If the show-focus property of a grid-widget is turned off, then pressing the arrow keys will scroll the focused section by single cells rather than moving the focus to the next cell. (You can't actually see which section has the focus, but it is apparent when pressing the arrow keys to scroll it.) The control key may still be held down when pressing an arrow key to move the focus to the next section.
  51. When using the File | Build Project Distribution command, the user is now asked if they would like to re-use the previous distribution directory rather than creating a new one.
  52. View | New Editor will create the new editor workbook offset from existing editor workbooks, so that it's clearer that it is a different window.
  53. Maximizing windows when the parent is scrollable works much better now. Also, maximizing a window by double-clicking its titlebar (rather than by clicking the maximize button) was not calling (setf state); the OS was merely doing its default maximize.
  54. The IDE inspector can now inspect Flavor instances.
  55. Using the IDE Options Dialog to set *load-xref-info*, *record-xref-info*, *load-source-file-info*, or *record-source-file-info* did not work due to each IDE thread binding these variables separately. This binding is no longer done.
  56. A problem where doing a copy or cut in a single-line editable-text when some text was selected was returning nil is fixed.
  57. It is now possible to copy a value in another application, then start up the IDE or standalone lisp application, and then paste the value that was copied before lisp was started.
  58. scroll-bar controls now handle set-focus-event, kill-focus-event, on-set-focus, and on-kill-focus.
  59. A problem where using the inspector to modify sub-objects (such as grid-widget columns or list-view-items) of widgets that are on forms did not mark the form as modified, and so a Save All did not necessarily save the changes is fixed.
  60. A problem where right-clicking a grid-widget sorting gadget broke, and the gadget sometimes drew incorrectly or not at all when uncovered gradually is fixed.
  61. print-rich-text and rich-edit-print now handle the page range selected by the user on the print job dialog.
  62. A problem where pixmap masks read from .ico or .cur files were inverted is fixed.
  63. A problem with the add-column function used to add a list-view-column to a list-view widget is now fixed.
  64. If the user clicks on the header of a list-view while no item is selected, Common Graphics no longer arbitrarily selects the first item after doing the sort.
  65. The mci-record command worked to record a digital audio .wav file only if the null string was passed for the :file argument to mci-open. This no longer needs to be passed.
  66. Pressing the numeric keypad ENTER key to evaluate the expression following the cursor now works when inside a comment block.
  67. A problem where hiding a tab-control did not hide the widgets on its selected tab is fixed. This affected having a tab-control on a tab of another tab-control.
  68. When selecting a tab of a tab-control, the focus is returned to the widget that most recently had the focus on that tab, if any. (In earlier releases, the focus was always placed in the first widget on the tab.)
  69. A bug where changing the Tab ID (programmatic name) of a tab on a tab-control on a form when there are widgets on the tab caused the code that's generated to recreate the form to break is fixed. Also, tab ID's for tab-controls on forms may now be any symbol as documented rather than keywords only.
  70. When copying and pasting a group of widgets on a form, the relative tab order of the copied set of widgets is now retained.
  71. A problem where when opening a printer stream with :no-dialog-p true, the :copies argument was ignored due to Common Graphics looking instead for a :driver-copies argument is fixed.
  72. A problem where when changing the IDE fonts on the Workspace tab of the Options dialog, sometimes IDE windows were not updated to use the new fonts is fixed.
  73. ask-user-for-choice-from-list no longer arbitrarily initially selects the first item in the list of choices even if the :initial-value argument were passed as nil.

Copyright (c) 1998-2002, Franz Inc. Oakland, CA., USA. All rights reserved.
Documentation for Allegro CL version 6.2. This page has had minimal revisions compared to the 6.1 page.
Created 2002.2.26.

ToCDocOverviewCGDocRelNotesIndexPermutedIndex
Allegro CL version 6.2
Minimally revised from 6.1