Lasso (programming language)

Last updated
Lasso
LassoSoft and Lasso Logo.png
LassoSoft Inc. Logo
Paradigm Multi-paradigm: structured object-oriented (multi-dis),

imperative: procedural, concurrent, exp-oriented,

Meta: reflective
Designed by Kyle Jessup
Developer LassoSoft Inc.
First appeared1995;29 years ago (1995)
Stable release
9.3.1 / October 23, 2015;8 years ago (2015-10-23)
Typing discipline Dynamic with constraints (strict-hybrid), nominative, duck (hybrid)
Implementation language C, Lasso
Platform Cross-platform
OS (OS X, Windows, Linux)
License Proprietary
Filename extensions .lasso, .LassoApp
Website www.lassosoft.com
Major implementations
Lasso 8, Lasso 9
Influenced by
Dylan, Smalltalk, Scala

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 [1] for Filemaker and later included in Apple Computer's FileMaker 4.0 and Claris Homepage as CDML, [2] [3] it has since evolved into a complex language used to develop and serve large-scale internet applications and web pages.

Contents

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, [4] allowing elements within arrays and other types of sequences to be iterated, filtered, and manipulated using a natural language syntax similar to SQL. [5] 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. [6]

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 [7] [8] and Python, ColdFusion, Ruby, etc. [9] [10]

Free for development, Lasso allows partial access to its source code, [11] enabling developers to add or change major components of the language (for example, Ke Carlton's DS implementation of the Lasso Inline [12] ). Licensing comes in both SAS and stand-alone versions. [13]

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. [14]

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. [15]

Lasso's popularity grew most notably from reviews in print publications [16] [ discuss ] 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. [17]

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), [18] 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 [19] and offered more compelling features. [20]

Including the Lasso-like Web Companion in FileMaker 4.0 helped grow popularity for Lasso in the fast-growing 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. [21]

On February 26, 2002, Blue World released Lasso 5, a radical departure from the FileMaker-centric language to date. (There was never a Lasso 4 release; the version number skipped from 3 to 5.) Lasso 5 included, among many updates, a completely rewritten architecture (for OS X, Windows, Linux), and an embedded MySQL database. [22] Though Lasso 5 still spoke to a FileMaker database (but not to a FileMaker Server), FileMaker as a data source remained relatively slow compared to an SQL engine, and was prohibitively more expensive. Since v2.0, Lasso was fully multithreaded, allowing many connections at once, but succumbed to FileMaker's latency or lag in certain operations, and there was no way to get around it reliably other than to make major changes to the data source. [23]

Lasso 5 also added support for Apache HTTP Server natively under OS X, Windows, and Linux, joining Webstar 5, AppleShare IP (which was replaced by OS X Server), and iTools (from Tenon [24] ). (Mac OS 9, on which Lasso had been used for many years, was unsupported). This drove closer ties to a classic LAMP server architecture.[ citation needed ]

Blue World Communications released a series of plug-ins for popular Web development packages from Macromedia and Adobe. Lasso Studio 1.5 for Dreamweaver was a runner-up in MacWorld magazine's Editors' Choice Awards for Internet and Development [25] in 2001, losing out to Adobe Dreamweaver 3. Lasso Studio for Dreamweaver 1.5 [26] was also reviewed favorably by MacWorld magazine, earning 4+12 mice. Later version of Lasso Studio supported both Macromedia Dreamweaver and Adobe GoLive including Lasso Studio 7 for Dreamweaver and GoLive [27] on March 26, 2004.

With the release of FileMaker Server and FileMaker Server Advanced version 7 in 2004 FileMaker signaled a major change in their strategy for serving data to Web sites. They emphasized XML-XSLT, ODBC, and JDBC connectivity, but only through the more expensive FileMaker Server Advanced product. [28] Blue World began to distance the Lasso language from FileMaker and Apple. In 2005, Lasso Pro received MySQL Network certification [29] demonstrating the importance of the popular open source database to the future of Lasso.

On August 1 of 2004, Bill Doerrfeld officially sold the Lasso product line to OmniPilot Software, Inc. in Ft. Lauderdale, Florida. Lasso 7.0.3 was the last version of Lasso released by Blue World. [30]

On October 25, 2004, OmniPilot officially announced the release of Lasso 8, a version including sandboxing for multiple sites on the same server and connectivity to many new datasources. [31] This also included the first "free" version of Lasso limited to IP addresses. [32] OmniPilot followed this release with a number of complementary products, including Lasso Studio 8 for Dreamweaver and GoLive [33] on March 28, 2005, Lasso Studio for Eclipse, ChartFX integration and a number of free Lasso-based solutions. [34]

In 2007, three OmniPilot employees, Kyle Jessup (the original developer of Lasso 1.0), Fletcher Sandbeck (an early employee of Blue World known for regular Tips and Tricks) and Kerry Adams (an employee of OmniPilot) created a new company, LassoSoft LLC, to purchase the intellectual property of Lasso from OmniPilot and continue development. [35] [36] Recognizing the need to be competitive against much more popular languages such as PHP and ASP, radical changes in architecture, syntax and structure were made and released as Lasso 9.0. Technical challenges caused by these changes, coupled with limited marketing resources, led to significant community decline as the company struggled to release documentation and support for the new language. [37] [38]

In December 2010 a new Canadian company LassoSoft Inc. was formed, which bought and invested heavily in the Lasso 9.0 language, marketing and documentation. Kyle Jessup agreed to stay on as both Lasso's Lead Developer and Benevolent Dictator for Life. Several releases (9.1 and 9.2) have released further developments in recent years. [39]

Release history

Key
ColorMeaningDevelopment
RedOld releaseNo development
YellowStable releaseSecurity fixes
GreenStable releaseBug and security fixes
BlueFuture releaseNew features
VersionRelease dateNotes
ROFM>1994-03-14Russell Owens' FileMaker CGI, early AppleScript-based connector for FileMaker Pro databases
0.1Sep-1995CGI connector written by Vince Bonafonti in C/C++ to connect FileMaker Pro to the web
1.027-Sep-1996Connector for FileMaker Pro 3.x and WebSTAR [40] [41]
1.1Dec-1996WebSTAR plug-in, client browser information, complete GUI security layer [42]
1.2Jan-1997Source code licensed to Claris (Apple Computer Inc), named CDML, installed in Claris Homepage
217-Jul-1997Included mathematical calculations, variables, complex data types, server side includes, client header information, advanced conditional statements, a Java-client interface, Apple Events control for other applications on the web server, multiple database actions, and Instant Web Publishing [43]
2.51-Dec-1997Added tag standardization and interoperability, ability to communicate with the WebTen web server (a port of Apache HTTP Server to the Mac OS by Tenon Intersystems) [44]
3.007-Oct-1998Added data validation filters, macros, file/directory management, date/time controls, list variables, multiple named tokens, robust error handling, MIME email, email attachments, extended math routines, enhanced string functions, enhanced encoding controls [45]
3.514-Apr-1999Added WYSIWYG authoring using Macromedia Dreamweaver 2 and Adobe GoLive 4, multithreading, LJAPI, optional HTTP server, support for Netscape server, JavaScript, XML and advanced tag parser with built-in debug controls [46]
3.65-Jan-2000Support for FileMaker 5 Data Sources, SQL wizard for interactive SQL queries, customizable global error pages and Studio for MacroMedia DreamWeaver [47]
3.6.51-Oct-2000Added connector for MySQL, Red Hat and OS X support [48]
526-Feb-2002Rewritten architecture for OS X, Windows, Linux, with embedded MySQL; added sessions, file manipulation, native connector for Apache, and LassoScript (adding "scripting" methodology to the language) [49]
617-Sep-2002Added imaging, PDF manipulation, native XML, FTP integration, date math, durations [50]
730-Aug-2004MySQL externalized (due to licensing), FileMaker closed connector
7.113-Sept-2004Added compatibility with Filemaker Pro 7 [51]
825-Oct-2004Lasso Server broken down into separate "sites" for hosting providers
8.119-Sep-2005Added document caching, stability fixes [52]
8.59-Jun-2006Added full AJAX integration, multiple data source connectors pre-installed for FileMaker, FileMaker Server Advanced, MySQL, SQLite, MS SQL Server, Sybase, Oracle, PostgreSQL, OpenBase, ODBC, and Apple's Spotlight engine [53]
929-Jan-2010Major architectural change: more syntax, strong-typing vs. weak-typing, JIT compiling, native serializing, 64-bit support [54]
8.620-Apr-2011Speed, stability increased [55]
9.111-Jul-2011New administration interface, 64-bit connector, new SAS licensing [56]
9.21-Jun-2012Windows support added, integrated debugging, integrated code profiling [57]
9.323-Jan-2015New admin interface, new compilation methodology, centralized server deployment [58]

Code examples

Hello World

Here are three ways to say "Hello world!" on a Lasso page.

<?lasso'Hello World!'?>['Hello world!']Hello world!

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

// Find all records in a tableinline(-database='db_name',-table='table_name',-findall)=>{// Iterate through and process each rowrows=>{// Output each row to the current web requestcontent_body+='<a href="'+column('url')+'">'+column('title')+'</a>'}}

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:

// Execute SQL statementinline(-database='db_name',-sql='SELECT * FROM table_name')...

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 [59] 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".

// Define a couple of useful methodsdefinebr=>'<br/>'definebottles(n::integer)=>#n!=1?' bottles'|' bottle'// Declare the local that will store the lyrics as a stringlocal(out='')// Use Lasso query syntax to generate the lyricwithnin99to1by-1do{#out+=#n+bottles(#n)+' of beer on the wall, '+br#out+=#n+bottles(#n)+' of beer; '+br#n--#out+='Take one down, pass it around, '+br#out+=#n+bottles(#n)+' of beer on the wall. '+(br*2)}// Output result#out

The next example uses an OOP approach to print out the lyrics when the object is represented as a string:

// Define typedefinebottles_of_beer=>type{// Define internal datadataprivatebottles=99// Define private methodsprivatebr=>'<br/>'privates=>.bottles!=1?'s'|''// Generate lyrics when object represented as a stringpublicasstring=>{local(out='')// Use Lasso query syntax to generate the lyricswithnin99to1by-1do{.bottles=#n#out+=.bottles+' bottle'+.s+' of beer on the wall, '+.br#out+=.bottles+' bottle'+.s+' of beer; '+.br.bottles--#out+='Take one down, pass it around, '+.br#out+=.bottles+' bottle'+.s+' of beer on the wall. '+(.br*2)}// Return resultreturn#out}}bottles_of_beer

Development tools, environments

Related Research Articles

<span class="mw-page-title-main">HyperCard</span> Hypermedia system for Apple Macintosh and Apple IIGS computers

HyperCard is a software application and development kit for Apple Macintosh and Apple IIGS computers. It is among the first successful hypermedia systems predating the World Wide Web.

<span class="mw-page-title-main">Microsoft Access</span> Database manager part of the Microsoft 365 package

Microsoft Access is a database management system (DBMS) from Microsoft that combines the relational Access Database Engine (ACE) with a graphical user interface and software-development tools. It is a member of the Microsoft 365 suite of applications, included in the Professional and higher editions or sold separately.

<span class="mw-page-title-main">Mac OS X Server</span> Server software for macOS

Mac OS X Server is a series of discontinued Unix-like server operating systems developed by Apple Inc. based on macOS. It provided server functionality and system administration tools, and tools to manage both macOS-based computers and iOS-based devices, network services such as a mail transfer agent, AFP and SMB servers, an LDAP server, and a domain name server, as well as server applications including a Web server, database, and calendar server.

FileMaker is a cross-platform relational database application developed by Claris International, a subsidiary of Apple Inc. It integrates a database engine with a graphical user interface (GUI) and security features, allowing users to visually modify a database. Versions for desktops, servers, iOS and web-delivery have been released.

MacWrite is a WYSIWYG word processor application released along with the first Apple Macintosh systems in 1984. Together with MacPaint, it was one of the two original "killer applications" that propelled the adoption and popularity of the GUI in general, and the Mac in particular.

<span class="mw-page-title-main">AppleWorks</span> Office software suite from Apple

AppleWorks was an integrated office suite containing a word processor, database, and spreadsheet. It was developed by Rupert Lissner for Apple Computer, originally for the Apple II platform and launched in 1984. Many enhancements for AppleWorks were created, the most popular being the TimeOut series from Beagle Bros which extended the life of the Apple II version of AppleWorks. Appleworks was later reworked for the Macintosh platform.

Claris International Inc., formerly FileMaker Inc., is a computer software development company formed as a subsidiary company of Apple Computer in 1987. It was given the source code and copyrights to several programs that were owned by Apple, notably MacWrite and MacPaint, in order to separate Apple's application software activities from its hardware and operating systems activities.

<span class="mw-page-title-main">WebObjects</span> Java web application server and framework originally developed by NeXT Software

WebObjects is a discontinued Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.

<span class="mw-page-title-main">BBEdit</span> Proprietary text editor

BBEdit is a proprietary text editor made by Bare Bones Software, originally developed for Macintosh System Software 6, and currently supporting macOS.

4D is a relational database management system and integrated development environment developed by Laurent Ribardière. 4D was created in 1984 and had a slightly delayed public release for Macintosh in 1987 with its own programming language.

XTND was a document import/export system developed by Claris for their products on the Apple Macintosh. Products supporting XTND placed an additional popup menu in the open and save dialogs, allowing users to read and write documents of any supported format. The name is a four-letter contraction of extend, the Mac using four-letter identifiers in its system resource files.

<span class="mw-page-title-main">Claris Home Page</span>

Claris Home Page was one of the earliest true WYSIWYG HTML editors, developed from 1994 on. The project was code-named Loma Prieta. Claris purchased it from San Andreas Systems, reworked it to use the user interface common to all their products, and released it in 1996.

Omnis Studio is a rapid application development (RAD) tool that allows programmers and application developers to create enterprise, web, and mobile applications for Windows, Linux, and macOS personal computers and servers across all business sectors.

Embedded SQL is a method of combining the computing power of a programming language and the database manipulation capabilities of SQL. Embedded SQL statements are SQL statements written inline with the program source code, of the host language. The embedded SQL statements are parsed by an embedded SQL preprocessor and replaced by host-language calls to a code library. The output from the preprocessor is then compiled by the host compiler. This allows programmers to embed SQL statements in programs written in any number of languages such as C/C++, COBOL and Fortran. This differs from SQL-derived programming languages that don't go through discrete preprocessors, such as PL/SQL and T-SQL.

Microsoft SQL Server is a proprietary relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network. Microsoft markets at least a dozen different editions of Microsoft SQL Server, aimed at different audiences and for workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users.

<span class="mw-page-title-main">Bento (database)</span>

Bento is a discontinued database application for Mac OS X made by the former FileMaker Inc., since renamed to Claris. Bento differed significantly from the company's flagship product, FileMaker Pro, in that it relied heavily on templates and integration with other applications. By default, Bento's data sources included Apple's Address Book and Calendar applications, which it could modify directly. FileMaker announced on July 31, 2013, that it would discontinue Bento on September 30, 2013.

The Softwell Maker is an environment development. Designer uses visual forms and reports (WYSIWYG), business rules, and visually representing other actions using flowcharts.

References

  1. Dave, Parkhurst (April 25, 1997), "New Web tools help servers link to legacy data", MacWEEK Magazine
  2. "Filemaker Pro Requires external connector". Feb 1, 2000.
  3. "Web-Enabling Filemaker Pro Databases". Aug 1, 2002.
  4. "Microsoft on Query Expressions".
  5. "Query Expressions Defined".
  6. "An explanation of LassoApps".
  7. Chris, Tracewell (2006). "A Closer Look at Two OS X Scripting Languages". MACTech.
  8. Brian, Dunning (February 1, 2005). "Pick the Right Tool for the Job".
  9. "Lasso vs Scripting Languages on W3Techs".
  10. "Comparison of Popular Languages". Archived from the original on 2009-01-16.
  11. "Forum discussion linking to Lasso 9 source".
  12. "DS on GitHUB". GitHub .
  13. "Lasso Licensing".
  14. "Vince Bonafonti LassoTalk Post".
  15. "Lasso 1.0 Requirements". Archived from the original on December 27, 1996.
  16. "Lasso in the Press (archived)". Archived from the original on June 8, 2003.
  17. Jim, Dalrymple (January 4, 2002), "Apple offers Connect: Pro2Pro event at Macworld", PCWorld
  18. "Claris Dynamic Markup Language".
  19. "Blue World Technology Acquired by Claris". Archived from the original on April 30, 2001.
  20. Yu, Chong-ho. "Lasso provides more features than Web Companion". Archived from the original on December 26, 2004.
  21. "Changes in Lasso 2.0". Archived from the original on May 1, 2001.
  22. "Lasso 5 released".
  23. "Slashdot discussion about abandoning FileMaker".
  24. "Tenon". Archived from the original on 2018-08-28. Retrieved 2005-09-05.
  25. "Editors' Choice Awards: Internet and Development". MacWorld. IDG. Retrieved 28 October 2013.
  26. Seiter, Charles. "Lasso Studio for Dreamweaver 1.5". MacWorld. IDG. Retrieved 28 October 2013.
  27. Cohen, Peter. "Lasso Studio 7 for Dreamweaver, GoLive released". MacWorld. IDG. Retrieved 28 October 2013.
  28. "FileMaker Server 7 Advanced Now Available". CMO. Retrieved 28 October 2013.
  29. Cook, Brad. "Lasso Pro receives MySQL Network certification". MacWorld. IDG. Retrieved 28 October 2013.
  30. "OmniPilot Software acquisition article".
  31. "Lasso 8 release announcement".
  32. "8.5 for free". MacNN.
  33. Cohen, Peter. "Lasso Studio 8 for Dreamweaver & GoLive released". MacWorld. IDG. Retrieved 28 October 2013.
  34. "List of releases by OmniPilot on MacNN". MacNN.
  35. "LassoSoft acquires OmniPilot's Lasso". MacNN. March 5, 2007.
  36. "LassoSoft LLC acquisition article".
  37. Gunderson, Lars. "What I hope Lassosoft is doing right now".
  38. Gunderson, Lars. "Graph of LassoTalk community decline".
  39. "9.2 Release".
  40. "First Version of Lasso Released". Archived from the original on October 19, 1996.
  41. "Lasso 1.0.4 Manual" (PDF). Archived from the original (PDF) on December 27, 1996.
  42. "Lasso 1.1 Released". Archived from the original on December 27, 1996.
  43. "Lasso 2.0 Release". Archived from the original on June 12, 2003.
  44. "Broken Link to MacWeek Review". Archived from the original on April 22, 1998.
  45. "Lasso 3.0 Released". Archived from the original on June 12, 2003.
  46. "Lasso 3.5 Released". Archived from the original on June 8, 2003.
  47. "Lasso 3.6 Release". Archived from the original on June 11, 2003.
  48. "Lasso 3.6.5 Released". Archived from the original on June 11, 2003.
  49. "Lasso 5.0 Release". Archived from the original on August 2, 2003.
  50. "Lasso 6.0 Released". Archived from the original on June 22, 2003.
  51. "Lasso 7.1 Release (copy)".
  52. "Lasso 8.1 Released".
  53. "Lasso 8.5 Released".
  54. "Lasso 9 Release".
  55. "Lasso 8.6 Release".
  56. "Lasso 9.1 Release".
  57. "Lasso 9.2 Release".
  58. "Lasso 9.3 Release".
  59. large range of parameters