Разработчик | Символика |
---|---|
Написано в | Лисп |
Семейство ОС | ОС машины Lisp |
Рабочее состояние | Текущий |
Исходная модель | Исходный код доступен |
Первоначальный выпуск | 1982 ( 1982 ) |
Окончательный релиз | Portable Genera 2.0.6 / 17 августа 2024 г. ( 2024-08-17 ) |
Доступно в | Английский |
Платформы | различные машины Symbolics Lisp , DEC Alpha , x86-64 , Arm64 , Apple Silicon M Series |
Тип ядра | Объектно-ориентированный |
Пользовательский интерфейс по умолчанию | Динамический графический интерфейс Windows |
Лицензия | Запатентованный |
Официальный сайт | symbolics-dks.com |
Genera — это коммерческая операционная система и интегрированная среда разработки для машин Lisp , созданная Symbolics . По сути, это ответвление более ранней операционной системы, возникшей на машинах Lisp лаборатории искусственного интеллекта Массачусетского технологического института (MIT) , которые Symbolics использовала совместно с Lisp Machines , Inc. (LMI) и Texas Instruments (TI). Genera также продавалась Symbolics как 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 поддерживает пошаговую и интерактивную разработку сложного программного обеспечения, используя сочетание стилей программирования с расширенной поддержкой объектно-ориентированного программирования .
Операционная система Lisp Machine была написана на языке Lisp Machine Lisp . Это была однопользовательская рабочая станция, изначально ориентированная на разработчиков программного обеспечения для проектов искусственного интеллекта (ИИ). [1] Система имела большой растровый экран, мышь, клавиатуру, сетевой интерфейс, дисковод и слоты для расширения. Операционная система поддерживала это оборудование и предоставляла (среди прочего):
Это уже была полноценная однопользовательская операционная система на базе Lisp и среда разработки.
Операционная система MIT Lisp Machine разрабатывалась с середины 1970-х до начала 1980-х годов.
В 2006 году исходный код этой операционной системы Lisp-машины от Массачусетского технологического института был выпущен как бесплатное программное обеспечение с открытым исходным кодом . [2]
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 machine была разработана на Lisp Machine Lisp с использованием объектно-ориентированного расширения Flavors к этому Lisp. 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 Genera были построены с использованием оригинальной графической системы управления окнами (GUI) операционной системы Lisp Machine. Затем Symbolics разработала радикально новую систему управления окнами под названием Dynamic Windows с пользовательским интерфейсом на основе презентаций . [3] Эта оконная система была представлена в Genera 7 в 1986 году. [4] Многие приложения Genera затем использовали Dynamic Windows для своего пользовательского интерфейса . В конечном итоге был сделан шаг к переносу частей оконной системы для работы на других реализациях Common Lisp другими поставщиками в качестве Common Lisp Interface Manager (CLIM). Версии CLIM были доступны (среди прочих) для Allegro Common Lisp , LispWorks и Macintosh Common Lisp . Доступна версия с открытым исходным кодом ( McCLIM ).
Динамическая Windows использует типизированные объекты для всего вывода на экран. Вся отображаемая информация сохраняет свою связь с отображаемыми объектами ( запись вывода ). Это работает как для текстового, так и для графического вывода. Во время выполнения применимые к этим объектам операции вычисляются на основе иерархии классов и доступных операций ( команд ). Команды организованы в иерархические таблицы команд с типизированными параметрами. Команды можно вводить с помощью мыши (широко используя аккорды мыши ), нажатий клавиш и с помощью интерфейса командной строки. Все приложения совместно используют одну реализацию интерпретатора командной строки, которая адаптируется к различным типам использования. Графические возможности оконной системы основаны на графической модели PostScript .
Пользовательский интерфейс в основном монохромный ( черно-белый ), поскольку это то, что обычно предоставляла аппаратная консоль. Но существует обширная поддержка цвета, использующая буферы цветных кадров или серверы X Window System (X11) с поддержкой цвета. Действия (приложения) используют весь экран с несколькими панелями, хотя окна также могут быть меньше. Макет этих окон действий адаптируется к разным размерам экрана. Действия также могут переключаться между различными макетами панелей.
Genera предоставляет системное меню для управления окнами, переключения приложений и работы с оконной системой. Многие функции пользовательского интерфейса (переключение между действиями, создание действий, остановка и запуск процессов и многое другое) также могут управляться с помощью команд клавиатуры.
Dynamic Lisp Listener — пример интерфейса командной строки с полными графическими возможностями и поддержкой взаимодействия с помощью мыши. Он принимает выражения и команды Lisp в качестве входных данных. Выходные данные чувствительны к мыши. Lisp listener может отображать формы для ввода данных для различных встроенных команд.
Пользовательский интерфейс предоставляет обширную онлайн-справку и контекстную справку , позволяя делать выбор в различных контекстах.
Genera поддерживает полностью гиперссылочную онлайн-документацию. Документация читается с помощью Document Examiner , раннего гипертекстового браузера. Документация основана на небольших повторно используемых записях документации, которые также могут отображаться в различных контекстах с помощью Editor и Lisp Listener. Документация организована в книги и разделы. Книги также были предоставлены в печатных версиях с тем же содержанием, что и онлайн-документация. Информация базы данных документации поставляется с Genera и может быть изменена с помощью инкрементных патчей.
Документация была создана с помощью отдельного приложения, которое не поставлялось с Genera: Symbolics Concordia . Concordia предоставляет расширение для редактора Zmacs для редактирования записей документации, графический редактор и средство предварительного просмотра страниц.
Документация содержит руководства пользователя, инструкции по установке и ссылки на различные конструкции и библиотеки Lisp.
Язык разметки основан на языке разметки Scribe и также может использоваться разработчиком.
Genera поддерживает печать на PostScript-принтерах, предоставляет очередь печати, а также интерпретатор PostScript (написанный на Lisp).
Genera также поддерживает различные сетевые протоколы и приложения, использующие их. Он имеет обширную поддержку TCP/IP .
Genera поддерживает однопроцессорные машины с несколькими потоками (называемыми процессами ).
Genera поддерживает несколько различных типов сборки мусора (GC): полная сборка мусора, сборка мусора на месте, инкрементальная сборка мусора и эфемерная сборка мусора. Эфемерный сборщик использует только физическую память и использует блок управления памятью для получения информации об измененных страницах в физической памяти. Сборщик использует поколения, а виртуальная память делится на области. Области могут содержать объекты определенных типов (строки, битовые карты, имена путей, ...), и каждая область может использовать различные механизмы управления памятью.
Genera реализует две файловые системы : файловую систему FEP для больших файлов и файловую систему Lisp Machine File System (LMFS), оптимизированную для множества маленьких файлов. Эти системы также поддерживают разные версии файлов. Если файл изменен, Genera по-прежнему сохраняет старые версии. Genera также обеспечивает доступ, может читать и записывать в другие, локальные и удаленные, файловые системы, включая: NFS, FTP, HFS, CD-ROM, ленточные накопители .
Genera поддерживает сетевую загрузку.
Genera предоставляет клиент для базы данных объектов Statice от Symbolics.
Genera широко использует систему условий (обработку исключений) для обработки всех видов ошибок времени выполнения и может восстанавливаться после многих из этих ошибок. Например, он позволяет повторять сетевые операции, если сетевое соединение дает сбой; код приложения продолжит работу. При возникновении ошибок пользователям предоставляется меню перезапусков (опции отмены, повтора, продолжения), которые специфичны для сообщенной ошибки.
Genera имеет обширные инструменты отладки.
Genera может сохранять версии работающей системы в мирах . Эти миры могут быть загружены и затем будут содержать все сохраненные данные и код.
Symbolics предоставила несколько языков программирования для использования с Genera:
Символика Common Lisp обеспечивает большую часть стандарта Common Lisp с большим количеством расширений, многие из которых происходят из ZetaLisp.
Примечательно, что эти реализации языка программирования унаследовали некоторые динамические функции системы Lisp (например, сборку мусора и проверку доступа к данным) и поддерживали постепенную разработку программного обеспечения.
Сторонние разработчики предоставили больше языков программирования, таких как OPS5 , и инструментов разработки, таких как среда разработки знаний (KEE) от IntelliCorp).
Symbolics Genera поставляется с несколькими приложениями. Приложения называются действиями . Некоторые из действий:
Компания Symbolics продала несколько приложений, работающих на платформе Symbolics Genera.
Несколько компаний разработали и продали приложения для Symbolics Genera. Некоторые примеры:
Ограничения Genera включают в себя:
Стабильная версия Open Genera, которая может работать на x86-64 или arm64 Linux , а также Apple M1 MacOS, была выпущена [5] и переименована в Portable Genera.
Существует взломанная версия Open Genera, которая может работать на x86-64 Linux . [6] [7]