Lucee 6.0.451-BETA 2

Following a long last few weeks of final development, testing and bug fixing, the Lucee team is really proud to present Lucee 6 BETA 2

Available via https://download.lucee.org/ and your local Lucee Admin

You can use the new universal installers for the 5.4RC to install using the https://cdn.lucee.org/lucee-6.0.0.451-BETA.jar


From Parker Solar Probe Completes 12th Perihelion – Parker Solar Probe

Building on from BETA 1

Additional info about 6 can be found under Topics tagged lucee-6

Changelog

Firstly we have an epic tracking All Breaking Changes in Lucee 6.0 (implemented / scheduled )

Board for Lucee 6

Important

Arrays

LDEV-442 - Array function to remove duplicates - ArrayRemoveDuplicates
LDEV-42 - Array methods: shift(), unshift(), push(), pop(), splice()
LDEV-3171 - ArrayToStruct: add valueAsKey, use arrayValue as structkey
LDEV-3258 - Negative index array - Array index [-6] out of range, array size is [6]
LDEV-3763 - arraySlice()/querySlice() with offset 0 throws StackOverflowError
LDEV-3958 - Low-level implementation of arraySlice() is very-slow at large-scale.
LDEV-4271 - typed ArrayNew argument names not consistent with ACF and implementation inconsistent
LDEV-4387 - Arraynew() with type=“date” throws NPE error

Numeric

LDEV-4070 - lucee 6.0 - large number values (without floating points) handled as the wrong value
LDEV-4448 - Cannot cast String [352.] to a value of type [numeric]
LDEV-4409 - numberformat error on masking
LDEV-4449 - BigDecimal Invalid operation error with pow() / exponent
LDEV-3056 Arguments with type of “numeric” are not being cast to double
LDEV-4480 - cannot convert string[.] to a number; No digits found.
LDEV-3729 - Long Bigint values are not handled correctly

Member functions

LDEV-332 - Allow string member functions to work on numeric values (like their non member equivalents)
LDEV-2044 - Diff member function for dateDiff incompatible with ACF
LDEV-1297 - String.hash() method missing
LDEV-3244 - member function with too many arguments throws incorrect Error
LDEV-3383 - improve error message - member functions
LDEV-3747 - String member functions assume list instead of char array like Adobe
LDEV-3428 - optimise member function access
LDEV-3556 - Using hash() and toBase64() member function with struct and array throws incorrect error.
LDEV-3737 - Numeric.numberFormat method has not been implemented

Query / JDBC

LDEV-401 - Query.isEmpty() returns false when Query has no rows but has defined columns
LDEV-417 - Maxrows is not respected when using cfquery or queryExecute() with cachedwithin
LDEV-1925 - Postgresql returning java class (not string) for uuids in query results
LDEV-2637 - QueryNew does not ignore leading or trailing spaces in columns names
LDEV-2865 - cfdump hide and show doesn’t work with query
LDEV-2887 - There is no datasource with name [Datasource] when using ‘#’ in datasource name
LDEV-3249 - QueryToStruct
LDEV-3208 - queryRenameColumn()
LDEV-4410 - stop queryparam casting empty strings to nulls
LDEV-4229 - QueryParam missing exception should include the SQL
LDEV-4051 - update mysql to 8.0.30
LDEV-3770 - Improve error message for queryInsertAt() using value as struct
LDEV-3330 - use apache commons pool2 for pooling datasources
LDEV-4394 - avoid parsing queryparams in commented out sql
LDEV-4146 - add function isWithinTransaction
LDEV-3373 - allow table wildcards for dbinfo type=“columns”
LDEV-3374 - add dbinfo type=“columns_minimal”
LDEV-3378 - dbinfo type=“tables” name=“table” table=“%” datasource=“mssql”; also returns views, add a filter
LDEV-3510 - query.each() rows should use an ordered struct
LDEV-3511 - query returnType : ‘array’ should use ordered structs
LDEV-3070 - cfdump doesn’t show datasource for query
LDEV-3581 - Query.addRow not compatible with ColdFusion
LDEV-3469 - updateDatasource should also support passing in a custom attributes struct
LDEV-4470 - update postgres jdbc to 42.6.0
LDEV-4471 - update mysql to 8.0.33

Components

LDEV-4125 - inline and sub components
LDEV-3584 - getComponentMetadata with final component throws an error
LDEV-421 - Getting the properties of a component with getMetaData() returns them in the wrong order.
LDEV-1513 - Dumping getComponentStaticScope() of component with remote static function causes java.lang.NullPointerException
LDEV-3362 - getComponentMetaData omits static methods and properties
LDEV-3338 - whitespace in component attribute “implements” cause incorrect return when using getMetaData/getComponentMetaData
LDEV-3560 - getComponentMetadata(“MyAbstractClass”) does not indicate it is abstract
LDEV-3670 - Object metadata does not indicate that the CFC is final
LDEV-3493 - cfinvoke throws NPE without method attribute
LDEV-3714 - invoke function doesn’t support same scope calls
LDEV-4417 - udf metadata show lambda info
LDEV-4421 - Lucee 6 adds new component metadata with null values

SSL / HTTP

LDEV-917 - Remove packaged cacerts file, use jvm cacerts by default
LDEV-2199 - CFHTTP Connection pooling added in LDEV-1000 does not work
LDEV-2468 - new HTTP(). Send bug. Attribute url is required but missing
LDEV-4242 - cfhttp trace logging doesn’t log connection failures
LDEV-4175 - CFHTTP add a error=true/false to the result (same as throwOnError)
LDEV-4011 - CFHTTP add more detail to exception for throwOnError=true
LDEV-3678 - CFHTTP result is missing charset
LDEV-3418 - Add CFHTTP Connection pooling cleanup to background Controller thread
LDEV-3239 - cfhttp doesn’t support TLSv1.3
LDEV-4497 - update bundled cacerts to jdk-11.0.19.7
LDEV-3545 - Multipart http response doesn’t handle quoted boundary
LDEV-3404 - SSLCertificateInstall() doesn’t throw underlying exception for error “Could not obtain server certificate chain”
LDEV-3742 - cfcontent delivers wrong content-type
LDEV-4262 - unsupported charset in HTTP response
LDEV-4402 - Admin - SSL Certificates page shows an error message twice

Decision

LDEV-566 - isValid() method should support all is…() methods
LDEV-2642 - isValid(‘integer’, ‘Yes’) returns true
LDEV-3275 - IsNumeric returns True on strings like “3d” and “6f” (5.3.8 regression!)
LDEV-3598 - Character is not considered simple according to isSimpleValue()
LDEV-1282 - Fix === operator to check for type equality

Json

LDEV-1973 - DeserializeJSON - numbers with lots of trailing zeroes casting to string
LDEV-3413 - deserializeJSON an empty string dont throw error
LDEV-3661 - deserializeJSON() converts large decimals to string
LDEV-4006 - Regression - isJson() throws java.lang.NumberFormatException
LDEV-4501 - add compact option to serializeJson
LDEV-4225 - improve contextual json deserializing error feedback, Syntax Error, invalid Expression

Date / Time

LDEV-2131 - ParseDateTime, add predefined mask shortcut for javascript style ISO date strings (with ms)
LDEV-2439 - add an epoch datetimeformat mask
LDEV-4196 - ParseDateTime() with the format ISO return the wrong result
LDEV-4198 - Incompatibility - DateFormat() with mask ‘ISO’ return different result than ACF
LDEV-3789 - datetime.diff() doesn’t works with named Arguments
LDEV-4506 - don’t accept strings of format “m d" as valid dates

Event Gateways

LDEV-1776 - Use NIO WatchService for DirectorWatcher
LDEV-4438 - Lucee 6 Admin- Event Gateway didn’t throw error with using invalid component
LDEV-3461 - NPE stopping an Event Gateway

Java

LDEV-2075 - support for Java Lambda
LDEV-2076 - keep application context with Env UDF
LDEV-2078 - auto convert component to java class
LDEV-2300 - “WARNING: An illegal reflective access operation has occurred” on startup
LDEV-2516 - OSGI logging bundles added from this.javaSettings on every request to application.log
LDEV-4064 - createObject reloads all OSGI bundles if javaSettings are configured
LDEV-4015 - Tomcat9 warns about Illegal reflective access on startup
LDEV-4530 - OSGiUtil cannot load a bundle based on a range

ORM

LDEV-1991 - Upgrade Hibernate Extension to Latest version (5.4)
LDEV-3980 - jdbc commit issues using transactions and hibernate
LDEV-4308 - orm preInsert() not working with 5.4
LDEV-4150 - Length is ignored on “varchar” type properties in ORM entities
LDEV-4461 - Using named arguments in entityLoadByPK call results in java.lang.NoSuchMethodError
LDEV-3768 - ORMExecuteQuery() with named params throws NPE
LDEV-3525 - Hibernate extension, add support for autoGenMap=false
LDEV-4017 - Hibernate 5.4 extension closes the ORM session when any ORM transaction ends

CFSCHEDULE

LDEV-2309 - Cfschedule list returns wrong urls
LDEV-2692 - scheduled tasks list in admin doesn’t show the start time for daily, weekly or monthly tasks
LDEV-2999 - add custom userAgent to cfschedule
LDEV-2925 - Scheduled Tasks not passing Authorization header
LDEV-4000 - Scheduled Tasks require a minimum interval of 10 for no reason
LDEV-3449 - Schedule task action=delete throws write access is protected error
LDEV-4057 - updating a scheduled task doesn’t remove the username & password keys from the cfconfig.json file

File Handling

LDEV-2331 - allow specifying a file extension for getTempFile
LDEV-2395 - FileGetMimeType() - doesn’t throw an error when the file does not exist or is empty
LDEV-678 - Double spaces in filename combined to one in cfdirectory name attribute
LDEV-2660 - CFZIP action=“unzip” overwrite=“true” deletes existing directories.
LDEV-2872 - cffile: inconsistent behavior of the attribute nameConflict with “makeunique” value
LDEV-2877 - randomize filenames for file uploads
LDEV-3018 - File uploads doesn’t support allowedExtensions or strict=“false”
LDEV-3270 - getFileInfo is missing created date
LDEV-3749 - NullPointerException - Using gettempfile() with named params
LDEV-3651 - IsFileObject() function missing in Lucee
LDEV-3364 - cffile action read without file attribute throws a NPE.
LDEV-3191 - Improve error message - directoryDelete(dir)
LDEV-3192 - cfdirectory action=create with attribute nameconflict=skip doesn’t work
LDEV-3294 - add a DirectoryInfo(dir) function, like FileInfo
LDEV-3424 - FileAppend does not support file object
LDEV-3453 - DirectoryRename should return the new path, not void
LDEV-4232 - Incompatibility - fileUpload/fileUploadAll doesn’t support strict argument
LDEV-4218 - Add Parameter Alias “mimeType” for “accept” in fileUpload
LDEV-4237 - Regression - this.blockedextforfileupload doesn’t works for the file upload
LDEV-4238 - blockedExtensions arguments doesn’t works in fileUpload/fileUploadAll
LDEV-3285 - cfzip, entry path ignored on windows, uses host OS delimiter on windows
LDEV-3866 - zip action=list filter UDF is a passed a completely invalid entryPath
LDEV-4332 - FileWriteLine uses wrong line seperator on windows
LDEV-4393 - directoryList() - UDF filter arguments incompatibility with ACF
LDEV-4201 - Incompatibility - cffile action=upload attemptedserverfile key returns a different result than ACF

Mappings

LDEV-2361 - can’t configure a mapping to archive with primary as archive via the admin
LDEV-2816 - can’t delete a rest mapping
LDEV-1718 - Creating a / mapping causes incorrect path expansions, use lucee mappings first

Debugging

LDEV-2368 - show the total number of implicit scope problems on the admin debug log list
LDEV-3165 - debugging should log uncaught exceptions too!
LDEV-3380 - allow debug logging from threads (child page contexts)
LDEV-3382 - debugging isn’t reading cgi scope from the debug logs
LDEV-3436 - enable debug page parts support
LDEV-3385 - if the debugging minimal execution time hides all templates, show them all
LDEV-3401 - add a line number to cftimer debug logging
LDEV-4216 - thread debug logs total time is always zero
LDEV-4217 - Add thread name to thread’s debugging logs
LDEV-3456 - add response http statusCode and contentType to debugging logs

Exceptions

LDEV-2812 - error parsing large json object dumps out entire json string as exception message
LDEV-3198 - error message with a member function without args is missing the function name
LDEV-3238 - argument exception error is missing a file and line number
LDEV-3732 - Incorrect argument count requirements in error message on method call
LDEV-4353 - trim [path] in file does not exist exception for toResourceExisting to max 255 chars
LDEV-4052 - Regression - lucee 6.0 ignores application.cfc syntax errors

XML

LDEV-2936 - Can’t cast Object type [XML] to a value of type [org.w3c.dom.element] using xml.elemNew

String functions

LDEV-3153 - StringSort
LDEV-3154 - StringSome
LDEV-3178 - StringMap
LDEV-3179 - StringFilter
LDEV-3180 - StringEvery
LDEV-3181 - StringEach
LDEV-3480 - String.toBase64 member function missing
LDEV-3765 - Replace via a struct inserts gibberish when struct keys not found in text

Static

LDEV-3221 - Regression: Closure in static method calling another static method causes request to hang when run in parallel
LDEV-3334 - static function cannot be used with dot notation
LDEV-4212 - static scope does no reset when extended Component changes
LDEV-4469 - Regression: Invalid “member is set to final” error on static property when code changes

Cookies and Sessions

LDEV-2900 - adding to cookie scope doesn’t inherit application cfcookie tag defaults
LDEV-3257 - cf_client_data and cf_session_data tables need an index on expires col
LDEV-3177 - /lucee/graph.cfm doesn’t need and shouldn’t set session cookies
LDEV-3979 - Regression: Custom cookie parsing now used over servlet’s cookies
LDEV-4248 - improve exception when creating an index on cf_session_data fails
LDEV-4223 - getApplicationSettings and getApplicationMetadata return application instead of cfml for sessionType
LDEV-3448 - Change session cookie defaults to be secure in Lucee 6 (samesite=lax, httponly=true)
LDEV-3340 - Do not store empty session/client scope to storage

Performance

LDEV-3288 - Unnecessary getApplicationPageSource() file system access on every request adds overhead
LDEV-2418 - configurable template cache max pagePool size

Query of Queries

LDEV-4298 - Improve QoQ performance for large results
LDEV-3878 - QoQ shouldn’t fall back to HSQLDB after queryparam error
LDEV-4044 - QoQ with a named parameter passed without params doesn’t throw
LDEV-3400 - log native QoQ SQL errors as a debug exception
LDEV-4445 - RAND() in query of queries fails
LDEV-4446 - Support native rand() and rand( seed ) in QoQ

Extensions

LDEV-3599 - add function ExtensionInfo()
LDEV-3606 - extensions are sorted into type based only the latest release from the provider
LDEV-3279 - EHCache RMI distribution broken with java.lang.ClassNotFoundException since v5.3.5
LDEV-3468 - Issue with admin extension installing
LDEV-4187 - compiled bytecode references hardwired extension version

Docs

LDEV-3446 - GetTagList and GetFunctionList should return ordered structs
LDEV-3252 - attribute names are missing case as properties for getTagData

Regex

LDEV-3690 - Using java regex engine incompatibility issue
LDEV-3703 - reMatchNoCase() regex regression in 5.3.8

LDEV-3533 - REFind/NoCase(returnsubexpressions=true) doesn’t return subexpressions when regex engine set to Java.
LDEV-4310 - GetApplicationSettings() is missing regex config

IMAP

LDEV-4147 - Deleting IMAP message via UID is very slow with large inbox
LDEV-4227 - cfimap action=“listallfolders” throws an error
LDEV-4247 - cfpop/cfimap doesn’t supports delimiter attribute
LDEV-4050 - cfpop and cfimap ignore specfied ports, defaults back to standard ports
LDEV-3548 - CFPOP fails to populate cfpop variables with multiparts of Content-Type: message/rfc822 (attachments)

Image

LDEV-4158 - IOException occurs when search for propriate codecs.
LDEV-3033 - updating the image extension throws errors until Lucee is restarted

CFMAIL / SMTP

LDEV-4219 - add charset, failto, replyto details to Mail listener arguments
LDEV-4493 - priority not implemented on <cfmail>
LDEV-4039 - CFMail splitting long HTML lines into multiple lines breaking the HTML
LDEV-3775 - SMTPClient incorrectly putting stack trace into the message of a MailException it raises

Timeout / requests

LDEV-4074 - Tag cftimeout
LDEV-4110 - update provider http calls should not have timeouts of -1
LDEV-4123 - allowing reducing the priority of concurrent requests
LDEV-4215 - cftimeout testcase failed due to incorrect Exception
LDEV-1860 - CFLDAP Timeout Attribute is not respected properly

Enhancements

LDEV-3419 - add CFTIMER variable=“local.timer”
LDEV-4066 - CFTIMER add support for console, aka systemOutput
LDEV-3250 - CFTIMER add support for units (nano,milli,micro,second)
LDEV-3437 - cflocation change addToken to default to false for Lucee 6
LDEV-3579 - onMissingKey listener for struct
LDEV-4345 - CreateUniqueID() should allow for an arg globallyUnique
LDEV-2883 - Add support for the Argon2 hashing algorithm
LDEV-4404 - allow setting singlemode in lucee 5 xml, for importing singlemode from xml, when upgrading to 6
LDEV-4510 - add bufferOuput and supressContent to getApplicationSettings

Further changelog (post was too long, had to be split 51k)

Regressions

We have an epic for Lucee 6 BETA 2 Regressions

Code Changes (diff)

Extensions Bundled

We need your support!

If you are building your career and/or business on Lucee, please support the developers working on the project. With your support, we can make Lucee even better and quicker, both in terms of performance and release cycles!

4 Likes

Since I’ve been around here, I think I’ve.never seen such a long change log. Many great improvements!!! Thank you to all Lucee Devs, contributors, sponsors and this wonderful community for the great work!!!

7 Likes

for anyone testing, the latest recommend version to test is 6.0.0.457-SNAPSHOT

as work has continued on feedback from testing [LDEV-4541] - Lucee

1 Like