|
Allegro CL version 6.2 Significantly revised from 6.1. |
This document contains the following sections:
1.0 Introduction
This document provides the release Notes for release 6.2 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.2 compared to release 6.1) 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.1 Release Notes, included in this distribution as the file version-61-release-notes.htm
This document describes the changes, major and minor, from 6.1 to 6.2. 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.
The shell module is intended to provide UNIX shell-like commands, such as you find on a modern UNIX system, and in addition short cuts for some common Perl idioms. This module does not provide functionality to spawn a shell (as older functions like run-shell-command and shell and newer ones like command-output do). Instead, many commands that are available in a shell are available in this module. These commands are available on UNIX and Windows and work in a uniform fashion whatever the actual operating system. No external programs are used to implement the functions in this module, and as a result security issues associated with executing external programs by spawning shells are finessed.
The module is available as a patch released around March 14, 2002. The necessary files can be downloaded with update-allegro. See shell-module.htm for details.
Associated with the shell module is a new implementation of system:with-command-line-arguments. The new implementation is backward compatible, so current calls to the macro will work as before. The new implementation provides more options and the ability ro use long form options. A further update about June 14 clarified specification of options that can appear multiple times in a command line.
See also Pathname wildcard syntax in pathnames.htm. This newly added section provides information on how wildcard characters (like * and ?) in pathnames are handled.
The Allegro FTP Client module has been improved, documented, and made available as a patch. Various versions of this software have been previously available (as described in the documentation, ftp.htm). The module can be used to communicate with an FTP server. See ftp.htm for more information.
MySQL is a powerful, efficient, production ready open-source database that runs on all popular platforms. There are language bindings for most popular languages. A new module, described in mysql.htm provides an interface from Allegro CL to MySQL (this module was updated in December, 2002, with additional functionality). Allegro MySQL is now available to Allegro Enterprise customers. Use update-allegro to download the files necessary to use Allegro MySQL.
A new module, :osi, has been released for Allegro CL 6.2. The
necessary files can be downloaded with update-allegro.
The new module is described in The Operating
System Interface (OSI) module in os-interface.htm. The
goal of the OSI module is to provide a Lisp layer for operating system services available
on the platforms on which ACL runs. The operators, constants, and classes of the new
module are not described (in this documentation release) on individual documentation
pages. Instead, the descriptions are in Operating
System Interface Functionality in os-interface.htm. The
OSI module is available to all supported customers. Certain updates which supply some of
the functionality are available to all customers.
An update on approximately February 10, 2003, added the function pipe and the constants *o-text* and *o-binary*. A further
update on approximately February 24, 2003, added the macro with-pipe and added new
keyword arguments uid, gid, effective, and initgroups-user to run-shell-command, with-command-output,
with-command-io,
and command-output.
An update on approximately April 4, 2003, added the macro with-os-open-file, an analog of cl:with-open-file which uses os-open instead of cl:open to open the file.
As part of the changes introduced by the new OSI module, the following functions have been changed (by adding new keyword arguments, so current calls are unaffected):
:always-append
as the value of the if-exists and if-does-not-exist. This value means that
concurrent writes by any number of programs will always write to the end of the file. This
is useful for writting to log files. Be warned, however, that changing the file position
of a stream opened with :if-exists :always-append or :if-does-not-exist
:always-append will have no effect. See the description of the implementation of cl:open in Extensions to cl:make-package,
cl:disassemble, cl:open, cl:apropos in implementation.htm.
See Overview of additional changes in the OSI module patch in os-interface.htm.
The jLinker facility was updated to jlinker version 3.2.4 by the patch
jlinker.001 around Dec. 6, 2002. The currently running version is returned by the function
jlinker-version,
with a call like (javatools.jlinker:jlinker-version). See jlinker.htm for details on the update.
There have been several documentation updates.
This page on the Franz Inc. website (http://www.franz.com/) has links to the latest version of the Allegro CL 6.2 documentation. Links on that page direct you to instructions for downloading the revised documentation.
A full-fasl patch of the Allegro CL RPC facility enhances some functionality and adds some new functionality. See rpc.htm for information on the new and modified RPC functionality.
acl-socket:dns-query
was modified by a patch release approximately April 4, 2003. There are two mdofications:
one causes a fourth value to be returned. That value is a list of the flags returned by
the dns server that replied to the query. The second modificaation allows the value :any
as a value for the type keyword argument (see the description of acl-socket:dns-query for further
information). The change is essentially backward compatible (unless your code depends for
some reason on exactly three values being returned by acl-socket:dns-query).
A patch made available in August, 2003, provided a significant upgrade to the Emacs-Lisp interface. Among others things, the patch improves menus for Emacs 21 and later, and offers the option of complying with the major mode conventions outlined in the GNU Emacs Lisp Reference Manual, edition 2.5. See the new section Details of the August, 2003, patch in eli.htm for more information.
A patch made available to all supported customers (but not Trial users) on approximately May 10, 2004, provides a pre-release version of an Allegro CL/SOAP API. This is the fourth release. It includes WSDL support and WSDL generation support (new in this release) as well as server and client support. Please see soap.htm for more information on Allegro CL and SOAP. (The earlier release was described in the document soap-client.htm. That document no longer exists.)
A patch made available to all supported customers on approximately June 7, 2004, provides a second pre-release version of an Allegro CL Sax Parser. This software can be used to check or validate XML code. See the updated sax.htm for details.
A new Regular Expression module has been added and made available by a patch release around July 15, 2004, and updated around July 30, 2004. The older regexp module remains available. You may use both at the same time in the same running Lisp. Both modules are described in regexp.htm. The section The new regexp2 module describes the new API. The section The older regexp API describes the older module which has been available since before release 6.2.
A new interface to Oracle databases was made available by a patch aroung July 25, 2004. The interface is described in oracle-interface.htm. Allegro CL 6.2 users need an additional license to use it. Please contact your sales manager for information on obtaining an evaluation license for this product.
Support for the Documnet Object Model in Allegro CL is now available by a patch release around July 30, 2004. See dom.htm for details.
fasl files (compiled Lisp files) created by releases of Allegro CL prior to 6.2 will not load into Allegro CL 6.2. (Allegro CL 6.2.beta files will load.) 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.
Allegro CL 6.2 is known to work with the following operating system versions.
Allegro CL 6.2 will typically work with OS releases that come out after Allegro CL 6.2 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.
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 for Allegro CL processes that are started from within that shell. 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.
Allegro CL 6.2 is not supported on Mac OS X version 10.0. You must use version 10.1.
There are two other issues:
The default stack size limit on a Mac OS X machine (apparently 512 Kbytes) 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 for Allegro CL processes that are started from within that shell. 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 Mac OS X system documentation or contact your Apple service representative for the precise instructions.)
The procedure described here is best performed by a system administrator or similarly trained person. The /etc/rc file edited during the procedure is key to correct operation of the Operating System. 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. Get access to the command line shell on the computer. This can be accomplished by launching the Terminal application.
3. Open up the file /etc/rc with a text editor.
4. Add the following lines near the top of the file (the values shown, 8m and 10m, should be suitable for Allegro CL applications):
limit stacksize 8m limit datasize 10m
The actual contents of the file differ on different machines and setups. Here is an example of a suitable location: just before the following lines:
##
# Handle arguments passed from init.
##
BootType=$1; shift;
if [ -z "${BootType}" ]; then BootType="multiuser"; fi
5. Save the file /etc/rc.
6. Reboot the machine.
Building shared libraries on
Mac OS X in foreign-functions.htm describes how to
create a shared library suitable for loading into Allegro CL. We have determined that the -flat_namespace
to the ld used to create the shared library is necessary, as shown in the linked
section.
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.2 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 |
| Mac OS X | 0x30000000 | 0x64000000 |
| Windows | 0x20000000 | 0x54000000 |
| AIX 32-bit | 0x30000000 | 0x64000000 |
| AIX 64-bit | 0x700001000000000 | 0x700002000000000 |
| IRIX | 0x30000000 | 0x64000000 |
| Solaris 32-bit | 0x4000000 | 0x54000000 |
| Solaris 64-bit | 0x1000000000 | 0x10000000000 |
This main section contains three subsections: one on new features (Section 6.1 New features in the base Lisp), one on changes which are not backwards compatible and so may require code changes, (Section 6.2 Non-backward-compatible changes in the base Lisp), and one on miscellaneous changes Section 6.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.
This implementation of XML-RPC is separate and independent from the Lisp RPC implementation in the aclrpc module. The Lisp RPC module is more appropriate for closely coupled applications on one processor or on a local area network. XML-RPC is more appropriate for occasional contact between applications separated by large distances and by firewalls.
The module is described in two text files in the xmlrpc/ subdirectory of the Allegro CL distribution: xml-rpc.txt and readme.txt.
*print-circle-gravity*
acts with respect to *print-circle*
as *pprint-gravity*
does with *print-pretty*: no
Allegro CL code sets the value of *print-circle*.
Instead, Allegro CL code binds it where necessary to the value of *print-circle-gravity*,
and *print-circle-gravity*
is only set in two places: initially to nil and in the :pprint
module to t. :nodelay nil to make-socket or to set-socket-options. (The
default value for that argument has been changed from nil to true. The delay
(which allows bundling of messages) is rarely necessary with modern machines. You may
notice a significant increase in network throughput in your application if your
application sends small packets of data. Setting the value to nil should only
be necessary when the network is very slow. t (meaning provide
extra debug information, but not interactively), :interactive (meaning allow
interactive debugging of the build), and nil (meaning do not provide extra
debug information -- this option is intended for batch builds). The default is t.
See Debugging an image build problem or
failure in building-images.htm for more information.
The argument :dribble-file has been renamed :build-output.
The argument :internal-debug has been renamed :build-input. The
old names are accepted for backwards compatibility, but it is an error to specify a value
for both the old and the new name.
In general, this change should be transparent to Allegro CL users and requires only minor changes to application patches provided for users of applications written in Allegro CL. Patches for applications are described in Patching your application after delivery in delivery.htm. Patches for Allegro CL products are described in Patches in introduction.htm. See also defpatch and load-patches.
rpc-port or of rpc-port-server. The
generic function can now specialize on the type of the first argument. This allows keeping
information in tables associated with each connection, rather than in a single table as
was done in release 6.1. *default-pathname-defaults*.
For typical values of that variable, when the arguments are relative pathnames, rename-file did not place the result
file in the correct (ANS-specified) directory. Further, it did not return a logical
pathname when the second argument was a logical pathname. In release 6.2, rename-file works as specified by the
ANS. This is put in the non-backward compatible section because the previous, incorrect behavior was reasonable and many users might have erroneously thought it correct. A new function, rename-file-raw, preserves the previous (incorrect but reasonable) behavior of rename-file. Appendix A cl:rename-file and excl:rename-file-raw provides a complete explanation, with examples, of the previous and current behaviors of rename-file and the behavior of rename-file-raw.
Another fix to rename-file (also noted in Section 6.3 Other changes in the base Lisp): in releases prior to 6.2, rename-file could not be used to rename a directory on Windows. It now does correctly rename directories.
:minimized,
which provides the same behavior as in earlier releases. All values valid for the show-window
keyword argument of run-shell-command
are valid for that argument shell. A second change to copy-file is backward-compatible:
the new overwrite keyword argument, when specified non-nil, allows
overwriting existing files with the file being copied.
:showna is specified, but
on Windows 95/98, it is displayed but not selected (as intended). It is not clear whether
the Windows inconsistency is a feature, or whether the behavior will change when service
packs are applied. See run-shell-command.
(expt
2 24) on 32-bit Lisps. See Array sizes
in implementation.htm. nil value for this keyword argument. If you are licensed, there is a
maximum number of days that a demo will work specified in your license. You can then
create deliverable applications with a license that expires in the specified number of
days. See delivery.htm for more information. (make-random-state t), uses get-universal-time for its starting
value. In earlier releases, we warned programmers not to use a tight loop to generate many
different "random" random states, as they might use the same time value and thus
not all be different. In release 6.2, the algorithm for using get-universal-time has been modified to
ensure that repeats do not occur, so (make-random-state t) can safely be in
any loop. :errno or :os-specific (the two
possible non-nil values), the foreign call will return a second value which
is the error value associated with the call. Note that call-direct is ineffective
when error-value is non-nil. file and no host. nil, it must be a Windows icon file
containing either a single 32 by 32 icon or two icons, one 32 by 32 and the other 16 by 16
(in either order). The icon(s) must have a depth of 4 bits (16 colors). The icon(s) will
be stored in the resources of the application executable and will be used on the Windows
desktop. (In previous releases, you had to set the icon by hand after building the
application.) icon-file only has meaning on Windows. It is ignored on UNIX. nil, which means they are not sent.
The argument did not exist in earlier releases, but the functions acted as if it was
specified non-nil. #+:os-threads/+-:os-threads conditionalizations. One change is that there used to be a macro/function pairing (the macro jstatic, the function jdo-static for example). The macro has been changed to be the function and use of the old function is deprecated. A compiler macro is also named by the symbol naming the function and performs the compile-time work of the old macro.
javatools.jlinker package. The method named by the symbol javatools.jlinker:destroy
is now named javatools.jlinker:destroy-servlet. The (unexported) symbol javatools.jlinker::destroy
is preserved to obtain the old behavior. See the description of the method in The jLinker Servlet API for details of how to export that
symbol if desired. *jlinker-debug*
determines the jLinker behavior when Java throws java.lang.IllegalAccessException
during a method call. If the value is non-nil (the default), then jLinker
calls m.setAccessible(True) where m is the method in the failed
call, and then attempts the failed call one more time. If the value is nil,
then jLinker signals an error. The only platform-specific information pertinent for the 6.2 release relates to the AIX 5.1 64-bit version. This version was released after the general Allegro CL 6.2 release. This section was modified at that time.
Allegro CL 6.2 on AIX 5.1 64-bit was released after the general Allegro CL 6.2 release. The software is provided on a custom CD, separate from the standard two CD's in the Allegro CL 6.2 release. The heap sizes have been added to the table in Section 5.3 Heap start locations above. Other information follows:
The document foreign-functions.htm has
appendices describing how to make shared libraries on the various platform which run
Allegro CL. The instructions for AIX are given in Building shared libraries on AIX 4.2 or later.
As described in the updated (after 6.2) version of that document, the additional argument -q64
should be added to the cc or xlf commands when producing shared libraries
for the 64-bit version (the make_shared calls are unchanged):
% cc -q64 -c -D_BSD -D_NO_PROTO -D_NONSTD_TYPES -D_MBI=void foo.c % bin/make_shared -o foo.so foo.o and for Fortran: % xlf -q64 -c bar.f % bin/make_shared -o bar.so bar.o -lm
lisp.h is an include file that describes the format of Allegro CL Lisp
objects. Because there are two AIX ports, 32-bit and 64-bit, one of the flags -DAcl32Bit
or -DAcl64Bit should be passed into the C compiler if lisp.h is used.
Use -DAcl64Bit for the 64-bit Lisp. The flag is required for the 64-bit Lisp.
It is not required for the 32-bit Lisp, but its use is strongly recommended because if
lisp.h is updated for any reason in a patch set, the new version will fail if -DAcl32Bit
is not specified.
The version of memory_status_dump on AIX 5.1 64-bit lisp does not give the same error message as on the 32-bit version, which shows no information at all, but this version currently shows only partial information, and does not list any memory areas that are actually mmap'ped. Thus, the output is incomplete, and will remain so unless and until IBM provides an AIX patch to give /proc/<pid>/map more complete information. (See Table note 1: Finding available memory addresses in building-images.htm.)
(Repeated from 6.1 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.
On Linux and FreeBSD, Allegro CLIM works with Open Motif 2.1 and 2.2 (2.2 was released in early 2002). Open Motif 2.2 is available at no charge from www.openmotif.org. Allegro CL 6.2/Allegro CLIM will work with either version. (Allegro CLIM released with Allegro CL 6.1 will also work with either version.) Redhat Linux 7.2 is supplied with Lesstif, a version of Motif that does not work with CLIM. See this faq item for information on how to install Redhat Linux 7.2 without lesstif and how to uninstall lesstif if already present.
On Mac OS X 10.1, OpenMotif Motif is also required. However, CLIM will not work with version 2.2.0 but 2.2.2 is now available. See item 2.8-2 in faq/faq2-8.htm for information on getting OpenMotif 2.2.2 and also getting a patch (from franz Inc.) necessary for it to work with CLIM on MacOS X 10.2 machines.
Certain CLIM demos on Solaris 64 bit give segv unless CDE language environment is set to C. This is a problem when running the CDE environment on the Solaris64 machine. When bringing up the CDE environment, set the language/locale to "C". (On the login screen, there's an "Options" button, which displays a menu that has a "Languages" submenu. Choose "C". Note: the default value is typically "en_US".) The "C" setting can process all of the 64-bit font sets.
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.2.
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.
(Repeated from 6.1 release notes.) 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 in protecting against deadlocks.
vk-hash has been
removed. The symbol naming it no longer exists. vk-hash was redundant
with vk-quote
(indicating the single-quote key), and its name was obscure. Any usage of vk-hash in Common
Graphics applications should be changed to use vk-quote. t if the part argument was either nil or 0
(though this was not documented). If you notice an undesired new border on a
common-status-bar, then pass the no-border-p argument to status-bar-message as
true. multi-item-list
and list-view
widgets) equal. widget-value-equal
compares strings with string= and compares all other types of objects with eql. This means
that strings with identical characters will be considered the same (eql considers them to be different if they
are not also eq) but without inefficiently
recursing into deep trees or other complex widget values needlessly, as equal (which does consider strings with
identical characters the same) might do. This change may be backwardly incompatible in
certain cases, but this is expected to be rare, such as a multi-item-list
whose on-change-test
had defaulted to equal, and which
counted on equal to match two values
that were each lists of lists, and some of the sublists were equal but not eq. dde-info
class contain information on the process running the DDE server or client and details on
the DDE connection. In 6.1 and earlier, only Common Graphics processes (which bound Common
Graphics variables) could run a DDE server or client. Now any Lisp process can. Further,
because needed information is stored in a dde-info instance and
not in a global variable, it is easier to manage separate processes using DDE. The changes include:
dde-info.
The various generic functions listed below take instances of this class as arguments. *service-name*
now just provides the default value) *service-topics*
now just provides the default value) *sysitems*
now just provides the default value) *case-sensitive-dde*
now just provides the default value) *server-active-p* no longer exists) *active-server-ports* no longer exists) *active-client-ports* no longer exists) grid-widget
design, and the new arguments are needed for consistency and in particular to make it
feasible to use the built-in column widgets with replicating rows and columns. Any
user-defined methods for these functions must add the two new parameters; the new arglists
are (row column row-number column-number) for read-cell-value
and (row column row-number column-number value) for write-cell-value.
And any calls to these functions must pass the new arguments; passing zero for each of
them will duplicate the earlier behavior. Previously, using replicating rows and columns [see section-count] required writing draw-cell, cell-click, and/or cell-key-down methods that did not make the typical calls to read-cell-value and write-cell-value due to this limitation; and this technique was not possible with columns that use built-in widgets, because they use built-in draw-cell, cell-click, and cell-key-down methods that always do call read-cell-value and write-cell-value. With this fix, replicating rows and columns can be used with built-in column widgets by writing custom read-cell-value and write-cell-value methods, which now receive all the information needed. See the new example on the Examples tab of the Navigator dialog called Grid-widget: a basic replicated editable-text column to see how to use this new capability to implement replicated built-in grid column widgets.
window or dialog-item (and button-infos and outline-items) can
be an RGB color. The actual RGB instance which is the value of background-color
or foreground-color
is saved and returned by those functions. Therefore, that RGB instance should not be
modified. (A single one can be used many times, however.) Further the optional result-rgb
argument to that function is ignored. In earlier releases it could be passed and the color
value would be copied to it (thus avoiding consing a new RGB object.) Because the RGB
value is now saved and returned, the optional argument is not needed and will not be
set to the value of interest. basic-pane
and dialog-item
(and thus for all windows and controls) called pop-up-shortcut-menu
only in the IDE and not in general (that is, not in standalone applications). Now pop-up-shortcut-menu
is called in all cases. pop-up-shortcut-menu
only does something if shortcut-commands
returns a list of menu items. This change may affect programmers who have modified shortcut-commands
but did not expect a shortcut menu to be displayed. *print-escape* to nil
has the desired effect, although for all objects, not just Common Graphics objects. *default-texture-info*
and *default-inverted-texture-info*
hold standard texture-info objects that may be used by multiple pixmaps for efficiency, if
the properties of those pixmaps all happen to match those specified by these
texture-infos. Use of the functions default-texture-info
and default-inverted-texture-info
is deprecated. Those functions may be removed in a later release. editable-text-column-mixin
grid cell, the background color will now be the cell's usual background color rather than
always white. dialog-mixin.
form
window has a new item for editing the associated source code file. outline-item whose
title begins with the typed character, if any, rather than doing nothing. Also, pressing
the left arrow key in an outline-item that has no open children will now move to the
parent item rather than doing nothing. And when using the control-up-arrow and
control-down-arrow gestures to move among sibling items in an outline control, the
movement will now stop when there is not another sibling to jump to, rather than moving to
the next (non-sibling) item; this makes it easier to remain in the context of the siblings
that are being browsed. grid-row or grid-column (or to
resize a grid-section).
grid-widget. You can
now specify that specific vertical or horizontal borders be different from the general
border colors. grid-widget. By
default (continuing the behavior of earlier releases), system-highlight-background-color
and system-highlight-foreground-color
are used. multi-picture-button
or picture-button
when they are pressed. The value can now be t, which means
"reverse" all of the colors of the pixmap when the button is pressed.
"Reverse" means go to the opposite side of the color wheel when the color is a
true color, or reverse the order of colors in the palette vector when the pixel value is
an index into a vectors of colors. nil
(which causes the second click to be ignored), and the keyword :push-again
(which is new in release 6.2 and causes the second click to be treated the same as the
first, triggering a call to the on-change
function, if any). The new :push-again allows multiple clicks to trigger
multiple calls to on-change
rather than suppressing the additional clicks. Suppressing is useful when the second click
is probably unintended. For example, when the on-change function
toggles between two possible values, it is reasonable to assume that the first click is
intended and an immediate second click is unintended. But if on-change cycles through
a longer list of options, rapid multiple clicks are likely intentional and the :push-again
would be appropriate. This affects button,
default-button, cancel-button, radio-button, check-box, picture-button,
and static-picture
controls. pull-down-menu
will be presented as a tooltip just below the menu if the user holds the mouse cursor over
the menu-item for menu-tooltip-delay
milliseconds. You may set this property on the menu editor dialog. context-sensitive-help is called when F1 is pressed or the question mark icon is clicked and a dialog item or child window is then clicked (see help-button).
help-button-pressed is called when a Question Mark help button is clicked.
menu-item-help is called when F1 is pressed while a menu is displayed and an item is highlighted.
check-boxes now allow
three states, when the new three-state
property is true. The three states are blank (value nil), checked (value t),
and gray (value :gray). The value can also be :except-interactively,
which allows :gray to be specified programmatically but not by clicking it or
by pressing the spacebar when it has the keyboard focus. button,
default-button,
cancel-button, radio-button, and check-box classes, as
well as static-text
and up-down-control.
(In 6.1, it only applied to the last two.) If true, the title of the various button
classes will wrap. (As in 6.1, if true, the value of a static-text will
wrap and value of an up-down-control
will wrap when an extreme of the range
is reached.) outline-item
that is not showing any child items (either because its state is :closed or because it has
no child items), pressing the left arrow key will now close the parent item rather than
doing nothing. This makes it more convenient to close subtrees when using the keyboard. If an outline control item is being opened recursively (with the control-left-click or control-right-arrow gesture) and is taking a long time, the escape key may be pressed to halt the recursive opening at the next step.
:default as an alternative to a vector of RGB color values. This
special value means to use the colors currently returned by default-palette-vector.
If the colors used in the pixmap are equivalent to those returned by initial-palette-vector
(and in the same order), then it may be desirable to specify :default. The
reason is that Common Graphics replaces three of the colors in the default-palette-vector
with colors that match the end user's color scheme (as specified in the Windows Control
Panel). Specifying :default will ensure that the pixmap uses those three
special colors in the end user's scheme. Specifically, the color at index 7 will be the
value returned by system-dialog-background-color,
position 8 will hold the system-edge-shadow-color,
and position 15 (the last position) will hold the system-background-color.
multi-line-editable-text,
then the usual dialog behavior of pressing the default-button (if there is one) is now
done rather than doing nothing as before. When non-read-only, ENTER will still add a
newline to the control's text. See also Appendix B Common Graphics bug fixes and minor enhancements, which is a list of minor bug fixes in Common Graphics and the IDE.
The AllegroStore manual is available online in PDF format, allegrostore.pdf. A printed copy is available.
AllegroStore 2.1.8 requires a new version of ObjectStore (as described in Installation instructions and information for AllegroStore users in installation.htm).
The version of AllegroStore shipped with Allegro CL 6.2 is 2.1.8.
At this writing there is an unresolved failure of SIGPIPE handling under Allegrostore on Linux. Calls from the database client to the database server perform socket communication, and that communication resets the SIGPIPE handler to SIGDFL, thereby removing Lisp's handler. This causes no problem with Allegrostore itself, but can be fatal for other modules that may do socket communications and which may experience a SIGPIPE, immediately killing Lisp. This has been encountered with Allegroserve.
There is no robust workaround. The problem is in the underlying object database and the vendor is investigating.
Programmers planning to use Allegroserve (or any similar network server) on Linux backed by Allegrostore should see the Read This First document for an update. and subsequently should contact Franz Technical Support (bugs@franz.com) about the status of this bug.
Orblink in Allegro CL 6.2 now supports the Portable Object Adaptor (POA). The next section contains a description of the POA implementation.
We make no attempt to explain POA here. We only mention aspects of our implementation that affect an application's use of ORBLink with POA.
poa:poa-exception -- superclass of all the poa exceptions poa:forwardrequest poa:current/nocontext poa:poamanager/adapterinactive poa:adapteralreadyexists poa:adapternonexistent poa:invalidpolicy poa:noservant poa:objectalreadyactive poa:objectnotactive poa:servantalreadyactive poa:servantnotactive poa:wrongadapter poa:wrongpolicy Policy classes:
poa:threadpolicy poa:lifespanpolicy poa:iduniquenesspolicy poa:idassignmentpolicy poa:implicitactivationpolicy poa:servantretentionpolicy poa:requestprocessingpolicy Other classes
poa:poa poa:userid -- a mixin class. A method for poa:default-poa is
specialized on this class returns a particular (predefined) poa that supports
user-specified object id's. See the discussion of the default-poa function. poa:poamanager poa:adapteractivater -- to be sublassed to provide for method
specialization poa:servantmanager -- superclass of poa:servantactivator and
poa:servantlocator poa:servantactivator -- to be sublassed to provide for method
specialization poa:servantlocator -- to be sublassed to provide for method
specialization poa:current poa:threadpolicyvalue-type = (member :orb_ctrl_model
:single_thread_model) poa:lifespanpolicyvalue-type = (member :transient
:persistent) poa:iduniquenesspolicyvalue-type = (member :unique_id
:multiple_id) poa:idassignmentpolicyvalue-type = (member :user_id
:system_id) poa:implicitactivationpolicyvalue-type = (member
:implicit_activation :no_implicit_activation) poa:servantretentionpolicyvalue-type = (member :retain
:non_retain) poa:requestprocessingpolicyvalue-type = (member
:use_active_object_map_only :use_default_servant :use_servant_manager) A generic function. A method specialized on corba:servant returns a particular :retain :system_id :transient :implicit_activation :use_active_object_map_only POA that approximates the semantics of pre-POA ORBLink.
A second POA, with :no_implicit_activation and :user_id policies, is returned by a method specialized on poa:user-id. This allows an application to mix the poa:user-id class in to an implementation to get a default user_id POA for instances of that class.
Applications can provide methods specialized on any implementation classes to use specific POAs.
(typep x
'poa:threadpolicyvalue-type) (typep x
'poa:lifespanpolicyvalue-type) (typep x
'poa:iduniquenesspolicyvalue-type) (typep x
'poa:idassignmentpolicyvalue-type) (typep x
'poa:implicitactivationpolicyvalue-type) (typep x
'poa:servantretentionpolicyvalue-type) (typep x
'poa:requestprocessingpolicyvalue-type) This section lists documentation updates or corrections (where revisions are significant or moderate). Changes documented elsewhere in this document generally have associated documentation changes, but those are not listed here. In some cases, we note the change in the document itself and not here.
row-header-column,
column-header-row,
row-sizing-column-mixin,
column-sizing-row-mixin,
row-selecting-column-mixin,
column-selecting-row-mixin,
and the operators selectable,
movable, selected have been
significantly rewritten. grid-widgets
of rows, columns, or sections of grid-widget)
have been significantly rewritten. The new descriptions of default-cell-3d-border
and cell-3d-border
describe the :sunken-edge value which makes the border appear sunken (other
non-nil values make it appear raised). grid-columns)
have been significantly rewritten. fontmetrics
has been significantly rewritten. jlinkent module,
which is part of the jLinker facility, were previously documented in the The jLinker Servlet API section of jlinker.htm.
Now they have their own manual pages, which are linked to from that section. Note that you
must have a Allegro CL Enterprise (or higher) license to load the jlinkent
module. shortcut-menus. shortcut-menu:
the documentation now makes clear that a menu of this type is displayed by pop-up-shortcut-menu
when shortcut-commands
returns a list of menu-items to show in the menu. 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 implementation of rename-file
in release 6.1 (and in some releases previous to 6.1) was incorrect (that is, did not
implement the ANSI specification). Further, its behavior inappropriately depended on the
value of *default-pathname-defaults*.
Indeed, for some values of *default-pathname-defaults*,
rename-file worked as specified and
for other (more typical) values, it did not.
Because fixing rename-file
to always work as specified by the ANS would cause significant changes to its behavior
(when *default-pathname-defaults*
has a typical value), Allegro CL 6.2 has provided two new functions: rename-file-raw whose behavior
mimics the UNIX mv/Windows MOVE method of resolving relative pathnames when
renaming files and resembles the behavior of Allegro CL 6.1 rename-file when the *default-pathname-defaults* is an
absolute pathname; and rename-file-acl6.1,
whose behavior is identical to the behavior of Allegro CL 6.1 rename-file.
rename-file takes two
arguments: the file to be renamed and the new name. The issue was how to resolve a
relative pathname passed as the second (new name) argument: should it be resolved with
respect to *default-pathname-defaults*
or should it be resolved with respect to the first argument (the file to be renamed)? The
ANS says it should be resolved with respect to the first argument, which has the following
results (we show the first returned argument only):
(rename-file "bar-dir/foo.cl" "baz.cl") -$gt; #p"bar-dir/baz.cl" (rename-file "bar-dir/foo.cl" "bar-dir/baz.cl") -$gt; #p"bar-dir/bar-dir/baz.cl"
It is the second result (with the extra "bar-dir/" directory) that typically surprises users.
In Allegro CL 6.1, when *default-pathname-defaults*
was an absolute pathname (which it typically is), rename-file would do the following:
*default-pathname-defaults* -> #p"/usr/foo/" (rename-file "bar-dir/foo.cl" "baz.cl") -$gt; #p"/usr/foo/baz.cl" ;; non-conformant Allegro CL 6.1 result (rename-file "bar-dir/foo.cl" "bar-dir/baz.cl") -$gt; #p"/usr/foo/bar-dir/baz.cl" ;; non-conformant Allegro CL 6.1 result
These results, though incorrect according to the ANS, are reasonable and mimic
the behavior of the UNIX mv and the Windows MOVE commands. It is likely that
programs depend on this behavior and will fail (absent recoding) when the newly conformant
rename-file is used. The new function
rename-file-acl6.1 is
provided to preserve the 6.1 behavior. Users who wish to can change calls to rename-file to calls to rename-file-acl6.1 to
preserve 6.1 behavior. Users can also choose to use the new rename-file-raw, which
preserves 6.1 behavior when *default-pathname-defaults*
is an absolute pathname and follows the typical operating system paradigm for renaming
files.
(Note that the 6.1 behavior was a bug, just one that was unnoticed because it
seemed reasonable. When *default-pathname-defaults*
was a blank pathname (#p""), rename-file
in Allegro CL 6.1 would produce the ANS-conformant results. In 6.2, the behavior of both rename-file and rename-file-raw do not depend
in the same way on the value of *default-pathname-defaults*.)
Here are the sources to the recoded rename-file and the new rename-file-raw, provided for information only. They call excl::filesys-rename-file, which is an internal function (that sends the actual command to the operating system) not intended for users.
(defun rename-file-raw (filespec new-name)
(let ((new-name (pathname new-name))
(old-truename (truename filespec)))
(excl::filesys-rename-file (namestring old-truename)
(namestring
(merge-pathnames
(translate-logical-pathname new-name))))
(values new-name old-truename (truename new-name))))
(defun rename-file (filespec new-name)
(let ((defaulted-new-name (merge-pathnames new-name filespec))
(old-truename (truename filespec)))
(excl::filesys-rename-file (namestring old-truename)
(namestring (translate-logical-pathname
(pathname defaulted-new-name))))
(values defaulted-new-name old-truename
(truename defaulted-new-name))))
The following are minor changes and bug fixes. See Section 8.0 Release Notes for Common Graphics (Windows only) for major changes to Common Graphics and the Integrated Development Environment. Many of the bugs listed here were fixed with patches in release 6.1.
default-button
upon moving the keyboard focus from a set of buttons. Now it does. default-button's on-change function even
when the default-button
was unavailable at the time. Now nothing will be done when the default-button is
unavailable. editable-text
widget, if a menu command was selected (either with the mouse or a keyboard shortcut), or
if a global keyboard accelerator was invoked, the value of the widget was not updated to
match the current text before the menu command or global command was run. This can be a
problem if the command accesses the value of the text widget. The widget's value will now first be
updated in these cases (and its on-change
function run), as has been true previously when pressing ENTER to run the default-button's on-change function. This
should now cover all of the cases where an action is invoked interactively before the text
widget loses the keyboard focus, which is the normal time when a delayed text widget
updates its value and runs its on-change
function. rich-edit-dialog
could result in a double set of the standard rich-edit widgets. Now fixed. multi-item-list
a new set of values did not scroll the control as intended to reveal one of the new values
when none of the new values is showing already. Now it does. tab-control that has
widgets on it could disconnect the widgets from the tabs. This is fixed in 6.2. outline
controls and in grid-cells in a grid-widget
should no longer shift the text a bit when going between edit-in-place mode
and regular mode. nil instead of the dead window. :default as the value of
the :colors initarg when making a pixmap (in order to share the special default-palette-vector
that adopts a few of the user's Control Panel colors), it did not work to pass :default
to (setf colors). Now it
does. outline-item
of an outline on a form could get switched from nil to true when modifying
other properties of controls on that form. Now fixed. Copyright (c) 1998-2003, Franz Inc. Oakland, CA., USA. All rights
reserved.
Documentation for Allegro CL version 6.2. This page has had significant revisions
compared to the 6.2 page.
Created 2003.8.8.
|
Allegro CL version 6.2 Significantly revised from 6.1. |