Lasso is an application server and server management interface designed to develop internet applications. It is also a general-purpose, high-level programming language. Originally a web datasource connection tool for Filemaker and later included in Apple Computer's FileMaker 4.0 and Claris Homepage as CDML, it has since evolved into a complex language used to develop and serve large-scale internet applications and web pages.
Lasso includes a simple template system allowing code to control generation of HTML and other content types. Lasso is an object-oriented programming language in which every value is an object. It also supports procedural programming through unbound methods. The language uses traits and multiple dispatch extensively.
Lasso has a dynamic type system, where objects can be loaded and augmented at runtime, automatic memory management, a comprehensive standard library, and three compiling methodologies: dynamic (comparable to PHP-Python), just-in-time compilation (comparable to Java or .NET Framework), and pre-compiled (comparable to C). Lasso also supports Query Expressions, allowing elements within arrays and other types of sequences to be iterated, filtered, and manipulated using a natural language syntax similar to SQL.
Lasso includes full Unicode character support in the standard string object, allowing it to serve and support multi-byte characters such as Japanese and Swedish, and supports transparent UTF-8 conversion when writing string data to the network or file system.
Lasso is often used as a scripting language, and also used in a wide range of non-scripting contexts. Lasso code can be packaged into standalone executable programs called "LassoApps", in which folder structures are compiled into single files.
The Lasso Server application server runs as a system service and receives requests from the web server through FastCGI. It then hands the request off to the appropriate Lasso Instance, which formulates the response. Multiple individual instances are supported, allowing one server to handle multiple sites, each as separate processes. The server uses a high performance IO-based green threading system designed for multi-core systems.
Lasso can be compared to the server-side scripting languages PHP and Python, ColdFusion, Ruby, etc.
Contents
History
Lasso began in the mid-1990s when early web developers were attempting to build database-backed websites using Apple's FileMaker Pro. On the Mac platform, there were two solutions: Eric Bickford's WEB-FM, and Russell Owens' FileMaker CGI (ROFM) - both built in AppleScript and requiring the use of FileMaker Pro calculation fields for formatting. (WEB-FM was subsequently rewritten in C).
In the fall of 1995, independent developer Vince Bonfanti wrote a new CGI based on ROFM, using C/C++ for improved performance, and using the notion of HTML-based "templates" instead of relying on calculation fields. This proved very popular in the FileMaker community, and was brought to the attention of Bill Doerrfeld, owner of Blue World Communications Inc., a print and website development firm based out of Issaquah, Washington, who bought the source code.
At this time, Blue World experimented with improvements for the CGI in the Frontier scripting environment, which inspired the name "Lasso". Further need for improvement drove the creation of a C-based CGI which was later released as "Lasso 1.0". At this point Lasso only worked with FileMaker Pro 3.x and WebSTAR, and only ran on Apple Mac OS 8 and above.
Lasso's usage grew notably from reviews in print publications and Blue World's hosting of and participation in many email discussion lists, many of which specifically pertained to FileMaker Pro. Blue World also made frequent appearances and was known as a leading company at MacWorld conferences.
Following the release of the Lasso 1.2 lineup in January 1997, Blue World and the Bonfantis entered private talks with Claris, the software division of Apple Computer, and owner of FileMaker Pro. Claris eventually licensed the post-version-1.2 Lasso source code, and with the help of Vince and Paul Bonfanti released the FileMaker Web Companion as a component of FileMaker Pro 4.0. FileMaker Web Companion's language, CDML (Claris Dynamic Markup Language), differed from Lasso 1.2's LDML (Lasso Dynamic Markup Language), but was close enough as to offer an easy transition for developers looking to serve from FileMaker Pro through third-party servers and offered more compelling features.
Including the Lasso-like Web Companion in FileMaker 4.0 also stimulated growth of Lasso within the Macintosh web development community. Blue World continued developing Lasso with Kyle Jessup becoming Lasso's lead programmer. Lasso 2.0 was released in July 1997, introducing some fundamental shifts in how Lasso could be used.
Code examples
Hello World
Here are three ways to say "Hello world!" on a Lasso page.
Square brackets are reserved in Lasso, so HTML entities must be used to show square brackets on Lasso pages for other purposes than marking Lasso tags. Alternatively, printing square brackets can be by Lasso or be disabled by including [no_square_brackets] at the file top.
Inlines
Inlines are the basic Lasso tool for database actions. Database commands can be issued as above, in Lasso's db-independent metalanguage, in which case the same search code works for MySQL, FileMaker Pro or for any other database backend with which Lasso can connect.
If needed, a SQL statement can of course be embedded in the inline when using a database server that supports SQL:
In the above example, the dashes (-) before commands denote optional parameters. These can be specified in any order and generated dynamically; the last of any duplicate parameters take precedence. The inline command supports a large range of parameters allowing developers to interact with databases that they may not have intimate knowledge of.
Custom database connectors can be created which allows leveraging the abstracted nature of the inline command.
99 Bottles of Beer
The next procedural example prints out the lyrics for the song "99 Bottles of Beer".
The next example uses an OOP approach to print out the lyrics when the object is represented as a string:
Development tools, environments
LassoLab
Lasso Studio for Eclipse
Lasso language mode for Coda
Lasso language module for BBEdit



