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 and your local Lucee Admin

You can use the new universal installers for the 5.4RC to install using the

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


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

Board for Lucee 6



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


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


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


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-
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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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)


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


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


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)


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!


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!!!


for anyone testing, the latest recommend version to test is

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

1 Like