Blog

BoxLang 1.0.0 Beta 18 Launched

Luis Majano October 11, 2024

Spread the word

Luis Majano

October 11, 2024

Spread the word


Share your thoughts

This release introduces several new features and configurations to enhance functionality and security. It also continues to squash tons of bugs to bring about CFML compatibility. Key updates include:

  • Enhanced arrayFind and arrayFindNoCase functions, allowing value closures to accept item indices.
  • New validBoxLangTemplates configuration for filtering templates processable by the Runnable Loader.
  • New validClassExtensions configuration to specify permissible class extensions.
  • A new security configuration section designed to disallow BIFs, Components, and Imports, enhancing security.

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

New Feature

BL-617 arrayFind, arrayFindNoCase value closures, accept the value and now the index of the item as the second param

BL-626 New configuration: validBoxLangTemplates to determine which templates the Runnable Loader can process

BL-627 New configuration: validClassExtensions to determine which class extensions to work with

BL-629 New security configuration section for disallowing: BIFS, Components, Imports

BL-630 Internal refactor to make the class locator and resolvers have a life-cycle based on the runtime and not alone

Improvement

BL-611 Remove debugmode capture on miniserver, delegate to the core runtime.

BL-622 Consolidate CastAttempt and Attempt into a hierarchy

BL-623 New DynamicFunction type that can be used to generate dynamic BoxLang functions using Java Lambda proxies. Great for code generation

Bug

BL-614 Import nested classes

BL-615 Java static funcitons not behaving as expected

BL-616 array.find does not use cf rules to convert result of predicate to boolean

BL-619 QueryColumnType doesn't handle "idstamp" (mssql)

BL-620 static scope in application.cfc not initialized before psuedoConstructor runs

BL-624 Auto-escaping of {} in regex needs to ignore already-escaped braces

BL-625 Instead of removing special chars from Java FQN, replace with __ to avoid conflicts

BL-628 Tag expressions not parsing inside template island inside braces

BL-631 duplicate() doesn't work on empty structs

BL-633 randrange() not inclusive of upper bound

BL-634 array.find - can't cast closure to string

Add Your Comment

Recent Entries

BoxLang 1.0.0 Beta 20 Launched

BoxLang 1.0.0 Beta 20 Launched

This release brings another round of powerful tools and refinements to the BoxLang community, making development more dynamic and robust than ever. We’ve added new capabilities for debugging and tracing, expanded context-sensitive controls for thread management, and introduced new methods for fluent attachment handling.

For deeper flexibility, our improvements enhance configurability, streamline session control, and add deeper levels of JSON serialization management. Plus, we’ve squashed a wide range of bugs, enhancing stability across database connections, date handling, and runtime compatibility with CFML.

Luis Majano
Luis Majano
October 25, 2024
ColdBox Free Tip 4 - Using a Struct for Query Strings

ColdBox Free Tip 4 - Using a Struct for Query Strings

ColdBox gives you powerful ways to build cleaner, more maintainable code, especially when dealing with query strings. In this tip, we’ll explore how to pass a struct into the buildLink() method, making your code easier to read and manage.

Maria Jose Herrera
Maria Jose Herrera
October 22, 2024