Skip to content

Releases: ortus-boxlang/BoxLang

1.8.0

05 Dec 12:36
a185f54

Choose a tag to compare

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...

Read more

1.7.0

04 Nov 13:12
42b9415

Choose a tag to compare

1.6.0

03 Oct 11:43
5fd9c1d

Choose a tag to compare

1.5.0

30 Aug 06:40
540c9b0

Choose a tag to compare

v1.5.0

Latest Release v1.5.0

1.4.0

02 Aug 12:09
e8fb0d2

Choose a tag to compare

v1.4.0

Latest Release v1.4.0

1.3.0

23 Jun 16:01
0a787cb

Choose a tag to compare

v1.3.0

Latest Release v1.3.0

1.2.0

29 May 14:58

Choose a tag to compare

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...
Read more

1.1.0

12 May 20:14
35b14e7

Choose a tag to compare

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

01 May 01:47
d2c3217

Choose a tag to compare

Fixed

  • Detection on boxlang file execution with invalid paths was not working properly.

1.0.0

30 Apr 02:22
aa8064a

Choose a tag to compare

[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