Skip to content

Add RustCFML engine support - #1741

Open
alexskinner wants to merge 1 commit into
foundeo:masterfrom
alexskinner:add-rustcfml-engine-support
Open

alexskinner wants to merge 1 commit into
foundeo:masterfrom
alexskinner:add-rustcfml-engine-support

Conversation

@alexskinner

@alexskinner alexskinner commented Sep 19, 2026

Copy link
Copy Markdown

Adds RustCFML as a documented engine alongside ColdFusion, Lucee, Railo, OpenBD and BoxLang.

I know 781 files is a lot to land in your inbox, so this is written to be checkable in a few minutes rather than file by file. Happy to split it up or drop any part of it.

The short version

engines.rustcfml added to existing entries 666
New RustCFML-only entries 96
Listing/index files updated 10
New guides 2
Site code 6 files, ~35 added lines

No existing engine data is changed anywhere. Every one of the 666 modified entries gains an engines.rustcfml block and nothing else.

How to verify that claim quickly

Every modified data file should be +2 −1 — the new line, plus a comma appended to the line above it:

git diff --numstat --diff-filter=M master -- data/en | awk '$1!=2 || $2!=1'

All 666 are +2 −1; that command prints only the 10 listing files and index.json. And to confirm nothing lost an engine or had prose rewritten:

# for each changed file: HEAD.engines ⊆ new.engines, and HEAD.description == new.description

I ran that across all 677 changed data files: 0 engines removed, 0 descriptions rewritten, 0 line-ending changes.

Site code — the whole of it

Additive only; no existing behaviour changes.

File Change
data/cfdocs.schema.json rustcfml added to the engines schema
assets/style.css .label-rustcfml badge colours
views/doc.cfm 3 additions: engineMap entry, badge block, compatibility heading
views/doc-md.cfm RustCFML appended to one cfloop list
utilities/guide.cfm rustcfml-only.md generation, mirroring the existing acf-only/lucee-only branches
openimage.cfm canvas widened 512→600px so a sixth badge fits; CF badge shifted 432→492

views/doc.cfm is the only one with any judgement in it and it is 12 added lines. An earlier draft also rewrote the "Not supported on …" banner to enumerate every engine — that changed output on your ACF-only and Lucee-only pages, so I reverted it. The existing etc. already covers a new engine.

Two things I'd like your steer on

1. No docs URLs for RustCFML. CONTRIBUTING asks for links to official documentation, or an explanation if there is none — this is that explanation. RustCFML has no published per-function documentation site yet, so all 762 engines.rustcfml blocks have no docs key, and minimum_version is "" because there are no published version numbers to cite.

Consequence: views/doc.cfm renders the CF/Lucee/BoxLang badges only when a docs URL exists, so I made the RustCFML badge render without one (a <span> rather than an <a>). If you would rather it not render at all until docs exist, that is a one-line change and I am happy to make it.

2. Two entries document BoxLang as well as RustCFML. queryRegisterFunction and dump are new files, and both functions exist in BoxLang core (QueryRegisterFunction, Dump in the 1.10.0 BIF list). It seemed wrong to add them as RustCFML-only when BoxLang has them, so each carries a boxlang block with a verified docs URL. minimum_version is 1.0.0 to match every other BoxLang entry in the repo — I could not confirm the actual introducing version, so say the word if you would prefer it blank.

Those two are the only entries where this PR makes a claim about a non-RustCFML engine.

Deliberately left out

  • 48 of the 96 new functions are in no category listing. The S3 (16), MCP (10), PDF (5) and realtime (5) families, plus some one-offs, have no sensible home in the existing nav, and adding new categories felt like your call rather than mine. The other 48 went into existing listings (spreadsheet-functions, security-functions, math-functions, query-functions, image-functions, conversion-functions, decision-functions, list-functions). Happy to add categories if you want them.
  • data/en/all.json is untouched. It is at 799 entries and already missing a few hundred documented ones, so it looked stale independently of this work rather than something to reconcile here.

Guides

  • rustcfml-only.md — generated in the same format as acf-only.md / lucee-only.md. Note I did not run utilities/guide.cfm to produce it: it writes with backslash path separators (guideDir & '\lucee-only.md'), so it only works on Windows. I generated the identical output another way rather than change that file.
  • query-of-queries.md — a general QoQ guide covering the portable core, and the extended SQL (LIMIT/OFFSET, CASE, scalar subqueries, derived tables, custom SQL functions) that BoxLang introduced and RustCFML follows. Not RustCFML-specific.

Checks run

  • All 1113 data files validate against data/cfdocs.schema.json.
  • TestDataFormat, TestIndexes, TestRelated, TestNamesake reimplemented and run over all files: 0 failures. TestViews' four assertions pass against a local Lucee 6 instance.
  • I could not run ./test.sh itself — box install gives me a TestBox 5.4.0 tree where the runner cannot resolve testbox.system.util.Util even though the file is present. That looks like a local mapping problem rather than anything in this PR, but it does mean the suite has not run end to end on my machine. Worth a CI run.
  • Contributor guide: tabs throughout, implicit array/struct notation in examples, lowercase filenames, no existing open PR or issue covering this.

Adds RustCFML as a documented CFML engine alongside ColdFusion, Lucee,
Railo, OpenBD and BoxLang.

Data:
- engines.rustcfml added to 666 existing tag/function entries
- 96 new entries for RustCFML-only functions (MCP, S3, spreadsheet, PDF,
  YAML, JWT, realtime, observability)
- registered in index.json / functions.json and 8 category listings
- two new guides: rustcfml-only and query-of-queries

Site code (additive only, ~35 lines across 6 files):
- data/cfdocs.schema.json  rustcfml in the engines schema
- assets/style.css         .label-rustcfml badge colours
- views/doc.cfm            engineMap entry, badge, compatibility heading
- views/doc-md.cfm         RustCFML in the .md engine table
- utilities/guide.cfm      rustcfml-only.md generation
- openimage.cfm            canvas widened 512->600 to fit a sixth badge

No existing engine data is altered: every modified entry gains an
engines.rustcfml block and nothing else.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant