Blog

blog featured image
Luis Majano | September 11, 2026
TestBox 7.1 Released : 47 New Ways to Assert, 29 of Them BoxLang-Only

TestBox 7.1.0 is here, and it is the largest single expansion of our assertion and expectation library since TestBox was born.

BoxLang 1.17 Series Part 4 : WriteDump Enhanced!

Luis Majano |  September 11, 2026

You call writeDump() on an ORM entity or a very rich class graph . The browser locks up. Thirty seconds later you get a page with forty thousand rows on it, you scroll for a while, you give up, and you go edit your code to dump a sub-key instead. Or worse, you crash the server.

Read More

BoxLang AI 3.4 Blog Series Part 4 : Locking Down Prompt Injection

Luis Majano |  September 11, 2026

LLM applications face a class of attack traditional input validation was never built for: prompt injection. An attacker embeds instructions in user input, a retrieved document, a web page your tool fetched, or an MCP result, trying to override your system prompt, exfiltrate data, or hijack a tool call. BoxLang AI 3.4.0 ships four layered, configurable defenses against exactly this, plus one more that's on unconditionally.

Read More

BoxLang 1.17 Series Part 3 : Encrypted Config Secrets

Luis Majano |  September 08, 2026

Everyone knows the datasource password should not be sitting in plain text in a config file. Everyone has also, at some point, shipped exactly that, because the alternative was a pile of environment variable plumbing that nobody wanted to build on a deadline. x

Read More

BoxLang AI 3.4 Blog Series Part 3 : Batched Approvals

Luis Majano |  September 08, 2026

Here's a bug that's easy to miss until it bites someone in production: an agent turn asks for two tool calls at once, both need human approval, and only the first one actually suspends. The second one gets silently skipped. Not rejected, not queued, just gone. That's what happened before 3.4.0, and it's fixed now with batched tool-call approvals.

Read More

Getting Started with BoxLang as an Alternative CFML Engine

Cristobal Escobar |  September 08, 2026

If you have an existing ColdFusion or Lucee application, one of the first questions you may have about BoxLang is probably not:

“Should I rewrite my application in BoxLang?”

It is much simpler:

“Can BoxLang run the CFML application I already have?”

That was the focus of veteran CFML troubleshooter Charlie Arehart’s session at Into the Box 2026, Getting Started with BoxLang as an Alternative CFML Engine.

Read More

BoxLang 3.4 Blog Series Part 2: Revamped Human in The Loop HITL

Luis Majano |  September 05, 2026

HumanInTheLoopMiddleware used to do everything itself: decide which tool calls needed approval, present the request, and wait for a decision. In 3.4.0, that logic has been pulled apart into a real subsystem, and the piece developers will feel the most is that a human's "always allow this" now actually means always.

Read More

BoxLang 1.17 Series Part2 : BoxLang Check - Syntax Validation Your AI Agent Can Read

Luis Majano |  September 05, 2026

Every serious language has a way to ask "is this even parseable?" without running it. bash -n script.sh. node --check file.js. python -m py_compile. As of 1.17.0, BoxLang has one too.

Read More

BoxLang 3.4 Blog Series Part I: Gateways, One Interface, Any Platform

Luis Majano |  September 04, 2026

Every AI agent that touches something real eventually needs a human in the loop. Someone has to approve the delete, confirm the wire transfer, or just say "go ahead" before a tool call runs. The question BoxLang AI 3.4.0 answers is: approve it how? A terminal prompt? A webhook? A Slack button?

Read More

BoxLang 1.17 Series Part1 : Module Inception

Luis Majano |  September 04, 2026

BoxLang has always been an extensible language. As of 1.17.0, it is a hierarchically extensible one. Every module ecosystem you have worked in is flat. You declare a list of dependencies and something outside the language, a package manager or a build tool, resolves and downloads and orders them. The language itself has no opinion about the shape of the graph. It sees a list, not a tree.

Read More