Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Lasso (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{advert|date=January 2015}} {{Infobox programming language | name = Lasso | title = Lasso | logo = LassoSoft and Lasso Logo.png | family = | released = {{Start date and age|1995}} | designer = Kyle Jessup | developer = LassoSoft Inc. | latest release version = 9.3.1 | latest release date = {{Start date and age|2015|10|23}} | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD}} --> | typing = [[Type system#Dynamic type-checking and runtime type information|Dynamic]] with constraints (strict-hybrid), [[Nominative type system|nominative]], [[Duck typing|duck]] (hybrid) | scope = | implementations = Lasso 8, Lasso 9 | dialects = | influenced by = [[Dylan (programming language)|Dylan]], [[Smalltalk]], [[Scala (programming language)|Scala]] | influenced = | programming language = [[C (programming language)|C]], Lasso | platform = [[Cross-platform]] | operating system = ([[OS X]], [[Microsoft Windows|Windows]], [[Linux]]) | license = [[Proprietary software|Proprietary]] | file ext = .lasso, .LassoApp | fileformat = | website = {{URL|www.lassosoft.com}} | wikibooks = | paradigm = [[Multi-paradigm programming language|Multi-paradigm]]: [[Structured programming|structured]] [[Object-oriented programming|object-oriented]] ([[Multiple dispatch|multi-dis]]), [[Imperative programming|imperative]]: [[Procedural programming|procedural]], [[Concurrent computing|concurrent]], [[Expression-oriented programming language|exp-oriented]], [[Metaprogramming|Meta]]: [[Reflection (computer programming)|reflective]] }} '''Lasso''' is an [[application server]] and server management interface designed to develop internet applications. It is also a [[general-purpose programming language|general-purpose]], [[high-level programming language]]. Originally a web datasource connection tool<ref>{{citation | last = Dave | first = Parkhurst | title = New Web tools help servers link to legacy data | newspaper = MacWEEK Magazine | date = April 25, 1997 }}</ref> for [[Filemaker]] and later included in [[Apple Computer]]'s FileMaker 4.0 and [[Claris Homepage]] as CDML,<ref>{{cite web|url=http://www.macworld.com/article/1014068/filemakerpro.html |title=Filemaker Pro Requires external connector|date=Feb 1, 2000}}</ref><ref>{{cite web|url=http://www.macworld.com/article/1001543/lasso.html |title=Web-Enabling Filemaker Pro Databases|date=Aug 1, 2002}}</ref> 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 [[Internet media type|content types]]. Lasso is an [[object-oriented]] programming language in which every value is an [[Object (computer science)|object]]. It also supports [[procedural programming]] through ''unbound'' methods. The language uses [[Trait (computer programming)|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 [[Compiler|compiling]] methodologies: [[Dynamic compilation|dynamic]] (comparable to [[PHP]]-[[Python (programming language)|Python]]), [[just-in-time compilation]] (comparable to [[Java (programming language)|Java]] or [[.NET Framework]]), and pre-compiled (comparable to [[C (programming language)|C]]). Lasso also supports Query Expressions,<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/bb384065.aspx |title=Microsoft on Query Expressions|date=6 March 2024 }}</ref> allowing elements within arrays and other types of sequences to be iterated, filtered, and manipulated using a natural language syntax similar to [[SQL]].<ref>{{cite web|url=http://www.lassoguide.com/language/index_language.html |title=Query Expressions Defined}}</ref> Lasso includes full [[Unicode]] character support in the standard string object, allowing it to serve and support [[Variable-width encoding|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.<ref>{{cite web|url=http://www.lassoguide.com/operations/lassoapps.html|title=An explanation of LassoApps}}</ref> The Lasso Server application server runs as a system service and receives requests from the [[webserver|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 [[Input/output|IO]]-based [[Green threads|green threading]] system designed for [[Multi-core processor|multi-core]] systems. Lasso can be compared to the [[server-side scripting]] languages [[PHP]]<ref>{{cite web|url=http://www.mactech.com/articles/mactech/Vol.22/22.07/PHPvsLasso/index.html | last = Chris | first = Tracewell | title = A Closer Look at Two OS X Scripting Languages | newspaper = MACTech | year = 2006 }}</ref><ref>{{cite web|url=http://www.briandunning.com/browse/browse0205.shtml | last = Brian | first = Dunning | title = Pick the Right Tool for the Job | date = February 1, 2005 }}</ref> and [[Python (programming language)|Python]], [[ColdFusion Markup Language|ColdFusion]], [[Ruby programming language|Ruby]], etc.<ref>{{cite web|url=http://w3techs.com/technologies/reportlist/programming_language|title=Lasso vs Scripting Languages on W3Techs}}</ref><ref>{{cite web|url=http://www.langpop.com|title=Comparison of Popular Languages|url-status=dead|archiveurl=https://web.archive.org/web/20090116080326/http://www.langpop.com/|archivedate=2009-01-16}}</ref> ==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 [http://webfm.com/webfm.html WEB-FM], and Russell Owens' [http://www.astro.washington.edu/owen/ROFM_CGI.html 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 [[Computer-generated imagery|CGI]] based on ROFM, using [[C (programming language)|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 [https://web.archive.org/web/20030605131907/http://www.blueworld.com/blueworld/ Blue World Communications Inc.], a print and website development firm based out of [[Issaquah, Washington]], who bought the [[source code]].<ref>{{cite web|url=http://www.lassosoft.com/lassotalk/msg/197947/Re+The+Top+ELEVEN+That+Made+Lasso+What+It+Is+Today|title=Vince Bonafonti LassoTalk Post}}</ref> At this time, Blue World experimented with improvements for the [[Computer-generated imagery|CGI]] in the Frontier scripting environment, which inspired the name "Lasso". Further need for improvement drove the creation of a C-based [[Computer-generated imagery|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 Inc.|Apple]] [[Mac OS 8]] and above.<ref>{{cite web|url=http://www.blueworld.com/lasso/documentation/Docs/intro.html |title=Lasso 1.0 Requirements |url-status=dead |archiveurl=https://web.archive.org/web/19961227172044/http://www.blueworld.com/lasso/documentation/Docs/intro.html |archivedate=December 27, 1996 }}</ref> Lasso's usage grew notably from reviews in print publications<ref>{{cite web|url=http://www.blueworld.com/blueworld/products/LassoPress.html |title=Lasso in the Press (archived) |url-status=dead |archiveurl=https://web.archive.org/web/20030608120807/http://www.blueworld.com/blueworld/products/LassoPress.html |archivedate=June 8, 2003 }}</ref>{{discuss|Notability}} 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/iWorld|MacWorld conferences]].<ref>{{citation | last = Jim | first = Dalrymple | title = Apple offers Connect: Pro2Pro event at Macworld | newspaper = PCWorld | date = January 4, 2002 }}</ref> 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),<ref>{{cite web|url=http://etutorials.org/XML/filemaker+pro+6+developers+guide+to+xml_xsl/Chapter+6+Using+HTML+and+XHTML+to+Format+Web+Pages/6.6+Claris+Dynamic+Markup+Language/|title=Claris Dynamic Markup Language}}</ref> 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<ref>{{cite web|url=http://www.blueworld.com/blueworld/news/9.8.97-clarisacq.html |title=Blue World Technology Acquired by Claris |url-status=dead |archiveurl=https://web.archive.org/web/20010430142254/http://www.blueworld.com/blueworld/news/9.8.97-clarisacq.html |archivedate=April 30, 2001 }}</ref> and offered more compelling features.<ref>{{cite web|url=http://www.creative-wisdom.com/computer/FMP/intro_FMP.shtml | archiveurl = https://web.archive.org/web/20041226204149/http://www.creative-wisdom.com/computer/FMP/intro_FMP.shtml | archivedate = December 26, 2004 | title = Lasso provides more features than Web Companion | first = Chong-ho | last = Yu }}</ref> 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.<ref>{{cite web|url=http://www.blueworld.com/blueworld/news/lasso2.0.pr.html |title=Changes in Lasso 2.0 |url-status=dead |archiveurl=https://web.archive.org/web/20010501134629/http://www.blueworld.com/blueworld/news/lasso2.0.pr.html |archivedate=May 1, 2001 }}</ref> 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.<ref>{{cite web|url=http://www.macworld.com/article/1001543/lasso.html|title=Lasso 5 released}}</ref> 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.<ref>{{cite web|url=http://ask.slashdot.org/story/04/08/31/0121250/replacing-filemaker-with-free-software |title=Slashdot discussion about abandoning FileMaker|date=31 August 2004 }}</ref> Lasso 5 also added support for [[Apache HTTP Server]] natively under OS X, [[Microsoft Windows|Windows]], and [[Linux]], joining Webstar 5, [[AppleShare IP]] (which was replaced by OS X Server), and iTools (from Tenon<ref>{{Cite web |url=http://www.tenon.com/ |title=Tenon |access-date=2005-09-05 |archive-url=https://web.archive.org/web/20180828203227/http://www.tenon.com/ |archive-date=2018-08-28 |url-status=dead }}</ref>). (Mac OS 9, on which Lasso had been used for many years, was unsupported). This drove closer ties to a classic [[LAMP (software bundle)|LAMP]] server architecture.{{citation needed|date=October 2013}} 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<ref>{{cite web|title=Editors' Choice Awards: Internet and Development|url=http://www.macworld.com/article/1001745/09internet.html|work=MacWorld|publisher=IDG|accessdate=28 October 2013}}</ref> in 2001, losing out to [[Adobe Dreamweaver]] 3. Lasso Studio for Dreamweaver 1.5<ref>{{cite web|last=Seiter|first=Charles|title=Lasso Studio for Dreamweaver 1.5|url=http://www.macworld.com/article/1015763/lasso.html|work=MacWorld|publisher=IDG|accessdate=28 October 2013}}</ref> was also reviewed favorably by MacWorld magazine, earning {{frac|4|1|2}} mice. Later version of Lasso Studio supported both [[Adobe Dreamweaver|Macromedia Dreamweaver]] and [[Adobe GoLive]] including Lasso Studio 7 for Dreamweaver and GoLive<ref>{{cite web|last=Cohen|first=Peter|title=Lasso Studio 7 for Dreamweaver, GoLive released|url=http://www.macworld.com/article/1030112/lasso.html|work=MacWorld|publisher=IDG|accessdate=28 October 2013}}</ref> 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.<ref>{{cite web|title=FileMaker Server 7 Advanced Now Available|url=http://www.cmo.com.au/mediareleases/6711/filemaker-server-7-advanced-now-available/|work=CMO|accessdate=28 October 2013}}</ref> Blue World began to distance the Lasso language from FileMaker and Apple. In 2005, Lasso Pro received MySQL Network certification<ref>{{cite web|last=Cook|first=Brad|title=Lasso Pro receives MySQL Network certification|url=http://www.macworld.com/article/1042860/lasso.html|work=MacWorld|publisher=IDG|accessdate=28 October 2013}}</ref> 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.<ref>{{cite web|url=http://www.lassosoft.com/Omnipilot-Acquires-Lasso-Product-Line-From-Blue-World-Communications-Inc|title=OmniPilot Software acquisition article}}</ref> 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.<ref>{{cite web|url=http://www.macworld.com/article/1040256/lasso.html|title=Lasso 8 release announcement}}</ref> This also included the first "free" version of Lasso limited to IP addresses.<ref>{{cite web|url=http://www.lassosoft.com/Omnipilot-Offers-Lasso-Developer-85-For-Free | title = 8.5 for free | newspaper = MacNN }}</ref> OmniPilot followed this release with a number of complementary products, including Lasso Studio 8 for Dreamweaver and GoLive<ref>{{cite web|last=Cohen|first=Peter|title=Lasso Studio 8 for Dreamweaver & GoLive released|url=http://www.macworld.com/article/1043914/lassostudio8.html|work=MacWorld|publisher=IDG|accessdate=28 October 2013}}</ref> on March 28, 2005, Lasso Studio for [[Eclipse (software)|Eclipse]], ChartFX integration and a number of free Lasso-based solutions.<ref>{{cite web|url=http://www.macnn.com/search/omnipilot/ | title = List of releases by OmniPilot on MacNN | newspaper = MacNN }}</ref> 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.<ref>{{cite web|url=http://www.macnn.com/articles/07/03/05/omnipilot.sells.lasso/ | title = LassoSoft acquires OmniPilot's Lasso | newspaper = MacNN | date = March 5, 2007 }}</ref><ref>{{cite web|url=http://www.lassosoft.com/Lassosoft-Acquires-OmniPilot-And-The-Lasso-Product-Line|title=LassoSoft LLC acquisition article}}</ref> Recognizing the need to be competitive against much more popular languages such as PHP and [[Active Server Pages|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.<ref>{{cite web|url=http://www.lassosoft.com/lassotalk/msg/258902/What+I+hope+Lassosoft+is+doing+right+now | title = What I hope Lassosoft is doing right now | first = Lars | last = Gunderson }}</ref><ref>{{cite web|url=http://bildr.no/view/730908 | title = Graph of LassoTalk community decline | first = Lars | last = Gunderson }}</ref> 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.<ref>{{cite web|url=https://www.macupdate.com/app/mac/7277/lasso-server|title=9.2 Release}}</ref> ===Release history=== {| class="wikitable" |+ Key ! Color ! Meaning ! Development |- | style="background:salmon;"| Red | Old release | No development |- | style="background:#FCED77;"| Yellow | Stable release | Security fixes |- | style="background:#a0e75a;"| Green | Stable release | Bug and security fixes |- | style="background:skyBlue;"| Blue | Future release | New features |} {| class="wikitable" |- ! style="width:70px;"| Version ! style="width:100px;"| Release date ! Notes |- | style="background:salmon;"| ROFM||>1994-03-14||Russell Owens' FileMaker CGI, early AppleScript-based connector for FileMaker Pro databases |- | style="background:salmon;"| 0.1||Sep-1995||CGI connector written by Vince Bonafonti in C/C++ to connect FileMaker Pro to the web |- | style="background:salmon;"| 1.0||27-Sep-1996||Connector for FileMaker Pro 3.x and WebSTAR<ref>{{cite web|url=http://www.blueworld.com/ |title=First Version of Lasso Released |url-status=dead |archiveurl=https://web.archive.org/web/19961019190348/http://www.blueworld.com/ |archivedate=October 19, 1996 }}</ref><ref>{{cite web|url=http://www.blueworld.com/lasso/Lasso%20Manual.pdf |title=Lasso 1.0.4 Manual |url-status=dead |archiveurl=https://web.archive.org/web/19961227171843/http://www.blueworld.com/lasso/Lasso%20Manual.pdf |archivedate=December 27, 1996 }}</ref> |- | style="background:salmon;"| 1.1||Dec-1996||WebSTAR plug-in, client browser information, complete GUI security layer<ref>{{cite web|url=http://www.blueworld.com/lasso/ |title=Lasso 1.1 Released |url-status=dead |archiveurl=https://web.archive.org/web/19961227162936/http://www.blueworld.com/lasso/ |archivedate=December 27, 1996 }}</ref> |- | style="background:salmon;"| 1.2||Jan-1997||Source code licensed to Claris (Apple Computer Inc), named CDML, installed in Claris Homepage |- | style="background:salmon;"| 2||17-Jul-1997||Included 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<ref>{{cite web|url=http://blueworld.com/blueworld/news/lasso2.0.pr.html |title=Lasso 2.0 Release |url-status=dead |archiveurl=https://web.archive.org/web/20030612124837/http://blueworld.com/blueworld/news/lasso2.0.pr.html |archivedate=June 12, 2003 }}</ref> |- | style="background:salmon;"| 2.5||1-Dec-1997||Added 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)<ref>{{cite web|url=http://www.blueworld.com/ |title=Broken Link to MacWeek Review |url-status=dead |archiveurl=https://web.archive.org/web/19980422040818/http://www.blueworld.com/ |archivedate=April 22, 1998 }}</ref> |- | style="background:salmon;"| 3.0||07-Oct-1998||Added 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<ref>{{cite web|url=http://blueworld.com/blueworld/news/10.7.98-L3Release.html |title=Lasso 3.0 Released |url-status=dead |archiveurl=https://web.archive.org/web/20030612040411/http://blueworld.com/blueworld/news/10.7.98-L3Release.html |archivedate=June 12, 2003 }}</ref> |- | style="background:salmon;"| 3.5||14-Apr-1999||Added [[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<ref>{{cite web|url=http://www.blueworld.com/blueworld/news/4.14.99-Lasso3.5Ship.html |title=Lasso 3.5 Released |url-status=dead |archiveurl=https://web.archive.org/web/20030608113803/http://www.blueworld.com/blueworld/news/4.14.99-Lasso3.5Ship.html |archivedate=June 8, 2003 }}</ref> |- | style="background:salmon;"| 3.6||5-Jan-2000||Support for FileMaker 5 Data Sources, SQL wizard for interactive SQL queries, customizable global error pages and Studio for MacroMedia DreamWeaver<ref>{{cite web|url=http://blueworld.com/blueworld/news/01.05.00-LassoWDE3.6Ship.html |title=Lasso 3.6 Release |url-status=dead |archiveurl=https://web.archive.org/web/20030611094829/http://blueworld.com/blueworld/news/01.05.00-LassoWDE3.6Ship.html |archivedate=June 11, 2003 }}</ref> |- | style="background:salmon;"| 3.6.5||1-Oct-2000||Added connector for MySQL, Red Hat and OS X support<ref>{{cite web|url=http://blueworld.com/blueworld/news/10.02.00LassoLite365.html |title=Lasso 3.6.5 Released |url-status=dead |archiveurl=https://web.archive.org/web/20030611230547/http://blueworld.com/blueworld/news/10.02.00LassoLite365.html |archivedate=June 11, 2003 }}</ref> |- | style="background:salmon;"| 5||26-Feb-2002||Rewritten 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)<ref>{{cite web|url=http://www.blueworld.com/blueworld/news/02.26.02-LP5Release.html |title=Lasso 5.0 Release |url-status=dead |archiveurl=https://web.archive.org/web/20030802080855/http://www.blueworld.com/blueworld/news/02.26.02-LP5Release.html |archivedate=August 2, 2003 }}</ref> |- | style="background:salmon;"| 6||17-Sep-2002||Added imaging, PDF manipulation, native XML, FTP integration, date math, durations<ref>{{cite web|url=http://www.blueworld.com/blueworld/news/09.04.02-L6ProdLine.html |title=Lasso 6.0 Released |url-status=dead |archiveurl=https://web.archive.org/web/20030622143136/http://www.blueworld.com/blueworld/news/09.04.02-L6ProdLine.html |archivedate=June 22, 2003 }}</ref> |- | style="background:salmon;"| 7||30-Aug-2004||MySQL externalized (due to licensing), FileMaker closed connector |- | style="background:salmon;"| 7.1||13-Sept-2004||Added compatibility with Filemaker Pro 7<ref>{{cite web|url=http://www.lassosoft.com/Omnipilot-Announces-Lasso-Professional-71-Compatible-With-Filemaker-Pro-7|title=Lasso 7.1 Release (copy)}}</ref> |- | style="background:salmon;"| 8||25-Oct-2004||Lasso Server broken down into separate "sites" for hosting providers |- | style="background:salmon;"| 8.1||19-Sep-2005||Added document caching, stability fixes<ref>{{cite web|url=http://www.lassosoft.com/Omnipilot-Announces-Lasso-Professional-81|title=Lasso 8.1 Released}}</ref> |- | style="background:salmon;"| 8.5||9-Jun-2006||Added 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<ref>{{cite web|url=http://www.lassosoft.com/Lasso-Professional-Server-85-Officially-Released|title=Lasso 8.5 Released}}</ref> |- | style="background:salmon;"| 9||29-Jan-2010||Major architectural change: more syntax, strong-typing vs. weak-typing, JIT compiling, native serializing, 64-bit support<ref>{{cite web|url=http://www.lassosoft.com/News-Update-Jan-29-2010|title=Lasso 9 Release}}</ref> |- | style="background:#a0e75a;"| 8.6||20-Apr-2011||Speed, stability increased<ref>{{cite web|url=http://www.lassosoft.com/lasso-8_6-release|title=Lasso 8.6 Release}}</ref> |- | style="background:salmon;"| 9.1||11-Jul-2011||New administration interface, 64-bit connector, new SAS licensing<ref>{{cite web|url=http://www.lassosoft.com/Lasso-9-1-Product-Release|title=Lasso 9.1 Release}}</ref> |- | style="background:salmon;"| 9.2||1-Jun-2012||Windows support added, integrated debugging, integrated code profiling<ref>{{cite web|url=http://www.lassosoft.com/News-Lasso-Server-92-Released|title=Lasso 9.2 Release}}</ref> |- | style="background:#a0e75a;"| 9.3||23-Jan-2015||New admin interface, new compilation methodology, centralized server deployment<ref>{{cite web|url=http://www.lassosoft.com/lasso-9-3-release-notes|title=Lasso 9.3 Release}}</ref> |} ==Code examples== ===Hello World=== Here are three ways to say "Hello world!" on a Lasso page. <syntaxhighlight lang="lasso"> <?lasso 'Hello World!' ?> ['Hello world!'] Hello world! </syntaxhighlight> 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=== <syntaxhighlight lang="lasso"> // Find all records in a table inline( -database='db_name', -table='table_name', -findall ) => { // Iterate through and process each row rows => { // Output each row to the current web request content_body += '<a href="' + column('url') + '">' + column('title') + '</a>' } } </syntaxhighlight> Inlines are the basic Lasso tool for database actions. [http://www.lassosoft.com/lassoDocs/languageReference/obj/inline 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: <syntaxhighlight lang="lasso"> // Execute SQL statement inline( -database='db_name', -sql = 'SELECT * FROM table_name' )... </syntaxhighlight> 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<ref>[http://www.lassosoft.com/lassoDocs/languageReference/obj/inline large range of parameters]</ref> 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". <syntaxhighlight lang="lasso"> // Define a couple of useful methods define br => '<br/>' define bottles(n::integer) => #n != 1 ? ' bottles' | ' bottle' // Declare the local that will store the lyrics as a string local(out = '') // Use Lasso query syntax to generate the lyric with n in 99 to 1 by -1 do { #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 </syntaxhighlight> The next example uses an OOP approach to print out the lyrics when the object is represented as a string: <syntaxhighlight lang="lasso"> // Define type define bottles_of_beer => type { // Define internal data data private bottles = 99 // Define private methods private br => '<br/>' private s => .bottles != 1 ? 's' | '' // Generate lyrics when object represented as a string public asstring => { local(out = '') // Use Lasso query syntax to generate the lyrics with n in 99 to 1 by -1 do { .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 result return #out } } bottles_of_beer </syntaxhighlight> ==Development tools, environments== *LassoLab *Lasso Studio for [[Eclipse (software)|Eclipse]] *Lasso language mode for [[Coda (web development software)|Coda]] *Lasso language module for [[BBEdit]] ==References== {{reflist|30em}} ==External links== *{{Official website|www.LassoSoft.com}}, LassoSoft *{{Official website|www.LassoGuide.com}}, LassoGuide *[https://web.archive.org/web/20170922025229/http://lassoref.com/ LassoReference] *[http://www.filemaker.com FileMaker] *[https://web.archive.org/web/20050904075405/http://www.listsearch.com/ ListSearch - LassoSoft's ListSearch Engine] *[http://lasso.2283332.n4.nabble.com/Lasso-Talk-f3096191.html LassoTalk Archive on Nabble] *[https://groups.google.com/forum/#!forum/lassotalk LassoTalk Archive on Google Groups] *[http://www.execuchoice.net ExecuChoice - PDF Tag Suite - PassThru - ShortString] *[https://github.com/knop-project/knop Knop - an open source web application framework for Lasso 8 and 9] *[http://www.lassofusebox.org LassoFusebox - a Lasso port of the popular open source Fusebox web application framework, for Lasso 8 and 9] *[http://www.lassobin.com LassoBin - A PasteBin for Lasso] *[http://www.lassoforge.com/ LassoForge - OpenSource Lasso Projects] *[http://www.LassoSoft.com/tagSwap tagSwap - A public exchange for Lasso custom tags] *[https://web.archive.org/web/20181127175536/http://www.l-debug.org/ L-Debug - Debugging suite for Lasso 8 & Lasso 9] *This Wikipedia entry relies heavily on [https://web.archive.org/web/20030610160817/http://blueworld.com/blueworld/news/1998_announce.html early announcements] and many [https://web.archive.org/web/20030608120807/http://www.blueworld.com/blueworld/products/LassoPress.html notable sources] no longer available on the web. [[Category:Cross-platform software]] [[Category:Object-oriented programming languages]] [[Category:Scripting languages]] [[Category:Dynamically typed programming languages]] [[Category:Filename extensions]] [[Category:High-level programming languages]] [[Category:Programming languages created in 1995]] [[Category:Class-based programming languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Advert
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Discuss
(
edit
)
Template:Frac
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Official website
(
edit
)
Template:Reflist
(
edit
)