Skip to content

Latest commit

 

History

History
207 lines (105 loc) · 12.5 KB

1.0.0-beta26.md

File metadata and controls

207 lines (105 loc) · 12.5 KB
description
January 14, 2025

1.0.0-Beta26

BoxLang Beta 26 Has Landed!

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.

New Features

BL-94 Create query of queries support

BL-883 Implement list parameters in JDBC queries

BL-933 Ability to register custom functions for QoQ

BL-942 Interceptor Service now does a service loader load of all interceptors found in the runtime to auto-load them

Improvements

BL-852 dump Lots of UI quality of life improvements: show length of strings, show full classes for some Java integrations, and much more.

BL-860 Update getMetaadata() for dynamic proxies to leverage the class metadata instead of instances

BL-865 CFTranspiler should not turn off accessors for persistent classes

BL-866 Exception type matching check cause

BL-919 Implement "Quick" algorithm for Hash BIF

BL-920 Compat: CacheGet second argument is boolean for Lucee

BL-926 ASM error in do/while with a break

BL-938 Update the getOrCreateSession() to verify if the session has expired, and if so, rotate it.

BL-939 Change generic tag-in-script syntax for Box Script to prefix with bx:

Bugs

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

BL-732 structsort with callback errors

BL-758 QofQ shouldn't require global DSN

BL-764 xmlsearch - invalid XPath

BL-801 ASM Failing test - fix bx:output transformer

BL-802 ASM Failing test - fix abort exception

BL-834 Dump Top Updates will not dump certain classes without a top argument, top shows as reached for subsequent dumps

BL-847 BL GenericProxies cannot have java.lang.Object methods call on them

BL-849 Class properties are merged from all inheritance levels in the metadata

BL-850 Dumps are not in order of execution

BL-851 Java List dumps are not working with top and are off by 1

BL-854 Wirebox Block: testbuildJavaClass Methods on Java objects cannot be called with named arguments when using invoke()

BL-855 Coercion for constructors from string to numbers are not working

BL-856 Coercion from strings to numbers does not exist

BL-857 isInstanceOf bif and keyword are not working on createObject("java") proxies. It gives a negative result

BL-858 var scoping issues for bleeding scopes on class dump template

BL-859 Calling getMetadata() on an instance of dynamic object that has not yet been inited, shows the metadata of DynamicObject instead of the proxy class

BL-861 ORM: getter setters are not enabled for persistent CFCs

BL-863 ORM: writedump causes ClassInfo not found

BL-864 ORM: entityLoad should only require entity name

BL-867 Show the right exception type when invoking dynamic objects and there are exceptions from a caused by

BL-868 caching does not handle quoted numbers or booleans in config

BL-869 ORM: EntityLoad errors when using a filter

BL-870 soft reference cannot be stored directly in a struct

BL-875 rework onSessionEnd to make sure the application exists when calling the listeners

BL-877 Lucee allows params to be passed to cfquery tag via `params` attribute

BL-879 IsNumeric() returns true for "true" and "false"

BL-880 QueryNew() throws exception if row data array is empty

BL-884 MSSQL throws error when executing certain queries if language is not English

BL-885 Setting a dynamic variable name doesn't work

BL-886 Can't cast [now] to a DateTime

BL-887 cfloop step not implemented

BL-888 allow "switch" as struct key name in CF script

BL-889 The instance [ortus.boxlang.runtime.types.exceptions.ParseException] has no public field or inner class [ERRORCODE]

BL-890 In function [numberFormat], argument [number] with a type of [java.lang.Boolean] does not match the declared type of [number]

BL-891 Datasources created after module load take on custom DSN parameters defined in bx-mssql

BL-892 cfqueryparam with list attribute causes "The index 2 is out of range"

BL-893 Queryparam list=true is unsupported

BL-894 Key in arguments scope gets lost

BL-895 Allow "switch" to be used in dot access

BL-896 Can't cast ts to a Number.

BL-897 named query params not handled correctly

BL-898 Account for placeholder text in comments and quoted strings in SQL

BL-899 numberFormat is displaying a leading 0 when formatting integers < 10

BL-901 Duplicate() on CGI scope creates empty struct

BL-902 CGI-Scope weirdness

BL-903 MSSQL connection gets lost

BL-904 Empty test fails when using ASM

BL-905 MSSQL Query columns have wrong values

BL-906 Using bx:output inside of bx:catch causes bxCatch scope to disappear

BL-907 Array Loop with negative step doesn't work

BL-909 Cannot invoke "ortus.boxlang.runtime.components.Component$BodyResult.isEarlyExit()" because "bodyResult" is null

BL-910 Passing query column to listToArray() BIF fails

BL-911 IsNumeric BIF returns true on booleans in compat mode

BL-912 getBaseTemplatePath returns `Application.cfc` in onRequestStart

BL-913 Throw with exception object as unnamed argument fails

BL-914 Null session scope when attempting to update the last visit

BL-917 Compat GetComponentMetadata Failures with "Can't cast null to a Key".

BL-918 String [1 LTE 5] cannot be cast to a boolean

BL-923 Compat: Attributes to Functions Are Scoped in to nested Parameters Struct

BL-925 Cannot invoke method [clearbuffer()] on a null object

BL-927 Double variable assignment failing in ASM

BL-928 Compat: Invoke method has different required object method

BL-930 StructFindKey Returns a Null Value when Struct being searched contains nulls

BL-932 toBinary() not lenient enough for decoding with line paddings

BL-936 When doing named parameter queries and you send more parameters than required, it should ignore them, not throw an exception that you sent more

BL-937 getOrCreateSession() relying on the starting listener for settings, when it should look at the context to reflect changes if any

BL-941 WebRequest interceptor in web support is not auto-loading, also will affect any other composable runtimes

BL-944 node.xmlText explicit assignment throws error that value is not node or XML instance

BL-945 xmlAttributes assignment error - key not found

Task

BL-217 ColdBox Test Suite

BL-220 Quick Test Suite

BL-548 Parser performance and removing ambiguity

BL-767 CFcasts Suite

BL-837 UnleashSDK Certification

BL-908 Incorporate TestBox test suite

Stories

BL-237 Phase II : Update all the toAST() methods to the new and consolidated approach

BL-238 Phase III : Performance tests for phase I + II toolchains

BL-239 Phase V : Create the QoQ SQL grammar, parser, and astss