A group of Facebook developers has decided to break with 20 years of tradition and release a formal specification for the PHP programming language.
The initial draft of the spec was released on Wednesday and is available via a Git repository hosted on PHP.net.
But although it has been around since 1994 and has become one of the more ubiquitous languages for server-side web programming, nobody has ever bothered to write a formal specification for PHP – until now, that is.
Previously, if you wanted to understand how the PHP language worked, you looked at the behavior of the reference PHP interpreter, known as the Zend Engine. If the Zend Engine behaved a certain way, then that was the way the PHP language was supposed to behave.
While that was all well and good when there was just one implementation of PHP, however, it became a problem once other implementations started to emerge, some of which were designed dramatically differently than the Zend Engine.
Enter Facebook. Huge amounts of Facebook's code have always been written in PHP, but as the social network began to scale to its current monster size, there was no way it could wring the performance it needed out of the stock Zend Engine.
To address that problem, Facebook engineers developed two alternative PHP implementations. The first, called HipHop, translated PHP code into C++, which it then compiled into blazing-fast native machine code.
More recently, Facebook has replaced HipHop with a new engine called the HipHop Virtual Machine (HHVM), a just-in-time (JIT) compiler that claims to execute code up to six times faster than the Zend Engine.
But as Facebook's back-end code has evolved, so has PHP. The release of PHP 5.6 is imminent, and if the next version of HHVM is to match its behavior exactly, Facebook needs to know exactly how it's supposed to work.
That's why a group of Facebook developers announced at the recent OSCON conference in Portland, Oregon that they planned to do what had never been done before: draft a formal spec based on the expected behavior of PHP 5.6.
Note that this specification doesn't aim to fix any of PHP's quirks and problems. In announcing the draft, Facebook's Joel Marcey described PHP as "one of the most popular programming languages in the world," but here at Vulture Annex we prefer the term "widely used" to "popular," since PHP certainly has plenty of detractors. [I wouldn't touch it with a ten-foot pole. – Ed.]
Most critically, the spec only covers the PHP language itself. It doesn't cover the runtime library at all, so it doesn't help to explain PHP's inconsistent function naming, its redundant and chaotic database access functions, its unpredictable arrangement of function arguments and return values, and other such head-scratchers.
What it does provide, however, is a first step toward allowing the broader PHP community to have a more rigorous and sane understanding of the language's design [where there is any. – Ed.] and how it's meant to work.
As Facebook's Sara Golemon said when announcing the project, "This document is meant for PHP, and PHP should be the steward of it going forward, so we ... should start looking at good ways to keep it up to date and revise it over time." ®