pell
A statically-typed surface language whose only backend target is Oracle PL/SQL. It exists to fix the worst readability and ergonomics pain points of PL/SQL without losing access to a real Oracle database.
Get the IntelliJ plugin
Split-editor with live PL/SQL preview, gutter build/run buttons, REPL launcher, new-project wizard, and full LSP-backed completion/diagnostics. Direct: plugins.jetbrains.com/plugin/31994-pell.
Sample
module greet;
pub fn hello(name: text) -> text {
return "hello, {name}";
}
lowers to:
CREATE OR REPLACE PACKAGE greet AS
FUNCTION hello(p_name IN VARCHAR2) RETURN VARCHAR2;
END greet;
/
CREATE OR REPLACE PACKAGE BODY greet AS
FUNCTION hello(p_name IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN ('hello, ' || p_name);
END hello;
END greet;
/
The emitted PL/SQL is deployable as-is. You can paste either form into your editor.
Where to start
- Tutorial — a narrative walk-through from “hello world” to the advanced features. Read in order if you’re learning the language.
- Reference — exhaustive coverage of every type, annotation, builtin, and runtime package. Use for lookups when you already know what you’re searching for.
- Cookbook — task-oriented recipes for common problems. Each recipe is self-contained and shows the full pell source plus the PL/SQL it lowers to.
Project meta
- Benchmarks — compile-time and emit-quality measurements vs. hand-written PL/SQL.
- Reviews — five-reviewer critique reports plus a SUMMARY of the design review.
- Source on GitHub — the compiler, examples, and full spec.