description |
---|
January 14, 2025 |
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.
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
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:
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
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
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