Lasso 9 Server Change Notes
This page summarizes the changes made in recent revisions of Lasso 9 Server.
Visit the Lasso 9 Server download page for the latest official version and download links for all OS's.
b5 released 2016-04-21 - see http://www.lassosoft.com/downloads_browse > Lasso Server > BETA
- Added LUX option to use SSL for server-level email notifications
- Added comparator for map type
- Fixed LJAPI/PDF functions on Windows by requiring Java JRE 8
- Fixed running on OS X 10.11.4 and later by using self-compiled OpenSSL
- Fixed crash in LUX's Quick Code form by updating to SQLite 3.8.6
- Fixed modules loading twice in some situations
- Fixed file->delete on Windows by switching to io_file_remove
- Fixed error on Windows about missing msvcr120.dll library when loading ImageTag
- Fixed wrong path to log files on Windows
- Fixed oversized SQLiteDS module on Linux
- Fixed email_compose to specify locale when writing date headers (#8015)
- Fixed mustache_include to use openTruncate when updating compiled mustache templates (#8018)
- Fixed json_decode's support for signed exponents, unenclosed numerals and null values
- Fixed inability to use custom session IDs (#8020)
- Fixed incorrect results when passing large values to date->set (#7300)
- Fixed loop when calling inherited method from thread type in interpreted mode (#7995)
- Fixed empty trait requirements in interpreted mode (#7581)
- Fixed empty results from LDAP queries (#7896)
- Fixed crash when calling ldap->close
- Fixed failure when using keyword params but not optional params on member methods (#7408)
- Fixed LUX's not restarting when upgrading users table
- Fixed LUX's not renaming disabled LassoStartup files
- Fixed LUX's management of custom environment variables (#7902)
- Fixed LUX's divide-by-zero error on instance startup
- Fixed LUX error when an instance's home path lacks a trailing slash
- Fixed http_server to gracefully handle connections closed by client (#7972)
- Fixed missing developer IP limit message (#8023)
- Fixed crash when querying an Oracle datasource using -maxrecords='all' (#7674)
- Fixed crash when uploading files on Windows
- Fixed "broken kqueue" message on macOS 10.12
- Fixed security_registry->addUser failure
- Improved lassoim to use sys_masterHomePath if it exists, allowing it to work if launched manually
- Improved Windows IIS configuration script and installation instructions
- Improved LUX fonts & UI for better usability across platforms
- Improved session ID randomness on Windows by using UUID v4
- Improved http_server's handling of HEAD requests
- Improved lasso9 prompt by delaying processing if inside braces or line ends with a semicolon
- Revised sys_homePath and sys_masterHomePath variables to be consistent across platforms
- Revised trait_forEach to include asStaticArray, asArray, asList so they can be called by queriable types (#7997)
- Revised LUX to start lassospitfire without verbose logging
- Revised LUX on Windows to reliably find its home path
- Revised LUX on Windows to disable the unused user/group fields for instances
- Revised LUX on Mac to count inactive memory as free in server RAM usage graph
- Updated OS X installer to remove old LJAPI9.bundle module
- Updated libmysql, libmongoc, libzip, zlib on all platforms
- Updated libgc, mpir, curl, libxml2, libxslt on Windows to match other platforms
- Updated OpenSSL on Mac and Windows
- Updated SQLAPI on all platforms to 4.1.10
- Updated lassoguide.com instructions for connecting to SQL Server via ODBC and Oracle datasources (#7633, #7380)
r4 released 2016-02-02
- Added OS X 10.11 support
- Added CentOS 7 support
- Added Windows support
- Added Apache 2.4 connector & unicode headers to Windows installation
- Added support for running with SELinux enabled on CentOS 6 & 7
- Added option in OS X uninstaller to preserve /var/lasso
- Added support in OS X uninstaller to install via command line or to a system on a secondary volume
- Added LCAPI headers in /usr/include/Lasso9 on Linux and Library/Frameworks/Lasso9.framework/Headers on OS X
- Added -httpOnly to setCookie, cookie_set, session_start, session_end (#7935)
- Added comparator for keyword type (#7537)
- Added missing curl constants (#7688)
- Added file->read for compatibility (#7539)
- Added dot notation for arrays and embedded maps to mustache processor (#7967)
- Added hash_map type
- Fixed running on the XFS filesystem (#7948)
- Fixed LUX to not require http: prefix when specifying a management URL (#7943)
- Fixed initialization link for Windows + IIS (#7939)
- Fixed crash on undefined variable (#7964)
- Fixed capture->invokeAutoCollect not working in interpreter mode (#7968)
- Fixed oncreate not being called for thread objects (#7954)
- Fixed sys_library not handling relative paths (#7948)
- Fixed LJAPI on CentOS to accomodate JRE path changes
- Fixed mustache_include (#7963)
- Fixed file->moveTo not updating object’s path (#7974)
- Fixed potential for wrong permissions on lasso_email database
- Fixed LUX using improper datasource IDs
- Fixed STARTTLS failure (#7977)
- Fixed empty loop_key on map type (#7969)
- Fixed quick code form (#7955)
- Fixed LUX visual issues (#7892)
- Fixed character encoding issues (#7958, #7999)
- Fixed wrong month when using date->set (#7985)
- Fixed parsing of keyword params when using date_difference (#7635, #7979)
- Fixed encoding of maps with json_encode (#7987)
- Fixes for mustache processor with unescaped tags, partials, custom delimiters, & calling inverted sections
- Fixed web_response->setcookie not handling duration type for expiry
- Fixed timeout errors when changing Spitfire settings in LUX
- Fixed potential problem with tree_node (#7928)
- Fixed MySQL connector on OS X
- Fixed JSON encoding of trait_foreach and trait_map objects (#7991)
- Fixed issues with trait->requires (#7581)
- Fixed dir->eachDirPath not skipping socket files
- Fixed garbled system-level error messages on Linux
- Fixed date values being reset after calling weekOfYear, dayOfWeek, or dowLocal (#8004)
- Fixed image->file and image->describe methods (#8005, #8006)
- Fixed LUX security issue
- Improved installers on all platforms
- Improved makefile for compiling Lasso libraries and LCAPI plugins
- Improved lables & controls of LUX interface
- Improved hash_map performance
- Revised multiple dispatch behaviour (#7945)
- Restored -opLogical to inline type (#7644)
- Updated LUX to make compiled mode the default for new instances
- Updated SQLAPI to 4.1.5
- Updated json_encode to handle pairs
- Updated OS X version to no longer require XQuartz
- Updated OS X version to run with any version of the Oracle Java 8 JRE
- Updated OS X version to run under Apache 2.2 or 2.4
- Updated OS X installer to make Apache module and LJAPI optional installs
- Updated OS X installer for Gatekeeper 2 compatibility
- Updated Windows installer to make Image module and Java support optional installs
- Updated MySQL connector to use "utf8mb4" character set by default on version 5.5.3 and up
The following issues may be considered show-stoppers by those requiring these functions. Our team is working to deliver the resolution to these issues as soon as possible.
Windows: Java issue - Impacting PDF functions.
ALL OS's: LDAP issue - Impacting all LDAP use
- Added LUX, a new administration console running on port 8090
- Added Spitfire, a built-in HTTP web server
- Added Trident, an on-demand compiler with customizable settings: JIT, Off, Combo
- Added timeoutcallback ternary to trait_readBytes->readBytesFully (#7772)
- Added asInteger and asDecimal null converters (#7615)
- Added UPC-A and UPC-E support to PDFBarcode
- Added MongoDB connector
- Added built-in mustache template processor
- Added new json_encode / json_decode methods
- Added results / referrals / code accessors to LDAP object
- Added trait_finite to the bytes type
- Added signature->flags which indicates a method's access level (#7494)
- Added lasso_typeSetDataMember LCAPI function
- Added User Privilege management and privilege escalation
- Added ability to manage environment variables at the instance level
- Added built-in database browser
- Added CPU and Memory monitoring, graphing, and threshold management
- Changed lasso_version / sys_version to include major / minor / patch versions
- Improved error checking and reporting for most string methods
- Improved parser significantly
- Improved multiple dispatch rules
- Fixed Queue->forEachSpool spinning with zero (#7253)
- Fixed incorrect output for XML with extended characters (#7794)
- Fixed parameters being overwritten by data member defaults (#7882)
- Fixed MySQL connector not setting $__updated_count__ for updates (#7773)
- Fixed bad character encoding when converting XML objects to string
- Fixed locale->formatAs to handle 64-bit integers (#7236)
- Fixed duration comparison and arithmetic operators (#7747, #7746)
- Fixed duration->asString (#7745)
- Fixed error reporting when working with faulty zip files
- Fixed bad encoding when handling multipart/form-data posts on OS X (#7778)
- Updated OS X to require Oracle Java 8u25
- Updated ICU to 52.1
New: Lasso 9.2.7 now supports 32 bit distributions of Centos 5 and Ubuntu 12.04 and later
- Added - bytes->asString(encoding::string) and bytes->exportBytes()
- Added - string->eachLineBreak
- Added - additional operators "nbw", "ncn", “new” for backwards compatibility
- Added - improved support for MacPorts Apache (#7384)
- Added - lassoapp support for serving Microsoft Silverlight mime types (xap, xaml, xbap) (7552)
- Added - file->chmod support for octal notation (7553)
- Added - trait_encodeUrl to provide encodeUrl method to types; added to string and integer types (7558)
- Added - LassoApp mime type for html5 appcache manifest
- Added - missing classic date formatting symbols “%G” and “%Z”
- Changed - map->forEachNode is now a public method (#7665)
- Changed - log settings no longer include SQL and Deprecated (#7562)
- Changed - allow session_start call to both use a cookie and decorate links (#7549)
- Changed - Updated to allow pdf_barcode to create EAN-13 barcodes
- Changed - sqlite_db->doWithClose now passes self as parameter to givenBlock()
- Fixed - MySQL session driver initialization under specific conditions (#7652)
- Fixed - Java usage (including PDF manipulation) on Ubuntu (#7667)
- Fixed - critical Windows IO timer callback issue
- Fixed - ambiguous action_param definitions
- Fixed - file uploads with forms that are not multipart
- Fixed - Date_GetLocalTimeZone without parameters (#7648)
- Fixed - segfault with protect in specific circumstance (#7542)
- Fixed - date->difference returns invalid duration when negative values are present (#7625)
- Fixed - behaviour of Query Expression variables and !== (#7657)
- Fixed - behaviour of source file generation when no name specified (#7459)
- Fixed - log settings now correctly being read at instance startup (#7561)
- Fixed - special case where integers were shortened to 32-bit during math operation
- Fixed - types with data members & captures passed to increate (#7579)
- Fixed - defining types with Lasso 8 syntax (#7578)
- Fixed - xml_document->importNode refined
- Fixed - 32 bit limit for primary key handling in MySQL (#7636)
- Fixed - behaviour of staticArray->get and the Assignment & Value (:=) Operator (#7533)
- Fixed - database & table values back ticked (#7513)
- Fixed - decimal->asString group char behaviour on Windows (#7630)
- Fixed - failure to Add Session Info to Anchors and Forms with Link-Based Sessions (#7548)
- Fixed - regExp->matchString always requiring a parameter (#7521)
- Fixed - string_replaceRegExp fails with -replaceonlyone parameter (#7540)
- Fixed - duration correct setting of hours (#7504)
- Fixed - failure occurs when using iterate with a “variable” (#7442)
- Fixed - incorrect math_pow return type (#7541)
- Fixed - error on Windows Server 2008 R2 with multiple cores (#7401)
- Fixed error in decode_qheader method which caused early exit and return of non-decoded header
- Fixed - corrected one shadowed definition of integer_random
- Fixed - date objects created with a date string will have the initial hour, minute and second set to zero; date strings which do not specify those components will retain the zero (#7725)
- Fixed - misplaced quote causing unexpected termination (#7736, #7647)
- Fixed - invalid syntax causing unexpected termination (#7737)
- Fixed - calling given block in method causing unexpected termination (#7735, specific to OS X beta)
Fixed - [Date] format returned incorrectly (#7689)
Changes included in 9.2.6
- Added -username and -password to curl->onCreate.
- Added curl->upload, curl->download, curl->ftpDeleteFile, curl->ftpGetListing as more efficient replacements for FTP methods.
- Added default page = 1 for PDF_Read->PageSize if no page was specified (7477)
- Added dir->perms.
- Added Filemaker datasource SSL support. It now checks for port 443 and will do https in that case.
- Added map->insert(p1::pair, p2::pair, ...more) for inserting two or more key/value pairs in one method call.
- Added support for DB2 database servers. *
- Added the ability to specify the file path as a keyword parameter when creating a pdf_read object. This adds compatibility with older versions of Lasso for the pdf_table creator method. (7515)
- Added the ability to specify the number of columns and rows as keyword parameters when creating a pdf_table object. This adds compatibility with older versions of Lasso for the pdf_table creator method. (7469)
- Changed net_tcpssl to net_tcp_ssl and net_udppacket to net_udp_packet for consistency.
- Expanded pdf_read by adding width and height accessors (7477)
- Fixed array->remove's behavior when the array is empty.
- Fixed client_ip compare with wildcards (7457, 7506)
- Fixed corruption of binary data when sent through email_send as an attachment. (7473)
- Fixed crash seen when passing Image (Magick) objects across threads.
- Fixed error in email_pop where a base64 encoded body part/component would generate a fatal error while parsing (7493).
- Fixed error in email_pop->auth preventing server login (#7492).
- Fixed extra period at end of zero precision decimal->asstring (7441)
- Fixed Include_URL timeout (7501)
- Fixed problem with loop_count not giving back negative numbers properly.
- Fixed problem with web_response->sendFile malforming a header (#7466).
- Fixed small memory leaks when handling parsing or compilation errors.
- Fixed stability problem seen after upgrading to CentOS 5.9 64-bit.
- Fixed typo in sys_process->detach which caused a failure.
- Fixed Windows specific situation where internal named pipes could be created with duplicate/conflicting names.
- Fixed Windows specific stability problems on certain CPU types.
- Fixed Windows specific incorrect integer formating with group character output (7547)
- Fixed Windows specific crash on definition of extremely large integers (7546)
- Fixed Windows specific path issue with directory-based LassoApps (7543)
- Compatibility: Added date->year(-days). Returns the number days in the year, accounting for leap years (7524)
- Compatibility: Changed date->month(-days) so that it now returns the number of days in the date object's current month (7499)
- Compatibility: Changed file_copy so it now copies directories recursively (7463)
- Compatibility: Changed file_delete so it now has recursive delete when applied to a directory (7462)
- Compatibility: Changed maxrecords_value to match LP8's behavior where it returns -1 when maxrecords was 'all'.
- Compatibility: Fixed String_IsNumeric inconsistent results (7407, 7456)
- Compatibility: Fixed token_value('foo') returning error. Correct values now being returned. (7414)
- Compatibility: Fixed log method to append to file instead of overwrite entire contents of file (7514)
- Compatibility: Fixed bug in client_postparam and client_getparam where requesting the paramater at a postion would instead return the count. Introduced client_postparam(name,-count) and client_getparam(name,-count) (7458)
- Compatibility: Fixed bug in math_atan2 (7512)
- Compatibility: Fixed bug in math_exp (7513)
* DB2 Connector Specific Notes:
One example of a connection string is:
Database=lasso; Protocol=tcpip; Hostname=the host; Servicename=the port;
UNIX Lasso instances should be started with suitable environment variables to enable the DB2 CLI libraries to load. These are added in the instance manager.
Consult your DB2 CLI documentation for more information.
- Added confirmation of restart of instance in Instance Manager.
- Added name display in collapsed view of instances in Instance Manager.
- Changed handling of re-defined methods and types so that they are ignored if the source had not changed.
- Fixed many Windows related performance and stability problems.
- Fixed semi-random crash seen on some 64-bit Linux based systems.
- Fixed crash seen when a garbage collected curl object still had outstanding data to be read.
- Fixed crash seen when parsing certain old (~3.6) syntax such as [include: /notquoted.txt].
- Fixed problem with in-memory session expiration dates not being accurately tracked.
- Fixed problem where the "full name" portion of email addresses were being stripped in email_send.
- Fixed error in [file_chmod].
- Fixed problem when sending POST data through curl when that data is a string object containing "extended" characters.
- Fixed quoted-printable encoding on outgoing email addresses.
Changes included in 9.2.4
Added better error reporting for zip object failures.
Added support for OS X 10.8 and 10.8 Server.
Changed the FileMaker datasource connector so that it ignores empty input field values unless the field operator is -eq or -neq.
Improved speed of FileMaker results XML parsing.
Fixed the FileMaker datasource connector's recognition of the -keyvalue parameter.
Fixed crash seen when calling zip_file->close twice.
Fixed xml parser system not recognizing DTD nodes.
Fixed problem where certain constructs could blow out the C stack during parsing and cause a crash.
Fixed cases where the ImageMagick module was not operating in a thread-safe manner.
Fixed problem in "portal" method which could cause it to endlessly loop.
Changes included in 9.2.3
- Added the following cipher related methods: cipher_generate_key, cipher_seal/open, cipher_sign/verify.
- Changed stack trace to show only the file name instead of the full source file path for debugging information generated by sys_include.
- Removed legacy automatic detection of /Library/Lasso as a valid Lasso home path.
- Improved email_parse->body type handling (Ticket #7417)
- Changed the 'name' parameter on web_response->sendFile to be optional.
- Changed the -file parameter on file_serve to be optional.
- Changed all Apache confs to use SetHandler for .lasso files.
- Updated Ubuntu build target to 11.10. Ubuntu 11.10 is required for 9.2.3.
- Fixed handling of non-script 404 errors in built-in http server (for LassoLab).
- Fixed problem where the FileMaker DS connector was not correctly picking up the error code indicated by FileMaker Server.
- Fixed problem where the FileMaker DS connector was not properly XML decoding some field data.
- Fixed significant inefficiencies in code generation for logical OR operator.
- Fixed case where quotes were being inserted around the home directory path when it was being auto-detected based on the current working directory.
- Fixed a typo in the osx_uninstall script which could damage the .profile.
- Fixed crash where a garbage collected curl object still had outstanding data to be read.
Changes included in 9.2.2
Improved stability for lassoserver on Windows.
Improved the MySQL datasource to always back-tick database and table names. (Ticket #7413)
Improved: Ensured that the current serial number is never printed in the logs all willy-nilly and is not shown in the Admin.
Updated to use LLVM 3.1.
Improvements to support debugging in LassoLab.
Fixed problem with some usages of encrypt_hmac().
Fixed problem when quoted-printable encoding long email subject lines.
Changes included in 9.2.1
Improved debugging support with LassoLab
Fixed rare crash at lassoserver startup.
Dropped support for 32-bit-only CPUs in Mac OS X
Changes included in 9.1.5
Added integer type constraints for ids passed to database_registry.
Added several usability improvements to the Admin app's datasources page.
Added the -info keyword which can be used when creating an image object.
Changed -username/-password in include_url to try and use digest authentication by default, unless -basicAuthOnly is specified. Include_url falls back to basic auth if digest is not supported.
Added svg, ttf and woff mime types to LassoApp handlers
Added -layout as a synonym for -table in inlines.
Added log(s) for compatibility.
Added server_date keyword support for backwards compatibility.
Fixes and Issue resolutions
Fixed -getParams and URL encoding in include_url.
Fixed -verifyPeer in include_url. Set default to true.
Fixed HTML error in the Admin LassoApp which made the "Select As Default Driver" button unavailable.
Fixed improper definition of field_name(position::integer, -type).
Fixed Java object leakage when using LJAPI.
Fixed problem in date object where setting the timezone wouldn't take if the date had been previously modified; setting ->minute, for example.
Fixed problem seen when using -file parameter to pdf_font.
Fixed problem when specifying margins on pdf_doc.
Fixed problem where sockets returned from accept weren't being switched to non-blocking.
Fixed problem with sqlite session driver not removing manually ended sessions fast enough.
Fixed problem with sys_exec where it wasn't properly changing the launched process to the desired OS group. This corrects the issue where Lasso Server instances weren't running with the proper group privileges (before this fix, instances would be underprivileged).
Fixed quoted-printable encoding of email address lists when sending email.
Fixed situation where some directory-based LassoApps were failing to load.
Fixed small memory leak when calling LCAPI functions.
Added improvements to the Instance Manager and Admin LassoApps providing better IE 9 compatibility.
Removed setter for date->zoneOffset.
Fixed auth_custom implementation where -Realm keyword was failing.
Fixed problem when retrieving FileMaker value lists.
Changes included in 9.1.4
Introduced mod_lasso9, a custom FastCGI module for Apache 2. mod_fastcgi is no longer utilized. Additionally, lassoim no longer acts as FastCGI proxy for individual Lasso Server instances. Raw connection handling speed increased 2.5 times.
Added UploadTracker LassoApp and support in internal mime parser for monitoring ongoing HTTP file uploads to Lasso. (With thanks to Steffan Cline.)
Improved by removing the maximum method parameter limit of 512.
Improved memory handling when uploading files.
Moved the default Lasso master home on OS X to /var/lasso/home. The "Application Support" directory is no longer used, though existing instances may still be safely located there.
Added: Exposed the Apache handler name which triggered the request with the L_APACHE_HANDLER variable.
Added libjsig into the LJAPI module build. This eliminates OpenJDK signal warning spam at startup and also solves LJAPI related issues seen on some 64-bit Linux platforms.
Improved locked database handling with sqlite_db.
Added bytes(doc::pdf_doc) and pdf_doc->asBytes.
Added and enabled pdf_barcode.
Added the FileMaker datasource related keyword -fmscript for compatibility with Lasso Professional. This is synonymous with -fmscriptpost.
Added better compatibility for the old 'output' tag.
Improved compatibility in string_extract.
Added pdf_serve for compatibility.
Added search_arguments and others for compatibility.
Added sort_arguments and others for compatibility.
Added -dpi and -quality keyword parameters to image->save.
Fixes and Issue resolutions
Fixed situation where queuing new email messages could jam the queue.
Fixed problem when using -condition on the cache method.
Fixed instances where PDF_Read wasn't calling file_forceRoot.
Fixed problem where sockets accepted from stdin couldn't be closed and were leaked.
Fixed problem with date->minute=(n) failing with a large minute number.
Changed json_serialise with maps so that it forces the map keys to be strings. This avoids the generation of invalid JSON text.
Fixed API problems seen in email_parse.
Fixed rendering problems seen when serving in-memory PDFs with placed images.
Fixed pdf_image when scaling was specified.
Fixed file_listDirectory with large # of files.
Fixed problem with the -op='neq' inline operator.
Fixed problem where cookie values were being returned without url decoding.
Changes included in 9.1.3
Introduced Full support for OS X Lion (10.7)
Added Performance improvements in json_deserialize.
Improved: Eased memory usage when sending email with attachments.
Added Adjustment to logging system to force writing out log data when 1000 messages are queued.
Improved: Changed mark phase of garbage collector to be non-recursive. This eliminates problem of running out of C stack space when GCing very long linked lists.
Added "cache" related methods.
Improved zip_add_XX related methods to function.
Added methods to zip object permitting adding files to zip archives.
Added Install & uninstall script improvements.
Compatibility improvement for LP8 style matcher/comparator.
Added methods capture->invokeAutoCollect, capture->givenBlock and capture->autoCollectBuffer=(s).
Compatibility improvements for run_children.
Included parser improvements in json_deserialize (ATTRIBUTED: Bil Corry).
Fixed failure seen when instantiating PDF_Read objects.
Improved Strings can now be used as right-hand-side values in decomposing assignments.
Fixed crasher when utilizing 'signature' objects.
Added methods for truncating to and swapping 64 bits: integer->hostToNet64 and integer->netToHost64. Both return the swapped integer value.
Fixed default parameters to PDF_Text so that they don't make the text a link.
Fixed problem with continuing compilation after undefined local is encountered.
Improved by relaxing the constraint on the parameter passed to currency, scientific and percent methods -for LP8 compatibility purposes
Ensured that date objects set the timezone when making a copy from another date.
Improved by removing integer constraints from loop -for LP8 compatibility purposes
Fixed miscalculation in duration->week.
Extra JVM options can be set using: admin_setPref('jvm_options', OPTIONS_STRING). OPTIONS_STRING is a space delimited list of options to pass to the JVM when it is initialized. You must restart Lasso Server for new or modified options to be recognized.
Changes included in 9.1.2 - Linux
Also in OSX10.7 Lion in beta
date(-year=void, -month=void, -day=void,
-hour=void, -minute=void, -second=void,
Added automatic timezone detection to date parsing.
Fixed handling of UNIX date formats in date parsing.
Changed file->moveTo to not copy, but to use io_file_rename.
Fixed a crasher while parsing the construct: local(a,b).
Added -flisten parameter to lassoserver, indicating a socket file on which to listen for fastcgi connections.