Seifeddine Gmati
Hi! I build open-source tools and write about PHP, Rust, and programming languages.
Recent writing
All posts-
PHP, on a Whim #3: Who Is Allowed to Implement This?
Whim lets classes and interfaces list the types allowed to inherit from them using a `for` clause. This post looks at what sealed families actually restrict, why direct children matter, how Whim enforces and reflects the relationship across runtime-loaded files, where Hack influenced the design, and what changed after a similar PHP RFC I co-authored was rejected, including why Whim chose the syntax that received exactly zero votes.
-
PHP, on a Whim #2: Stop Calling Everything an Array
PHP uses one runtime type for lists, dictionaries, tuples, records, and occasionally fake sets, then asks functions like json_encode() to guess which one you meant. This post looks at how Hack changed the way I think about collections, why Whim has distinct vec, dict, and tuple values, how runtime-enforced shapes and array connect them, what the VM does to keep those checks practical, and whether PHP could ever stop calling everything an array.
-
PHP, on a Whim #1: What If Files Had Attributes?
Whim recently gained file-level attributes, mostly because I wanted a clean way to configure lint rules for an entire source file. That small feature first required making files visible through reflection, then unexpectedly opened the door to things like discovering every symbol defined by a file and grouping function-based routes under shared metadata. This post looks at how it works, what it took to implement, where the design gets awkward, and whether something similar could make sense in PHP.
Things I’ve saved
All bookmarksOpen-source projects
- Whim
- The Whim Programming Language
- Suffete
- Suffete is a standalone PHP type system written in Rust. It provides a representation of PHP types and a type checker. really, a type comparator.
- Extension Typst
- A PHP extension that embeds the Typst typesetting engine, giving you fast, programmable document generation (PDF, PNG, JPEG, SVG) directly from PHP.
- Mago
- An extremely fast PHP linter, formatter, and static analyzer, written in Rust.
- PSL
- PHP Standard Library providing consistent, predictable functions with strong typing and immutable data structures.
- CEL-PHP
- Common Expression Language implementation in pure PHP. Secure expression evaluation for configuration and rules engines.
For fun
- Attractor
- A small interactive playground.