You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support for LLVM20 and LLVM22. LLVM21 is excluded due to API incompatibility.
Weak-value and weak-key-and-value hash tables, as well as an interface
for weak-key-or-value tables, although at present they are actually
strong tables in practice.
ext:macroexpand-all macroexpands a form and its subforms.
Arguments to bytecode functions are made available to debuggers.
ext:deoptimize can temporarily replace almost all native-compiled functions with a simpler bytecode version with better debuggability. ext:reoptimize restores the native version.
A style warning is signaled if the compiler assumes a symbol names a function and then sees it defined as a macro.
New interfaces for reading and evaluating code with tracked source locations: ext:with-source-tracking, ext:stream-source-location, ext:read-source, ext:augment-source, ext:eval-source, ext:compile-source.
Changed
Use Khazern extended for CL:LOOP
:output-type parameter to compile-file is replaced by :native. :native t will build a fasl with both bytecode and native versions of code. If :native is not provided, it defaults to cmp:*compile-file-native*.
compile can similarly be set to compile natively or to leave functions as bytecode with the cmp:*compile-native* variable.
Build modes are changed: :faso, :bytecode-faso, :fasoll, :fasobc, :fasl build modes are removed. Only :bytecode and the new :native can be used. :default-native is a new build flag that can be used to control whether the built Clasp will native-compile files and functions by default (i.e. it controls the default values of cmp:*compile-file-native* and cmp:*compile-native*.
The build procedure is completely rewritten, building Clasp's Lisp code using another Lisp implementation instead of boostrapping from the C++ Clasp.
Fixed
Weak pointers and weak hash tables survive snapshot save/load.
ext:quit can be used from any thread, not just the initial thread.
Literal arrays with fill pointers are not dumped with excess elements.
setf of apply no longer has multiple evaluation problems.
Improve error messages for package name conflicts. Fixes #1722.
FASL loading is more resilient in the face of heavy file use and interruptions. Thanks @dg1sbg.
Writing non-base-chars into base strings by various means (e.g. replace) now signals an error instead of treating the low byte of the codepoint as a base char.
ext:macroexpand-all no longer allows macros to expand into tagbody tags.
Removed
-z/--snapshot-symbols-save command line option, occasionally used
for snapshot debugging. You can call core:mangled-symbol-names if the
effect is still needed.
FASO and other compile-file output types, other than FASL. compile-file now always produces a FASL.