The Newspeak Programming Language

What is Newspeak?

Newspeak is an object-capability programming platform that can run in your web browser.

Like Self, Newspeak is message-based; all names are dynamically bound. However, like Smalltalk, Newspeak uses classes rather than prototypes. As in Beta, classes may nest. Because class names are late bound, all classes are virtual, every class can act as a mixin, and class hierarchy inheritance falls out automatically. Top level classes are essentially self contained parametric namespaces, and serve to define component style modules, which naturally define sandboxes in an object-capability style. Newspeak was deliberately designed as a principled dynamically typed language. We plan to evolve the language to support pluggable types.

The Newspeak Vision

Applications should work well both on or off-line, combining the ease of maintenance of web applications with the high quality user experience of local clients. See the Room 101 blog for details.

Applications should be a joy to write and to read. The best way to create such applications is to create interactive narratives via live, literate programming. We want an editor for interactive narratives.

Such an editor should be scriptable. You should be able to write programs that control the editor in a powerful, general purpose programming language (Newspeak). In fact, every last bit of functionality the editor provides should be accessible programmatically.

Said editor should, of course, support its scripting language. Support means more than pretty-printing or syntax highlighting. It means you can evaluate the code. In particular, you can evaluate code that affects what the editor does.

Being a modern editor, you can build documents that contain more than just text. You can embed images, audio, video. In fact, you should be able to embed arbitrary widgets. So you might evaluate code that creates a UI element and inserts into the editor. Now you can make the editor modify its own GUI. In fact, the editor can be extended into a general purpose GUI builder. And every such GUI can modify itself if you wish; sometimes you may wish to modify it so it can no longer modify itself, and then you have a frozen application. Your editor has become an IDE. In fact, it is a live literate programming environment.

If the editor’s scripting language interoperates well with the surrounding environment, it can be used to control the computer and everything the computer itself controls. You can check in to the environment and hardly ever leave. You can lead your cyber life in it.

Now, imagine that the code you created in this environment was modular and secure. Imagine the editor’s scripting language can deploy the same code on web, desktop or mobile. Imagine that the applications built with the language support online and offline use out of the box, automatically synchronizing data and code between clients and servers. Imagine that they have built-in support for collaboration, either syncing in real time or merging offline as required.

This is what Newspeak is supposed to provide.

Status

The current version of Newspeak runs on top of WASM, and has been tested on Safari, Firefox and Chrome-based browsers, both desktop and mobile. You can try it out here. You can also download the IDE as an Electron app (Mac or Windows) off our downloads page. The latest development version is available at our source code repository.

The WASM based version is still a work in progress. We no longer support the old Squeak Smalltalk based implementation.

Who’s to blame for Newspeak?

Newspeak was created by Gilad Bracha, Peter Ahe, Vassili Bykov, Ryan Macnak, Eliot Miranda and Bill Maddox with invaluable contributions, both technical and otherwise, by Yaron Kashai.

Why is it called Newspeak?

In Orwell's novel 1984, Newspeak was a language that grew smaller over time. Unlike the case of natural languages, for a programming language this is actually a good thing. It is an ideal we strive for - a shrinkable language.