|Please note: This web site presents the results of the Curl
research project at MIT's Laboratory for Computer Science, under the direction
of Professor Steve Ward. A Cambridge-based company,
is developing a suite of commercial products which are based on
the results of this research.
Welcome to the web site for the Curl
Project here at the MIT Laboratory
for Computer Science. Our entire web site can be accessed through
the navigation bar at the left; just click on the boxes on the
left-hand side to expand or collapse a section of the table of
contents. (If the navigation bar isn't working, try the old-fashioned index instead.)
Curl is a new language for creating web documents with almost any sort of
content, from simple formatted text to complex interactive applets.
- Curl provides a rich set of formatting operations
similar to those implemented by HTML tags. Unlike HTML, the Curl formatter can be extended
by users to provide additional functionality, from simple macros (e.g., to provide
a convenient way to switch to a particular font, size and color) to direct control
over the positioning of subcomponents (e.g., as in a TeX-like equation formatter).
Several packages of useful formatting extensions are currently under development.
- Using a TK-like interface toolkit of interactive components, Curl
makes it easy to build simple interactive
web pages. One can view interactive objects like buttons or editable fields as
extensions to the basic formatting operations provided above -- one uses the same
easy-to-learn syntax to create interactive documents as to create regular text
documents. There's no need to learn a separate scripting language!
- Other components of an interactive document may require more sophisticated
mechanisms than are provided by the interface toolkit. These components can
also be developed using Curl since, at its heart, Curl is really an
object-oriented programming language.
Curl expressions embedded in the web document are
securely compiled to native code by the built-in on-the-fly compiler and then executed
without the need for any sort of interpreter. Curl provides many of the features
of a modern object-oriented programming language: multiple inheritance, extensible
syntax, a strong type system that includes a dynamic "any" type, safe execution through
encapsulation of user code and extensive checking performed both at compile and run time.
Almost all of the Curl system and compiler are written in Curl.
Curl is intended to be a gentle slope system, accessible to content creators
at all skill levels ranging from authors new to the web to experienced programmers. By using
a simple, uniform language syntax and semantics, Curl avoids the discontinuities
to create today's exciting sites. Our hope is that the single environment provided
by Curl will be an attractive alternative for web developers; we've certainly enjoyed
using Curl to create this web site and others. A brief
overview of Curl and its underlying philosophy can be found in an accompanying