Variable | Package: excl | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Moderate update since 9.0 release.

## *required-top-level-bindings*

in releases prior to version 9.0, this variable was named `*cl-default-special-bindings*`. Use of that variable signals a warning (and then does the right things). Code using the old name should be updated to use the new name.

This variable holds an alist associating special variable symbols with forms to evaluate for binding values. When a process first starts execution, the *required-thread-bindings* are established and then the initial-bindings slot is examined for additional bindings to establish for the process. `*required-top-level-bindings*` contains a reasonable default list which establishes a default environment with standard Common Lisp values. The contents of this list may be examined, but if you want to modify it for a particular call to make-process, it is strongly suggested you either modify a copy made with copy-alist, or just cons replacement entries onto the front of the list.

In earlier versions of this document, it said that this variable could not be bound as it was defined with defvar-nonbindable. In version 9.0, that was incorrect, as in that version the variable is defined with defvar. Starting in version 10.0, it is defined with defvar-nonbindable.

A variable should appear as the key (i.e. car) of an entry only once in this list. If a variable is the key of two or more elements, only the first is used and all subsequent elements are ignored.

Samples of the contents of `*required-top-level-bindings*` are shown next. Note that the contents of this list may be changed by patches.

    ((*print-pprint-dispatch* . #<excl::pprint-dispatch-struct @ #x2014a9c2>)
     (excl::*break-on-warnings* . excl::*break-on-warnings*)
     (*break-on-signals* . *break-on-signals*)
     (*random-state* make-random-state nil)
     (*package* find-package :user)
     (*print-simple-array-specialized*)
     (*print-lines*)
     (*print-miser-width* . 40)
     (*print-right-margin*)
     (*print-readably*)
     (*print-gensym* . t)
     (*print-array* . t)
     (*print-case* quote :upcase)
     (*print-circle*)
     (*print-length*)
     (*print-level*)
     (*print-radix*)
     (*print-base* . 10)
     (*print-pretty* system:global-symbol-value '*print-pretty*)
     (*print-escape* . t)
     (*enclose-printer-errors* . *enclose-printer-errors*)
     (*print-nickname* . *print-nickname*)
     (*read-base* . 10)
     (*read-default-float-format* quote single-float)
     (*readtable* copy-readtable nil))

The binding established in this variable are those (typically) needed for an interactive thread. A list of binding (such as this list) should be specified as the initial-bindings ketword argument to tpl:start-interactive-top-level.

See Processes and their dynamic environments (both models) in multiprocessing.htm and Setting global variables in initialization files in startup.htm for a discussion of this variable. See also required-top-level-binding, tpl:start-interactive-top-level, `*default-lisp-listener-bindings*`, and required-thread-binding.

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page is new in the 9.0 release.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Moderate update since 9.0 release.