Facebook has created a new programming language, and released it as open source. The new language — with the potentially confusing name of “Hack” — is closely related to PHP, which Facebook developers have been using for years.
The open source version of Hack is available through Hackland.org. On its home page, that site says Hack is a programming language for the HipHop Virtual Machine, or HHVM, which is Facebook’s PHP open source runtime environment and which will now support both Hack and PHP.
It describes the new language as operating “seamlessly with PHP,” and adds that it “reconciles the fast development cycle of PHP with the discipline provided by static typing, while adding many features commonly found in other modern programming languages.”
‘A Great Success’
“Typing” refers to the data type, not keyboard typing. In dynamic typing the code interpreter deduces the type of variable, i.e. numeric vs. character, at runtime. This makes for faster coding but can provoke runtime failures. In static typing the variable type is declared at compile time by means of a data declaration, which makes errors less likely but makes for slower coding.
On the Facebook Engineering Blog, the company’s Julien Verlaguet and Alok Menghrajani wrote Thursday that Hack has been “deployed at Facebook and it has been a great success.” Over the last year, they said, nearly the entire PHP codebase at Facebook has been migrated to Hack.
The Hackers continued to say on the blog that, at the Facebook scale where thousands of engineers are shipping new code twice a day, common programming mistakes can cause a substantial slowdown.
They noted that, “traditionally, dynamically typed languages allow for rapid development but sacrifice the ability to catch errors early and introspect code quickly, particularly on larger codebases. Conversely, statically typed languages provide more of a safety net, but often at the cost of quick iteration.”
Support for PHP
Hack, the programmers said, “offers the best of both dynamically typed and statically typed languages,” and added that “it will be valuable to projects of all sizes.”
Error detection is made faster, the company said, because the type checker is faster. The blog post noted a PHP coder usually “goes back and forth rapidly between the source code and the browser,” and a type checker “would disrupt this feedback loop as it takes time to analyze the source code.” So, instead of slowing down the PHP workflow, the engineering team architected a type checker “as a local server that watches the filesystem.” The type checker now generally runs in less than 200 milliseconds, so that it does not slow the workflow.
Jeffrey Hammond, an analyst with industry research firm Forrester, pointed out for us that Facebook “is taking a dynamic language, PHP, and adding features traditionally found in a statically typed language.” This is arriving at essentially the same result, he said, as Oracle, which took the other direction by starting with the static Java and adding dynamic elements.
“It’s another example of language evolution and convergence toward [a combination of] dynamic and static languages,” he said. Hammond added that, “once you can get an ecosystem that can do both,” and accommodate any situation, “there is pressure on other languages” to do the same.
Facebook said that it plans to support PHP over the long term, and, since HHVM supports both PHP and Hack, outside developers can use the runtime and “take advantage of Hack’s new features incrementally.”