Blog

BoxLang 1.0.0 Beta 27 Launched

Luis Majano January 31, 2025

Spread the word

Luis Majano

January 31, 2025

Spread the word


Share your thoughts

We are excited to bring you Beta 27 with enhanced XML handling, new CLI app support, improved error handling, and expanded interoperability with Java and CFML runtimes. We've also added new HTTP event hooks, improved caching strategies, and a streamlined class resolution process to make your applications more performant, even in debug modes.

🌟 Highlights:

  • Enhanced XML Support – Improved cloning, merging, and namespace handling in XML operations.
  • Jakarta EE Support – Latest Jakarta EE support for the servlet runtime and CommandBox
  • Unified Template & Script Grammars – BoxLang now seamlessly integrates both styles, bringing performance updates to the parser.
  • Improved Java Interop – Automatic coercion of BoxLang arrays to native Java arrays and varargs support
  • Better Error Handling – More robust dump rendering and exception management.
  • New CLI Features – Built-in functions like cliRead(), cliGetArgs(), and cliExit() for pure CLI apps.
  • Improved HTTP Handling – Proxy support, authentication, and new request/response events.
  • Trusted Cache – Trusted cache is in the house, to get high performance in production
  • Class location caches – More performance updates for class resolutions for BoxLang classes

With over 40 improvements, new features, and fixes, this release makes BoxLang even more powerful and stable! 🔥

What is BoxLang?

BoxLang is a modern dynamic JVM language that can be deployed on multiple runtimes: operating system (Windows/Mac/*nix/Embedded), web server, lambda, iOS, android, web assembly, and more. BoxLang combines many features from different programming languages, including Java, CFML, Python, Ruby, Go, and PHP, to provide developers with a modern and expressive syntax.

It is also a drop-in replacement for Adobe ColdFusion and Lucee Engines.

How to get started?

Visit our docs at https://boxlang.ortusbooks.com and get coding today. If you want to try it out on the web then go to our online REPL at https://try.boxlang.io. You can also checkout our YouTube playlist: https://www.youtube.com/playlist?list=PLNE-ZbNnndB-40LvAbeSeT2Oi3V2gm_B8

Release Notes

Here are the latest release notes: https://boxlang.ortusbooks.com/readme/release-history/1.0.0-beta27

🚀 New Features

BL-843 Move defaultCache to the caches section as default, verify it exists, else create it anyways

BL-935 add http events: onHTTPRequest, onHTTPResponse

BL-952 Expose buildRegistry() and encapsulate per location registration

BL-989 CLI BIFS for working with pure cli apps: cliRead(), cliGetArgs(), cliExit()

BL-1009 Activate box resolvers cache according to request and app settings

BL-1016 New setting: classResolverCache : boolean [true] which controls if the class locators caches resolve lookups


🔧 Improvements

BL-953 Implement Node pass-through methods to handle cloning and merging of XML objects

BL-955 Combine template and script grammars for boxlang

BL-956 Error Getting method keyExists for class ortus.boxlang.runtime.types.XML

BL-958 StructFindKey returns two findings on the same node if top level key is array

BL-959 Better error handling when dump template errors

BL-964 Return callback return value from runThreadInContext()

BL-966 java interop coerce BL arrays to native arrays

BL-967 Add toOptional() method to Attempt

BL-968 coerce return values of proxied methods

BL-983 output class of non-simple valued fields in class output for cfdump

BL-984 prefer same mapping for relative class lookups in box resolver

BL-998 Client scope needs more consistencies like the session scope when validating and expiration determination

BL-999 Module service record was not registering interceptors with the module settings

BL-1002 HTTP Component - Implement Proxy Server handling

BL-1010 add default itnerface helper for the IBoxContext to get the running application name if any

BL-1013 Servlet to support Jakarta namespace


🐛 Bug Fixes

BL-389 varargs not working

BL-931 CF casts Class instances to a String

BL-947 Namespaced XML nodes not accessible by their non-namespaced names

BL-949 XMLSearch Not Finding Correct Results When Namespaces are Present

BL-950 XML asString Generates trailing line break

BL-951 StructFindKey Not Returning owner values correctly

BL-960 ASM compilation error

BL-961 query with empty column name can't be dumped

BL-965 WriteDump()/Dump() is broken in current snapshot build

BL-969 DateCompare on two zero-hour strings fails with long overflow

BL-970 XMLElemNew Illegal Character exception when using the namespace URI as the second argument

BL-977 HTTP Component - Implement Basic Authentication

BL-978 Cannot access variables scope in a static context -- but there is no variables access

BL-981 timezone not always used in datetime caster

BL-982 toUnmodifiableStruct() method not threadsafe

BL-985 directoryList filter param does not accept a closure

BL-991 Support for guid and uuid type

BL-994 getDirectoryFromPath returns different result to Lucee and ACF

BL-995 argument type of binary is not supported

BL-996 argument type of email is not supported

BL-1000 CGI scope reporting 0 items

BL-1003 JSONSerialize pretty prints JSON which blows up outbound NDJSON

BL-1004 CFHTTParam Encodes Query Strings By Default

BL-1005 URLEncodedFormat Replaces Spaces with Plus Symbols

BL-1015 Bracket Notation Usage on Java Hashmaps Does not work.

BL-1017 Detail and Extended Info Can Be Null In Thrown Exceptions

Add Your Comment

Please provide a comment!
Invalid security code. Please try again.

Recent Entries

Into the Box 2025 | Plan Your Trip With Us!

Into the Box 2025 | Plan Your Trip With Us!

Are you ready to join us for Into the Box 2025 from April 30th to May 2nd in Washington, D.C.? Let’s make your trip planning as smooth as possible. Here you’ll find Airfare discounts, Hotel Deals and fun things to do to the the best out of your trip to D.C.

Maria Jose Herrera
Maria Jose Herrera
January 30, 2025
BoxLang YAML Support has landed

BoxLang YAML Support has landed

We’re thrilled to introduce the bx-yaml module for BoxLang!

This powerful new module brings seamless YAML parsing and emitting capabilities to BoxLang. You can now effortlessly serialize BoxLang native types—including structs, queries, arrays, classes, and more—into YAML. The same simplicity applies to deserialization, making it easy to work with YAML data in your BoxLang applications.

Luis Majano
Luis Majano
January 28, 2025