Write code the way you think. In plain English.
EPL is a fully-featured programming language where every keyword is natural English.
Build web apps, REST APIs, mobile apps, AI pipelines, and cloud-native services β
in a syntax anyone can read, write, and maintain.
pip install eplang
Website Β Β·Β Documentation Β Β·Β Playground Β Β·Β VS Code Β Β·Β Packages
EPL (English Programming Language) eliminates the gap between pseudocode and executable code. Its syntax reads like structured English, while its runtime delivers the performance and tooling expected from a modern language β bytecode VM, LLVM native compilation, WASM targets, and a 22-package official ecosystem.
Note: A production-grade REST API in EPL
Create WebApp called app
Route "/api/users" responds with
users = [Map with name = "Alice" and role = "admin", Map with name = "Bob" and role = "user"]
Send json Map with data = users and count = length(users) and status = "ok"
End
Route "/health" responds with
Send json Map with status = "healthy" and version = "10.1.0"
End
No semicolons. No curly braces. No cryptic symbols. Just English.
pip install eplangecho 'Say "Hello from EPL!"' > hello.epl
epl hello.eplepl replepl new myapp --template web # Web app with routing
epl new authapp --template auth # Auth API with JWT
epl new botapp --template chatbot # AI chatbot
epl new studio --template frontend # Creative frontendpip install "eplang[server]"
epl serve app.epl # Dev server
epl deploy k8s app.epl --image myapp:1.0 --tls # Kubernetes
epl deploy aws app.epl # AWS ECSEPL supports WSGI (Waitress, Gunicorn) and ASGI (Uvicorn, Hypercorn) deployment through generated adapters and the epl serve runtime.
The web DSL renders structure, styling (Style/Stylesheet), head/SEO (Head), and interactivity (On click/hover/reveal) as native, server-rendered output β no client-side injection. Event handlers compile to a generated <script> (never inline on* attributes).
For the imperative cases the DSL doesn't model β a canvas particle engine, custom requestAnimationFrame loops, third-party widgets β Script, Raw HTML, and Stylesheet are the sanctioned, author-responsible escape hatches (the canvas particle engine on the EPL site itself lives in a Script block by design). Their bodies are emitted verbatim, with breakout guards on Stylesheet.
Run under a strict Content-Security-Policy with --csp:
epl serve app.epl --cspThis generates a fresh per-response nonce, tags every generated <script> with it, and sends Content-Security-Policy: β¦ script-src 'self' 'nonce-β¦' β¦ β so the generated JS runs under a strict policy with no 'unsafe-inline' for scripts. (Programmatic equivalent: configure_page(csp=True).)
|
Variables & Control Flow |
Functions & OOP |
EPL is a multi-backend language with a unified frontend:
ββββββββββββββββ
.epl source βββΆβ Lexer β
β Parser β
β AST β
ββββββββ¬ββββββββ
β
ββββββββββββββΌβββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββ βββββββββββββββ
β Interpreter β β Bytecode β β LLVM β
β (Tree-walk) β β VM β β (Native) β
ββββββββββββββββ ββββββββββββ βββββββββββββββ
β β β
βΌ βΌ βΌ
Python host Stack VM .exe / .o
(x86-64 verified)
| Target | Command | Output |
|---|---|---|
| Bytecode VM (default) | epl run app.epl |
Stack-based VM |
| Interpreter | epl run --interpret app.epl |
Tree-walk |
| Native Binary | epl build app.epl |
LLVM β .exe / ELF |
| WebAssembly | epl wasm app.epl |
.wasm module |
| JavaScript | epl js app.epl |
Browser/Node.js |
| Kotlin | epl kotlin app.epl |
JVM / Android |
| Python | epl python app.epl |
.py transpile |
The interpreter and bytecode VM are held to byte-for-byte output parity by a
dedicated harness (tests/parity_check.py) that diffs every example across both
backends β so epl run and epl run --interpret behave identically.
EPL ships with a curated package ecosystem covering web, data, AI, security, and infrastructure:
| Category | Packages | Description |
|---|---|---|
| Web & API | epl-web Β· epl-http | HTTP router, WebSocket, REST client, middleware |
| Data & DB | epl-db Β· epl-dataframe Β· epl-collections | SQLite ORM, DataFrame ops, typed collections |
| AI & ML | epl-learn Β· epl-array Β· epl-plot | Scikit-learn bindings, NumPy arrays, Matplotlib charts |
| Math & Science | epl-math Β· epl-science Β· epl-algo | Number theory, SciPy integration, graph algorithms |
| Security | epl-auth Β· epl-crypto Β· epl-validator | JWT auth, hashing/encryption, input validation |
| Infrastructure | epl-cloud Β· epl-cache Β· epl-email | AWS/GCP/Azure, Redis caching, SMTP |
| Language | epl-string Β· epl-datetime Β· epl-functional Β· epl-struct | String utils, date ops, FP patterns, typed records |
| Testing | epl-test | Unit testing framework with assertions |
epl install epl-auth # Install a package
epl install epl-math # Packages resolve from the official registryBrowse all packages at the EPL Package Registry β
Built-in modules available without installation: math, string, http, json, crypto, datetime, regex, io, os, sql, net, html, web, websocket, collections, encoding, functional, auth, template, testing, sql.
Access the entire NPM ecosystem from EPL:
Use javascript "lodash" as _
Use javascript "axios" as axios
result = _.chunk([1, 2, 3, 4, 5, 6], 2)
response = axios.get("https://api.example.com/data")
Say response.data
|
π Web Applications & APIs π€ AI & Machine Learning ποΈ Database Applications |
π± Android Apps epl android app.epl
# β Full Android Studio project with Kotlin
π iOS Apps (experimental) epl ios app.epl
# β Xcode project with SwiftUI views
π₯οΈ Desktop Apps epl desktop app.epl
# β Compose Multiplatform desktop appβ‘ Native Executables epl build app.epl
# β LLVM-compiled native binary
βΈοΈ Kubernetes Deployment epl deploy k8s app.epl \
--image myapp:1.0 \
--host app.example.com --tls |
| Category | Capabilities |
|---|---|
| Language | OOP, generics, async/await, pattern matching, lambdas & closures (capturing lambdas, executed on both the interpreter and the bytecode VM), generators, enums, decorators, type inference |
| Type System | Static type checker (epl check), gradual typing, generic constraints, whole-program type inference for native builds (untyped functions that resolve to a single concrete type compile without annotations) |
| Performance | Bytecode VM with constant folding, LLVM native compilation, dead code elimination, tail-call optimization |
| Web | HTTP/WebSocket router, WSGI/ASGI adapters, middleware pipeline, sessions, templates, static files |
| Database | SQLite ORM, Redis, PostgreSQL β Store/Fetch/Delete English APIs |
| Security | Sandboxed FFI, pickle allowlist, recursion/scope-depth limits, input validation |
| Tooling | LSP server, REPL, debugger, formatter (epl fmt), linter (epl lint), test runner, code coverage |
| Targets | Interpreter, VM, LLVM native, JS, Kotlin, Python, WASM, MicroPython β 8 compilation backends |
| Packaging | SemVer registry, lockfiles, checksums, dependency resolution, PyPI bridge |
| AI | Built-in ai module, Error Explainer v2.0 with 55+ offline patterns (epl fix), auto-fix (--fix), dual-model copilot |
| DevOps | K8s manifests, AWS/GCP/Azure deploy, Prometheus metrics, health endpoints, structured logging |
| Interop | JS/TS bridge for NPM, Python bridge for PyPI, persistent Node.js subprocess |
| Stdlib | 725+ built-in functions: HTTP, DB, Math, Crypto, File I/O, JSON, Regex, DateTime, HTML |
Usage: epl <command> [options]
Core
epl run <file> Run an EPL program
epl repl Interactive REPL
epl new <name> [--template] Scaffold a new project
epl serve <file> Start web server (dev mode)
Build & Compile
epl build <file> Compile to native executable (LLVM)
epl wasm <file> Compile to WebAssembly
epl js <file> Transpile to JavaScript
epl python <file> Transpile to Python
epl kotlin <file> Transpile to Kotlin
Platform Targets
epl android <file> Generate Android Studio project
epl ios <file> Generate Xcode / SwiftUI project
epl desktop <file> Generate Compose Multiplatform app
epl web <file> Generate WASM/JS web app
Quality & Tooling
epl check [file] Static type checking
epl fmt <file> Format source code
epl lint [file] Lint source code
epl test [dir] Run test suite
epl fix <file> Error diagnostics (offline, 55+ patterns)
epl fix <file> --fix Auto-apply suggested corrections
Deploy
epl deploy k8s <file> Generate Kubernetes manifests
epl deploy aws <file> Deploy to AWS ECS
epl deploy gcp <file> Deploy to GCP Cloud Run
epl deploy azure <file> Deploy to Azure Container Apps
Packages
epl install <package> Install a package
epl upgrade Upgrade EPL to latest version
Tools
epl playground Browser-based playground
epl copilot AI code assistant
| Capability | EPL | Python | JavaScript | Go | Java |
|---|---|---|---|---|---|
| Natural-language syntax | β | β | β | β | β |
| Learning curve | Minutes | Days | Days | Weeks | Weeks |
| Built-in web framework | β | β | β | β | β |
| Built-in AI module | β | β | β | β | β |
| Package manager | β | pip | npm | go mod | Maven |
| Native compilation | β LLVM β | β | β | β | β JIT |
| WASM target | π§ͺ β‘ | β | β | β | β |
| Mobile transpiler | β Android Β· π§ͺ iOS β‘ | β | React Native | β | β |
| LSP / IDE support | β | β | β | β | β |
| Type checking | β Gradual | β mypy | β TS | β | β |
β Native (
epl build) compiles type-annotated programs and infers types for untyped functions where they resolve to a single concrete type (v10.1.0); genuinely dynamic/polymorphic functions are safely refused (run them withepl run). π§ͺ β‘ = experimental / not yet CI-verified against the target toolchain (Emscripten for WASM, Swift for iOS).
The official EPL extension provides a first-class development experience:
- Syntax Highlighting β Full TextMate grammar for
.eplfiles - Real-time Diagnostics β Type errors, unused variables, parse errors
- IntelliSense β Autocomplete for keywords, builtins, and imports
- Hover Documentation β Inline docs for all 725+ built-in functions
- Error Diagnostics β
epl fixwith Rust-style context window and--fixauto-correction - Run & Check β
Ctrl+Shift+Rto run,Ctrl+Shift+Kto type-check
Install from the VS Code Marketplace β
| Resource | Link |
|---|---|
| Getting Started | docs/getting-started.md |
| Language Specification | docs/language-spec.md |
| Tutorials | docs/tutorials.md |
| Package Manager Guide | docs/package-manager.md |
| Architecture Overview | docs/architecture.md |
| Publishing Packages | docs/publishing.md |
| Full Documentation Site | abneeshsingh21.github.io/EPL |
| Changelog | CHANGELOG.md |
We welcome contributions from the community. EPL maintains enterprise-grade code quality standards: every change is gated by a single consolidated, blocking CI pipeline β Ruff lint + formatting, whole-tree mypy type-checking, an enforced coverage floor, dependency-review, and the full test suite (2,100+ tests) run across Linux/Windows/macOS Γ Python 3.9β3.12. Releases publish to PyPI via tag-triggered OIDC trusted publishing (no stored tokens).
git clone https://github.com/abneeshsingh21/EPL.git
cd EPL
pip install -e ".[dev,cloud]"
ruff format .
pytest tests/ -x --tb=short -qBefore contributing, please read:
- CONTRIBUTING.md β Development workflow and testing requirements
- CODE_OF_CONDUCT.md β Community standards
- CLA.md β Contributor License Agreement
See CONTRIBUTORS.md for the full list of contributors.
- Core language β interpreter, bytecode VM, LLVM native compiler
- Web framework β HTTP/WebSocket router, WSGI/ASGI, middleware
- Package manager β SemVer, lockfiles, checksums, dependency resolution
- Developer tooling β LSP server, debugger, REPL, formatter, linter
- Mobile targets β Android (Kotlin) transpiler Β· iOS (SwiftUI) generator (experimental, not yet toolchain-verified)
- Desktop target β Compose Multiplatform app generation
- Cloud deploy β AWS ECS, GCP Cloud Run, Azure, Kubernetes
- JavaScript/TypeScript bridge β Full NPM ecosystem interop
- AI integration β Built-in module, Error Explainer v2.0 (55+ offline patterns, auto-fix), copilot
- Observability β Health checks, Prometheus metrics, structured logging
- PyPI distribution β
pip install eplang - VS Code extension β Syntax, diagnostics, IntelliSense
- Official documentation site and browser playground
- 22 official packages across web, data, AI, security, and infrastructure
- Language server protocol v2 (semantic tokens, token-aware rename & references)
- WebSocket real-time collaboration
- GPU compute target (CUDA/ROCm via LLVM)
- GitHub Discussions β Questions, ideas, and project showcase
- Issue Tracker β Bug reports and feature requests
- Package Registry β Browse and publish EPL packages
EPL is built and maintained by Abneesh Singh as an independent open-source project. If EPL is useful to you β in education, prototyping, or production β consider sponsoring its development:
Your sponsorship directly funds: new language features, official packages, documentation, VS Code extension updates, and security patches.
Copyright Β© 2024β2026 Abneesh Singh (contact@eplang.me)
Licensed under the Apache License 2.0. See NOTICE for attribution requirements.
"EPL" and "English Programming Language" are trademarks of Abneesh Singh.
β If EPL resonates with you, consider starring the repository.
Made with precision by Abneesh Singh