The mascot for Lucee 8 is Smoky, the greatest smallest dog ever! In 1944, this 4-pound Yorkshire Terrier pulled a telegraph wire through a 70-foot pipe only 8 inches wide, saving soldiers three days of dangerous digging (Smoky on Wikipedia).
Lucee 8.0.0.304 is now available
, the first stable release of Lucee 8.
Download: https://download.lucee.org/
- Docker:
lucee/lucee:8.0.0.304, plus the-light,-zeroand-nginxvariants (Docker Hub) - Maven:
org.lucee:lucee:8.0.0.304 - Installers, WAR and Express: GitHub release 8.0.0.304
- Before you upgrade: Breaking changes 7.1 → 8.0
What Lucee 8 is about
Stable, robust, fast. Lucee 8 is mostly about the engine your code runs on, not about new syntax. Lucee 7 started a lot of this work, and Lucee 8 finishes it. Most of it makes Lucee faster and lighter without any changes to your code.
- All in on Maven. Core, extensions and Java libraries all come from Maven. You can name an extension in
.CFConfig.json(orLUCEE_EXTENSIONS) by its Maven coordinate, for example{"maven": "org.lucee:mysql-jdbc-extension"}. Most bundled extensions are now lite builds that fetch their Java libraries from Maven when they install, and you can point Lucee at your own repository or mirror withmaven.repository. - A smaller core. Markdown and SMB moved out of core into bundled extensions (LDEV-6520), so
markdownToHTML()andsmb://keep working. The Janino compiler is only downloaded when it’s first needed. - Configuration, rewritten. Configuration loading is now declarative and lazy, and changing one setting no longer reloads the whole configuration. Everything you can set in
.CFConfig.jsoncan also be set as an environment variable or system property. A setting that comes from the environment shows as read-only in the Administrator (LDEV-6452), andConfigSchema()gives your editor a JSON Schema for validation and autocomplete. - Performance. Faster UDF calls (LDEV-5933), argument and local scopes backed by arrays (LDEV-5865), pooled response buffers (LDEV-6427), concurrent application, server and session scopes that remove most lock contention under load (LDEV-6479), and faster Java object creation (LDEV-6614).
- Virtual threads. Lucee 8 requires Java 21, so virtual threads are always available.
arrayEach(),arrayMap()and friends acceptparallel="none" | "thread" | "virtual"plusmaxConcurrency(LDEV-6369), and<cfthread virtual="true">runs a thread on a virtual thread. - Language additions. The
??null-coalescing operator (LDEV-5343),onMissingFunction()in Application.cfc (LDEV-5094),queryColumnNames()(LDEV-5748),structIsOrdered()(LDEV-6345), and bracket notation for nested form and URL fields (LDEV-6070). - PDF 3.0 is bundled.
<cfdocument>now renders with OpenHTMLToPDF, and<cfpdf>uses PDFBox 3. - On the way to Lucee 9. The
perlregex engine is deprecated (LDEV-6660). It is still the default, and the newcompatmode (LDEV-6432) makes switching to the Java engine easier. Trythis.regex = { type: "java" };(or"compat") on your applications. - The fixes from the 7.1 line are merged in, among them time zones, null handling, mail, datasource pools, sessions and the Administrator.
For the full story behind each of these, see the 8.0 release candidate announcement.
Upgrading from 7.1
- Switch to Java 21 first. Lucee 8 requires Java 21 or newer. On Java 11 or 17 the 8.0 core will not start.
- You don’t need to replace
lucee.jar. Coming from 7.1, the existing loader can run 8.0, so you can update the core from the Administrator or by dropping the.lcofile into thedeployfolder. - If the in-place update reports an OSGi “uses constraint” error, restart the servlet engine and 8.0 will start from the downloaded core.
- Check your
.CFConfig.json. Some keys must move into their section (the debugging settings intomonitoring,cacheDefault*intocache,updateProxy*intoproxy). Lucee 8 ignores them at the top level without a warning. Environment variables now win over.CFConfig.json, so also check for leftoverLUCEE_*variables. parallel=truenow uses virtual threads with no limit. If your closures use limited resources such as database connections, setparallel="thread"ormaxConcurrency.
Please read the breaking changes 7.1 → 8.0 before you upgrade. It covers everything above and more.
Bundled extensions
| Extension | 7.1.2 | 8.0.0 |
|---|---|---|
| MySQL | 26.7.0 | 26.7.0 |
| Microsoft SQL Server | 13.2.1 | 13.4.0.jre11 |
| PostgreSQL | 42.7.11 | 42.7.11 |
| Administrator | 1.0.0.9 | 1.0.0.9 |
| Documentation | 1.0.0.8 | 1.0.0.8 |
| S3 | 2.0.3.1 | 2.1.0.15 |
| 2.0.1.0 | 3.0.0.2 | |
| Image | 3.1.0.11 | 3.1.0.11 |
| ESAPI | 3.1.0.1 | 3.1.0.7 |
| Scheduler Classic | 1.0.0.2 | 1.0.0.2 |
| Compress | 2.1.0.3 | 2.1.0.7 |
| 1.1.0.17 | 1.1.0.24 | |
| FTP | 1.0.0.9 | 1.0.0.9 |
| Markdown | – | 1.0.0.2 (new) |
| SMB | – | 1.0.0.10 (new) |
All bundled extensions are final releases.
Full changelog: Changelog 8.0.0.304 — Lucee Downloads
A new home: lucee.org
Lucee 8 comes with a new website: www.lucee.org is live. Have a look around and tell us what you think.
Which version should I use?
7.1 is becoming the long-term support version, so it gets bug and security fixes only, and it’s the safe choice for production. 8.0 is where the newest features land.
Thanks
A big thank you to everyone who tested the three 8.0 release candidates. @Jim_Priest ran all his tests against 8.0, @kenricashe ran the RC in production and reported the psq config issue (LDEV-6751), and @John_Berquist found and diagnosed the name[] form field regression (LDEV-6889). That feedback is what let us release with confidence.
If you run into any problems, please report them here on the forum or in Jira (LDEV).
