Phel v0.36.0 – Lisp on PHP, now with numeric tower and first-class Vars

· design · Source ↗

TLDR

  • Phel 0.36.0 adds exact rationals, BigInteger/BigDecimal, first-class Vars with watches/redefs, and new value types to this Clojure-flavored Lisp-on-PHP compiler.

Key Takeaways

  • Numeric tower: 1/2 ratio literals, BigInteger with overflow auto-promotion, BigDecimal with M-suffix literals; arithmetic dispatches correctly across all types.
  • First-class Vars: (var sym) / #'sym reader macro; alter-var-root, with-redefs, add-watch/remove-watch, dynamic binding via with-bindings.
  • New value types: Uuid, PhpClass, MapEntry, and persistent Queue (amortized O(1) push/peek/pop) all added to Phel\Lang.
  • Breaking changes: (/ int int) now returns Rational; binding throws on non-^:dynamic vars; old var/var?/set! atom aliases removed.
  • Performance: REPL and test boot prune vendor//.git//node_modules/ and memoize directory scans; --last-failed and --slowest=N test flags added.

Hacker News Comment Review

  • Minimal substantive technical discussion; commenters largely affirmed the release quality and praised the Clojure-inspired design direction.
  • The Clojure lineage prompted a brief thread noting “inspired by Scheme” and “inspired by CL” as equivalent quality signals, with no dissent.

Notable Comments

  • @Chemaclass: Concise author summary confirming UUID, Queue, MapEntry, exact rationals, first-class Vars, and faster REPL/test boot as the headline changes.

Original | Discuss on HN