1.0.0-Beta8
August 2, 2024
BoxLang Betas are released weekly. This is our eigth beta marker and we are excited to report that we are 100% tag compatible with Adobe/Lucee and 99% BIF compatible. We can estimate that in the next 2 betas we will be 100% compatible with both Adobe/Lucee CFML engines when running BoxLang in compatibility mode.
Please note that this is our core competency definition. You can see our lists here:
New Features
BL-394 contractPath() BIF
This allows you to get a relative path or mapping path from a fully expanded path in your system. This is useful, to understand where a full absolute path comes from:
BL-395 Add loop times=n
We have added a new construct for looping by using the keyword times
in your loop
statements:
You can also use times
and the index
Or the item
alias can be used as well as the index
BL-396 Implement GetBaseTagList() and getBaseTagData()
These two methods are to bring us closer to finalizing the creation of custom templating language constructs.
getBaseTagList( [caller] )
: Gets a comma-delimited list of uppercase ancestor tag names, as a string. The first list element is the current tag. If the current tag is nested, the next element is the parent tag. If the function is called for a top-level tag, it returns an empty string.getBaseTagData( tagName, [level=1] )
: Used within a custom tag. Finds calling (ancestor) tag by name and accesses its data.
BL-397 Improve parser error messages for unpopped parser modes
For code like
or
instead of our default “unpopped modes”, detect what specific mode is on the stack (comment_mode, quotesMode, etc), find the start token (comment_start, OPEN_QUOTE, etc) and report the line number that the unclosed construct started, which could be hundreds of lines from the end of the file when parsing finally stopped.
BL-408 Transaction events
The BoxLang JDBC Transactions framework is now complete and incredibly robust. More than the other CFML engines or even Spring-based transaction demarcations. It is fully documented here: https://boxlang.ortusbooks.com/boxlang-framework/transactions
We have also added several events that you can listen to during the transaction processes:
onTransactionBegin
onTransactionEnd
onTransactionCommit
onTransactionRollback
onTransactionSetSavepoint
onTransactionAcquire*
onTransactionRelease*
Note that all these events (with the exception of onTransactionAcquire
and onTransactionRelease
) have the potential to be acting upon a no-op transaction, with a null connection
parameter since no connection was ever obtained.
Improvements
BL-402 Allow for circular references in structs and arrays
BL-406 Java 21 update to URL creation as new URL is deprecated
BL-407 add getMimeType method in FileSystemUtil to make it easier to get mime types of remote files ( e.g. PDF creation )
Bugs
BL-398 <bx:loop query="query"> doesn't iterate over each item in the query, stays on the first item
BL-404 session scope can be null in onSessionEnd, causing errors
Tasks
BL-372 Create tests for all valid and invalid dot and array access expressions
Last updated