Blog

BoxLang 1.0.0 Beta 22 Launched

Jon Clausen November 15, 2024

Spread the word

Jon Clausen

November 15, 2024

Spread the word


Share your thoughts

The BoxLang 1.0.0-Beta22 release includes several improvements, bug fixes, new features, and stories. Key improvements include enhanced redirection for the Miniserver, better transactional event broadcasting, and added convenience methods like getRequestContext() and getApplicationContext(). Bug fixes address issues such as JSON deserialization, whitespace management, and various errors related to data types and loops. New features include support for multiple statements inside queries and a new datasourceRegister() BIF for easier SaaS integrations.

What is BoxLang?

BoxLang is a modern dynamic JVM language that can be deployed on multiple runtimes: operating system (Windows/Mac/*nix/Embedded), web server, lambda, iOS, android, web assembly, and more. BoxLang combines many features from different programming languages, including Java, CFML, Python, Ruby, Go, and PHP, to provide developers with a modern and expressive syntax.

It is also a drop-in replacement for Adobe ColdFusion and Lucee Engines.

How to get started?

Visit our docs at https://boxlang.ortusbooks.com and get coding today. If you want to try it out on the web then go to our online REPL at https://try.boxlang.io. You can also checkout our YouTube playlist: https://www.youtube.com/playlist?list=PLNE-ZbNnndB-40LvAbeSeT2Oi3V2gm_B8

Release Notes

Here are the latest release notes: https://boxlang.ortusbooks.com/readme/release-history/1.0.0-beta22

New Features

BL-123 Implement multiple statements inside queries

BL-383 new bif: datasourceRegister() to allow for easy saas integrations to create datasources

BL-658 MIgrate AST Capture to it's own experimental flag

BL-748 Add getApplicationContext() method on all contexts for convenience, especially when calling from CF/BL

Improvement

BL-730 Miniserver needs to 302 redirect when hitting a directory without the trailing slash

BL-734 Broadcast Transactional events at the Application listener-level

BL-735 Allow unregistering a java class (IInterceptor) from an InterceptorPool

BL-737 Add getRequestContext() method on all contexts for convenience, especially when calling from CF/BL

BL-738 Allow output from functional wrappers

BL-740 Autocast simple values to Keys when calling java methods from BL

BL-741 Allow :: static access to be chained to any expression

BL-746 Add toLegacyDate BIF and Member Function to Compat module

BL-751 Make generated getters return null when property is not initialized

BL-116 Implement unfinished query options

Bug

BL-694 Fix tests that fail when using ASM

BL-695 large json fails to deserialise with bx-compat

BL-714 Add Whitespace Management

BL-731 dump errors with compat installed due to null variable

BL-733 RandRange seems to never return upper range

BL-736 JDBC Transaction listeners not firing upon transaction event announcement

BL-739 shebang checks in BoxRunner don't nicely handle invalid file paths

BL-743 WDDX not parsing booleans correctly

BL-744 Cannot cast ortus.boxlang.runtime.types.DateTime to java.util.Date

BL-745 parseDateTime failing

BL-747 for (sentinel) loop is evaluating the step/increment expression one final time too many when a break is used

BL-752 error using negative indices to get characters from strings

BL-754 error: integer number too large

BL-755 SerializeJSON not working with named params

Add Your Comment

Recent Entries

Why BoxLang When You Have Kotlin, Groovy, Scala, and more…

Why BoxLang When You Have Kotlin, Groovy, Scala, and more…

As we approach a stable release of BoxLang and our continued marketing reaches more folks, many have asked about its purpose. Why create a new language when the JVM ecosystem already includes established languages like Kotlin, Groovy, and Scala, to name a few.

Luis Majano
Luis Majano
December 18, 2024
ColdBox Free Tip 6 - Using Routing with Wildcard Domains!

ColdBox Free Tip 6 - Using Routing with Wildcard Domains!

ColdBox gives you the flexibility to create domain-specific routes, making it perfect for multi-tenant applications or projects that need to respond differently based on the domain or subdomain being accessed. In this tip, we’ll dive into how to use the withDomain() method to create routes that match specific domains or sub-domains.

Maria Jose Herrera
Maria Jose Herrera
December 18, 2024