




For details of these, see the documentation in the LispWorks User Guide and Reference Manual , unless a manual is referenced explicitly.
Support for remote debugging has been added, which allows you to debug a LispWorks process that is running on one machine using a LispWorks IDE that is running on another machine. It is intended to make it easier to debug applications running on machines that do not have the LispWorks IDE, mainly mobile device applications on iOS and Android, but also applications running on servers where you cannot run the LispWorks IDE.
The Asynchronous I/O API has been extended to support connections using SSL. The existing functions comm:create-async-io-state-and-connected-tcp-socket and comm:accept-tcp-connections-creating-async-io-states now have keyword arguments such as :ssl-ctx and new functions comm:async-io-state-attach-ssl and comm:async-io-state-detach-ssl have been added.
New functions comm:async-io-state-ssl-side, comm:async-io-state-ssl and comm:async-io-state-ctx allow access to details of the SSL objects from an comm:async-io-state object.
LispWorks 7.1 supports OpenSSL 1.1 as well as older versions of OpenSSL.
Previous versions of LispWorks will not work with OpenSSL 1.1 because the API has changed.
Note: On Windows, you will need to call comm:set-ssl-library-path to set the path when using OpenSSL 1.1. See "How LispWorks locates the OpenSSL libraries" in the
LispWorks User Guide and Reference Manual
.
A new keyword argument :tlsext-host-name has been added to various functions in the socket stream API such as comm:open-tcp-stream, to allow the SNI extension to be set when making an SSL connection.
Functions that create SSL connections (for example comm:open-tcp-stream) can now control when to perform the SSL handshake and how long to wait for it using the new keyword argument :handshake-timeout. See "Keyword arguments for use with SSL" in the
LispWorks User Guide and Reference Manual
.
In addition, the new functions comm:socket-stream-handshake and comm:async-io-state-handshake perform a SSL handshake.
The new macro hcl:define-declaration defines a declaration handler for code walkers. The implementation of is based on the specification in Common Lisp the Language, 2nd Edition.
The new function hcl:undefine-declaration removes declaration handlers.
It is now possible to trace and "advise" subfunctions that are created by flet, labels or lambda. See cl:trace, lw:defadvice and "Subfunction dspecs" in the
LispWorks User Guide and Reference Manual
.
The hcl:lambda-name declaration can be used to change the name of the surrounding lambda, which is useful for debugging purposes and does not affect the behavior of the program. See "Description of hcl:lambda-name" in the documentation of cl:declare in the
LispWorks User Guide and Reference Manual
.
The new function hcl:map-code-coverage-data calls a function on each of the files in a hcl:code-coverage-data object.
The new function lw:rotate-byte rotates specified bits within an integer.
The function hcl:reduce-memory is now also implemented for 64-bit LispWorks.
The new function hcl:current-function-name returns the name of the current function, which is useful for debugging.
The new function system:pipe-close-connection can be used to close the connection underlying the pipe-stream without closing the stream itself, which allows the exit status of the pipe to be read.
The new function hcl:date-string returns a string representing the date and time (including seconds) from a universal time.
The new function hcl:save-current-profiler-tree saves the current profiler output to a file. This can be used later by the Profiler tool or can be opened in a text editor.
hcl:set-up-profiler now has kw-contexts and subfunctions arguments to control profiling KnowledgeWorks contexts and subfunctions.
The function hcl:start-profiling now takes a :time keyword argument, which causes timing information to be printed by hcl:stop-profiling.
The new variables lw-ji:*to-java-host-stream* and lw-ji:*to-java-host-stream-no-scroll* are bound to output streams that send anything that is written to them to Java (by calling lw-ji:send-message-to-java-host). They can be used anywhere an output stream is needed to make the output go to the Java host.
The where-keyword argument to the function lw-ji:send-message-to-java-host now has addition values :add-no-scroll and :add, which add text without a newline.
This keyword might also be passed to the send-message-to-java-host argument to lw-ji:init-java-interface.
The Java method com.lispworks.Manager.addMessage also allows the where argument to be ADDMESSAGE_ADD or ADDMESSAGE_ADD_NO_SCROLL.
The values of ADDMESSAGE_APPEND and ADDMESSAGE_APPEND_NO_SCROLL for the where argument to the Java method com.lispworks.Manager.addMessage now insert a newline after the message. In LispWorks 7.0, the newline was inserted before the message so you may have to modify your code if you rely on that.
This also changes the effect of calling lw-ji:send-message-to-java-host on Android with :append and :append-no-scroll.
The new function lw-ji:setup-java-interface-callbacks can be called after lw-ji:init-java-interface was called to change the values of class-finder, java-to-lisp-debugger-hook, report-error-to-java-host or send-message-to-java-host. This is useful in the situations where LispWorks performs the call to lw-ji:init-java-interface, which happens in Android and in a dynamic library delivered with lw-ji:setup-deliver-dynamic-library-for-java.
The method waitForInitialization has been added to the Java class com.lispworks.LispCalls to wait for Lisp to become initialized.
The new constant lw-ji:*java-null* represents a Java null pointer, when this needs to be passed from Lisp to Java.
The new functions system:simple-int32-vector-length and system:simple-int64-vector-length return the lengths of system:simple-int32-vector and system:simple-int64-vector objects.
The new functions system:simple-int32-vector-p and system:simple-int64-vector-p act as predicates.
The new function lw:count-regexp-occurrences counts the occurrences of a regular expression in a string.
The new function hcl:string-trim-whitespace trims whitespace characters from the beginning and end of a string.
The new function hcl:write-string-with-properties is like cl:write-string, but when it writes to an Editor buffer it can add properties to the text it has written. This is especially useful for writing in different colors, bold, italic or underlined.
The new macros lw:push-end and lw:push-end-new push an element on the end of a list. These macros were available in all previous versions of LispWorks too, but have not been documented until now.
The Serial Port API, as described in chapter "The SERIAL-PORT Package" in the LispWorks User Guide and Reference Manual has been implemented for non-Windows platforms as well.
The new function dspec:object-dspec returns the dspec for an object that represents some definition, such as a function, method or class.
The debugger now shows unused variables in code that is compiled at debug level 3. In LispWorks 7.0 and earlier versions, these variables were eliminated.
The new function system:specific-valid-file-encoding can be included in the list system:*file-encoding-detection-algorithm* to allow detection of the character encoding in a file, according to a configurable list of encodings in system:*specific-valid-file-encodings*.
The new functions hcl:safe-format-to-string, hcl:safe-prin1-to-string and hcl:safe-princ-to-string format and print to a string without signaling any errors. These functions are intended to be used in code that handles and reports errors, where it is important to avoid recursive errors.
The function win32:create-registry-key has a new keyword :volatile, which allows a volatile registry key to be created.
The new function hcl:android-build-value returns the value of a field in the android.os.Build Java class on Android.
LispWorks Release Notes and Installation Guide - 19 Oct 2017