今まで PHP のバージョンと Zend Engine のバージョンの関連性についてよく理解していませんでした。
Zend Engine - Wikipedia(日本語) を確認しましたが、詳細がなかったので少し調べてみました。
Zend Engine のバージョンは大別すると Zend Engine 1 と Zend Engine 2 と Zend Engine 3 があります。
自分の環境の Zend Engine のバージョンを調べるには phpinfo または zend_version で確認できます。
<?php
phpinfo();
<?php
echo zend_version();
Zend Engine のバージョンは、PHP自体のソースコードに記述されています。
PHP自体のソースコードは GitHub(php/php-src) から確認できます。
php-src/Zend/zend.h
の ZEND_VERSION
に Zend Engine のバージョンが記述されています。
GitHub画面の左上にある 「Branch:master」 からPHPのバージョンを選択できるので、バージョン別のソースコードを閲覧することも可能です。
Zend Engine のバージョンとPHPのバージョンはリンクしています。
Zend Engine の歴史についての詳細は ここ に書かれていますが、一部引用します。
Zend Engineは、1999年に発表され、他の新機能と共にPHP 4.0として2000年5月にリリースされました。新機能には、2バイトコードの対応も含まれており、正式に日本語対応が行われました。
ちなみに1999年にAndi GutmansとZeev Suraskiは、Zend Technologies Ltdを設立し、Zend Engineをコミュニティに無償で提供しています。ここでは、Zend Engineと連係してPHPを拡張する様々な製品の提供を行っています。
そして、オブジェクト指向の実装強化をはじめとした新機能を搭載したPHP 5.0が2004年7月に公開されました。PHP 5.0には、「Zend Engine Ⅱ」が搭載され、高速性をはじめとした根幹を支えています。
Zend Engine 1 と Zend Engine 2 に関しては引用の通りです。
PHP7 から Zend Engine 3 になっております。
PHP と Zend Engine のバージョンは下記の通りです。
リリース | PHPのバージョン | Zend Engineのバージョン |
---|---|---|
2000年05月 | PHP 4 | Zend Engine 1 |
2004年04月 | PHP 5 | Zend Engine 2 |
2015年12月 | PHP 7 | Zend Engine 3 |
ご覧の通り、PHPのメジャーアップデートに伴い、Zend Engine もバージョンアップしているのがわかります。
PHP と Zend Engine はメジャーバージョンがリンクしているということがわかりましたが、 GitHub(php/php-src) でPHPのソースコードを確認してみると、どうやらマイナーバージョンもリンクしているみたいです。
PHP と Zend Engine のバージョン一覧を ッターン! と取得できる方法があるのかもしれませんが、わからないのでGitHubにあるソースコードを一つ一つ確認しました。
ちなみに、PHP4のソースコードはGitHubにないので調べてません。
PHPのバージョン | Zend Engineのバージョン |
---|---|
PHP 5.0 | Zend Engine 2.0.5 |
PHP 5.1 | Zend Engine 2.1.0 |
PHP 5.2 | Zend Engine 2.2.0 |
PHP 5.3 | Zend Engine 2.3.0 |
PHP 5.4 | Zend Engine 2.4.0 |
PHP 5.5 | Zend Engine 2.5.0 |
PHP 5.6 | Zend Engine 2.6.0 |
PHP 7.0 | Zend Engine 3.0.0 |
PHP 7.1 | Zend Engine 3.1.0-dev |
ご覧の通り、PHP と Zend Engine のマイナーバージョン(2桁目)もリンクしているようです。
余談ですが、2016年11月25日現在 Zend Engine - Wikipedia(日本語) に記載されている Zend Engine の最新バージョンは 2.4.0
となっております。
PHP と Zend Engine のマイナーバージョンはリンクしているので、Wikipediaの記事は PHP5.4 のときに更新されたのではないかと推測することができます。
note
note でも記事を公開してるので、興味がある方はご覧ください。