Jump to content

Genera (operating system)

From Wikipedia, the free encyclopedia
Genera
DeveloperSymbolics
Written inLisp
OS familyLisp machineOS
Working stateMaintained
Source modelSource-available
Initial release1982;42 years ago(1982)
Final releasePortable Genera 2.0 / 2021;3 years ago(2021)
Available inEnglish
PlatformsvariousSymbolicsLisp Machines,
DEC Alpha,
x86-64,
Arm64,
Apple Silicon M Series
KerneltypeObject-oriented
Default
user interface
Dynamic WindowsGUI
LicenseProprietary
Official websitesymbolics-dks.com

Generais acommercialoperating systemandintegrated development environmentforLisp machinescreated bySymbolics.It is essentially aforkof an earlier operating system originating on theMassachusetts Institute of Technology(MIT)AI Lab'sLisp machineswhich Symbolics had used in common withLisp Machines,Inc. (LMI), andTexas Instruments(TI). Genera was also sold by Symbolics asOpen Genera,which runs Genera on computers based on aDigital Equipment Corporation(DEC)Alphaprocessor usingTru64 UNIX.In 2021 a new version was released asPortable Generawhich runs on Tru64 UNIX on Alpha,Linuxonx86-64andArm64Linux,andmacOSon x86-64 and Arm64 (Apple Silicon M Series). It is released andlicensedasproprietary software.

Genera is an example of anobject-oriented operating systembased on the programming languageLisp.

Genera supports incremental and interactive development of complex software using a mix of programming styles with extensive support forobject-oriented programming.

MIT's Lisp machine operating system

[edit]

The Lisp Machine operating system was written inLisp Machine Lisp.It was a one-user workstation initially targeted at software developers forartificial intelligence(AI) projects.[1]The system had a largebitmapscreen, a mouse, a keyboard, anetworkinterface, a disk drive, and slots for expansion. The operating system was supporting this hardware and it provided (among others):

This was already a complete one-user Lisp-based operating system and development environment.

The MIT Lisp machine operating system was developed from the middle 1970s to the early 1980s.

In 2006, thesource codefor this Lisp machine operating system from MIT was released asfree and open-source software.[2]

Genera operating system

[edit]

Symbolicsdeveloped newLisp machinesand published the operating system under the nameGenera.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 andlayered 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 Generavirtual 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 onmagnetic tapeandCD-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 intosystems.These systems bundle sources, binaries and other files. Thesystem 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. Apatchis a file that can be loaded to fix problems or provide extensions to a particular version of a system.

Symbolics developed a version namedOpen 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 SymbolicsS-Graphicssuite). Also, they made a new operating system namedMinimafor embedded uses, inCommon Lisp.The latest version isPortable Genera,which has the virtual machine ported tox86-64,Arm64andApple M1processors - additionally to theDEC Alphaprocessor. The virtual machine then runs under theLinuxandmacOS,additionally toTru64 UNIX.

The original Lisp machine operating system was developed inLisp Machine Lisp,using theFlavorsobject-oriented extension to that Lisp. Symbolics provided a successor to Flavors namedNew Flavors.Later Symbolics also supportedCommon Lispand theCommon 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 (namedZetaLisp) 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).

User interface

[edit]

The early versions of Symbolics Genera were built with the originalgraphical user interface(GUI)windowing systemof the Lisp machine operating system. Symbolics then developed a radically new windowing system namedDynamic Windowswith apresentation-based user interface.[3]This window system was introduced with Genera 7 in 1986.[4]Many of the applications of Genera have then been using Dynamic Windows for theiruser interface.Eventually there was a move to port parts of the window system to run on other Common Lisp implementations by other vendors as theCommon Lisp Interface Manager(CLIM). Versions of CLIM have been available (among others) forAllegro Common Lisp,LispWorks,andMacintosh Common Lisp.An open source version is available (McCLIM).

Dynamic Windowsusestyped objectsfor 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 inhierarchicalcommand tableswith typed parameters. Commands can be entered with the mouse (making extensive use ofmouse 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 thePostScriptgraphics model.

The user interface is mostly inmonochrome(black-and-white) since that was what the hardware console typically provided. But extensive support exists for color, using color frame buffers orX Window System(X11) servers with color support. Theactivities(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 asystem menuto 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.

TheDynamic Lisp Listeneris 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 extensiveonline helpandcontext sensitive help,completion of choices in various contexts.

Documentation

[edit]

Genera supports fullyhyperlinkedonline documentation. The documentation is read with theDocument Examiner,an earlyhypertextbrowser. 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 documentationdatabaseinformation 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: SymbolicsConcordia.Concordia provides an extension to theZmacseditor 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 theScribemarkup 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).

Features

[edit]

Genera also has support for various network protocols and applications using those. It has extensive support forTCP/IP.

Genera supports one-processor machines with several threads (calledprocesses).

Genera supports several different types ofgarbage collection(GC): full GC, in-place GC, incremental GC, and ephemeral GC. The ephemeral collector uses only physical memory and uses thememory managementunit 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 twofile systems:the FEP file system for large files and theLisp 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 theStaticeobject databasefrom Symbolics.

Genera makes extensive use of thecondition 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 toworlds.These worlds can be booted and then will contain all the saved data and code.

Programming languages

[edit]

Symbolics provided severalprogramming languagesfor use with Genera:

  • ZetaLisp,the Symbolics version of Lisp Machine Lisp
  • Common Lispin several versions: Symbolics Common Lisp, Future Common Lisp (ANSI Common Lisp), CLtL1
  • Symbolics Pascal, a version ofPascalwritten in Lisp (Lisp source is included in Genera distribution)
  • Symbolics C, a version ofCwritten in Lisp (Lisp source is included in Genera distribution)
  • Symbolics Fortran, a version ofFortranwritten in Lisp (Lisp source is included in Genera distribution)

Symbolics Common Lisp provides most of the Common Lisp standard with very many extensions, many of them coming from ZetaLisp.

Other languages from Symbolics

[edit]
  • SymbolicsProlog,a version of Prolog written and integrated in Lisp
  • SymbolicsAda,a version of Ada written in Lisp

It is remarkable that these programming language implementations inherited some of the dynamic features of the Lisp system (like garbage collection and checked access to data) and supported incremental software development.

Third-party developers provided more programming languages, such asOPS5,and development tools, such as theKnowledge Engineering Environment(KEE) from IntelliCorp).

Applications

[edit]

Symbolics Genera comes with several applications. Applications are calledactivities.Some of the activities:

  • Zmacs,anEmacs-liketext editor
  • Zmail, a mail reader also providing a calendar
  • File system browser with tools for file system maintenance
  • Lisp Listener with command-line interface
  • Document Examinerfor browsing documentation
  • Restore Distribution to install software.
  • Distribute Systems, to create software distributions
  • Peek to examine system information (processes, windows, network connections,...)
  • Debugger
  • Namespace Editor to access information about objects in the network (users, computers, file systems,...)
  • Converse, a chat client
  • Terminal
  • Inspector, for browsing Lisp data structures
  • Notifications
  • Frame-Up, for designing user interfaces
  • Flavor Examiner, to examine the classes and methods of the Flavor object-oriented extension to Lisp

Other applications from Symbolics

[edit]

Symbolics sold several applications that run on Symbolics Genera.

  • Symbolics Concordia, a document production suite
  • Symbolics Joshua, anexpert systemshell
  • SymbolicsMacsyma,a computer algebra system
  • Symbolics NS, a chip design tool
  • Symbolics Plexi, a neural network development tool
  • Symbolics S-Graphics, a suite of tools: S-Paint, S-Geometry, S-Dynamics, S-Render
  • Symbolics S-Utilities: S-Record, S-Compositor, S-Colorize, S-Convert
  • Symbolics Scope,digital image processingwith a Pixar Image Computer
  • Symbolics Statice, an object database

Third-party applications

[edit]

Several companies developed and sold applications for Symbolics Genera. Some examples:

  • Automated Reasoning Tool (ART), an expert system shell from Inference Corporation
  • ICAD,3d parametric CAD system
  • Illustrate, graphics editor
  • Knowledge Engineering Environment(KEE), an expert system shell, from IntelliCorp
  • Knowledge Craft, an expert system shell, from Carnegie Group
  • Metal, machine translation system from Siemens

Highlights

[edit]
  • Genera is written fully in Lisp, using ZetaLisp and Symbolics Common Lisp, including all low-level system code, such as device drivers, garbage collection, process scheduler, network stacks, etc.
  • The source code is more than a million lines of Lisp, yet relatively compact, compared to the provided functions, due to extensive reuse. It is also available for users to inspect and change.
  • The operating system is mostly written in an object-oriented style using Flavors, New Flavors, and CLOS
  • It has extensive online documentation readable with the Document Examiner
  • Dynamic Windows provides a presentation-based user interface
  • The user interface can be used locally (on Lisp Machines and MacIvories) and remotely (using X11)
  • Groups of developers can work together in a networked environment
  • A centralnamespaceserver provides a directory of machines, users, services, networks, file systems, databases, and more
  • There is little protection against changing the operating system. The whole system is fully accessible and changeable.

Limits

[edit]

Genera's limits include:

  • Only runs on Symbolics Lisp Machines or the Open Genera emulator.
  • Only one user can be logged in at once.
  • Only one Lisp system can run at once. Data and code is shared by applications and the operating system. However, multiple instances of Open Genera can run on one DEC Alpha.
  • Development effectively stopped in the middle 1990s.

Releases

[edit]
  • 1982 – Release 78
  • 1982 – Release 210
  • 1983 – Release 4.0
  • 1984 – Release 5.0
  • 1985 – Release 6.0, introduces Symbolics Common Lisp, the Ephemeral Object Garbage Collector, and Document Examiner
  • 1986 – Genera 7.0, introduces Dynamic Windows
  • 1990 – Genera 8.0, introduces CLOS
  • 1991 – Genera 8.1, introduces CLIM
  • 1992 – Genera 8.2
  • 1993 – Genera 8.3
  • 1993 – Open Genera 1.0, introduces the Virtual Lisp Machine
  • 1998 – Open Genera 2.0
  • 2021 – Portable Genera 2.0, the Virtual Lisp Machine ported to additional platforms

A stable version of Open Genera that can run onx86-64orarm64Linux,andApple M1MacOShas been released.[5]

A hacked version of Open Genera that can run onx86-64Linuxexists.[6][7]

References

[edit]
  1. ^Greenblatt, Richard D.; Knight, Thomas F.; Holloway, John T.; Moon, David A. (1980). "A Lisp Machine".Proceedings of the Fifth Workshop on Computer Architecture for Non-numeric Processing.Association for Computing Machinery – Special Interest Group on Information Retrieval: 137–138.doi:10.1145/800083.802703.S2CID10081363.
  2. ^"Retrocomputing – MIT CADR Lisp Machines".Unlambda.com.Retrieved2018-12-01.
  3. ^Ciccarelli, Eugene C. (August 1, 1984)."Presentation Based User Interface".DSpace@MIT.hdl:1721.1/6946.
  4. ^"Genera 7 Brochure"(PDF).Bitsavers.
  5. ^Palter, Gary (Feb 17, 2021)."And there it is!".twitter.RetrievedJan 9,2022.
  6. ^Wiegley, John (October 23, 2007)."The Symbolics Lisp Machine on Linux".Advogato. Archived fromthe originalon June 30, 2017.RetrievedNovember 22,2011.
  7. ^Collison, Patrick (April 2008)."Lisp Machines".Archived fromthe originalon 2009-08-27.Retrieved2009-08-31.
[edit]