Since around 2005 we’ve heard talk about PHP 6 development. There
have even been books sold about it. But where is it? As of July of this
year it was decided that there won’t be one and that PHP will skip
directly to version 7. Why is it skipping to the next major version, and
what ever happened with PHP 6? And if we’re already jumping to PHP 7,
what kinds of features will it have?
A Brief History
As most developers nowadays know, PHP
is a server-side scripting language primarily intended for web
development. It began in 1994 when a developer named Rasmus Lerdorf
wrote a series of CGI binaries in C for the purpose of maintaining his
personal homepage. This lead to the creation of “Personal Home
Page/Forms Interpreter” or PHP/FI. PHP was not originally intended to be
a new programming language, however it grew into one organically.
Then, in 1997, Zeev Suraski and Andi Gutmans rewrote the parser to
form the foundation for PHP3. They additionally changed the language’s
name to its current, recursive acronym: “PHP: Hypertext Preprocessor”.
In 2000, PHP4, powered by the Zend Engine 1.0, was released.
PHP5 was released, powered by the new Zend Engine II, including many new
features such as improved support for object-oriented programming, the
PHP Data Objects (PDO) extension, and extensive performance
enhancements. Throughout the development of PHP5, many new language
constructs have been introduced such as namespaces and ‘use’ operator
helping to further establish PHP as a proper programming language.
Now, according to a survey from Netcraft in January 2013, PHP was
installed on more than 244 million websites and 2.1 million (of roughly
4.3 million) web servers.
What Happened to PHP6
In 2005, work began on a project headed by Andrei Zmievski to bring
native Unicode support to the language by embedding the International
Components for Unicode (ICU) library and internally representing strings
as UTF-16. Because this project would lead to major internal and
user-affecting changes, it was planned to be the next major PHP version
(i.e. version 6) along with a few other features.
By using UTF-16 as default encoding, developers would need to convert
the code and all input (e.g. data from requests, database, etc.) from
one encoding to UTF-16 and back again. This conversion takes a lot of
CPU time, memory (to store the much larger strings), and creates a
higher complexity in the implementation due to the increased need to
detect the proper encoding for the situation. In light of all of this
and the relatively small gain, many contributors became unwilling to use
“trunk” as their main development branch and instead either using the
stable 5.2/5.3 branches or refusing to do development at all. This
shortage of developers led to delays in the project.
In 2009, PHP 5.3 release with many non-Unicode features back-ported
from PHP6, most notably namespaces. This became the widely used, stable
version of PHP, and in March 2010, the PHP6 project was officially
abandoned, and instead PHP 5.4 was prepared containing most remaining
non-Unicode features from PHP 6, such as traits and closure re-binding.
Why Jump to PHP7
After a vote
in July of 2014, it was officially decided that the next major release
would be called PHP7. The primary reason for even considering the name
is the widely-known existence of the previous failed attempt of a new
major release, and the existence of numerous books and other resources
which already referred to the previous PHP 6. To address potential
confusion, there was an RFC (i.e. request for comments) and a vote on
whether or not to reuse this name.
Here is a brief summary of the reasons outlined supporting the decision to release the next version as PHP 7:
- PHP6 already existed, and there are plenty of numbers available (so it’s easy to make a new version number).
- It could confuse people since PHP6 was a widely known project, and this release is unrelated.
- There’s lots of PHP6 information on the web which does not apply to this release.
- Skipping versions isn’t unprecedented or uncommon in both open source projects and commercial products.
- The perception of version 6 as a failure – not as a superstition but
as a real world fact (similar to the association of the word ‘Vista’
with failure) – will reflect badly on this version.
- Version 6 is generally associated with failure in the world of dynamic languages (because of PHP 6, Perl 6, and MySQL 6).
In the end it was decided to release PHP 7 as the next major version,
arguing that the worst case scenario is that they needlessly skipped a
version as opposed to the worst case of releasing it as PHP 6 which is
widespread confusion in the community.
What’s New With PHP7
The whole feature set for PHP 7 is not yet defined. However there are
some features which are already being implemented and planned. Here are
a few of the features planned:
- Major Performance Improvements: The main goal of PHPNG (PHP Next
Generation) was to bring performance improvements that could at least
match what Facebook HHVM provides.
- JIT Engine: The development of PHPNG was started with the motivation
to research the implementation of a JIT (just-in-time) engine for the
Zend Engine based PHP.
- AST: Abstract Syntax Tree: The generation of an Abstract Syntax Tree as an intermediary step for the PHP compilation process.
- Asynchronous Programming: The ability to easily implement support to the execution of parallel tasks within the same request
PHP 7 is estimated to be released some time in 2016.
Source : http://halls-of-valhalla.org