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
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.
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.
-
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.
-
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.
-
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.
-
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.
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.
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.
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.
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 |
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).
We have added a number of new capabilities to Allegro CL. Here we give
links to the documentation of the new features.
-
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.
-
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.
-
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.
-
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.
-
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
.
-
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.
-
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.
-
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.
-
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.
-
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/"
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.)
-
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.
-
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.
-
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.
-
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.
-
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.
-
Various new pathname related functions:
-
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.
-
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.
-
New socket function set-socket-options: the new function
set-socket-options
allows modifying certain characteristics of existing sockets.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
There are notes for HP,
LINUX Redhat
SPARC,
MACOS X,
and Compaq ALPHA.
-
32-bit Allegro CL is now compatible with "q3p" programs, operation
of 3-quadrant private memory usage for close to 3 Gb memory space.
To enable this feature, type "chatr +q3p enable [lisp]" where [lisp]
is the name of the lisp executable that you are running (such as
mlisp or alisp). That
command, or "chatr [lisp]" afterwards, will verify that "third quadrant
private data space enabled" in the printout. The stack will start at
#xbxxxxxxx, and addressing will be allowed to expand if other
conditions allow. To disable this attribute, type "chatr +q3p disable
[lisp]" and the stack will start at #x7xxxxxxx again.
-
(Repeated from 6.0 Release Notes.)
Swap allocation on HP is incredibly complex. If you are having trouble
using all of the swap that you think you've allocated, contact Franz
Inc. for advice (Franz Inc. will likely refer you to HP Support after
suggesting what to ask.)
Redhat 5 no longer supported.
Allegro CL 6.1 will only work on Redhat 6 and Redhat 7
operating systems.
A 64-bit version of Allegro CL for Sparcs is now available.
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.
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.
(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.
-
In Allegro CL 6.1, CLIM does not work on MacOSX. It works
on all other Allegro CL 6.1-supported platforms.
-
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.
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.
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.
-
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.
-
font property removed from menu-item. Windows does not support
multiple fonts within or across menus. Therefore, the font property of
menu-item
s had no
effect and has been removed. There is also no font property of menu
s. A single font
is used in all menus in Windows. That font is set in the Windows
Control Panel.
-
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.
-
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.
-
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.
-
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.
-
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
.
-
*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*
.
-
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.
-
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.)
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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).
-
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.
-
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.
-
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
.
-
Creating a new project no longer asks which type of
project to make.
The only type available is "Standard EXE".
-
Symbol naming function do-default-initialization unexported.
That function was never intended for users. It is used internally.
-
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.
-
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.
-
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.
-
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)
.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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).
-
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.)
-
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.
-
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.
-
combo-box-column-mixin now accepts typable initarg. The
:typable-p initarg of
combo-box-column-mixin
(for grid-widget
s) 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
.
-
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.
-
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.
-
Symbol completion now case-insensitive.
Symbol completion in the IDE now does a case-insensitive
search for symbols to complete.
-
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.
-
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.
-
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.
-
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.
-
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).
-
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.
-
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
.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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).
-
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.
-
Mouse wheel events now handled. See mouse-wheel for details.
-
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.
-
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
.
-
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.
-
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.
-
list-view controls support foreground-color.
list-view
controls now
support the foreground-color property.
-
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.
-
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.
-
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.
-
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.
-
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
.
-
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).
-
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.
-
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.
-
New argument for push-lisp-clipboard. The function push-lisp-clipboard takes
a new empty-os-clipboard keyword argument.
-
New section-scrolled function. section-scrolled is called whenever
a grid-section is scrolled.
-
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.
-
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.
-
New function mci-set-window. The new function mci-set-window may be called to
play a .avi animation file in a particular window.
-
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.
-
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.
-
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.
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.
AllegroStore is no longer supported on Silicon Graphics machines.
These changes to AllegroStore are backward compatible.
-
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.
AllegroStore 2.1 works on Redhat Linux 7.
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.
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/.
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.
-
In 6.1, hooks into the IDE startup procedure prior to the
initialization of the "Listener 1" thread have been removed.
Specifically,
*session-startup-hook*
,
session-init-functions
, and
session-variables
have all been removed.
session-exit-functions
has also been removed.
-
*after-session-init-functions-hook* replaced with
*ide-startup-hook*. Users are advised to use
*ide-startup-hook*
in place of
*after-session-init-functions-hook*
.
See About IDE
startup in cgide.htm for
a description of the startup procedure..
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
A problem where the IDE sometimes did not initially have the keyboard
focus just after starting it up in win2000 has been fixed.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
A problem where the menu editor sometimes did not refresh its outline
immediately to show certain edits is fixed.
-
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.
-
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.
-
The single method for nstream-string-corners was
inadvertently left out of release 6.0 and is back in release 6.1.
-
The :pretty-print choice of the pretty-printer configuration
works once again. It was broken in 6.0.
-
IDE listeners now handle multiple forms entered at a single
prompt.
-
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.
-
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.
-
A problem where reading and printing was sometimes done in IDE listeners
with *package* not bound to the proper package is fixed.
-
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.)
-
A problem where the file selection dialog errored when canceled
is fixed.
-
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.
-
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.
-
A problem where a grid-widget was not redrawn as needed when changing
cell-border properties programmatically or in the inspector is fixed.
-
A problem where continuing from a continuable error in an IDE backtrace
exited the IDE listener thread entirely is fixed.
-
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.
-
File | Save All now asks for the pathnames in the order:
project, first form, second form, and so on, rather than the reverse.
-
A problem where Undo was not working after pasting into a
text-edit-pane in win2000 is fixed.
-
A problem where the clipboard special variables
=
,
==
, and
===
were
not set properly in IDE Listener threads due to being bound
per-thread is fixed.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
A problem where changing the alignment property of a
list-view
at run time
failed to retain the order of the items is fixed.
-
A problem where changing the tabs property of an item-list did not
automatically redisplay it
is fixed.
-
A problem where find-links did not find links
that reside at the very beginning or end of a rich text paragraph is
fixed.
-
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.
-
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.
-
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.
-
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.
-
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.
-
A problem where if reinitialize-instance is called on a Common
Graphics window, a redundant second window on the screen was created
is fixed.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
The IDE inspector can now inspect Flavor instances.
-
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.
-
A problem where doing a copy or cut in a single-line editable-text when
some text was selected was returning nil is fixed.
-
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.
-
scroll-bar controls now handle set-focus-event, kill-focus-event, on-set-focus, and on-kill-focus.
-
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.
-
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.
-
print-rich-text
and rich-edit-print now handle the page
range selected by the user on the print job dialog.
-
A problem where pixmap masks read from .ico or .cur files were
inverted is fixed.
-
A problem with the add-column function used to add a
list-view-column
to a list-view
widget is
now fixed.
-
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.
-
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.
-
Pressing the numeric keypad ENTER key to evaluate the
expression following the cursor now works when inside a comment block.
-
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.
-
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.)
-
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.
-
When copying and pasting a group of widgets on a form, the
relative tab order of the copied set of widgets is now retained.
-
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.
-
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.
-
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.