Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Операционная система Symbolics, основанная на Lisp
Symbolics operating system based on Lisp
Genera — коммерческая операционная система и интегрированная среда разработки для машин Lisp, созданная компанией Symbolics. Фактически, это ответвление от более ранней операционной системы, разработанной в Лаборатории искусственного интеллекта Массачусетского технологического института (MIT AI Lab) для машин Lisp, которые Symbolics использовала совместно с компаниями Lisp Machines, Inc. (LMI) и Texas Instruments (TI). Symbolics также продавала Genera под названием Open Genera, которая позволяет запускать Genera на компьютерах, основанных на процессоре Alpha от Digital Equipment Corporation (DEC) с использованием Tru64 UNIX. В 2021 году была выпущена новая версия под названием Portable Genera, работающая на Tru64 UNIX на Alpha, Linux на x86 64 и Arm64 Linux, а также на macOS на x86 64 и Arm64 (Apple Silicon M Series). Она распространяется и лицензируется как проприетарное программное обеспечение. Genera является примером объектно-ориентированной операционной системы, построенной на языке программирования Lisp. Genera поддерживает инкрементную и интерактивную разработку сложного программного обеспечения, используя сочетание стилей программирования с широкой поддержкой объектно-ориентированного подхода.
Genera is a commercial operating system and integrated development environment for Lisp machines created by Symbolics. It is essentially a fork of an earlier operating system originating on the Massachusetts Institute of Technology (MIT) AI Lab's Lisp machines which Symbolics had used in common with Lisp Machines, Inc. (LMI), and Texas Instruments (TI). Genera was also sold by Symbolics as Open Genera, which runs Genera on computers based on a Digital Equipment Corporation (DEC) Alpha processor using Tru64 UNIX. In 2021 a new version was released as Portable Genera which runs on Tru64 UNIX on Alpha, Linux on x86 64 and Arm64 Linux, and macOS on x86 64 and Arm64 (Apple Silicon M Series). It is released and licensed as proprietary software. Genera is an example of an object oriented operating system based on the programming language Lisp. Genera supports incremental and interactive development of complex software using a mix of programming styles with extensive support for object oriented programming.
Операционная система Genera
Symbolics разработала новые машины Lisp и опубликовала операционную систему под названием Genera. Последняя версия – 8.5. Symbolics Genera была разработана в начале 1980-х и начале 1990-х годов. В последние годы разработка сводилась в основном к исправлениям, с очень небольшим количеством новых функций. Symbolics разработала Genera на основе операционной системы машин MIT Lisp. Она продавала операционную систему и многоуровневое программное обеспечение. Некоторые из слоев программного обеспечения были интегрированы в Genera в более поздних выпусках. Symbolics улучшила и расширила программное обеспечение операционной системы, исходно разработанное для машин MIT Lisp. Операционная система Genera была доступна только для машин Symbolics Lisp и виртуальной машины Open Genera. Symbolics Genera обладает множеством функций и поддерживает все версии оборудования, которое Symbolics производила на протяжении своего существования. Ее исходный код насчитывает более миллиона строк, точное количество зависит от выпуска и установленного программного обеспечения. Symbolics Genera распространялась на магнитных лентах и CD-ROM. Выпуск операционной системы также включал большую часть исходного кода операционной системы и ее приложений. Пользователь имел свободный доступ ко всем частям работающей операционной системы и мог вносить изменения и расширения. Исходный код операционной системы разделен на системы. Эти системы объединяют исходные тексты, двоичные файлы и другие файлы. Инструментарий построения систем (SCT) поддерживает зависимости, компоненты и версии всех систем. Система имеет два номера: основной и дополнительный. Основной номер версии указывает количество полных сборок системы, а дополнительный – количество исправлений для этой системы. Исправление – это файл, который можно загрузить для устранения проблем или добавления расширений к определенной версии системы. Symbolics разработала версию под названием Open Genera, которая включала виртуальную машину, позволяющую выполнять Genera на рабочих станциях на базе DEC Alpha, а также несколько расширений и приложений Genera, продаваемых отдельно (например, пакет Symbolics S Graphics). Кроме того, была создана новая операционная система Minima для встраиваемых систем, написанная на Common Lisp. Последней версией является Portable Genera, в которой виртуальная машина портирована на процессоры x86 64, Arm64 и Apple M1, в дополнение к процессору DEC Alpha. Виртуальная машина затем работает под Linux и macOS, в дополнение к Tru64 UNIX. Оригинальная операционная система для машин Lisp была разработана на Lisp Machine Lisp с использованием объектно-ориентированного расширения Flavors. Symbolics предоставила преемника Flavors под названием New Flavors. Позже Symbolics также поддерживала Common Lisp и Common Lisp Object System (CLOS). Symbolics Common Lisp стала диалектом Lisp по умолчанию для разработки программного обеспечения для Genera. Программное обеспечение операционной системы было написано в основном на Lisp Machine Lisp (под названием ZetaLisp) и Symbolics Common Lisp. Оба этих диалекта Lisp предоставляются Genera. Также некоторые части программного обеспечения использовали Flavors, New Flavors и Common Lisp Object System. Некоторые старые части операционной системы Genera были переписаны на Symbolics Common Lisp и Common Lisp Object System. Многие части операционной системы оставались написанными на ZetaLisp и Flavors (или New Flavors).
Symbolics developed new Lisp machines and published the operating system under the name Genera. The latest version is 8.5. Symbolics Genera was developed in the early 1980s and early 1990s. In the final years, development entailed mostly patches, with very little new function. Symbolics developed Genera based on this foundation of the MIT Lisp machine operating system. It sells the operating system and layered software. Some of the layered software has been integrated into Genera in later releases. Symbolics improved the operating system software from the original MIT Lisp machine and expanded it. The Genera operating system was only available for Symbolics Lisp machines and the Open Genera virtual machine. Symbolics Genera has many features and supports all the versions of various hardware that Symbolics built over its life. Its source code is more than a million lines; the number depends on the release and what amount of software is installed. Symbolics Genera was published on magnetic tape and CD ROM. The release of the operating system also provided most of the source code of the operating system and its applications. The user has free access to all parts of the running operating system and can write changes and extensions. The source code of the operating system is divided into systems. These systems bundle sources, binaries and other files. The system construction toolkit (SCT) maintains the dependencies, the components and the versions of all the systems. A system has two numbers: a major and a minor version number. The major version number counts the number of full constructions of a system. The minor version counts the number of patches to that system. A patch is a file that can be loaded to fix problems or provide extensions to a particular version of a system. Symbolics developed a version named Open Genera, that included a virtual machine that enabled executing Genera on DEC Alpha based workstations, plus several Genera extensions and applications that were sold separately (like the Symbolics S Graphics suite). Also, they made a new operating system named Minima for embedded uses, in Common Lisp. The latest version is Portable Genera, which has the virtual machine ported to x86 64, Arm64 and Apple M1 processors additionally to the DEC Alpha processor. The virtual machine then runs under the Linux and macOS, additionally to Tru64 UNIX. The original Lisp machine operating system was developed in Lisp Machine Lisp, using the Flavors object oriented extension to that Lisp. Symbolics provided a successor to Flavors named New Flavors. Later Symbolics also supported Common Lisp and the Common Lisp Object System (CLOS). Then Symbolics Common Lisp became the default Lisp dialect for writing software with Genera. The software of the operating system was written mostly in Lisp Machine Lisp (named ZetaLisp) and Symbolics Common Lisp. These Lisp dialects are both provided by Genera. Also parts of the software was using either Flavors, New Flavors, and Common Lisp Object System. Some of the older parts of the Genera operating system have been rewritten in Symbolics Common Lisp and the Common Lisp Object system. Many parts of the operating systems remained written in ZetaLisp and Flavors (or New Flavors).
Пользовательский интерфейс
Ранние версии Symbolics Genera были созданы на основе оригинальной графической пользовательской системы (GUI) оконного интерфейса операционной системы Lisp-машины. Затем Symbolics разработала радикально новую оконную систему под названием Dynamic Windows с пользовательским интерфейсом, основанным на представлении. Эта оконная система была представлена вместе с Genera 7 в 1986 году. Многие приложения Genera впоследствии использовали Dynamic Windows для своего пользовательского интерфейса. В конечном итоге была предпринята попытка портировать части оконной системы для работы на других реализациях Common Lisp от других поставщиков в виде Common Lisp Interface Manager (CLIM). Версии CLIM были доступны (в частности) для Allegro Common Lisp, LispWorks и Macintosh Common Lisp. Существует версия с открытым исходным кодом (McCLIM). Dynamic Windows использует типизированные объекты для всего вывода на экран. Вся отображаемая информация сохраняет связь с отображаемыми объектами (регистрация вывода). Это работает как с текстовым, так и с графическим выводом. Во время выполнения применимые операции к этим объектам вычисляются на основе иерархии классов и доступных операций (команд). Команды организованы в иерархических таблицах команд с типизированными параметрами. Команды можно вводить с помощью мыши (с широким использованием аккордов мыши), нажатий клавиш и через интерфейс командной строки. Все приложения используют единую реализацию интерпретатора командной строки, которая адаптируется к различным типам использования. Графические возможности оконной системы основаны на графической модели PostScript. Пользовательский интерфейс в основном монохромный (черно-белый), поскольку именно это обычно предоставляла аппаратная консоль. Однако существует широкая поддержка цвета с использованием цветовых буферов кадров или серверов X Window System (X11) с поддержкой цвета. Приложения (действия) используют весь экран с несколькими панелями, хотя окна также могут быть меньше. Расположение этих окон действий адаптируется к различным размерам экрана. Действия также могут переключаться между различными раскладами панелей. Genera предоставляет системное меню для управления окнами, переключения между приложениями и управления оконной системой. Многие функции пользовательского интерфейса (переключение между действиями, создание действий, остановка и запуск процессов и многое другое) также могут управляться с помощью команд клавиатуры. Dynamic Lisp Listener является примером интерфейса командной строки с полными графическими возможностями и поддержкой взаимодействия с помощью мыши. Он принимает выражения и команды Lisp в качестве входных данных. Вывод чувствителен к действиям мыши. Слушатель Lisp может отображать формы для ввода данных для различных встроенных команд. Пользовательский интерфейс предоставляет обширную онлайн-справку и контекстную справку, а также автозаполнение вариантов в различных контекстах.
The early versions of Symbolics Genera were built with the original graphical user interface (GUI) windowing system of the Lisp machine operating system. Symbolics then developed a radically new windowing system named Dynamic Windows with a presentation based user interface. This window system was introduced with Genera 7 in 1986. Many of the applications of Genera have then been using Dynamic Windows for their user interface. Eventually there was a move to port parts of the window system to run on other Common Lisp implementations by other vendors as the Common Lisp Interface Manager (CLIM). Versions of CLIM have been available (among others) for Allegro Common Lisp, LispWorks, and Macintosh Common Lisp. An open source version is available (McCLIM). Dynamic Windows uses typed objects for all output to the screen. All displayed information keeps its connection to the objects displayed (output recording). This works for both textual and graphical output. At runtime the applicable operations to these objects are computed based on the class hierarchy and the available operations (commands). Commands are organized in hierarchical command tables with typed parameters. Commands can be entered with the mouse (making extensive use of mouse chording), keystrokes, and with a command line interface. All applications share one command line interpreter implementation, which adapts to various types of usage. The graphical abilities of the window system are based on the PostScript graphics model. The user interface is mostly in monochrome (black and white) since that was what the hardware console typically provided. But extensive support exists for color, using color frame buffers or X Window System (X11) servers with color support. The activities (applications) use the whole screen with several panes, though windows can also be smaller. The layout of these activity windows adapts to different screen sizes. Activities can also switch between different pane layouts. Genera provides a system menu to control windows, switch applications, and operate the window system. Many features of the user interface (switching between activities, creating activities, stopping and starting processes, and much more) can also be controlled with keyboard commands. The Dynamic Lisp Listener is an example of a command line interface with full graphics abilities and support for mouse based interaction. It accepts Lisp expressions and commands as input. The output is mouse sensitive. The Lisp listener can display forms to input data for the various built in commands. The user interface provides extensive online help and context sensitive help, completion of choices in various contexts.
Документация
Genera поддерживает полностью гипертекстную онлайн-документацию. Документация просматривается с помощью Document Examiner – одного из первых гипертекстовых браузеров. Документация построена на небольших, повторно используемых документационных фрагментах, которые также могут отображаться в различных контекстах в редакторе и Lisp-интерпретаторе. Документация организована в книги и разделы. Книги также выпускались в печатном виде с тем же содержанием, что и онлайн-документация. Информация в базе данных документации поставляется вместе с Genera и может быть изменена с помощью инкрементных патчей. Документация была создана с помощью отдельного приложения, не включенного в поставку Genera: Symbolics Concordia. Concordia предоставляет расширение для редактора Zmacs для редактирования документационных фрагментов, графический редактор и средство предварительного просмотра страниц. Документация содержит руководства пользователя, инструкции по установке и справочную информацию по различным конструкциям и библиотекам Lisp. Язык разметки основан на языке Scribe и также доступен для разработчиков. Genera поддерживает печать на PostScript-принтерах, предоставляет очередь печати и интерпретатор PostScript (написанный на Lisp).
Genera supports fully hyperlinked online documentation. The documentation is read with the Document Examiner, an early hypertext browser. The documentation is based on small reusable documentation records that can also be displayed in various contexts with the Editor and the Lisp Listener. The documentation is organized in books and sections. The books were also provided in printed versions with the same contents as the online documentation. The documentation database information is delivered with Genera and can be modified with incremental patches. The documentation was created with a separate application that was not shipped with Genera: Symbolics Concordia. Concordia provides an extension to the Zmacs editor for editing documentation records, a graphics editor and a page previewer. The documentation provides user guides, installation guidelines and references of the various Lisp constructs and libraries. The markup language is based on the Scribe markup language and also usable by the developer. Genera supports printing to postscript printers, provides a printing queue and also a PostScript interpreter (written in Lisp).
Особенности
Genera также поддерживает различные сетевые протоколы и приложения, использующие их. Она обладает широкой поддержкой TCP/IP. Genera поддерживает однопроцессорные машины с несколькими потоками (называемыми процессами). Genera поддерживает несколько различных типов сборки мусора (GC): полную GC, сборку мусора на месте, инкрементную GC и эфемерную GC. Эфемерный сборщик использует только физическую память и использует блок управления памятью для получения информации об измененных страницах в физической памяти. Сборщик использует поколения, а виртуальная память разделена на области. Области могут содержать объекты определенных типов (строки, растровые изображения, имена путей и т.д.), и каждая область может использовать различные механизмы управления памятью. Genera реализует две файловые системы: файловую систему FEP для больших файлов и файловую систему Lisp Machine (LMFS), оптимизированную для множества небольших файлов. Эти системы также поддерживают различные версии файлов. Если файл изменяется, Genera сохраняет предыдущие версии. Genera также обеспечивает доступ для чтения и записи к другим локальным и удаленным файловым системам, включая NFS, FTP, HFS, CD-ROM, магнитные ленты. Genera поддерживает сетевую загрузку. Genera предоставляет клиент для объектной базы данных Statice от Symbolics. Genera широко использует систему условий (обработку исключений) для обработки всех видов ошибок времени выполнения и способна восстанавливаться после многих из них. Например, она позволяет повторить сетевые операции в случае сбоя сетевого соединения, при этом код приложения продолжит выполняться. При возникновении ошибок пользователю предоставляется меню перезапуска (отмена, повтор, продолжение), специфичное для возникшей ошибки. Genera располагает обширными инструментами отладки. Genera может сохранять версии работающей системы в «мирах». Эти «миры» можно загрузить, и они будут содержать все сохраненные данные и код.
Genera also has support for various network protocols and applications using those. It has extensive support for TCP/IP. Genera supports one processor machines with several threads (called processes). Genera supports several different types of garbage collection (GC): full GC, in place GC, incremental GC, and ephemeral GC. The ephemeral collector uses only physical memory and uses the memory management unit to get information about changed pages in physical memory. The collector uses generations and the virtual memory is divided into areas. Areas can contain objects of certain types (strings, bitmaps, pathnames, ), and each area can use different memory management mechanisms. Genera implements two file systems: the FEP file system for large files and the Lisp Machine File System (LMFS) optimized for many small files. These systems also maintain different versions of files. If a file is modified, Genera still keeps the old versions. Genera also provides access to, can read from and write to, other, local and remote, file systems including: NFS, FTP, HFS, CD ROMs, tape drives. Genera supports netbooting. Genera provides a client for the Statice object database from Symbolics. Genera makes extensive use of the condition system (exception handling) to handle all kinds of runtime errors and is able to recover from many of these errors. For example, it allows retrying network operations if a network connection has a failure; the application code will keep running. When errors occur, users are presented a menu of restarts (abort, retry, continue options) that are specific to the error signalled. Genera has extensive debugging tools. Genera can save versions of the running system to worlds. These worlds can be booted and then will contain all the saved data and code.