$Revision: 5.0.2.4 $
The document introduction.htm provides an overview of the Allegro CL documentation with links to all major documents. The document index.htm is an index with pointers to every documented object (operators, variables, etc.) The revision number of this document is below the title. These documents may be revised from time to time between releases.
This document deals with compatibility of the implementation of Lisp in Allegro CL 5.0/5.0.1 compared by Allegro CL 3.0.x for Windows. This document does not deal with the foreign function interface (described in aclwffi.htm) nor graphics (Allegro CL 5.0/5.0.1 on Windows Common Graphics, like Allegro CL 3.0.x for Windows; click here for doc/cg/index.htm, which provides an introduction to Common Graphics documentation).
This document is for users porting from Allegro CL 3.0.x on Windows to Allegro CL 5.0/5.0.1 (on any platform). Users with no experience with Allegro CL 3.0.x on Windows can safely ignore this document as it contains no information useful to them.
This document describes the language incompatibilities between Allegro CL 5.0/5.0.1, sometimes in this document referred to as ACL, and Allegro CL 3.0.x for Windows, sometimes in this document referred to as ACLWin.
Only Lisp language differences are discussed in this document.
In particular, please note that the functionality described in this document is
available in ACL by evaluating (require "aclwin"). The Runtime
module called aclwin302.fasl is available only as part of building a
Common Graphics deliverable application and is described in porting.hlp.
This section lists the incompatibilities between ACL and ACLWin.
(merge-pathnames ".bil" "abc.cl")
returns #P"abc.bil" in ACLWin and #p".bil.cl"
in ACL. That is, in ACL the namestring ".bil" is considered
to be a file starting with a dot. Use (make-pathname :type "bil")
if you want to express the file type "bil" portably in both Lisps.(nth -1 list) is equivalent to (nth 0 list).
In ACL, this form signals an error in unoptimized compiled code, but is undefined in
optimized compiled code (when speed is greater than safety if compiler switches have their
initial values).(simple-array bit (2 32)) in
ACLWin and (array t (2 32)) in ACL.#2t((unsigned-byte 8) ((0 1) (2 3))) returns an object of
type (simple-array (unsigned-byte 8) (2 2)) in ACLWin and in ACL the list ((unsigned-byte
8) ((0 1) (2 3))).*read-default-float-format* defaults to single-float in ACL
5.0/5.0.1. ACLWin 3.0.x behaves as if the ACL 5.0/5.0.1 default was double-float.
Additionally, ACLWin only had one distinct floating point type (double), whereas ACL
5.0/5.0.1 has 2 (single and double).~/date/
~/time/
~/lm/
~/rm/
~/dir/
~/move/
~/font/
~/fb/
~/fc/
~/fe/
~/fi/
~/fl/
~/fo/
~/fp/
~/fs/
~/fu/
~/base/
~/sub/
~/super/
#m dispatching reader macro is not implemented in ACL.~Q format directive is not implemented in ACL.file-length in ACLWin accepts strings (i.e., file names). ACL follows
the ANSI specification and requires a stream argument, and signals a type-error
in all other cases.Use of the items in this section will result in runtime errors and compile time warnings. When available, similar functionality is noted in the error or warning, and this is summarized below.
The following symbols do not have definitions in ACL 5.0/5.0.1:
| *application-directory* | *case-sensitive-intern* |
| *comma-char* | *comma-gap* |
| *command-line* | *compiler-warnings* |
| *daylight-saving-time* | *decimal-point-char* |
| *device-units-p* | *fasl-save-doc-strings* |
| *fasl-save-lambda-lists* | *format-date-style* |
| *gc-hook* | *io-error* |
| *print-line-wraps* | *print-namestring* |
| *print-shared* | *read-case* |
| *read-dos-mode* | *read-no-hang* |
| *read-source* | *read-tolerant* |
| *save-doc-strings* | *save-lambda-lists* |
| *session-exit-fns* | *session-init-fns* |
| *session-variables* | *top-print-length* |
| *top-print-level* | *warn-on-protected-class-redefinition* |
| *warn-on-protected-function-redefinition* | *warn-on-protected-generic-function-redefinition* |
| *warn-on-redefinition* | backtrace |
| breakpoint | breakpointf |
| canonize-type | clear-page |
| clear-reader | compound-stream-echo-p |
| compound-stream-input-streams | compound-stream-output-streams |
| compound-stream-p | copy |
| daylight-saving-time | debugger |
| defdeclaration | delete-declaration |
| delete-function | delete-setf-method |
| delete-structure | delete-type |
| delete-variable | eof-p |
| file-create-date | free-space |
| free-store | fresh-page |
| generic-flet | generic-labels |
| get-gc-config | get-syntax |
| host-file-system | in-package-presents |
| io-error | make-compound-stream |
| mount | new-page |
| prin | profile |
| profile-reset | profile-results |
| profilef | profilef-reset |
| profilef-results | quit |
| read-canonize | read-canonize-function |
| read-lisp-line | read-object |
| rubout | save-image |
| set-char-name | set-file-length |
| set-gc-config | set-read-canonize-function |
| set-syntax | setenv |
| simple-stream-p | spaces |
| stream-device | stream-location |
| tab | total-space |
| tracef | trap-exits |
| unbreakpoint | unbreakpointf |
| unmount | unprofile |
| unprofilef | untracef |
| unwind-stack | with-added-methods |
| write-object |
Some of the items above are like existing ACL 5.0/5.0.1 facilities:
| ACLWin item | similar ACL 5.0/5.0.1 functionality |
|---|---|
| *application-directory* | sys:command-line-arguments |
| *command-line* | sys:command-line-arguments |
| *case-sensitive-intern* | excl:set-case-mode |
| *read-case* | excl:set-case-mode |
| *compiler-warnings* | the CL condition system |
| *print-shared* | common-lisp:*print-circle* |
| *session-exit-fns* | sys:*exit-cleanup-forms* |
| *session-init-fns* | *restart-init-function* and *restart-app-function* |
| *session-variables* | *restart-init-function* and *restart-app-function* |
| *top-print-length* | tpl:*print-length* |
| *top-print-level* | tpl:*print-level* |
| *warn-on-protected-class-redefinition* | redefinition warning facility (see 5.0 Package locking and package definition locking in packages.htm) |
| *warn-on-protected-function-redefinition* | redefinition warning facility (see 5.0 Package locking and package definition locking in packages.htm) |
| *warn-on-protected-generic-function-redefinition* | redefinition warning facility (see 5.0 Package locking and package definition locking in packages.htm) |
| *warn-on-redefinition* | redefinition warning facility (see 5.0 Package locking and package definition locking in packages.htm) |
| *daylight-saving-time* | *daylight-saving-time-observed* |
| eof-p | read and listen |
| io-error | the CL condition system |
| profile | the ACL profiler (see profiling.htm) |
| profile-reset | the ACL profiler (see profiling.htm) |
| profile-results | the ACL profiler (see profiling.htm) |
| profilef | the ACL profiler (see profiling.htm) |
| profilef-reset | the ACL profiler (see profiling.htm) |
| profilef-results | the ACL profiler (see profiling.htm) |
| save-image | excl:dumplisp |
| unprofilef | the ACL profiler (see profiling.htm) |
| unprofile | the ACL profiler (see profiling.htm) |
| protect declaration | redefinition warning facility (see 5.0 Package locking and package definition locking in packages.htm) |
Unless otherwise noted, all the functionality presented in the compatibility package works on UNIX as well as Windows.
The following symbols have definitions in ACL 5.0/5.0.1 equivalent to that in ACLWin 3.0.x:
| *break-on-warnings* | *print-structure* | *time-zone* | *trace-print-length* |
| *trace-print-level* | +infinity | +zero | -infinity |
| -zero | add-finalization | adjoinq | adjoinql |
| always-bound | aset | assocq | assocql |
| bignump | bit-zerop | bits-from-integer | buttail |
| char-names | closed-stream-p | concatenate-lists | concatenate-strings |
| concatenate-vectors | copy-array | copy-file | countq |
| countql | create-directory | current-directory | define-setf-method |
| degrees-to-radians | delete-directory | delete-duplicates-q | delete-duplicates-ql |
| deleteq | deleteql | delimited-string-to-list | directory-exists-p |
| displaced-array-p | eqcar | errorset | false |
| fasl-read | fasl-write | file-archive-p | file-attributes |
| file-directory-p | file-exists-p | file-hidden-p | file-normal-p |
| file-read-only-p | file-system-p | file-temporary-p | findq |
| findql | fixnump | for | gc |
| generic-fboundp | generic-function-name | get-setf-method | get-setf-method-multiple-value |
| getenv | i* | i+ | i- |
| i/ | i/= | i1+ | i1- |
| i< | i<= | i= | i> |
| i>= | iabs | iceiling | idecf |
| ievenp | ifloor | iincf | ilogand |
| ilogandc1 | ilogandc2 | ilogbitp | ilogeqv |
| ilogior | ilognand | ilognor | ilognot |
| ilogorc1 | ilogorc2 | ilogtest | ilogxor |
| imax | imin | iminusp | imod |
| integer-from-bits | intersectionq | intersectionql | ioddp |
| iplusp | irem | iround | isquare |
| itruncate | izerop | lambda-list | lisp-copyright |
| list-to-delimited-string | listify | macroexpand-all | make-quoted |
| mapply | memberq | memberql | mfuncall |
| name-readtable | nanp | natural-log-base | nbuttail |
| nintersectionq | nintersectionql | nset-difference-q | nset-difference-ql |
| nset-exclusive-or-q | nset-exclusive-or-ql | nsublisq | nsublisql |
| nsubstituteq | nsubstituteql | nsubstq | nsubstql |
| nunionq | nunionql | positionq | positionql |
| protect | pushnewq | pushnewql | put |
| quotep | radians-to-degrees | rassocq | rassocql |
| readtable-name | remove-duplicates-q | remove-duplicates-ql | removeq |
| removeql | room | sbit-zerop | select |
| set-bit | set-char | set-current-directory | set-difference-q |
| set-difference-ql | set-documentation | set-exclusive-or-q | set-exclusive-or-ql |
| set-fill-pointer | set-lambda-list | set-macro-function | set-readtable-name |
| set-sbit | set-schar | set-symbol-function | set-symbol-plist |
| shorten-vector | signed-ldb | simple-array-p | special-form-p |
| special-variable-p | square | sublisq | sublisql |
| subsetpq | subsetpql | substituteq | substituteql |
| substq | substql | svset | synonym-stream-p |
| synonym-stream-stream | tree-equal-q | tree-equal-ql | true |
| type-specifier-p | unionq | unionql | until |
| user-name | while | whole-string-equal | whole-string-greaterp |
| whole-string-lessp | whole-string-not-equal | whole-string-not-greaterp | whole-string-not-lessp |
| whole-string/= | whole-string< | whole-string<= | whole-string= |
| whole-string> | whole-string>= | win32p | windows-directory |
| xor |
In addition, the following for loop keywords and options are available:
| above | all-satisfy | append | below |
| bound | by | car-filter | check-for-loop-var-count |
| collect | collect-reversed | collect-vector | collect-vector-reversed |
| count | do | downto | filter |
| fixnum | for-exit | for-loop-macro | for-loop-syntax-error |
| for-result | for-var-spec | from | in |
| in-alist | in-array | in-hash-table | in-package |
| in-package-externals | in-package-internals | in-package-presents | in-plist |
| in-sequence | in-stream | in-string | in-structure |
| in-vector | keep-first | keep-if | keep-unless |
| max | min | nconc | none-satisfy |
| not-all-satisfy | on | over-array | over-vector |
| product | result | return-last | set-for-loop-macro |
| some-satisfy | step | sum | to |
| unless | when |
The following functions work only on Windows (they signal an error on UNIX):
| file-read-only-p | file-hidden-p | file-system-p | file-archive-p |
| file-normal-p | file-attributes | windows-directory |
Misc notes on compatibility
The
progress-functionoptional arguments to fasl-write and fasl-read are not supported. An error is signaled if they are given.
Copyright (C) 1998-1999, Franz Inc., Berkeley, CA. All Rights Reserved.