githubEdit

1.0.0-Beta7

July 26, 2024

BoxLang Betas are released weekly.

This is our seventh beta marker and we are incredibly excited of this beta marker since it now fully supports ColdBox for operation.

Improvements

BL-376arrow-up-right web support error template only shows details of exceptions if IN debug mode else secure by default

If you are using the MiniServer or CommandBox, then if an exception occurs, only in DEBUG MODE, will you get the exception stacktrace, details and more. This makes it secure by default of not exposing any potential data for exceptions.

BL-392arrow-up-right Consolidate the runtime into services without the need of getInstance()

A simple internal improvement to improve locking and instance usage.

New Features

This is a new BIF for BoxLang. We have a way to create threads using the thread{} component in both script and template, and we have threadJoin(), threadTerminate() but we never had a way to create threads functionally.

Signature

threadNew( lambda/closure, [attributes={}], [threadName], [priority=normal] )

Examples

Please note that the attributes is a struct of data that we will bind into the thread's local scope.

BL-388arrow-up-right Stream type and collector member methods

Java streams are now a native BoxLang type, which for now we don’t try to coerce, but simply match any existing instance or subclass of java.lang.Stream. This means we can now add member methods to ANY stream from BoxLang source code and make Streams also dynamic:

  • .toBXArray()

  • .toBXStruct( [String type] )

  • .toBXQuery( [Query query] )

  • .toBXList( [String delimiter] )

Examples

Collect stream of objects into BoxLang array

Collect stream of Map entries into a struct

Collect an array of structs into an existing query object

Collect a stream of objects into a list

BL-390arrow-up-right orThrow( type, message ) for attempts

Attempts now allow you to do a custom exception type and message. Check out the attempt docs.

BL-391arrow-up-right ifSuccessful() alias to ifPresent() on attempts

Attempts now allow you to have an alias to ifPresent() that's fluent: ifSuccessful(). Check out the attempt docs.

Bugs

BL-373arrow-up-right Parser detection for unparsed tokens only works if there are 2 or more tokens left

BL-377arrow-up-right Declaring UDFs in function context doesn't always work

BL-378arrow-up-right CFConfig datasources aren't importing due to lack of support for the 'dbdriver' key

BL-379arrow-up-right Runtime can deadlock due to syncronized methods

BL-380arrow-up-right NPE calling isNumeric()

BL-381arrow-up-right JSONSerialize() errors when useSecureJSONPrefix not a boolean

BL-385arrow-up-right Cannot call getWriter(), getOutputStream() already called

BL-386arrow-up-right empty url vars coming through as null

Tasks

BL-372arrow-up-right Create tests for al valid and invalid dot and array access expressions

Last updated

Was this helpful?