Est. 2005 Intermediate

Lasso 8.1

OmniPilot's September 2005 performance release of Lasso Professional 8 - the tag-based, object-oriented web language (LDML/LassoScript) for Mac OS X, Windows and Red Hat Linux servers, with more than 100 changes and 19 new tags

Created by OmniPilot Software (Lasso development team led by Kyle Jessup); the Lasso lineage began with Vince Bonfanti's 1995 FileMaker CGI and Blue World Communications

Paradigm Multi-paradigm: tag-based template language (LDML) embedded in HTML, Procedural scripting (LassoScript), Object-Oriented (custom types with inheritance)
Typing Dynamic, with built-in data types and optional -Type constraints on custom tag parameters
First Appeared 2005 (Lasso Professional 8.1, announced September 19, 2005); the Lasso Professional 8 language dates to late 2004 and the Lasso lineage to fall 1995
Latest Version Lasso Professional 8.1 (September 2005); superseded by Lasso Professional Server 8.5 on June 9, 2006

Lasso 8.1 is the September 2005 release of Lasso Professional 8, the web application language and server that OmniPilot Software took over from Blue World Communications in 2004. Lasso had begun in 1995 as a way to put FileMaker Pro databases on the web. By version 8 it was a cross-platform server for Mac OS X, Windows and Red Hat Enterprise Linux, and its language, which the vendor still called LDML (Lasso Dynamic Markup Language), could be written two ways. Square-bracket tags went inside HTML, and <?LassoScript ... ?> blocks held semicolon-terminated code. Version 8.1 did not change the language’s shape. It was a speed, stability and compatibility release with, in OmniPilot’s words, “more than 100 changes and 19 new tags.” For nine months it was the current Lasso, until Lasso Professional Server 8.5 replaced it in June 2006.

The master catalog dates this entry to 2006. That year is wrong for 8.1. OmniPilot’s press release is dated September 19, 2005 (MacTech’s reprint carries September 20), and Macworld reported the release the same week. The year 2006 belongs to Lasso 8.5, not 8.1, so this page uses 2005.

History & Origins

Lasso before version 8

Lasso started as a C/C++ CGI that Vince Bonfanti wrote in the fall of 1995 to serve FileMaker Pro data through HTML templates. Blue World Communications bought it and shipped Lasso 1.0 for the Mac OS in September 1996. Through the 3.x line (1998-2000) Lasso was a pure tag language, whose square-bracket tags such as [Field: 'Name'] and [Records] ... [/Records] were replaced with database content before a page went to the browser. Lasso 5 (February 26, 2002) was rewritten for Mac OS X, Windows and Linux and introduced the LassoScript syntax. Lasso 6 (2002) and Lasso 7 (2004) followed. The earlier stages are covered on the Lasso 3.6.6 and LassoScript pages.

OmniPilot and Lasso Professional 8

On September 13, 2004, OmniPilot Software, a Fort Lauderdale, Florida software company owned by the marketing agency Starmark International, announced that it had bought the Lasso product line from Blue World. The release said Blue World would close its Bellevue, Washington offices in August 2004 and that the Lasso development team would move to OmniPilot’s Florida headquarters. OmniPilot’s president Brett Circe had led Starmark’s own adoption of Lasso. In the acquisition release he said the agency had been able to “upgrade our code since 1996 with little or no effort.”

OmniPilot announced a public beta of Lasso Professional 8 on October 25, 2004, and on December 2, 2004 announced that Lasso Professional Server 8 was shipping. OmniPilot’s feature pages of the time list its headline additions:

  • Multi-site segmentation. Each site on a server ran as a separate process with its own data sources, security settings, global variables, email queue and caches. A site could be restarted without affecting the others. The feature was aimed at ISPs and hosting providers.
  • On-demand libraries. Custom tags and types in the LassoLibraries folder were loaded the first time a page referenced them and then stayed in memory.
  • Tag namespaces, new compound data types (stacks, queues, sets, lists and others), a new parameter syntax, POP email retrieval, improved SMTP, a built-in SOAP client and JavaBeans support.
  • SQLite replaced the embedded MySQL that earlier versions had used for Lasso’s own preferences, security settings, sessions and email queues. OmniPilot said this removed MySQL licensing restrictions, and upgraders who kept user databases in Lasso MySQL had to install MySQL separately.

The 8.0.2 update on March 28, 2005 added a Red Hat Enterprise Linux edition of the server, along with file-tag security fixes for multi-site hosting, character-set controls and email improvements.

The 8.1 release

OmniPilot announced Lasso Professional 8.1 from Dania Beach, Florida, on September 19, 2005. “This is the last major Lasso update for 2005,” Circe said, adding that the company had tried “to incorporate the majority of the feature requests and fixes that our customers have requested since the release of Lasso 8.” The release grouped its changes into five areas:

AreaChanges listed in the 8.1 announcement
PerformanceBetter stability under heavy load; optimized operations on binary data and character strings; improved document caching “eliminates the need to re-compile code or execute redundant database queries”; streamlined security and configuration settings
CompatibilityBetter handling of data from more browsers; digest authentication with more versions of Internet Explorer; fixes for how Microsoft Outlook displayed email sent by Lasso
SessionsSession data held in memory first and stored in SQLite later; tuning parameters for sharing session data from several Lasso servers in one MySQL data source for load balancing
Data sourcesImproved FileMaker compatibility; support for the multilingual features of MySQL 4.1; optimized database- and table-level security checks; more batch operations in the administration LassoApps
Customer requestsNew features for encryption, SSL certificate handling, and POP and SMTP email

The release also added features for creating and modifying encrypted PDFs and improved support for PDF forms, along with better handling of many character sets and encodings.

The announcement included a speed claim from a beta tester. Jim Van Heule, president of Heunox Corporation and a member of the Lasso Professional Alliance, said that “in some tests, I saw a 25x speed increase vs. the current LP8 release.” The release gives no detail of what those tests measured, on what hardware or data source, or how typical they were. It is one tester’s result on unspecified beta workloads, not a benchmark, and the general improvement for real sites is not documented.

Lasso 8.1 was a free update for anyone who owned any version of Lasso Professional 8 and for Lasso Professional Alliance members. Through the end of September 2005, owners of earlier Lasso versions could upgrade for $349, or $249 for Alliance members. Macworld gave the full product price as US$649.

Design Philosophy

Lasso 8 tried to serve two audiences at once. OmniPilot’s 2005 feature page described LDML as “very approachable by users who are familiar with HTML.” The same page called it “a fully object-oriented language including inheritance, member variables and types, symbol overloading, and automatic type conversion.” The idea was that a web designer could keep writing tags in HTML pages while a programmer used the same language as a scripting language, and that both could work in the same files.

The language was also built to be database-neutral. OmniPilot said Lasso’s database access language “allows database independent code to be written so a Web site can easily be adapted to different back-end data sources”, and that a single page could mix data from several sources. In practice the -Search, -Add, -Update and -Delete actions that began as FileMaker web commands in 1996 worked the same way against MySQL, SQLite, JDBC sources and FileMaker.

Key Features

Two syntaxes, two tag styles

OmniPilot’s documentation listed two ways to write Lasso code and, separately, two forms for writing a tag:

  • Square brackets put code directly inside HTML. OmniPilot said these give “visual clues about how the rendered page will appear.”
  • LassoScript puts many statements in one <?LassoScript ... ?> container, which OmniPilot described as “ideal for developers who are familiar with other scripting languages.”
  • Colon syntax (Tag_Name: param) was the traditional Lasso form, and parentheses syntax (Tag_Name(param)) was “more similar to the syntax of C or Java.”

The same tag in each style, using the Math_Add tag from Lasso’s documentation:

[Math_Add: 1, 2, 3]
[Math_Add(1, 2, 3)]
<?LassoScript Math_Add: 1, 2, 3; ?>

Custom tags and types

Programmers extended the language with [Define_Tag] and [Define_Type]. The Lasso 8.x reference describes -Required and -Optional parameters that become local variables inside the tag, -Type constraints on those parameters, -ReturnType, -Namespace, -Priority (to replace or wrap an existing tag), -Atomic (one instance at a time), -Async (run in a separate thread), and -SOAP and -RPC flags that published a tag as a remote procedure through RPC.LassoApp. The reference’s own example defines a tag that emails an administrator:

[Define_Tag: 'Email_Administrator']
  [Email_Send: -Host='mail.example.com',
    -To='[email protected]',
    -From='[email protected]',
    -Subject='Custom Tag',
    -Body=(Server_Date) + ' ' + (Server_Time) + ' ' + (Client_IP)]
[/Define_Tag]

[Define_Type] created a data type whose member tags were nested Define_Tag blocks and whose instance variables were declared with [Local]. A type could inherit from other types, including built-in ones.

Tags, types and data structures

An OmniPilot page captured in January 2006, while 8.1 was the current release, says Lasso “includes over 1400 built-in tags and over 30 built-in data types.” They covered database actions, site administration, client HTTP information, encryption, encoding, files, networking, sessions, PDF, XML, images and JavaBeans. Lasso 8’s compound types included arrays, maps, pairs, sets, lists, queues, stacks, priority queues, tree maps and multi-arrays, with an iterator type and comparators and matchers for working on their elements. The LDML Reference documented every tag and type and was available both on OmniPilot’s site and in each Lasso installation.

Performance model

OmniPilot described Lasso 8’s execution model this way. It had a parser and byte-code generator, and the byte-code form of every page was cached and recompiled automatically when the file on disk changed. Built-in and custom types used prototypes, so a type was built once and copied for later instances. The server detected runaway recursion of includes or custom tags and stopped pages that ran “for an inordinately long time.” Cache tags could save parts of a page, which OmniPilot recommended for slow data sources such as FileMaker. Lasso 8.1’s document-caching changes built on this model.

Data sources

OmniPilot’s 2005 connectivity page lists the connectors available in the 8.1 era:

  • MySQL 4.0 and 4.1, including Unicode data
  • JDBC data sources, with the driver chosen from a .jar file in site administration
  • FileMaker Pro 4 and FileMaker Pro Unlimited 5 and 6
  • FileMaker 7 Server Advanced through its XML interface
  • SQLite, built in

Third-party developers could write further connectors in LDML, C/C++ or Java. OmniPilot’s general feature overview also named Oracle, Microsoft SQL Server, ODBC, Access and 4D. However, the June 2006 Lasso 8.5 release said that Lasso would support Oracle, PostgreSQL, OpenBase and Microsoft SQL Server natively “for the first time.” In 8.1 those databases were therefore probably reached through JDBC, ODBC or third-party connectors rather than through bundled native connectors.

Supported platforms

OmniPilot’s system requirements page, captured in November 2005, lists three supported configurations for Lasso Professional Server:

PlatformOperating systemWeb serverOther requirements
WindowsWindows 2000, Windows XP Professional or Windows Server 2003IIS 5 or higher, or Apache 2Java runtime compatible with Sun JRE 1.4; ImageMagick 6.2.0+
Mac OS XMac OS X 10.3 Panther or 10.4 Tiger (client or Server) on G3, G4 or G5 Power MacintoshApple’s bundled Apache, or WebSTAR VHFS+ disk with BSD subsystem; Apple’s X11 (optional)
LinuxRed Hat Enterprise Linux 4Red Hat’s Apache 2IBM JRE 1.4.1; ImageMagick 6.2.0+

Each configuration also called for 512 MB of RAM, and the Windows and Linux ones for a 300 MHz or faster Pentium-compatible CPU. On the Mac, X11 was needed for the [Image] tags. Lasso 8.1 for Mac OS X was PowerPC-only. The first Universal Binary for Intel Macs came with Lasso 8.5 in June 2006.

Evolution

Lasso 8.1 was current for about nine months. Lasso Professional Server 8.5, released June 9, 2006, added a Universal Binary, LJAX (OmniPilot’s name for Lasso AJAX tags), LDAP integration, prepared statements, several result sets from one inline, shell access to OS processes, and native connectors for Microsoft SQL Server, PostgreSQL, Oracle and OpenBase. OmniPilot released 8.5.1 in August 2006 and made Lasso Developer 8.5 free that month.

In March 2007 LassoSoft LLC announced that it had acquired OmniPilot Software and the Lasso product line. Kyle Jessup had been director of Lasso development since version 1.5. Fletcher Sandbeck was the main author of Lasso’s documentation, and Kerry Adams had been OmniPilot’s director of sales. LassoSoft continued the 8.x line, and an 8.6 release was on sale by 2011 (Wikipedia’s version table dates it to April 20, 2011). Development moved to Lasso 9, released January 29, 2010. Lasso 9 rewrote the runtime and replaced the Lasso 8 language with a new expression-based syntax. Lasso 8 code reportedly often needed changes to run on it. See the Lasso 9 page.

Current Relevance

Lasso 8.1 is historical. Its supported systems are Windows 2000 to Server 2003, PowerPC Mac OS X 10.3 and 10.4, and Red Hat Enterprise Linux 4, all long out of support. It was replaced within a year by 8.5, and the whole 8.x line was later replaced by Lasso 9. Lasso was always proprietary. There is no open-source implementation and no Docker image, and the only surviving documentation is archived copies of OmniPilot’s and LassoSoft’s websites, including the Lasso 8.x tag reference. Running Lasso 8.1 today would need a licensed installer and a period operating system, real or virtualized.

Why It Matters

Lasso 8.1 shows a mid-2000s web platform in transition. The language still carried tags designed in 1996 for FileMaker users, and OmniPilot’s feature pages still sold it on how easily HTML authors could pick it up. By this time it also had namespaces, typed parameters, inheritance, compound data structures, SOAP and per-site process isolation for hosting providers, and OmniPilot described it as “fully object-oriented.” The 8.1 release itself was routine maintenance: faster strings, better caching, browser fixes. Its release notes show the platform’s users at the time, which included hosting companies running many sites per server, shops load-balancing sessions across several servers, and developers who needed MySQL 4.1’s multilingual features.

It also marks the late peak of the tag-language approach in Lasso. Within five years Lasso 9 replaced that language with a rewrite, which Wikipedia’s history of Lasso attributes to the need to compete with much more popular languages such as PHP and ASP. Surviving Lasso 8.x code and the archived 8.x tag reference are the main record of what the older Lasso language could do at its most developed.

Timeline

2002
Blue World's Lasso 5 (February 26) adds the <?LassoScript ... ?> block syntax alongside the classic square-bracket tags, the two syntaxes Lasso 8.1 would later carry
2004
On September 13 OmniPilot Software of Fort Lauderdale, Florida announces that it has acquired the Lasso product line from Blue World Communications, whose Bellevue, Washington offices close in August as the development team moves to Florida
2004
OmniPilot announces the Lasso Professional 8 beta on October 25 and announces on December 2 that Lasso Professional Server 8 is shipping, with per-site process isolation, on-demand tag libraries, namespaces, POP support and a SOAP client
2005
Lasso Professional 8.0.2 (March 28) is a free update that also introduces a Red Hat Enterprise Linux edition of Lasso Professional Server 8
2005
OmniPilot announces Lasso Professional 8.1 on September 19 with more than 100 changes and 19 new tags, faster binary and string handling, improved document caching, in-memory sessions and encrypted-PDF support; it is free to Lasso Professional 8 owners
2006
Lasso Professional Server 8.5 (June 9) supersedes 8.1, adding a Universal Binary for Intel Macs, LJAX (Lasso AJAX) tags, LDAP integration and native connectors for Oracle, PostgreSQL, Microsoft SQL Server and OpenBase
2007
On March 5 LassoSoft LLC, a partnership of Kyle Jessup, Fletcher Sandbeck and Kerry Adams, announces that it has acquired OmniPilot Software and the Lasso product line
2010
Lasso 9.0 (January 29) replaces the Lasso 8 language with a rewritten runtime and new syntax, ending the line that Lasso 8.1 belonged to as the focus of development

Notable Uses & Legacy

OmniPilot Software

OmniPilot built its own products in Lasso - its president said in 2004 that OmniPilot applications are built in the Lasso development language - and its archived 2005-2006 website was served as .lasso pages, with a footer crediting its Lasso-based QuickwebPro site builder

Starmark International

OmniPilot's parent company, a marketing communications agency, had used Lasso since 1996 to build client web sites; OmniPilot's 2004 acquisition release names Citrix, Motorola and Siemens among the clients whose sites it built with Lasso

Heunox Corporation

Lasso Professional Alliance member whose president, Jim Van Heule, tested the Lasso 8.1 beta and is quoted in the release announcement reporting large speed gains over the shipping Lasso Professional 8

Language Influence

Influenced By

LDML (Lasso 3.x) LassoScript (Lasso 5-8.0)

Influenced

Lasso 8.5 Lasso 9

Running Today

Run examples using the official Docker image:

docker pull
Last updated: