githubEdit

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-953arrow-up-right Implement Node pass-through methods to handle cloning and merging of XML objects

BL-955arrow-up-right Combine template and script grammars for boxlang

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

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

BL-959arrow-up-right Better error handling when dump template errors

BL-964arrow-up-right Return callback return value from runThreadInContext()

BL-966arrow-up-right java interop coerce BL arrays to native arrays

BL-967arrow-up-right Add toOptional() method to Attempt

BL-968arrow-up-right coerce return values of proxied methods

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

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

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

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

BL-1002arrow-up-right HTTP Component - Implement Proxy Server handling

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

BL-1013arrow-up-right Servlet to support Jakarta namespace

New Features

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

BL-935arrow-up-right add http events: onHTTPRequest, onHTTPResponse

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

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

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

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

Bugs

BL-389arrow-up-right varargs not working

BL-931arrow-up-right CF casts Class instances to a String

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

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

BL-950arrow-up-right XML asString Generates trailing line break

BL-951arrow-up-right StructFindKey Not Returning owner values correctly

BL-960arrow-up-right ASM compilation error

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

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

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

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

BL-977arrow-up-right HTTP Component - Implement Basic Authentication

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

BL-981arrow-up-right timezone not always used in datetime caster

BL-982arrow-up-right toUnmodifiableStruct() method not threadsafe

BL-985arrow-up-right directoryList filter param does not accept a closure

BL-991arrow-up-right Support for guid and uuid type

BL-994arrow-up-right getDirectoryFromPath returns different result to Lucee and ACF

BL-995arrow-up-right argument type of binary is not supported

BL-996arrow-up-right argument type of email is not supported

BL-1000arrow-up-right CGI scope reporting 0 items

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

BL-1004arrow-up-right CFHTTParam Encodes Query Strings By Default

BL-1005arrow-up-right URLEncodedFormat Replaces Spaces with Plus Symbols

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

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

Last updated

Was this helpful?