Releases: ortus-boxlang/BoxLang
1.8.0
Release notes - BoxLang - 1.8.0
Bug
BL-1850 this.timezone not respected in Application.bx
BL-1874 jsessionid cookie value set to null - breaks AWS WAF
BL-1884 Compat: GetTempDirectory Does not Contain Trailing Slash
BL-1886 ByteCode Versioning on Upgrade - clear BL home classes folder
BL-1888 DateAdd changes date when added 0 'w'
BL-1889 parseDateTime - Can't cast [Nov-05-2025 8:43am] to a DateTime.
BL-1890 HTTP request fails with exception when server response with duplicate headers
BL-1892 stored proc component not respecting "null" attribute
BL-1896 cfdump breaks when column names have comma
BL-1897 servlet runtime is not using the real page context
BL-1899 QueryFilter returning unexpected rows
BL-1900 sorting an array of numerics errors on decimals
BL-1901 querysclice mishandles offset
BL-1906 calling custom tag from catch block errors
BL-1908 Parser: semicolons after empty statement block don't end the statement
BL-1909 xmlSearch doesn't return correct value for xpath expression
BL-1910 Datasources need to lead first, then caches to avoid chicken and egg issues
BL-1911 When using SQLite with BoxLang, database errors (like creating a table that already exists) are not handled properly.
BL-1912 StructFindKey doesn't seem to return references
BL-1913 Application can shutdown mid request
BL-1914 captured variable not available when capture is performed in catch block
BL-1926 Boxlang server does not start if one datasource has connection issues
BL-1927 reMatchNoCase result is an array with 2 elements
BL-1928 Can't compare [String] against [Array]
BL-1929 Date Casting issues when JVM locale is `de_DE` or `en_DE`
BL-1930 Can't cast [0] to a DateTime
BL-1931 FileUpload fails allowed extension check when periods are present
BL-1932 list / array find BIFs returning unexpected matches
BL-1933 acf/lucee compat -- numberFormat( "", '_.00' ) throws
BL-1934 acf/lucee compat - numberFormat(0, "_.00") returns ".00"
BL-1935 Can't cast [Jul 17, 2017 9:29:40 PM] to a DateTime.
BL-1938 number format omits leading zero with _.00 mask
BL-1939 isDate(0) returns true
BL-1941 isValid - Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
BL-1942 isDate - can't cast '0000009' to a BigDecimal
BL-1943 SessionScope in distributed cache not persisting when request ends
BL-1946 Dynamic Interop getField() issue when trying to access a public class parent package/private class fields
BL-1947 bad parse (?) on static function invocation
BL-1948 can't use `continue` inside `switch` inside `for`
BL-1949 For CFML compatibility CGI values should be java,lang.string
BL-1950 Nested queries ignore JSONSerialize query options
BL-1951 Don't compare numbers to booleans
BL-1952 lsIsCurrency - can't cast java.lang.Integer to java.lang.String
BL-1956 `timeFormat` can produce strings containing non-ascii whitespace
BL-1958 CF compat: allow whitespace in / > tag closing
BL-1959 Parsing CF template CFC
BL-1960 assingment inside ternary parses wrong
BL-1962 val() sometimes returns scientific notation
BL-1963 array append throws java.lang.UnsupportedOperationException when array originates from struct.keyArray()
BL-1965 values not coerced when setting Java fields
BL-1966 {}.putAll(Map) throws ClassCastException
BL-1967 Can't cast [Jun-30-2010 04:33] to a DateTime
BL-1969 Optimize DateTimeFormatter Usage
BL-1971 Cannot map/filter an unmodifiable array
BL-1972 query with user/pass override doesn't use connection pooling
BL-1973 query with user/pass override doesn't override on-the-fly struct
BL-1976 asyncRun() executor argument was not detecting BoxExecutors directly.
BL-1977 Regression: isDefined returning false on struct key
BL-1978 CF transpiler doesn't catch variables inside isDefined args
BL-1980 CFCookie Expires crashes if using CreateTimeSpan
BL-1981 Object Component - Type Default Not Being Set
BL-1982 Can't cast [Jun-3-2010 04:33] to a DateTime.
BL-1983 Can't cast [11/21/2025 1:05] to a DateTime
BL-1984 isNumeric("true") is true on boxlang, false on lucee/acf
BL-1985 Refactor 3 dangling core references to the Java Boxpiler
BL-1987 CFTag support for thisTag scope behaves differently than ACF/Lucee
BL-1988 You cannot declare a variable using BoxExpressionInvocation
BL-1989 Compat: `format` member function undocumented but supported for DateTime objects
BL-1994 Compat: `component` attribute not handled correctly by Object component
BL-1995 Incorrect line number reported in tag context
BL-1996 header component should add header, not replace
BL-1997 Regression: HTTP Component Basic Auth no longer sending proper header
BL-1998 Compat: Add handling for null dates in formatting methods
New Feature
BL-1835 context shutdown listeners
BL-1891 Add mechanism for runtimes to wait until BoxRuntime instance is started
BL-1893 Add onServerStart support to compat
BL-1895 ServerSideEventConsumer(), SSEConsume() bif to allow from the core to connect and consume events. This is imperative for LLM integrations
BL-1898 ServerSideEventConsumer to allow for any BoxLang app to consume SSE events in a streaming fashion, especially tuned for LLMs
BL-1921 Fluent HTTP Client with http() bif
BL-1922 HTTP Service for managing and controlling http client life-cycles
[BL-1923](https://ortussolutions.atlassian.net/brows...
1.7.0
1.6.0
1.5.0
v1.5.0 Latest Release v1.5.0
1.4.0
v1.4.0 Latest Release v1.4.0
1.3.0
v1.3.0 Latest Release v1.3.0
1.2.0
New Features
- BL-1453 Maven pom.xml for the BoxLang Home so you can integrate with any Java library
- BL-1464 implement nested grouped output/looping
- BL-1474 Logger appenders in the boxlang.json can now chose their own encoder: text or json
- BL-1476 Added ability for loggers to chose between file and console appenders
- BL-1482 new event ON_FUNCTION_EXCEPTION
- BL-1485 Update the error template to include a section where the user can contact us if the error is not good enough or we can improve it.
Improvements
- BL-1393 Add executionTime to result object of bx:http
- BL-1397 FileCopy( source, targetDirectory ) when using a target directory doesn't work on BoxLang but works on Lucee
- BL-1400 File bifs have too many casts, do one cast for performance
- BL-1404 Add a unique request id metadata header when making requests in http so it can track easily
- BL-1405 Add missing contexts to data interceptors
- BL-1406 Add a `request` struct to the bxhttp result object
- BL-1417 Add Allow Arguments to FileCopy and FileMove for granular extension security overrides
- BL-1419 server.java.defaultLocale, server.java.availableLocales
- BL-1420 New bif: BoxModuleReload( [name] ) to easily reload modules for testing purposes
- BL-1421 optimize when LocalizationUtil string casts
- BL-1422 optimize Struct.putAll()
- BL-1423 optimize when basescope creates lockname to on demand
- BL-1424 optimize string compare check for unicode
- BL-1425 optimize case insensitive instanceof check
- BL-1426 optimize isNumeric locale parsing and casting
- BL-1427 optimize file detection/reading from disk unless needed
- BL-1428 optimize getConfig() by caching at request context
- BL-1429 Improve performance of string lowercasing and key creation
- BL-1433 Only include source lines in exceptions when in debug mode
- BL-1434 Optimize hash base 64 encoding
- BL-1435 Optimize regex cache key generation
- BL-1436 Move/Copy BIFs should all default to an overwrite value of true
- BL-1437 Update the way loggers are setup and retrieved to avoid string and key lookups and accelerate the runtime
- BL-1438 bif invocation interceptors missing the actual bif
- BL-1439 BIF Interceptors hot code, only create events if they are states for it
- BL-1443 order keys in struct dump alphabetically
- BL-1445 DateTime and Duration Math Should Represent Fractional Days in Math Operations
- BL-1446 Compat: DateAdd Should accept numeric fractional days as date argument
- BL-1450 Exclude javaparser and other debug libraries from final jar
- BL-1454 Optimize FQN class by removing regex usage in hot code
- BL-1455 optimize generated setter by caching resolved file path
- BL-1456 Optimize dynamic object by converting stream to loop in hot code
- BL-1457 optimize output check by caching recursive lookups
- BL-1458 optimize isEmpty code paths
- BL-1459 optimize getting function enclosing class by caching
- BL-1460 optimize number caster true/false string checks
- BL-1461 optimize BoxStructSerializer class by avoiding struct.entrySet()
- BL-1462 optimize string compare by removing unnecessary string to lower case
- BL-1473 Update to use StatusPrinter2 from deprecated StatusPrinter using LogBack
- BL-1481 Speed improvements for function invocation on hot code
- BL-1486 Better handle low level parsing errors like java.util.EmptyStackException
- BL-1489 Improve error messages when registering interceptors using the registration bifs when sending things other than interceptors
- BL-1490 Add function name to interceptor data for ease of use
- BL-1493 Accelerate dynamic object method handle executions
Bugs
- BL-1356 postBIFInvocation event
- BL-1357 Simple preFunctionInvoke interceptor throws errors due to recursing into itself
- BL-1385 Module that defines an interceptor has to specify "too much" for the class path
- BL-1386 ModuleService reload and reloadAll() methods to provide ability for module reloading on development
- BL-1394 forgot to populate the `populateServerSystemScope` from the override boxlang.json
- BL-1396 isValid Boolean Returning Incorrect Result on Struct
- BL-1398 Move default disallowed file extensions to web support and keep CLI open
- BL-1399 Compat: CreateTime Should Support 0 hour argument
- BL-1401 FileSystemUtil not absoluting paths when checking existence
- BL-1402 `replaceNoCase` does not handle `null` strings like Lucee or ACF
- BL-1403 http not using the user agent if passed by the user
- BL-1409 Compat: add `server.coldfusion.supportedLocales`
- BL-1412 Add Application.bx/cfc support for overriding allowed and disallowed extensions
- BL-1414 this.logger is null in when getting an attempt() from a box future
- BL-1416 Compat: Support ACF/Lucee `blockedExtForFileUpload` Application Setting
- BL-1418 parameterized QoQ with maxLength errors
- BL-1431 function dump template doesn't work in compat
- BL-1432 CF transpiler not turning off accessors for child classes
- BL-1441 getPageContext().getRequest() has no getScheme()
- BL-1442 empty file fields in forms throw error on submit
- BL-1444 Boxlang does not pickup custom tags that are in the same folder as the file that calls them
- BL-1447 Compat: DateDiff should support fractional days as date argument
- BL-1449 when doing a boxlang {action} command it should break and execute
- BL-1451 Custom tag search is case-sensitive
- BL-1452 inline annotation errors when literal value is a negative number
- BL-1463 parser errors on class annotation called abstract
- BL-1466 self-closing defaultcase tag not parsing
- BL-1467 if you use options or params that include file extensions, the runner explodes
- BL-1468 cfquery...
1.1.0
New Features
- BL-1365 Add parse() helper methods directly to runtime which returns parse result
- BL-1388 new security configuration item: populateServerSystemScope that can allow or not the population of the server.system scope or not
Improvements
- BL-1333 Create links to BoxLang modules
- BL-1351 match getHTTPTimeString() and default time to now
- BL-1358 Work harder to return partial AST on invalid parse
- BL-1363 Error executing dump template [/dump/html/BoxClass.bxm]
- BL-1375 Compat - Move Legacy Date Format Interception to Module-Specific Interception Point
- BL-1381 allow box class to be looped over as collection
- BL-1382 Rework event bus interceptors to accelerate during executions
- BL-1383 Compat - Allow handling of decimals where timespan is used
- BL-1387 Allow Numeric ApplicationTimeout assignment to to be decimal
Bugs
- BL-1354 BoxLang date time not accepted by JDBC as a date object
- BL-1359 contracting path doesn't work if casing of mapping doesn't match casing of abs path
- BL-1366 sessionInvalidate() "Cannot invoke String.length() because "s" is null"
- BL-1370 Some methods not found in java interop
- BL-1372 string functions accepting null
- BL-1374 onMissingTemplate event mystyped as missingtemplate
- BL-1377 fileExists() not working with relative paths
- BL-1378 optional capture groups throw NPE in reReplace()
- BL-1379 array length incorrect for xml nodes
- BL-1384 Numeric Session Timeout Values Should Be Duration of Days not Seconds
1.0.1
Fixed
- Detection on
boxlang fileexecution with invalid paths was not working properly.
1.0.0
[Unreleased]: https://github.com/ortus-boxlang/BoxLang/compare/v1.0.0...HEAD [1.0.0]: https://github.com/ortus-boxlang/BoxLang/compare/aa8064a2aecbc79fbff9b31c56e0c5c6be71063f...v1.0.0