<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AL Runner on Stefan Maron | Business Central &amp; AL Development</title><link>https://stefanmaron.com/tags/al-runner/</link><description>Recent content in AL Runner on Stefan Maron | Business Central &amp; AL Development</description><generator>Hugo -- gohugo.io</generator><language/><lastBuildDate>Thu, 10 Sep 2026 07:33:46 +0200</lastBuildDate><atom:link href="https://stefanmaron.com/tags/al-runner/index.xml" rel="self" type="application/rss+xml"/><item><title>bcdb restore: Write a Cloud Export Into a Container</title><link>https://stefanmaron.com/posts/bcdb-restore-write-a-cloud-export-into-a-container/</link><pubDate>Thu, 10 Sep 2026 07:33:46 +0200</pubDate><guid>https://stefanmaron.com/posts/bcdb-restore-write-a-cloud-export-into-a-container/</guid><description>bcdb could already open a .bak or a .bacpac and read anything in it, no SQL Server involved. That was genuinely useful for AL Runner , which is why I built it in the first place, but it didn&amp;rsquo;t do much for a developer&amp;rsquo;s normal day. For that, you want the data sitting in a database you can query, click through, and run BC against.
Since v0.2.0, bcdb restore is what changes that: it writes a source&amp;rsquo;s rows straight into a container that&amp;rsquo;s already running, and it doesn&amp;rsquo;t ask the container&amp;rsquo;s schema to match the source first.</description></item><item><title>AL Runner: A Weekend of Autonomous Agents, a Windows Cross-Check, and 59% of Microsoft's Tests Passing</title><link>https://stefanmaron.com/posts/al-runner-autonomous-agent-weekend/</link><pubDate>Tue, 08 Sep 2026 07:33:56 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-autonomous-agent-weekend/</guid><description>I last wrote about AL Runner on September 3, covering the test suite that verifies its behavior against real BC . Since then I got funded for an additional Claude Max 20x subscription, dedicated specifically to AL Runner work. Combined with the Max 20x subscription I already had, that gave me a Max 40x usage window, and a token usage reset on Friday, September 5 made the whole thing available fresh going into the weekend.</description></item><item><title>AL Language Tests: An Executable Spec for How BC Actually Behaves</title><link>https://stefanmaron.com/posts/al-language-tests-executable-spec/</link><pubDate>Thu, 03 Sep 2026 06:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-language-tests-executable-spec/</guid><description>I&amp;rsquo;ve written a lot about AL Runner on this blog — most recently the Cronus data and mutation-testing update two days ago. What I haven&amp;rsquo;t written about is the repository that makes AL Runner trustworthy in the first place: BusinessCentral.AL.Language.Tests .
The problem it solves AL Runner is an emulator. It reimplements the AL language and a chunk of the BC platform in-memory so your tests run in seconds instead of the minute-plus it takes to spin up a real service tier.</description></item><item><title>AL Runner: Testing Against Real Cronus Data, Debugging Restored, and Mutation-Ready Coverage</title><link>https://stefanmaron.com/posts/al-runner-tests-against-cronus/</link><pubDate>Tue, 01 Sep 2026 18:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-tests-against-cronus/</guid><description>I last wrote about AL Runner on August 20, covering v2.2 and v2.3. Seven releases have shipped since then, through today&amp;rsquo;s v2.10.0, and the headline one connects directly to the post I wrote this morning about bcdb : you can now point AL Runner at a real BC backup and test against the actual data in it, starting with the Cronus demo database every BC sandbox artifact ships with.
Testing against real Cronus data Up to now, AL Runner&amp;rsquo;s in-memory database started empty and stayed empty except for whatever your own test code inserted.</description></item><item><title>Introducing bcdb: Read a Business Central Backup Without SQL Server</title><link>https://stefanmaron.com/posts/bcdb-read-business-central-backups-without-sql-server/</link><pubDate>Tue, 01 Sep 2026 09:40:40 +0200</pubDate><guid>https://stefanmaron.com/posts/bcdb-read-business-central-backups-without-sql-server/</guid><description>Say someone hands you a customer&amp;rsquo;s BC backup and you need to check one field on one table. The normal path is: find or spin up a SQL Server, restore the file, wait for however long that takes on however large the database is, connect, query, and then decide whether to keep that SQL Server around or tear it down. All of that just to read a handful of values.</description></item><item><title>Weekly Recap: August 21-28</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-28/</link><pubDate>Fri, 28 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-28/</guid><description>The feature side of AL Runner&amp;rsquo;s week — real Cronus data via --test-data, breakpoint debugging back via --dap, per-test coverage for mutation testing — is already its own post . This recap covers everything else that shipped in the same window: a CI incident and its fix in AL Runner, two real-world bugs in the Linux fast lane, a first update in two years for a browser extension, and a contribution to a project I don&amp;rsquo;t maintain.</description></item><item><title>Weekly Recap: August 14-21</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-21/</link><pubDate>Fri, 21 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-21/</guid><description>Two posts went out on their own this week: I Can Turn Off My Code. I Can&amp;rsquo;t Turn Off Yours. on the 18th, making the case that whether a trigger needs to run shouldn&amp;rsquo;t be a compile-time guess when the platform can answer that question itself at runtime, and AL Runner v2.2 and v2.3 on the 20th, covering coverage reporting, inline execute, and a watch mode that stopped lying to you mid-save.</description></item><item><title>AL Runner v2.2 and v2.3: Coverage, Quick Scripts, and a Watch Mode You Can Trust</title><link>https://stefanmaron.com/posts/al-runner-coverage-execute-and-a-guard-that-worked/</link><pubDate>Thu, 20 Aug 2026 07:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-coverage-execute-and-a-guard-that-worked/</guid><description>I last wrote about AL Runner on August 10, the day the v2 rewrite shipped — the tool that runs your AL unit and integration tests without spinning up a BC service tier. The weekly recap four days later covered the first round of follow-up fixes. This post covers what happened after that, through v2.3.1 on August 19: two new capabilities, a watch mode you can actually trust during a busy editing session, and roughly 130 fixes to places where the runner used to disagree with real Business Central.</description></item><item><title>Weekly Recap: August 7-14</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-14/</link><pubDate>Fri, 14 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-14/</guid><description>Last Monday I published three posts at once — AL Runner v2 , BC on Linux and the AL-Go fast lane , and the bc-code-atlas intro . None of that stopped the week it was published. Here&amp;rsquo;s what happened across those repos (and a couple of new ones) since then.
The AL Runner: closing correctness gaps and hardening the pipeline Since the v2 cutover post , the runner shipped roughly 85 merged PRs in four days, most of them small, targeted fixes to places where the emulator&amp;rsquo;s behavior diverged from real BC.</description></item><item><title>AL Runner v2: What Feedback Told Me v1 Was Missing</title><link>https://stefanmaron.com/posts/al-runner-v2-emit-through-bc/</link><pubDate>Mon, 10 Aug 2026 07:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-v2-emit-through-bc/</guid><description>Last time I wrote about AL Runner , it ran your AL unit tests without a service tier by transpiling AL to C#, renaming BC&amp;rsquo;s runtime types (NavRecord became MockRecord, and so on), and stubbing out anything it didn&amp;rsquo;t recognize. It worked. 3,400 tests passed.
Then the feedback started coming in from companies actually trying to use it, and it was consistent: the runner does what it says it does, for the use cases described.</description></item></channel></rss>