1.0.0-Beta26
January 14, 2025
Last updated
Was this helpful?
January 14, 2025
Last updated
Was this helpful?
We’re thrilled to announce the release of BoxLang 1.0.0 Beta 26, a monumental update that takes performance and functionality to the next level. This beta officially certifies the ColdBox HMVC Framework to run on BoxLang, marking a significant milestone in compatibility. Not only can you now run all ColdBox applications seamlessly on BoxLang, but with the latest ColdBox snapshot, you can also build your entire applications in BoxLang, unlocking the full potential of this dynamic and expressive language for modern application development.
This release also introduces blazing-fast Query of Queries (QoQ) support, delivering speeds up to 70 times faster than Adobe or Lucee in specific scenarios, along with exciting new features like list parameter support in JDBC queries and custom QoQ functions. Over 70 bugs have been resolved, and significant improvements have been made, such as enhanced debugging capabilities, refined Box Script syntax, and robust session and metadata handling. With Beta 26, BoxLang continues to push the boundaries, empowering developers to build robust, efficient, and fully modern JVM-based applications.
Welcome to what could be our last beta before the final release of our initial 1.0.0 version of BoxLang and its multi-runtimes.
Create query of queries support
Implement list parameters in JDBC queries
Ability to register custom functions for QoQ
Interceptor Service now does a service loader load of all interceptors found in the runtime to auto-load them
dump Lots of UI quality of life improvements: show length of strings, show full classes for some Java integrations, and much more.
Update getMetaadata()
for dynamic proxies to leverage the class metadata instead of instances
CFTranspiler should not turn off accessors for persistent classes
Exception type matching check cause
Implement "Quick" algorithm for Hash BIF
Compat: CacheGet second argument is boolean for Lucee
ASM error in do/while with a break
Update the getOrCreateSession
() to verify if the session has expired, and if so, rotate it.
Change generic tag-in-script syntax for Box Script to prefix with bx:
Allow a productivity hack to add ability to pass queries to some struct functions by taking the first row and converting the query to a struct.
structsort with callback errors
QofQ shouldn't require global DSN
xmlsearch - invalid XPath
ASM Failing test - fix bx:output transformer
ASM Failing test - fix abort exception
Dump Top Updates will not dump certain classes without a top argument, top shows as reached for subsequent dumps
BL GenericProxies cannot have java.lang.Object methods call on them
Class properties are merged from all inheritance levels in the metadata
Dumps are not in order of execution
Java List dumps are not working with top and are off by 1
Wirebox Block: testbuildJavaClass Methods on Java objects cannot be called with named arguments when using invoke()
Coercion for constructors from string to numbers are not working
Coercion from strings to numbers does not exist
isInstanceOf bif and keyword are not working on createObject("java") proxies. It gives a negative result
var scoping issues for bleeding scopes on class dump template
Calling getMetadata() on an instance of dynamic object that has not yet been inited, shows the metadata of DynamicObject instead of the proxy class
ORM: getter setters are not enabled for persistent CFCs
ORM: writedump causes ClassInfo not found
ORM: entityLoad should only require entity name
Show the right exception type when invoking dynamic objects and there are exceptions from a caused by
caching does not handle quoted numbers or booleans in config
ORM: EntityLoad errors when using a filter
soft reference cannot be stored directly in a struct
rework onSessionEnd to make sure the application exists when calling the listeners
Lucee allows params to be passed to cfquery tag via `params` attribute
IsNumeric() returns true for "true" and "false"
QueryNew() throws exception if row data array is empty
MSSQL throws error when executing certain queries if language is not English
Setting a dynamic variable name doesn't work
Can't cast [now] to a DateTime
cfloop step not implemented
allow "switch" as struct key name in CF script
The instance [ortus.boxlang.runtime.types.exceptions.ParseException] has no public field or inner class [ERRORCODE]
In function [numberFormat], argument [number] with a type of [java.lang.Boolean] does not match the declared type of [number]
Datasources created after module load take on custom DSN parameters defined in bx-mssql
cfqueryparam with list attribute causes "The index 2 is out of range"
Queryparam list=true is unsupported
Key in arguments scope gets lost
Allow "switch" to be used in dot access
Can't cast ts to a Number.
named query params not handled correctly
Account for placeholder text in comments and quoted strings in SQL
numberFormat is displaying a leading 0 when formatting integers < 10
Duplicate() on CGI scope creates empty struct
CGI-Scope weirdness
MSSQL connection gets lost
Empty test fails when using ASM
MSSQL Query columns have wrong values
Using inside of causes bxCatch scope to disappear
Array Loop with negative step doesn't work
Cannot invoke "ortus.boxlang.runtime.components.Component$BodyResult.isEarlyExit()" because "bodyResult" is null
Passing query column to listToArray() BIF fails
IsNumeric BIF returns true on booleans in compat mode
getBaseTemplatePath returns `Application.cfc` in onRequestStart
Throw with exception object as unnamed argument fails
Null session scope when attempting to update the last visit
Compat GetComponentMetadata Failures with "Can't cast null to a Key".
String [1 LTE 5] cannot be cast to a boolean
Compat: Attributes to Functions Are Scoped in to nested Parameters Struct
Cannot invoke method [clearbuffer()] on a null object
Double variable assignment failing in ASM
Compat: Invoke method has different required object method
StructFindKey Returns a Null Value when Struct being searched contains nulls
toBinary() not lenient enough for decoding with line paddings
When doing named parameter queries and you send more parameters than required, it should ignore them, not throw an exception that you sent more
getOrCreateSession() relying on the starting listener for settings, when it should look at the context to reflect changes if any
WebRequest interceptor in web support is not auto-loading, also will affect any other composable runtimes
node.xmlText explicit assignment throws error that value is not node or XML instance
xmlAttributes assignment error - key not found
ColdBox Test Suite
Quick Test Suite
Parser performance and removing ambiguity
CFcasts Suite
UnleashSDK Certification
Incorporate TestBox test suite
Phase II : Update all the toAST() methods to the new and consolidated approach
Phase III : Performance tests for phase I + II toolchains
Phase V : Create the QoQ SQL grammar, parser, and astss