.Dd January 17, 2006 .Dt SLATE 1 .Nm slate 0.4 .Sh NAME .Nm slate .Nd the Slate programming language, an interactive object-oriented programming language and environment .Sh SYNOPSIS .Sy slate .Op Fl hv .Op Fl -memory Ar heaplimit .Op Oo Fl c Oc Ar scriptfile .Op Fl i Ar imagefile .Oo .Bk .Ar image-argument ... .Ek .Oc .Sh COPYRIGHT Slate is Copyright (C) 2002-2006 by Lee Salzman and Brian T. Rice .Sh DESCRIPTION .Pp Slate is a dynamic, object-oriented programming language and live-object programming environment that is flexible enough to fit many different styles of usage. .Pp Slate's implementation is clean, modular, and highly portable, relying only on .St -ansiC language features. .Pp The Slate Programmer's Reference Manual describes the syntax and semantics of the language and the standard core libraries in detail, and provides an index of major common features. Slate documentation may be found via the .Sx "INTERNET RESOURCES" section below, or installed locally with a standard binary package. .Pp Slate's core features (there are many more): .Bl -tag -width 4n .It Sy Interactive Slate is implemented with an interactive listener that takes expressions dynamically. Compilation does not interrupt interactions and is quick. .It Sy Live Slate works with worlds of living objects called .Em images which can be snapshot, saved, and restarted transparently for the programs within them. .It Sy "Declarations Optional" Slate programs do not need to be explicitly typed, even though objects know their types. .It Sy Uniformity Everything in Slate is an object, and the system is designed to be more generic than its predecessors about objects. .It Sy "Object creation from prototypes" Each object is a dynamic template for creating more objects, not just static classes. Objects are also self-describing. .It Sy "Multiple Dispatch" Methods and operators can be specialized on any argument. .El .Sh OPTIONS .Bl -tag -width 8n -compact .It Fl -help Prints out the VM command-line options. .It Fl -version Prints out the VM version. .It Fl -image-help Requests to the image heap to print out the command options that it handles. .It Fl -memory Ar memory Oo GgMmKk Oc Specifies the memory limit to allow beyond the loaded heap size. A suffix for memory unit may be specified as (one of) [KkMmGg]. .It Fl c Ar scriptfile .It Fl -script Ar scriptfile Execute the script and then exit with a status code for its termination. .It Fl i Ar imagefile .It Fl -image Ar imagefile Runs the VM with the given saved image of Slate objects. Every VM needs an image to run. By default it takes .Pa ./slate.image or .Pa ${datadir}/slate.image . .It Fl -load Ar file Starts Slate and immediately executes the source in the given file before doing anything else. .It Fl -eval Ar expression Executes the given expression when starting, once any load has completed. .El Other helpful information and examples can be found in .Pa ${prefix}/doc/slate . .Sh FILES .Bl -tag -width "1234567890123" -compact .It Pa ${exec_prefix}/bin/slate Recommended location of the Slate virtual machine. .It Pa ${exec_prefix}/share/slate/ Recommended location of the default Slate object images, namely .Sy kernel.image and .Sy slate.image . .It Pa ${exec_prefix}/share/slate/src/ The standard library sources. .El .Sh ENVIRONMENT .Bl -tag -width "SLATEPATH" -compact .It Ev SLATEPATH A colon-separated list of directories that are appended to Slate's default library load path. .El .Sh DIAGNOSTICS .Ex -std slate .Bl -diag .It You must specify an image filename after -i/--image. An image filename wasn't given. .It Slate: Attempted to grow heap beyond limits The VM tried to allocate more memory to accommodate object creation requests, but ran into the static memory limit. .It Slate: Attempted to shrink heap to zero size The VM was requested to shrink the heap size to an invalid amount. .It Slate: : Could not open image file The VM could not find or open the specified file as a heap. .It Slate: : Invalid image header The image file had an incorrect header format word. This is usually due to using Slate with an image formatted for the opposite-endianness architecture. .It Slate: : Failed to allocate memory for image heap A memory allocation error occurred while trying to make space for the image contents to load into on startup. .It Slate: : Could not read image heap The heap header reported that it was larger than the rest of the file contents were. The VM exited to avoid working with corrupted data. .El .Sh BUGS Slate is stable and regularly tested, but changing rapidly. The .Dq BUGS file in the Slate source distribution lists open issues. .P Reporting bugs is usually done via mailing list or IRC. Response is usually quick. You can meet many of the contributors in .Sy #slate on the Freenode network. .Sh AUTHORS .An "Lee Salzman" .An "Brian T. Rice" Aq water@tunes.org ...and many contributors. .Sh INTERNET RESOURCES Main website: .Sy http://slate.tunes.org/ .Sh LICENSING Slate is distributed freely under the Open Source MIT Public License. See .Dq LICENSE in the Slate source distribution.