You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(engines),ci(rustcfml): document RustCFML support, de-experimentalize the lane, and bump the pin to v0.637.0
- cfml-engines.mdx: add RustCFML as the fourth supported engine with a
dedicated section (launcher usage, PR CI + release matrix gating, the
no-JVM java.* caveat) and a 'Pick an engine' entry.
- compat-matrix.yml: rename 'rustcfml (experimental)' to 'rustcfml',
drop continue-on-error, and refresh the stale informational-lane
comment to reference the required PR check.
- run-suite.sh: update the header comment and preserve the baseline's
_notes on --write-baseline regenerations.
- baseline.json: add _notes linking the tracked failure to upstream
RustCFML issues #376-#381.
- Bump ENGINE_VERSION to v0.637.0.
Signed-off-by: Peter Amiri <peter@alurium.com>
Copy file name to clipboardExpand all lines: tools/rustcfml/baseline.json
+6-1Lines changed: 6 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
{
2
-
"engineVersion": "v0.635.2",
2
+
"engineVersion": "v0.637.0",
3
3
"totals": {
4
4
"totalSpecs": 5375,
5
5
"totalPass": 5350,
@@ -9,5 +9,10 @@
9
9
},
10
10
"failing": [
11
11
"wheels.tests.specs.migrator.migrationSpec :: Tests addIndex :: creates an index on multiple columns"
12
+
],
13
+
"_notes": [
14
+
"Known residual failures are upstream RustCFML engine bugs; each entry above maps to an open issue on https://github.com/RustCFML/RustCFML:",
15
+
"migrationSpec 'creates an index on multiple columns' -> https://github.com/RustCFML/RustCFML/issues/377 (query-of-query recordCount corruption after repeated QoQs).",
16
+
"Earlier tracked bugs now fixed framework-side or upstream were: #376 Hash(binary), #378 java.io.File two-arg constructor, #379 void-assignment key deletion, #380 GetTempDirectory separator, #381 new-operator name lowercasing."
Copy file name to clipboardExpand all lines: web/sites/guides/src/content/docs/v4-0-0/start-here/cfml-engines.mdx
+19-3Lines changed: 19 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
---
2
2
title: CFML Engines
3
-
description: Run Wheels on Lucee, Adobe ColdFusion, or BoxLang. The wheels CLI ships with Lucee; the framework runs on all three.
3
+
description: Run Wheels on Lucee, Adobe ColdFusion, BoxLang, or the JVM-free RustCFML interpreter. The wheels CLI ships with Lucee; the framework runs on all four.
Wheels is the framework. **The framework runs on three CFML engines:** Lucee, Adobe ColdFusion, and BoxLang. The `wheels` CLI is a separate thing — it's a developer convenience that bundles a Lucee runtime so newcomers can `brew install wheels` and have a working dev server in one step. If you need Adobe CFor BoxLang for development or production, you don't use the `wheels` CLI's bundled runtime; you use a CommandBox-managed server (or a manual install) and the framework handles the rest.
11
+
Wheels is the framework. **The framework runs on four CFML engines:** Lucee, Adobe ColdFusion, BoxLang, and RustCFML. The `wheels` CLI is a separate thing — it's a developer convenience that bundles a Lucee runtime so newcomers can `brew install wheels` and have a working dev server in one step. If you need Adobe CF, BoxLang, or RustCFML for development or production, you don't use the `wheels` CLI's bundled runtime; you use a CommandBox-managed server (or a manual install) and the framework handles the rest.
12
12
13
13
## TL;DR
14
14
@@ -17,8 +17,11 @@ Wheels is the framework. **The framework runs on three CFML engines:** Lucee, Ad
| RustCFML | No | No — ships its own launcher | Yes¹ |
20
21
21
-
The framework's CI matrix (`.github/workflows/compat-matrix.yml`) runs every release against Lucee 6, Lucee 7, Adobe CF 2023, Adobe CF 2025, and BoxLang on each release. Engine support is hard-gated.
22
+
¹ RustCFML is a JVM-free interpreter, so app code that calls `java.*` classes through `CreateObject("java")` does not work on it. The core suite runs green against a pinned RustCFML build with one tracked upstream bug (a query-of-query `recordCount` issue) — see [Running Wheels on RustCFML](#running-wheels-on-rustcfml).
23
+
24
+
The framework's CI matrix (`.github/workflows/compat-matrix.yml`) runs every release against Lucee 6, Lucee 7, Adobe CF 2023, Adobe CF 2025, BoxLang, and RustCFML, and a dedicated RustCFML leg (`.github/workflows/rustcfml-ci.yml`) runs on every pull request to `develop`. Engine support is hard-gated.
22
25
23
26
## Why the `wheels` CLI is Lucee-only
24
27
@@ -87,11 +90,24 @@ The `wheels start`, `wheels stop`, `wheels reload`, and `wheels test` commands a
87
90
88
91
Wheels' BoxLang compatibility is verified per release in the same CI matrix as Lucee and Adobe CF. Cross-engine gotchas worth knowing about live in [`.ai/wheels/cross-engine-compatibility.md`](https://github.com/wheels-dev/wheels/blob/develop/.ai/wheels/cross-engine-compatibility.md) — most are about minor differences in struct/array semantics under closures.
89
92
93
+
## Running Wheels on RustCFML
94
+
95
+
[RustCFML](https://github.com/RustCFML/RustCFML) is a JVM-free CFML interpreter written in Rust. It ships its own launcher instead of a CommandBox module: download the binary for your platform from the [releases](https://github.com/RustCFML/RustCFML/releases) page and point it at your Wheels app's `public/` directory:
96
+
97
+
```bash
98
+
rustcfml --serve public --port 8080
99
+
```
100
+
101
+
Wheels treats RustCFML as a first-class engine. The framework's core test suite (all 5,300+ specs) runs against a pinned RustCFML build on every pull request to `develop` via `.github/workflows/rustcfml-ci.yml` and on every release in the compatibility matrix. The suite is green except for one tracked upstream engine bug — a query-of-query `recordCount` edge case ([RustCFML/RustCFML#377](https://github.com/RustCFML/RustCFML/issues/377)) recorded in `tools/rustcfml/baseline.json`, which the CI leg compares against so *new* failures block a merge while the known one does not.
102
+
103
+
Because there is no JVM, RustCFML cannot run `CreateObject("java", …)` — any app code (or third-party package) that reaches into `java.*` classes will not work on it. The Wheels framework core has been made engine-agnostic, so framework features (routing, ORM, migrations, storage signing, channels, auth hashing) run without the JVM.
104
+
90
105
## Pick an engine
91
106
92
107
-**You're new to Wheels and want the easiest path:** Lucee, with the bundled `wheels` CLI. Skip the rest of this page.
93
108
-**Your team standardised on Adobe CF:** CommandBox + Adobe CF. Skip the bundled CLI's `start`/`stop` commands; use `box server` instead.
94
109
-**You want a modern, performant CFML runtime and don't have legacy Adobe scripts to support:** BoxLang via CommandBox.
110
+
-**You want a small, JVM-free runtime (edge/serverless, WASM-targetable) and no app code needs `java.*`:** RustCFML, serving `public/` directly.
95
111
-**You're shipping to a production server you don't control:** the framework runs on whatever engine that server uses; the `wheels` CLI doesn't ship to production.
0 commit comments