Skip to content

Releases: abneeshsingh21/EPL

v10.2.0

Choose a tag to compare

@abneeshsingh21 abneeshsingh21 released this 18 Jul 05:07
2eacac0

See CHANGELOG.md [10.2.0]. Highlights: compiler-verified Kotlin/Android APK export (bundled EPLRuntime with SQLite db_* + sandboxed file_*), console/JVM self-contained transpile target, reliability hardening (no silent error swallowing), JS/Python correct-or-loud transpilation, and VM<->interpreter parity gate. PyPI: https://pypi.org/project/eplang/10.2.0/

v10.1.2

Choose a tag to compare

@github-actions github-actions released this 06 Jul 16:22
bac1bd4

What's Changed

  • fix(mcp): expose node transpile target, run on VM, resolve syntax aliases by @abneeshsingh21 in #82
  • ci: auto-deploy MCP server to Azure on release (kills silent drift) by @abneeshsingh21 in #83
  • Security audit 2026-07: 14 findings fixed (2 Critical, 3 High, 8 Medium, Lows) + docs by @abneeshsingh21 in #84
  • release: v10.1.2 — security patch by @abneeshsingh21 in #85

Full Changelog: v10.1.1...v10.1.2

v10.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Jul 09:14
952fdaf

What's Changed

  • Fix native export to follow the project's Import graph (10.1.1) by @abneeshsingh21 in #81

Full Changelog: v10.1.0...v10.1.1

v10.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 11:54

What's Changed

  • Fix VM loop control flow + make native build honest (no more shipped crashes) by @abneeshsingh21 in #61
  • Fix parser: soft-keyword variables + omitted-bound step slices; close 4 example bugs by @abneeshsingh21 in #62
  • Fix VM: module imports, top-level constants in functions, first-class functions by @abneeshsingh21 in #64
  • Fix VM parity: ternary, Match, file I/O, float division, Use-python guard by @abneeshsingh21 in #65
  • chore(gitignore): ignore _audit/ parity-probe scratch dir by @abneeshsingh21 in #66
  • Rewrite 7 corrupted starter examples + add runtime gate that catches it by @abneeshsingh21 in #67
  • Fix indexed Set, Match multi-value When, add epl build -o flag by @abneeshsingh21 in #68
  • Harden all deployable servers: secure defaults + deploy-anywhere config by @abneeshsingh21 in #69
  • Add .env auto-loading + fix VM source-relative import resolution by @abneeshsingh21 in #70
  • Native Android/Kotlin compilation: db_* bridge (H1) + type-correct transpile (H3) by @abneeshsingh21 in #71
  • Revive official packages: bind python_call, empty-Map literal, list +, and more by @abneeshsingh21 in #72
  • Make transpile commands honor -o/--output by @abneeshsingh21 in #73
  • Optimize VM function/method bodies; correct false VM speed claim by @abneeshsingh21 in #74
  • Unify bare constants across engines; reconcile platform claims (Phase 0) by @abneeshsingh21 in #75
  • Implement closures (capturing lambdas) in the bytecode VM (Phase 1) by @abneeshsingh21 in #76
  • Add conservative monomorphic type inference to the native build (Phase 2) by @abneeshsingh21 in #77
  • Harden CI/release/supply-chain; consolidate workflows (Phase 3) by @abneeshsingh21 in #78
  • Release v10.1.0: VM closures, native type inference, CI hardening by @abneeshsingh21 in #79
  • Refresh README for 10.1.0; make release publish idempotent by @abneeshsingh21 in #80

Full Changelog: v10.0.0...v10.1.0

v10.0.0 — Honest native export + WebView target

Choose a tag to compare

@abneeshsingh21 abneeshsingh21 released this 25 Jun 19:05
280c6dd

Install/upgrade: pip install --upgrade eplang · PyPI

[10.0.0] — 2026-06-25

The "one codebase → web + Android + iOS + desktop" claim is now genuinely
true — and honest about how.
EPL web apps rely on HTTP routing, a server-side
backend, and the web escape hatches Raw HTML / Script / Stylesheet, none
of which have a native-widget equivalent. The transliterating native targets
used to drop all of that silently, exit 0, and print "✓ generated" — so an app
whose UI is built from Raw HTML (the omniapp stress test, finding H2) looked
fully ported when ~90 % of it had been discarded. This release does two things:
it tells the truth about what transliteration can carry, and it adds a
WebView target that ships the real web app with nothing dropped.

Added

  • WebView target (--webview) for android / ios / desktop — ships the
    real EPL web app instead of transliterating it:
    • android — a native WebView shell (epl/webview_gen.py) that loads the
      running EPL web server; default URL targets the emulator-to-host loopback
      (10.0.2.2) on the app's declared port, overridable with --url.
    • ios — a SwiftUI WKWebView shell (sources + Info.plist with local
      networking enabled).
    • desktop — a Python pywebview launcher that starts the EPL app and opens
      it in a native window. Because EPL is itself Python, this runs the whole
      app — UI and backend — with zero transliteration.
    • Nothing is dropped: routes, Raw HTML, Script, Stylesheet, and the
      db_* backend are exactly what you built for the web.
  • Portability analysis (epl/native_portability.py): a single AST walk that
    produces an honest PortabilityReport of every construct that cannot be ported
    by the transliterating target — web routing/serving (Route, WebApp,
    Start ... on port, Send ...), web-only markup (Raw HTML, Script,
    Stylesheet), server-side storage (Store/Fetch), and web/db_* builtins —
    each with its line number and the reason it was dropped.
  • Loud reporting on every transliterating build: epl android|ios|desktop
    prints a summary of unportable constructs to stderr and writes a full
    PORTING_REPORT.md into the output directory, including what did port and how
    to ship the real app via --webview.
  • --strict flag for android/ios/desktop: exit non-zero (code 2)
    when any construct could not be ported, so CI no longer treats a lossy
    transliteration as success.

Notes

  • The transliterating path changes no codegen output — it only reports the
    truth about coverage. Pure-logic EPL (functions, math, data) still ports
    cleanly with an empty report; for a real web app, use --webview.
  • db_* calls are reported as unportable by the transliterating target until the
    native db bridge ships (H1); the WebView target runs them unchanged.
  • Major version bump: native-export CLIs gain new behavior (loud reporting,
    --strict exit codes, --webview/--url), so this is 10.0.0.

v9.9.0 — core de-bloat: website cosmetics removed

Choose a tag to compare

@abneeshsingh21 abneeshsingh21 released this 23 Jun 19:45

Removes four website-only web-DSL cosmetics (WordsPullUp, WordsPullUpMultiStyle, NoiseOverlay, BgNoise) plus their default CSS and an always-on IntersectionObserver that were shipping to every PyPI user. store_list is deliberately kept. The flagship site reproduces the removed effects in its own layer (verified byte-identical).

Breaking (web DSL): pages using the removed elements must switch to Raw HTML or a userland Component. No other syntax affected.

Tests: 1921 passed, 5 skipped. Interpreter↔VM parity: 0 divergences.

See CHANGELOG.md for full details.

v9.8.0 — Backend parity

Choose a tag to compare

@abneeshsingh21 abneeshsingh21 released this 22 Jun 19:46

EPL v9.8.0 — now on PyPI: pip install -U eplang

Highlights

epl run defaults to the bytecode VM, which had silently drifted from the reference interpreter — producing different output for 22 of 66 example programs. This release drives that to 0 divergences, guarded by a new parity harness (tests/parity_check.py), with ~70 new regression tests.

Fixed in the VM (the default runner): string interpolation, object fields inside methods, Try/Catch + exceptions across call frames, operand-stack hygiene on early Return, stdlib maps (csv_read/JSON), sort/reverse mutation, EPL value formatting (true, [a, b], 4.0), random(min,max), slice steps, default parameters, top-level variable scoping, undefined-variable detection, and error categories. Stopped a silent fallback that masked the drift and double-printed output.

Language: to_string + random_integer added to the interpreter; dropped an over-strict inferred-type lock.

Verification: 271 + 1906 tests green; full CI matrix (Linux/Windows/macOS × 3.9–3.12) green.

See CHANGELOG.md for the complete list.

epl-auth v1.0.0

Choose a tag to compare

@abneeshsingh21 abneeshsingh21 released this 13 May 10:01
e7e7008

First-party authentication and JWT library for EPL.