Languages
Full list of 50+ supported programming languages grouped by category — scripting, compiled, functional, and more.
Code Execution supports 50+ programming languages via the Piston runtime engine. Each language has a pre-warmed runtime for fast execution.
Specify the language and optionally the version when calling tx.code.run():
const result = await tx.code.run({
language: 'python', // required
version: '3.12', // optional, uses latest if omitted
code: 'print("hello")',
});
| Language | Version | Identifier |
|---|
| Python | 3.12 | python |
| JavaScript (Node.js) | 20 | javascript |
| TypeScript (Deno) | 5.x | typescript |
| Ruby | 3.3 | ruby |
| PHP | 8.3 | php |
| Perl | 5.38 | perl |
| Lua | 5.4 | lua |
| R | 4.3 | r |
| Bash | 5.2 | bash |
| PowerShell | 7.4 | powershell |
| Language | Version | Identifier |
|---|
| Go | 1.22 | go |
| Rust | 1.77 | rust |
| C | GCC 13 | c |
| C++ | GCC 13 | cpp |
| Java | 21 | java |
| C# | .NET 8 | csharp |
| Swift | 5.9 | swift |
| Kotlin | 1.9 | kotlin |
| D | 2.107 | d |
| Zig | 0.12 | zig |
| Language | Version | Identifier |
|---|
| Haskell | 9.6 | haskell |
| Elixir | 1.16 | elixir |
| Erlang | 26 | erlang |
| OCaml | 5.1 | ocaml |
| Clojure | 1.11 | clojure |
| Scala | 3.4 | scala |
| F# | .NET 8 | fsharp |
| Racket | 8.12 | racket |
| Scheme | Chez 10 | scheme |
| Common Lisp | SBCL 2.4 | lisp |
| Language | Version | Identifier |
|---|
| Assembly (NASM) | 2.16 | nasm |
| Fortran | GCC 13 | fortran |
| Pascal | FPC 3.2 | pascal |
| Ada | GNAT 13 | ada |
| Nim | 2.0 | nim |
| V | 0.4 | vlang |
| Language | Version | Identifier |
|---|
| SQL (SQLite) | 3.45 | sqlite |
| Jq | 1.7 | jq |
| AWK | GNU 5.2 | awk |
| Language | Version | Identifier |
|---|
| Dart | 3.3 | dart |
| Julia | 1.10 | julia |
| Groovy | 4.0 | groovy |
| Crystal | 1.11 | crystal |
| Prolog (SWI) | 9.0 | prolog |
| COBOL | GnuCOBOL 3.2 | cobol |
| Raku | 2024.01 | raku |
| TCL | 8.6 | tcl |
await tx.code.run({
language: 'python',
code: `
import json, math
data = [1, 2, 3, 4, 5]
result = {"mean": sum(data)/len(data), "std": math.sqrt(sum((x-sum(data)/len(data))**2 for x in data)/len(data))}
print(json.dumps(result))
`,
});
await tx.code.run({
language: 'rust',
code: `
fn main() {
let numbers: Vec<i32> = (1..=10).collect();
let sum: i32 = numbers.iter().sum();
println!("Sum of 1..10 = {}", sum);
}
`,
});
await tx.code.run({
language: 'go',
code: `
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
data := map[string]interface{}{
"status": "ok",
"count": 42,
}
json.NewEncoder(os.Stdout).Encode(data)
}
`,
});
await tx.code.run({
language: 'java',
code: `
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int sum = IntStream.rangeClosed(1, 100).sum();
System.out.println("Sum: " + sum);
}
}
`,
});
When you omit the version parameter, the latest available version is used. To pin a specific version:
await tx.code.run({
language: 'python',
version: '3.12', // pin to 3.12
code: 'import sys; print(sys.version)',
});
Programmatically list all available languages and versions:
const runtimes = await tx.code.runtimes();
for (const runtime of runtimes) {
console.log(`${runtime.language} ${runtime.version}`);
}