Next: Idiosyncrasies, Previous: ANSI Conformance, Up: Introduction

### 2.2 Extensions

SBCL comes with numerous extensions, some in core and some in modules loadable with `require`. Unfortunately, not all of these extensions have proper documentation yet.

System Definition Tool
  `asdf` is a flexible and popular protocol-oriented system definition tool by Daniel Barlow. see the asdf manual, for more information.
Third-party Extension Installation Tool
  `asdf-install` is a tool that can be used to download and install third-party libraries and applications, automatically handling dependencies, etc.
Foreign Function Interface
  `sb-alien` package allows interfacing with C-code, loading shared object files, etc. See Foreign Function Interface.

  `sb-grovel` can be used to partially automate generation of foreign function interface definitions. See sb-grovel.

Recursive Event Loop
  SBCL provides a recursive event loop (`serve-event`) for doing non-blocking IO on multiple streams without using threads.
Metaobject Protocol
  `sb-mop` package provides a metaobject protocol for the Common Lisp Object System as described in Art of Metaobject Protocol.
Native Threads
  SBCL has native threads on x86/Linux, capable of taking advantage of SMP on multiprocessor machines. See Threading.
Network Interface
  `sb-bsd-sockets` is a low-level networking interface, providing both TCP and UDP sockets. See Networking.
Introspective Facilities
  `sb-introspect` module offers numerous introspective extensions, including access to function lambda-lists and a cross referencing facility.
Operating System Interface
  `sb-ext` contains a number of functions for running external processes, accessing environment variables, etc.

  `sb-posix` module provides a lispy interface to standard POSIX facilities.

Extensible Streams
  `sb-gray` is an implementation of Gray Streams. See Gray Streams.

  `sb-simple-streams` is an implementation of the simple streams API proposed by Franz Inc. See Simple Streams.

Profiling
  `sb-profile` is a exact per-function profiler. See Deterministic Profiler.

  `sb-sprof` is a statistical profiler, capable of call-graph generation and instruction level profiling, which also supports allocation profiling. See Statistical Profiler.

Customization Hooks
  SBCL contains a number of extra-standard customization hooks that can be used to tweak the behaviour of the system. See Customization Hooks for Users.

  `sb-aclrepl` provides an Allegro CL -style toplevel for SBCL, as an alternative to the classic CMUCL-style one. See sb-aclrepl.

CLTL2 Compatility Layer
  `sb-cltl2` module provides `compiler-let` and environment access functionality described in Common Lisp The Language, 2nd Edition which were removed from the language during the ANSI standardization process.
Executable Delivery
  The `:executable` argument to Function sb-ext:save-lisp-and-die can produce a `standalone' executable containing both an image of the current Lisp session and an SBCL runtime.
Bitwise Rotation
  `sb-rotate-byte` provides an efficient primitive for bitwise rotation of integers, an operation required by eg. numerous cryptographic algorithms, but not available as a primitive in ANSI Common Lisp. See sb-rotate-byte.
Test Harness
  `sb-rt` module is a simple yet attractive regression and unit-test framework.
MD5 Sums
  `sb-md5` is an implementation of the MD5 message digest algorithm for Common Lisp, using the modular arithmetic optimizations provided by SBCL. See sb-md5.