https://github.com/clasp-developers/clasp/releases/tag/2.0.0 Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + By Plan + Enterprise + Teams + Compare all + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} clasp-developers / clasp Public * Notifications * Fork 133 * Star 2.2k * Code * Issues 95 * Pull requests 1 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights 1. Releases 2. 2.0.0 Clasp v2.0.0 Latest Latest Compare Choose a tag to compare [ ] Could not load tags Nothing to show {{ refName }} default (*) View all tags @yitzchak yitzchak released this * 6 commits to main since this release 2.0.0 413757e Version 2.0.0 (LLVM14) 2022-10-26 Added * Lisp based koga metabuilder that outputs Ninja build files. * basic Debian packaging files. * core:*extension-systems*, core:*initialize-hooks* and core:*terminate-hooks dynamic variables have been added to support new extension loading method. core:*extension-systems* is a list of keywords that name extension systems to load after Clasp starts and before --load and --eval command line options are processed. The remaining two variables are lists of functions that are called to do initialization before a REPL is started and termination after the REPL exits. * --script command line option which equivalent to passing --norc, --noinform and --non-interactive. Any shebang in will also be skipped. * Asynchronous external process control with ext:run-program. * Function ext:temporary-directory that returns the directory used for temporary files. * Function ext:printing-char-p that returns non-NIL for graphic characters that are not blank glyphs. This is an extension of the ANSI specification that defines "printing" characters as graphic characters aside from the space character. Changed * core:lisp-implementation-id and core:clasp-git-full-commit only return non-NIL values if Clasp was built in a git working tree. * graphic-char-p, alpha-char-p, alphanumericp, upper-case-p, lower-case-p, both-case-p, char-upcase and char-downcase now no longer depend on C++ locale functions and are now generated directly from the Unicode character tables. * Loading of extensions such as Cando no longer uses startup scripts via LOAD. Instead the systems associated with each extension are loaded via QL:QUICKLOAD or as a fallback ASDF:LOAD-SYSTEM. * Behavior of --rc command line option has changed. Relative paths passed via this option are no longer assumed to be located in the user's home directory. * The logical hosts used by Clasp to locate source code and other components of Clasp has been changed. Only the reserved logical host SYS is now used. The default mappings for a system installed to /usr/ are 1. SYS:LIB;**;*.*.* - /usr/lib/clasp/**/*.* 2. SYS:GENERATED;**;*.*.* - /usr/share/clasp/generated/**/*.* 3. SYS:EXECUTABLE;**;*.*.* - /usr/bin/**/*.* 4. SYS:QUICKLISP;**;*.*.* - ~/quicklisp/**/*.* 5. SYS:**;*.*.* - /usr/share/clasp/**/*.* * ASDF systems that are loaded as part the cclasp image are now marked as immutable thereby preventing ASDF from overwriting them. These systems include the systems acclimation, alexandria, clasp-cleavir, cleavir-ast-to-bir, cleavir-ast, cleavir-ast-transformations, cleavir-attributes, cleavir-bir, cleavir-bir-transformations, cleavir-compilation-policy, cleavir-conditions, cleavir-cst-to-ast, cleavir-ctype, cleavir-environment, cleavir-io,cleavir-meter, cleavir-primop, cleavir-set, cleavir-stealth-mixins, closer-mop, concrete-syntax-tree, concrete-syntax-tree-base, concrete-syntax-tree-destructuring, concrete-syntax-tree-lambda-list, eclector, and eclector-concrete-syntax-tree. * Source code file references for Lisp and C/C++ files compiled as part of the Clasp binary or images are now stored using logical pathnames. * Unicode character database updated to 2022-08-03. Removed * core:*extensions-startup-loads* and core:*extensions-startup-evals* dynamic variables have been removed since they are no longer used. * The --resources-dir command line option has been removed. Equivalent behavior is achieved with the CLASP_HOME environment variable. Enhancements * make-instance and CLOS slot access functions can be used with structure objects. * The stepper, accessible through step, now has basic functionality. * gctools:save-lisp-and-die now accepts a key :executable which can be used to create an executable binary with the snapshot embedded in the binary. * garbage-collect, finalize, and save-lisp-and-die are now exported from the ext interface package. Optimizations * Arguments to and return values from local functions (e.g. from FLET) are passed unboxed in some common cases. * Nonlocal exits are much faster in most cases, the exception being when the exit goes through uncooperative C++ code. * Types inferred for many standard functions are tighter. * Calls to some local functions with &rest parameters are more efficient. * LENGTH is now a "vaslistable" function; &rest parameters that are only used for vaslistable functions can be compiled to avoid consing. * Multiple value calls and APPLY calls to known functions can sometimes be optimized. * Some MAKE-ARRAY calls are compiled more efficiently. * Unused calls to many more (side-effect-free) standard functions are deleted. * Accesses to 1D simple arrays of known element type are a bit faster. * A virtual machine has been defined and implemented, greatly increasing the speed of evaluation of code that doesn't usually need to be optimized (for example, compile-time evaluations). * The building process has been streamlined by replacing several of the bootstrapping components with the virtual machine. * Discriminating functions now execute faster. * The compiler now performs inlining much faster. Fixes * Replace hard coded paths to nm in snapshot code with NM_BINARY macro value set by configure. * Clasp can now be built directly from source. Resolves issue #175. * Snapshots now parse command line options such as --noinform, --noprint, --quit, and --disable-debugger. * Source locations for warnings from errors during constant folding now print correctly. * Unused calls that must remain in safe code are no longer deleted. * Prevent negative zero remainder in core__next_ftruncate. Fixes # 1368. Assets 2 6 people reacted 5 Uthar, jmbr, dmsurti, carlodicelico, and xlarsx reacted with hooray emoji 6 Uthar, jmbr, stylewarning, dmsurti, carlodicelico, and xlarsx reacted with rocket emoji All reactions * 5 reactions * 6 reactions Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. 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.