Skip to content

Migrating to rbx v1#

rbx v1 removes a few BOCA configuration knobs in env.rbx.yml that were kept only for backward compatibility. They are marked deprecated in the current schema and will stop working in v1.

If you rely on the bundled default preset, there's nothing to do — it has already been migrated. You only need to act if you maintain a custom env.rbx.yml (run rbx config edit to open it). Each section below shows the old form and its replacement.

bocaLanguagelanguages#

The singular per-language bocaLanguage is replaced by the plural languages list. The first entry is the canonical (rbx → BOCA) mapping; every entry is emitted as a separate per-language script in the package.

Before
languages:
  - name: "cpp"
    # ...
    extensions:
      boca:
        bocaLanguage: "cc"
After
languages:
  - name: "cpp"
    # ...
    extensions:
      boca:
        languages: ["cc"]   # or ["cc", "cpp"] to emit both

Env-level languages allowlist → per-language languages#

The top-level extensions.boca.languages list (an allowlist of BOCA languages to emit) is removed. In v1 the emitted set is the union of every rbx language's own languages. Move each entry onto the corresponding rbx language and delete the env-level list.

Before
extensions:
  boca:
    languages: ["cc", "cpp", "c", "py3"]   # env-level allowlist
After
languages:
  - name: "cpp"
    extensions:
      boca: { languages: ["cc", "cpp"], template: "cc" }
  - name: "c"
    extensions:
      boca: { languages: ["c"], template: "c" }
  - name: "py"
    extensions:
      boca: { languages: ["py3"], template: "py3" }
# (env-level `extensions.boca.languages` removed)

Warning

Both fields are named languages but live at different levels: the per-language one (under each language's extensions.boca) is the replacement; the env-level one (at the top of env.rbx.yml) is the one being removed.

template is now required#

When an rbx language declares languages, the template field becomes required — the old fallback to the first languages entry is gone. Set it explicitly to one of the on-disk template dirs: c, cc, cpp, java, kt, py2, py3.

Before
extensions:
  boca:
    languages: ["cc", "cpp"]   # template inferred from "cc"
After
extensions:
  boca:
    languages: ["cc", "cpp"]
    template: "cc"             # required, names the template dir to source scripts from

After v1, loading an env.rbx.yml that uses any removed field (or omits a now-required template) fails with a clear validation error.

Also removed: maximumTimeError#

The env-level extensions.boca.maximumTimeError has been ignored since rbx started emitting exact fractional time limits, and is removed in v1. If you used it to widen the per-solution time budget, use minRunningTime instead (see Packaging: BOCA).

Before
extensions:
  boca:
    maximumTimeError: 1.5
After
extensions:
  boca:
    minRunningTime: 1000   # milliseconds