News

July 20, 2003
The Programmer's Manual is now web-browsable.
July 16, 2003
Slate was presented at the Smalltalk Solutions 2003 conference. It was received fairly well. We are hosting a web-formatted version of the slides. A short report is available from the mailing list.
June 1, 2003
A Swiki has been set up for documentation and tutorials and anything else related to Slate.
May 28, 2003
Slate bootstrapping is in progress. Also, an Emacs editing and interaction mode is available in the distribution.

Overview

The Language

Slate is a prototype-based object-oriented programming language based on Self, CLOS, and Smalltalk. Slate syntax is intended to be as familiar as possible to a Smalltalker, rather than engaging in divergent experiments in that respect. Unlike the Smalltalk family, within Slate, methods can be assigned to a signature of objects, instead of being installed on one favored receiver. Slate has also many further expansions of the semantics which interest advanced users. For example:

Prototype-based Objects
Instance-specific methods, data, and multiple inheritance.
Multiple Dispatching
Requiring every argument to match a method before calling it.
Optional Typing
The ability to annotate the intended type of an input or local slot.
Syntactic Abstractions
The ability to annotate and manipulate expression trees dynamically and abstractly.
Optional Keywords
The ability to pass along any extra local bindings to a method-invocation.
Subjective Dispatch
The ability to conditionalize a method's implementation on elements of the context.

Particular attention is being paid to the design of a fuller and more useful set of libraries than even the usual Smalltalk set, for collections, the meta-level protocols, and exception-handling, among others. If you have recommendations in this area, please let us know. Our prime inspirations are the libraries of Strongtalk, Common Lisp, and Dylan.

The Environment

Slate is also an environment, and is intended to support the full services that one would expect from an Operating System, including a graphical interface. There are many new designs and ideas that will be implemented for the language, including a modification of the Morphic user interface to support the notions in the CLIM user interface architecture.

We plan to fully bootstrap Slate using similar optimization methods as its predecessor Self used, as well as some more recent advances. We believe, however, that a properly self-hosted implementation of these ideas will support better integration and extension, and in the end result in a much lighter-weight system.

Documentation

The Manual

The Slate Programmer's Reference Manual is the main document of the Slate language and environment design. It is also available in Postscript or PDF format, or as an archived copy of the web version.

The Swiki

Notes, requests, and other information about Slate can be posted and maintained on our Squeak Swiki-powered bulletin board.

Tutorials and Summaries

Downloads

Executable

Coming soon!

Source

Packaged source releases are available at http://slate.tunes.org/slate.tar.gz. This is a semi-automatically compiled snapshot of CVS contents. However, it will not receive updates from CVS, and will often contain bugs.

CVS / Development Access

Slate is currently developed and managed within a CVS repository, viewable through a web interface.

Anonymous checkout access to Slate's CVS repository can be made in the same manner as on the Tunes site, but setting your CVSROOT environment variable to :pserver:anonymous@cvs.tunes.org:/var/lib/cvs/slate; the password is "anonymous". This will create a slate directory and unpack the files into it. Instructions for its use will be in the file README for the time being.

Collaboration

Slate's bulletin board is a Squeak Swiki.

Slate has a mailing list. The list is open to all to join or simply browse.

Slate members enjoy free discussion (almost) daily on the Freenode (formerly known as Open Projects Net) IRC network on channel #slate. Logs of #slate are available in "pretty" form and "raw" form.


Return to the top of the page.