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