АнглийскийФранцузскийИспанский

Значок OnWorks

sbcl - Онлайн в облаке

Запустите sbcl в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда sbcl, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


SBCL - Steel Bank Common Lisp

ОПИСАНИЕ


SBCL - это реализация ANSI Common Lisp с высокопроизводительным собственным
компилятор, собственные потоки на нескольких платформах, интерфейс сокета, исходный уровень
отладчик, статистический профилировщик и многое другое.

Это бесплатное программное обеспечение, в основном общедоступное, но с некоторыми подсистемами в стиле BSD.
лицензии, разрешающие модификацию и повторное использование при условии предоставления кредита. Предоставляется "как
есть ", без каких-либо гарантий.

Дополнительные сведения о проблемах с лицензией см. В файле КОПИРОВАНИЕ в дистрибутиве. Для
более подробную информацию об истории смотрите в файле CREDITS в раздаче.

БЕГ СБКЛ


Чтобы запустить SBCL, введите «sbcl». После сообщений о запуске появляется подсказка («*»). Введите Лисп
выражение, и SBCL прочитает и выполнит его, распечатает любые возвращенные значения, даст вам другое
и дождитесь следующего ввода.

$ сбкл
... [сообщения запуска опущены] ...
* (+ 1 2 3)

6
* (выход)

Большинству людей нравится запускать SBCL как подпроцесс в Emacs. Режим Emacs "Slime" предоставляет
множество удобных функций, таких как редактирование командной строки, завершение табуляции и различные виды
связь между исходными файлами Common Lisp и интерактивным подпроцессом SBCL.

Для получения информации о создании «автономных исполняемых файлов» с помощью SBCL см.
SB-EXT: SAVE-LISP-AND-DIE в Руководстве пользователя.

КОМАНДА ЛИНИЯ СИНТАКСИС


Для обычного интерактивного использования аргументы командной строки не требуются.

Чтобы понять синтаксис командной строки SBCL, полезно понимать, что
Система состоит из двух частей: среды выполнения и системы Common Lisp.
поддерживает. Некоторые аргументы командной строки обрабатываются во время инициализации
время выполнения, а некоторые во время инициализации системы Lisp - любая оставшаяся команда
строковые аргументы передаются пользовательскому коду.

Общий синтаксис командной строки:

сбкл [время выполнения параметры] --end-runtime-параметры [высший уровень параметры] --end-toplevel-параметры
[Пользователь параметры]

Оба параметра --end-runtime-options и --end-toplevel-options являются необязательными и могут быть опущены.
Они предназначены для использования в ситуациях, когда любые параметры командной строки находятся под пользователем.
контроль (например, в пакетных файлах): используя их, вы можете предотвратить параметры, предназначенные для вашего
программа случайно обрабатывается SBCL.

Поддерживаемые параметры среды выполнения:

--основной
Используйте указанный файл ядра Lisp вместо файла по умолчанию. (См. Раздел ФАЙЛЫ для
стандартное ядро ​​или системная документация для SB-EXT: SAVE-LISP-AND-DIE для информации
о том, как создать собственное ядро.) Обратите внимание, что если файл ядра Lisp создан пользователем
core-файл, он может запускать нестандартный верхний уровень, который не распознает стандартный
варианты верхнего уровня.

--динамический размер-пространства
Размер динамического пространства, зарезервированного при запуске, в мегабайтах. Значение по умолчанию - платформа.
зависимый.

- размер стека управления
Размер стека управления, зарезервированного для каждого потока, в мегабайтах. Значение по умолчанию - 2.

--ноинформ
Подавить печать любого баннера или другого информационного сообщения при запуске. (Этот
упрощает написание программ на Лиспе, которые корректно работают в конвейерах Unix. Смотрите также
параметры "--noprint" и "--disable-debugger".)

--disable-ldb
Отключите отладчик нижнего уровня. Действует только в том случае, если SBCL скомпилирован с LDB.

- близость к коррупции
Есть некоторые опасные ошибки низкого уровня (например, стек управления исчерпан,
memory fault), которые (или чьи обработчики) могут повредить образ. По умолчанию SBCL печатает
предупреждение, затем пытается продолжить и обработать ошибку в Лиспе, но это не всегда
работают и SBCL может работать неправильно или даже зависать. С этой опцией, столкнувшись с такой
ошибка SBCL вызовет ldb (если он присутствует и включен) или завершит работу.

--скрипт
Как вариант времени выполнения, эквивалентный --noinform --disable-ldb --lose-on-коррупция
--end-runtime-options --script . См. Описание --script как
вариант верхнего уровня ниже.

--merge-core-страницы
При наличии поддержки платформы предоставьте операционной системе подсказки, идентичные
страницы могут совместно использоваться процессами до тех пор, пока они не будут записаны. Это может быть полезно
уменьшить использование памяти в системах с несколькими процессами SBCL, запущенными с аналогичных
но файлы ядра с другими именами или из сжатых ядер. Без поддержки платформы,
ничего не делать.

--no-merge-core-pages
Гарантирует, что для операционной системы не предоставляется подсказка о совместном использовании.

--default-merge-core-pages
Возвращает политику подсказок общего доступа к значениям по умолчанию: только сжатые ядра запускают подсказку.
Несжатые ядра отображаются непосредственно из файла ядра, чего обычно достаточно, чтобы
обеспечить совместное использование.

--Помогите
Распечатайте основную информацию о SBCL и выйдите.

--версия
Распечатайте информацию о версии SBCL и выйдите.

В будущем параметры среды выполнения могут быть добавлены для управления поведением, например ленивым распределением
Память.

Параметры времени выполнения, включая любой параметр --end-runtime-options, удаляются из
командная строка до того, как логика верхнего уровня Лиспа сможет ее увидеть.

Стандартное ядро ​​SBCL поддерживает следующие варианты верхнего уровня:

--sysinit
Загрузить имя файла вместо общесистемного файла инициализации по умолчанию. (См. ФАЙЛЫ
раздел.)

--no-sysinit
Не загружайте общесистемный файл инициализации. Если задана эта опция, --sysinit
опция игнорируется.

--userinit
Загрузить имя файла вместо файла инициализации пользователя по умолчанию. (См. Раздел ФАЙЛЫ.)

--no-userinit
Не загружайте файл инициализации пользователя. Если задана эта опция, опция --userinit
игнорируется

--евал
После выполнения любого файла инициализации, но перед запуском цикла чтения-оценки-печати
на стандартном вводе прочтите и оцените данную команду. Можно использовать более одного параметра --eval.
будут использоваться, и все будут прочитаны и выполнены в том порядке, в котором они указаны в команде
линии.

--нагрузка
Это эквивалентно --eval '(load " ")". Специальный синтаксис предназначен для
уменьшить головную боль при цитировании при вызове SBCL из сценариев оболочки.

- отпечаток
Когда обычно выполняется цикл «чтение-оценка-печать» верхнего уровня, выполните команду «чтение-оценка-печать».
eval loop "вместо этого, т.е. не выводить подсказку и не выводить результаты. В сочетании с
--noinform runtime, это упрощает написание "скриптов" Lisp, которые работают
чисто в конвейерах Unix.

--отключить-отладчик
По умолчанию, когда SBCL обнаруживает ошибку, он входит во встроенный отладчик, что позволяет
интерактивная диагностика и возможное вмешательство. Эта опция отключает отладчик,
вызывая ошибки, чтобы напечатать обратную трассировку и вместо этого выйти со статусом 1 - это режим
операции лучше подходят для пакетной обработки. См. Руководство пользователя на
SB-EXT: DISABLE-DEBUGGER для подробностей.

--покидать
В конце обработки опций верхнего уровня выйдите из SBCL с успешным кодом, равным нулю.
Обратите внимание, что действие этой опции откладывается до тех пор, пока не появятся опции верхнего уровня, следующие за
вот этот.

- неинтерактивный
Эта опция отключает цикл чтения-оценки-печати как для исключительных, так и для неисключительных
причины. Это сокращение от --disable-debugger и --quit в сочетании и полезно
для пакетного использования, когда обработка специальных опций, подразумеваемая --script, нежелательна.

--скрипт
Подразумевает --no-sysinit --no-userinit --disable-debugger --end-toplevel-options.

Заставляет систему загрузить указанный файл и сразу после этого выйти, вместо этого
входа в цикл чтения-оценки-печати. Если файл начинается со строки shebang, это
игнорируются.

Независимо от порядка, в котором параметры верхнего уровня отображаются в командной строке, порядок
действия:

1. Отладчик отключается, если требуется.

2. Загружается любой файл инициализации системы, если он не запрещен.

3. Загружается любой файл инициализации пользователя, если он не запрещен.

4. Опции --eval и --load обрабатываются в указанном порядке.

Наконец, либо вводится цикл чтения-оценки-печати, либо файл, указанный с помощью --script
опция загружена.

При запуске в цикле чтение-оценка-печать система завершает работу в конце файла. Точно так же
система завершает работу сразу после обработки файла, указанного с помощью --script.

Обратите внимание, что при запуске SBCL с параметром --core с использованием файла ядра, созданного пользователем
вызов SB-EXT: SAVE-LISP-AND-DIE, параметры верхнего уровня могут находиться под контролем
код пользователя, переданный в качестве аргументов SB-EXT: SAVE-LISP-AND-DIE. Для этого
Сама опция --end-toplevel-options может считаться опцией верхнего уровня, т.е. Пользователь
core, по своему усмотрению, может не поддерживать его.

В стандартной последовательности запуска SBCL (т.е. без участия пользовательского ядра) варианты верхнего уровня
и любой параметр --end-toplevel-options удаляется из списка аргументов командной строки
до того, как пользовательский код сможет его увидеть.

О проекте


SBCL является производным от CMU CL. (Имя предназначено для подтверждения соединения:
сталь и банковское дело - отрасли, в которых Карнеги и Меллон заработали большие деньги.)

SBCL компилируется по умолчанию: компилируются даже функции, введенные в цикл чтение-оценка-печать.
в машинный код, если оценщик не был явно включен. (Даже сегодня около 30
спустя годы после компилятора MacLisp люди скажут вам, что Lisp - это интерпретируемый
язык. Игнорируй их.)

SBCL стремится, но не полностью соответствует стандарту ANSI для Common
Лисп. Более подробная информация об этом доступна в разделе ОШИБКИ ниже.

SBCL также включает в себя различные расширения, отличные от ANSI, более подробно описанные в Руководстве пользователя.
Некоторые из них входят в базовую систему, а другие представляют собой дополнительные модули, загружаемые по запросу.
используя REQUIRE. Например, чтобы загрузить модуль SB-BSD-SOCKETS, который предоставляет TCP / IP
подключение,
* (требуется 'asdf')
* (требуется 'sb-bsd-sockets)

Для получения дополнительной информации см. Руководство пользователя.

КОМПИЛЯТОР


SBCL наследует от CMU CL компилятор собственного кода Python. (Хотя мы часто избегаем этого
имя, чтобы избежать путаницы с языком сценариев, также называемым Python.)
компилятор очень умно понимает систему типов Common Lisp и использует ее для
оптимизировать код, а также о создании заметок, чтобы пользователь знал, когда компилятор не
иметь достаточно информации о типе для создания эффективного кода. Он также пытается (почти всегда
успешно) следовать необычному, но очень полезному принципу, что "объявления
утверждения ", т.е. объявления типов следует проверять во время выполнения, если пользователь
явно сообщает системе, что скорость важнее безопасности.

Скомпилированный код использует сборку мусора для автоматического управления памятью. Мусор
реализация сборщика значительно различается от ЦП к ЦП. В частности, на некоторых процессорах
сборщик мусора почти точен, в то время как на других он более консервативен, а на некоторых процессорах сборщик мусора
поколенческий, в то время как на других используются более простые стратегии остановки и копирования.

Дополнительные сведения о компиляторе см. В руководстве пользователя.

СИСТЕМА ТРЕБОВАНИЯ


SBCL в настоящее время работает на X86 (Linux, FreeBSD, OpenBSD и NetBSD), X86-64 (Linux), Alpha
(Linux, Tru64), PPC (Linux, Darwin / MacOS X), SPARC (Linux и Solaris 2.x) и MIPS
(Linux). Для получения информации о других текущих и возможных портах см. Рассылку sbcl-devel.
список и / или веб-сайт.

SBCL требует порядка 16 МБ ОЗУ для работы в системах X86, хотя почти все, кроме самых маленьких.
программам было бы лучше с 32Мб и более.

KNOWN ОШИБКИ


В этом разделе делается попытка перечислить наиболее серьезные и давние ошибки. Для более подробной информации
а текущую информацию об ошибках смотрите в файле BUGS в раздаче.

Израсходовав кучу памяти, можно попасть в серьезные неприятности. Система SBCL
перегружает память при запуске, поэтому в типичных Unix-подобных системах, таких как Linux и FreeBSD, это
означает, что если окажется, что система SBCL использует больше виртуальной памяти, чем имеет система
доступны для него, другие процессы, как правило, убиваются случайным образом (!).

Обработка компилятором значений, возвращаемых функцией, излишне нарушает "декларации".
являются утверждениями "принципа, которого он придерживается в противном случае. Использование PROCLAIM или DECLAIM для
указание возвращаемого типа функции заставляет компилятор поверить вам без проверки.
Таким образом, компилируя файл, содержащий
(DECLAIM (FTYPE (FUNCTION (T) NULL) ИНОГДА))
(ОТКАЗАТЬ ИНОГДА (X) (ODDP X))
(DEFUN FOO (X) (ЕСЛИ (ИНОГДА X) 'В ЭТО ВРЕМЯ' НЕ В ЭТО ВРЕМЯ))
затем запуск (FOO 1) дает НЕ ЭТО ВРЕМЯ, потому что компилятор полагался на истинность
ЗАЯВЛЯТЬСЯ без проверки.

Некоторые вещи реализованы очень неэффективно.

- Многомерные массивы неэффективны, особенно многомерные массивы с плавающей запятой.
номера точек.

- SBCL, как и большинство (может быть, все?) Реализаций Common Lisp на стандартном оборудовании, имеет
проблемы с эффективной передачей чисел с плавающей запятой, потому что
число, плюс несколько дополнительных битов для определения его типа, больше машинного слова.
(Таким образом, они попадают в «коробку» в хранилище, выделенном в куче, что приводит к накладным расходам сборщика мусора.) В пределах
единая единица компиляции, или при выполнении встроенных операций, таких как SQRT и AREF, или некоторых
специальные операции, такие как доступ к структурным слотам, этого можно избежать: см. руководство пользователя
для некоторых советов по эффективности. Но для общих вызовов функций через границы
единицы компиляции, передавая результат вычисления с плавающей запятой как функцию
аргумент (или возвращающий результат с плавающей запятой как значение функции) по сути
медленная работа.

СОСТАВЛЕНИЕ ОТЧЕТОВ ОШИБКИ


Чтобы сообщить об ошибке, отправьте письмо в списки рассылки sbcl-help или sbcl-devel. Вы можете
найти полные адреса списков рассылки на веб-страницах по адресу
<http://sbcl.sourceforge.net/>; обратите внимание, что в качестве меры по снижению спама вы должны подписаться
в списки, прежде чем вы сможете опубликовать. (Вы также можете найти причудливое отслеживание ошибок SourceForge
машины есть, но не дайте себя обмануть. Как бы то ни было, по состоянию на 2002 июля 07 г. мы не ведем активного мониторинга
этот механизм, и он существует только потому, что мы не смогли понять, как превратить
это от.)

Как и любой отчет об ошибке в программном обеспечении, будет очень полезно, если вы предоставите достаточно информации.
чтобы достоверно воспроизвести симптомы, и если вы четко скажете, каковы симптомы. Для
Например: «Кажется, что-то не так с TAN из очень маленьких отрицательных аргументов.
Когда я выполняю (TAN LEAST-NEGATIVE-SINGLE-FLOAT) в интерактивном режиме на sbcl-1.2.3 на моем Linux
4.5 Коробка X86, я получаю ошибку UNBOUND-VARIABLE. "

РАЗЛИЧИЯ от КМУ CL


SBCL может быть построен с нуля, используя простую ванильную систему ANSI Common Lisp и C
компилятор, и все его свойства определяются версией исходного кода, который
он был создан из. Эта возможность чистой начальной загрузки была непосредственной мотивацией для создания форка.
вне дерева разработки CMU CL. Мотивированы различные различия в реализации
по этой цели дизайна.

Работы по техобслуживанию в SBCL, поскольку вилка несколько отличается от работ по техобслуживанию в
CMU CL. Многие, но не все исправления ошибок и улучшения были разделены между двумя
проекты, а иногда два проекта расходятся во мнениях о том, что было бы улучшением.

Большинство расширений, поддерживаемых CMU CL, были отделены от SBCL, включая Motif
поддержка, редактор Hemlock, пути поиска, протокол WIRE, различные макросы пользовательского уровня
и функции (или LETF, ITERATE, MEMQ, REQUIRED-ARGUMENT) и многие другие.

(Почему SBCL изначально не поддерживает больше расширений? Зачем отказываться от всех этих хороших расширений
из CMU CL, когда код уже существует? Это часто задаваемый вопрос на
список рассылки. Есть две основные причины. Во-первых, это вопрос философии дизайна:
возможно, SBCL выполнила свою работу, предоставив стабильный FFI, и правильным дизайнерским решением является
чтобы переместить производные от этого функциональные возможности, такие как поддержка сокетов, в отдельные библиотеки.
Некоторые из них распространяются вместе с SBCL как модули "contrib", другие распространяются как
отдельные программные пакеты отдельными сопровождающими. Во-вторых, это практическое решение -
мы надеемся, что сосредоточение внимания на меньшем количестве вещей позволит нам лучше справиться с ними.)

ПОДДЕРЖКA


Различная информация о SBCL доступна на сайтеhttp://www.sbcl.org/>. Списки рассылки
есть рекомендованное место для поиска поддержки.

АВТОРЫ


Десятки людей внесли существенный вклад в SBCL и его подсистемы, а также в
система CMU CL, на которой она была основана, на протяжении многих лет. См. Файл CREDITS в
распространение для получения дополнительной информации.

ОКРУЖАЮЩАЯ СРЕДА


SBCL_HOME Эта переменная определяет, где такие файлы, как "sbclrc", "sbcl.core" и надстройка
Ищутся системы contrib. Если он не установлен, то sbcl устанавливает его из
расположение по умолчанию во время компиляции, которое обычно / usr / local / lib / sbcl /, но может иметь
был изменен или сторонним упаковщиком.

Используйте sbcl онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad