1.0.0-Beta27

January 31, 2025

This release brings 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. ✅ 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! 🔥

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

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

Bugs

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

Last updated

Was this helpful?