Steel Bank Common Lisp

Software Screenshot:
Steel Bank Common Lisp
Software Details:
Version: 1.2.6
Upload Date: 17 Feb 15
Developer: William Newman
Distribution Type: Freeware
Downloads: 22

Rating: nan/5 (Total Votes: 0)

Steel Bank Common Lisp (SBCL) is an open source, multiplatform and free development environment, a high performance compiler for the ANSI standard Common Lisp programming language. It is written entirely in the Lisp programming language and tailored specifically for developers.

Features at a glance

Key features include excellent support for garbage collection, built-in powerful macros, support for lexical closures, strong dynamic typing implementation, as well as incremental compilation capabilities.

The software also includes numerous extensions, such as native threads, socket support, a statistical profiler, programmable streams, and many others. All these extension are available through an interactive and integrated native compiler, which feels like an interpreter.

If you’re looking for detailed information about how to install Steel Bank Common Lisp on your Linux distro or how to use it, do not hesitate to check out the project’s homepage (see link at the end of the article).

Getting started with Steel Bank Common Lisp

To use Steel Bank Common Lisp on your GNU/Linux distribution, simply download the pre-built binary package engineered for 64-bit hardware platforms, save it on a location of your choice, unpack it and open a terminal emulator application.

In the Terminal app, run the ‘sh run-sbcl.sh’ command to access its command prompt, where you will be able to type the HELP command to view detailed information about available options and learn how to use the compiler.

Supported operating systems and availability

Steel Bank Common Lisp is unique in being a cross-platform native Common Lisp compiler, which works on GNU/Linux, BSD, Mac OS X and Microsoft Windows operating systems, bootstraping itself completely from source.

For your convenience, besides the universal source tarball, the software is distributed as a pre-built binary package that allows you to use Steel Bank Common Lisp without installing it on 64-bit (x86_64) computers.

What is new in this release:

  • enhancement: SERVE-EVENTS uses the poll() system call in lieu of select() if the OS has the former. Previously poll() was used only if waiting on exactly one file descriptor.
  • enhancement: efficiency of access to untagged structure slots is improved on x86-64, and the order of slots in memory is exactly as specified by defstruct, simplifying use of structures as arguments to foreign calls.
  • bug fix: SB-DEBUG:ARG now works in all TRACE options which evaluate forms. (lp#1357826)
  • bug fix: GC memory corruption during internal memory handling.
  • bug fix: duplicate effective-slot-definition objects as compared by EQ on name could be present in CLASS-SLOTS of a class whose metaclass was structure-class or condition-class. (lp#1049423)
  • bug fix: HANDLER-BIND with empty bindings works again; regression in 1.2.5. (lp#1388707)
  • bug fix: ATOMIC-INCF works on structure slots in interpreted code. (lp#1381867)
  • bug fix: MAKE-ARRAY properly handles character types like (eql #\a) and (member #\a #\c). (lp#1392068)
  • bug fix: READ sometimes accidentally preserved a whitespace character after a token when it should not have. (lp#327790)

What is new in version 1.1.13:

  • optimization: better distribution of SXHASH over small conses of related values. (#309443)
  • other improvements to SXHASH:
  • use the whole of the positive-fixnum range for SXHASH of fixnums
  • enhancement: The error message when calling an undefined alien function includes the name of the function on x86-64.
  • enhancement: sb-ext:run-program now supports :environment on Windows.
  • enhancement: ASDF is no longer required to load contribs at runtime. (#1132254)
  • enhancement: when called with a symbol, FIND-RESTART no longer calls COMPUTE-RESTARTS, making it faster and cons less (#769615)
  • enhancement: FIND-RESTART and COMPUTE-RESTARTS handle huge restart clusters better in some cases
  • enhancement: SOME/ANY/other quantification higher-order functions no longer cons. (#1070635)
  • bug fix: forward references to classes in fasls can now be loaded. (#746132)
  • bug fix: don't warn on a interpreted->compiled function redefinition from the same location. (patch by Douglas Katzman, #1042405)
  • bug fix: Create vectors of proper internal length when reading literal vectors from FASLs. (Reported by Jan Moringen)
  • bug fix: COMPILE can now succefully compile setf functions. (Reported by Douglas Katzman)
  • bug fix: run-program performs more correct escaping of arguments on Windows. (#1239242)
  • bug fix: function-lambda-expression on generic functions returns the actual name.
  • bug fix: (the [type] [constant]) now warns when [constant] matches [type] except for the number of values. (Reported by Nathan Trapuzzano on sbcl-help)
  • bug fix: signal errors in required cases of slot-definition initialization protocol. (#309072)
  • bug fix: run-sbcl.sh works better in the presence of symlinks on OS X. (thanks to Stelian Ionescu, #1242643)
  • bug fix: when given a restart object, FIND-RESTART checks whether the restart is active and, when a condition is supplied, whether the restart is associated to a different condition (#774410)

What is new in version 1.1.12:

  • enhancement: Add sb-bsd-sockets:socket-shutdown, for calling shutdown(3). (thanks to Jan Moringen, #1207483)
  • enhancement: document extensible sequences. (thanks to Jan Moringen, #994528)
  • optimization: EQUAL and EQUALP transforms are smarter. (thanks to Elias Martenson, #1220084)
  • optimization: CHAR-EQUAL is faster for constant and base-char arguments.
  • bug fix: probe-file now can access symlinks to pipes and sockets in /proc/pid/fd on Linux. (reported by Eric Schulte)
  • bug fix: SBCL can now be built on Solaris x86-64.
  • bug fix: Floating point exceptions do not persist on Solaris anymore.
  • bug fix: (setf . a) is pprinted correctly (reported by Douglas Katzman).
  • bug fix: handle compiler-error in LOAD when it's not run from inside EVAL. (#1219601)
  • bug fix: SB-GMP:MPZ-POW no longer segfaults given a non-bignum base. (thanks to Stephan Frank)
  • bug fix: space allocation of result bignums in SB-GMP is more accurate. (thanks to Stephan Frank, #1206191)
  • bug fix: sb-safepoint can now reliably handle signal interruptions of foreign code. (#1133018)
  • bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback" constructors no longer fails to merge actual and default initargs (thanks to Jan Moringen, #1179858)
  • bug fix: the compiler-macro for MAKE-INSTANCE when emitting "fallback" constructors handles non-KEYWORD initialization arguments more correctly.
  • bug fix: loading the SB-SIMPLE-STREAMS contributed module no longer clobbers FILE-NAMESTRING. (thanks to Anton Kovalenko, #884603)
  • bug fix: class definitions with CPLs inconsistent with their metaclasses are less likely to destroy the object system's integrity. (#309076)
  • bug fix: restart clause parsing in RESTART-CASE is more in line with the standard. (#1203585, thanks to Jan Moringen)
  • bug fix: silence a note from RESTART-CASE under high-SPEED optimization settings. (#1023721)
  • bug fix: getting the order of arguments to SB-MOP:SET-FUNCALLABLE-INSTANCE-FUNCTION wrong produces a sensible error rather than a failed AVER. (reported by Paul Nathan)
  • bug fix: Parsing of &optional/&key/&rest arguments now never overwrites arguments during copying on x86 and x86-64; it may still happen on other platforms when there are more fixed arguments than stack slots. (reported by Jan Moringen)

What is new in version 1.0.52:

  • enhancement: ASDF has been updated to version 2.017.
  • enhancement: the --core command line option now accepts binaries with an embedded core.
  • enhancement: when built with :sb-core-compression, core files (regular or executable) can be compressed with zlib. Use the :COMPRESSION argument to SAVE-LISP-AND-DIE to specify a compression level.
  • enhancement: --[no-]merge-core-pages determines whether the runtime hints the operating system that identical core pages between SBCL processes should share the same physical memory. Default is to only enable this for compressed cores.
  • optimization: SLEEP no longer conses.
  • optimization: *PRINT-PRETTY* no longer slows down printing of strings or bit-vectors when using the standard pretty-print dispatch table.
  • bug fix: non-function FTYPE declarations no longer cause a compiler-error. (#738464)
  • bug fix: compiler-errors causes by MEMBER types in conjunction with with AREF, CHAR, etc. (#826971)
  • bug fix: compiler-errors causes by integer arguments with composed of multiple ranges to ARRAY-IN-BOUNDS-P. (#826970)
  • bug fix: ,@ and ,. now signal a read-time error for certain non-list expressions. (#770184)
  • bug fix: complex single float literals are correctly aligned when used as arguments of arithmetic operators.
  • bug fix: on 32-bit platforms, rounding of double floats larger than a fixnum is correct. (reported by Peter Keller)
  • bug fix: stray FD-HANDLERs are no longer left lying around after unwinds from RUN-PROGRAM. (#840190, reported by Dominic Pearson; fix from Max Mikhanosha)
  • bug fix: redefining classes such that slots with custom allocation are added or removed works again.

What is new in version 1.0.50:

  • enhancement: errors from FD handlers now provide a restart to remove the offending handler.
  • enhancement: SB-INTROSPECT:FIND-DEFINITION-SOURCE now works on structure copiers as well.
  • enhancement: location of user or system initialization file can now easily be customized for saved cores. See: SB-EXT:*USERINIT-PATHNAME-FUNCTION* and SB-EXT:*SYSINIT-PATHNAME-FUNCTION*.
  • enhancement: SB-EXT:MAKE-THREAD accepts an argument list designator for the thunk, as a keyword argument, :arguments.
  • enhancement: constraint propagation is simplified (and sped up) when COMPILATION-SPEED > SPEED.
  • enhancement: SB-ALIEN exports alien type specifiers SIZE-T and OFF-T.
  • enhancement: debugger understands &MORE arguments better.
  • optimization: extracting bits of a single-float on x86-64 has been optimized. (#555201)
  • optimization: MAP and MAP-INTO are more efficient for non-simple vectors, when (> SPEED SPACE).
  • optimization: local call trampolines (x86 and x86-64) are emitted inline.
  • optimization: implicit value cells for dynamic-extent closed-over bindings on x86 and x86-64 can hold unboxed values as well.
  • meta-optimization: improved compilation speed, especially for large functions. (#792363 and #394206)
  • bug fix: bound derivation for floating point operations is now more careful about rounding possibly closing open bounds. (#793771)
  • bug fix: SB-POSIX:SYSCALL-ERROR's argument is now optional. (accidental backwards incompatible change in 1.0.48.27)
  • bug fix: occasional debugger errors in when a type-error occured in a function with dynamic-extent &rest list.
  • bug fix: &optional and &key supplied-p arguments in DEFSTRUCT boa-construtors can be used to initialized structure slots.
  • bug fix: FMAKUNBOUND removes the MACRO-FUNCTION, should one exist. (#795705, regression)
  • bug fix: DIRECTORY works better on logical pathnames.
  • bug fix: RUN-PROGRAM no longer fails spuriously when argument strings are of the order of ARRAY-TOTAL-SIZE-LIMIT. (#787237)
  • bug fix: the compiler no longer constant-folds NaNs in MAKE-{SINGLE,DOUBLE}-FLOAT. (#486812)
  • bug fix: FORMAT now handles floating point rounding correct, eg. (format nil "~,1F" 0.01) => "0.0" instead of "0.01" as previously. (#308961)
  • bug fix: style warning during lambda-list introspection of generic functions with both optional and key argments.
  • bug fix: regalloc doesn't barf on unused TNs due to type-directed constant folding. (#729765)
  • bug fix: Fixed an off-by-one in MAP-ALLOCATED-OBJECTS that might have caused infinite loops.

What is new in version 1.0.49:

  • Lots of enhancements and fixes were made.
  • One minor incompatible change was made pertaining to interrupt handling in hash table code.

What is new in version 1.0.46:

  • enhancement: largefile support on Solaris.
  • enhancement: SB-PROFILE:REPORT now supports :LIMIT and :PRINT-NO-CALL-LIST arguments (#710017)
  • enhancement: SB-PCL:+SLOT-UNBOUND+ is exported, making it possible to distinguish unbound instance slots when using STANDARD-INSTANCE-ACCESS &co. (#718039)
  • optimization: ERROR and CERROR are approximately 5 times faster.
  • optimization: optimized constructors are used for MAKE-INSTANCE of classes with applicable non-standard (SETF SLOT-VALUE-USING-CLASS), SLOT-BOUNDP-USING-CLASS, and INITIALIZE-INSTANCE :AROUND methods, speeding up instance creation in those cases.
  • optimization: arithmetic operations with multiple constant arguments in now have them reduced at compile-time. (#676414)
  • optimization: determining current character position on string-streams for pretty-printing was overly slow.
  • bug fix: local tail calls to DYNAMIC-EXTENT functions can no longer cause lifetime analysis to overwrite closed-over variables (#681092).
  • bug fix: encoding errors from some multibyte external formats such as EUC-JP were not handled correctly (#713063).
  • bug fix: printing waitqueue objects without setting *PRINT-CIRCLE* to T is now safe (#673630).
  • bug fix: Solaris/x86-64 wasn't getting built with lutex support by mistake. (#667297).
  • bug fix: CONSTANTLY generated functions had bogus lambda-lists. (#713626)
  • bug fix: RUN-PROGRAM :PTY option was racy on OpenBSD. (#669485)
  • bug fix: UNINTERN takes a symbol, not a symbol designator -- could previously unintern the wrong symbol with the same name. (#693796)
  • bug fix: COPY-PPRINT-DISPATCH always has access to a pristine table, making it possible to restore the initial table if it has been messed up. (#678409)

What is new in version 1.0.43:

  • incompatible change: FD-STREAMS no longer participate in the serve-event event-loop by default. (#316072)
  • In addition to streams created by explicit calls to MAKE-FD-STREAM this affects streams from CL:OPEN.
  • Streams from SOCKET-MAKE-STREAM still participate in serve-event by default, but this is liable to change: applications needing serve-event for socket streams should explicitly request it using :SERVE-EVENTS T in the call.
  • enhancement: SB-EXT:WORD type is provided for use with SB-EXT:ATOMIC-INCF &co.
  • enhancement: CLOS effective method functions and defclass slot typechecking function now have debug names for use in backtraces and profiles.
  • enhancement: ASDF has been updated to version 2.004. (#605260, thanks to Fare Rideau)
  • enhancement: symbols are printed using fully qualified names in several error and warning messages which are often associated with package conflicts or mixups (#622789, thanks to Attila Lendvai)
  • bug fix: SB-BSD-SOCKETS:SOCKET-CONNECT was not thread safe. (#505497, thanks to Andrew Golding)
  • bug fix: reading /proc files on Linux works. (#425199)
  • bug fix: DOTIMES accepted literal non-integer reals. (#619393, thanks to Roman Marynchak)
  • bug fix: WRITE-TO-STRING compiler macro binding special variable names, breaking code that tried to write the value of a printer control variable. (#581564, thanks to Stas Boukarev)
  • bug fix: WRITE compiler macro did not handle output stream designators correctly. (#598374, thanks to Stas Boukarev)
  • bug fix: better availability of names of foreign functions in backtraces on Linux. (#626962, thanks to Stas Boukarev)
  • bug fix: scripting and build for Solaris and FreeBSD. (#615497, #627581, thanks to Josh Elsasser and Jim Wise)
  • bug fix: build fixes for OpenBSD -current and 4.8 (#615489, #615492, thanks to Josh Elsasser)
  • bug fix: using aliases for builtin classes as defmethod specializers without adding DEFTYPEs for them works. (#618387)
  • bug fix: timetravel by getrusage() no longer causes type-errors during GC. (#544421)
  • bug fix: legally dynamic-extent lists and vectors used as initialization arguments to MAKE-ARRAY can be stack allocated. (#586105)
  • bug fix: inline-expansion creating references to dead lambda-variables (#454681, thanks to Alexey Dejneka)
  • bug fix: better error message for bogus numerical arguments to RANDOM. (#598986, thanks to Stas Boukarev)
  • bug fix: the compiler occasionally inlined references from incompatible environments occurs. (#308951)
  • bug fix: the compiler threw an error when trying to compile a local function (labels or flet) known to take a specialized complex argument. (not in launchpad, reported by sykopomp in #lispgames)
  • bug fix: package-locks failed to protect against compile-time effects of DEFUN when the symbol previously had a macro definition. (#576637)
  • bug fix: spurious ignore warnings even given (DECLARE IGNORE) in methods when parameter bindings mutated. (reported by Fare Rideau; lp #611361)
  • bug fix: workaround for compiler hang in ORDER-UVL-SETS (#308914)
  • bug fix: evaluation in debugger REPL works using the global context when in frames that do not have sufficient debug information.
  • bug fix: exceeding FD_SETSIZE limit now results in an sensible error (#316068)
  • bug fix: (SETF DOCUMENTATION) of a macro works properly. (#643958, thanks to Stas Boukarev)
  • bug fix: interrupt taking longer than the requested period caused SLEEP to hang on Darwin. (#640516, thanks to Joe Lebroco for the analysis)

What is new in version 1.0.42:

  • build changes
  • Cross-compilation host is now specified to make.sh using command-line argument --xc-host=< command > instead of a positional argument. (thanks to Daniel Herring)
  • Install location can be specified to make.sh using command-line argument --prefix= < path >. (#550889s, thanks to Daniel Herring)
  • optimization: The default implementation of COMPUTE-DISCRIMINATING-FUNCTION does much less wasted work.
  • enhancement: Explicit memory barrier operations are now available for use by multithreaded code. See documentation for details.
  • enhancement: Experimental support for threading on Linux/PPC.
  • bug fix: RENAME-PACKAGE returns the package. (Thanks to Eric Marsden)
  • bug fix: EXPT signals an error if first argument is a zero and second argument is a floating point zero. (#571581, thanks to Roman Marynchak)
  • bug fix: DEFTYPE signals an error for non-list lambda-lists. (#576594, thanks to Roman Marynchak)
  • bug fix: make ASDF-INSTALL compatible with the now-included ASDF2. (#612998, reported by Phil Hargett; patch from Jim Wise)

Similar Software

Vala
Vala

27 Sep 15

4tH compiler
4tH compiler

20 Feb 15

lizpop
lizpop

14 Apr 15

GNU Binutils
GNU Binutils

17 Aug 18

Comments to Steel Bank Common Lisp

Comments not found
Add Comment
Turn on images!