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.