windmill-labs/windmill · error

{} is currently not supported

Error message

{} is currently not supported

What it means

ScriptLang::from_str rejects any language string that is not one of the known script languages (python, bash, go, javascript, etc.). Windmill added languages over time, so unknown strings fail with this message.

Source

Thrown at backend/windmill-types/src/scripts.rs:177

            "powershell" => ScriptLang::Powershell,
            "postgresql" => ScriptLang::Postgresql,
            "mysql" => ScriptLang::Mysql,
            "bigquery" => ScriptLang::Bigquery,
            "snowflake" => ScriptLang::Snowflake,
            "mssql" => ScriptLang::Mssql,
            "graphql" => ScriptLang::Graphql,
            "oracledb" => ScriptLang::OracleDB,
            "php" => ScriptLang::Php,
            "rust" => ScriptLang::Rust,
            "ansible" => ScriptLang::Ansible,
            "csharp" => ScriptLang::CSharp,
            "nu" => ScriptLang::Nu,
            "java" => ScriptLang::Java,
            "ruby" => ScriptLang::Ruby,
            "rlang" => ScriptLang::Rlang,
            "dbt" => ScriptLang::Dbt,
            // for related places search: ADD_NEW_LANG
            language => return Err(anyhow::anyhow!("{} is currently not supported", language)),
        };

        Ok(language)
    }
}

#[derive(Eq, PartialEq, Debug, Hash, Clone, Copy, sqlx::Type)]
#[sqlx(transparent)]
pub struct ScriptHash(pub i64);

impl Deref for ScriptHash {
    type Target = i64;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl Into<u64> for ScriptHash {

View on GitHub (pinned to e474e8803c)

Solutions

  1. Use a supported language string exactly as listed (lowercase: python, bash, go, javascript, typescript, php, nu, java, ruby, rlang, dbt, ...)
  2. If the script is from a newer windmill, upgrade the instance
  3. Check for casing/whitespace issues in the language field

Example fix

// before
{"language": "Python"}
// after
{"language": "python"}
Defensive patterns

Strategy: validation

Validate before calling

SUPPORTED_LANGS = {"python","bash","go","javascript","typescript","php","nu","java","ruby","rlang","dbt","deno","ansible"}
if script["language"] not in SUPPORTED_LANGS:
    raise ValueError(f"unsupported language: {script['language']}")

Type guard

function isScriptLang(s: string): s is ScriptLang {
  return ["python","bash","go","javascript","typescript","php","nu","java","ruby","rlang","dbt"].includes(s);
}

Try / catch

match script_lang_str.parse::<ScriptLang>() {
    Err(e) if e.to_string().ends_with("is currently not supported") => {
        eprintln!("use a supported language string (lowercase): {e}");
    }
    other => other?,
}

Prevention

When it happens

Trigger: Creating/updating a script (or importing one) whose `language` field is an unsupported or misspelled value, e.g. `perl`, `Python` (wrong case), or a newer language read by an older server.

Common situations: Hand-edited script metadata; deploying scripts exported from a newer windmill into an older instance; typos or wrong casing in the language field.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/c849d919aa82541f. Report an issue: GitHub.