How do PHP releases match “API=yyyymmdd” signature/tag?

大兔子大兔子 提交于 2019-12-13 15:08:51

问题


Is there a definite and reliable source to find out which PHP release version x.y.z carries/uses which "API=yyyymmdd" signature/tag?


回答1:


The version control repository of PHP is the authoritative source on the correlation between PHP releases and their API date-versions.

Assuming bash

Fetch PHP.

git clone https://github.com/php/php-src.git
cd php-src

list of relevant tags

tags() {
    git tag |
    sed -En ' /(RC|alpha|beta)/d ; /php-5/p ; ' | 
    sort -t. -k1,1n -k2,2n -k3,3n
}

some 270 log entries for main/php.h (where API version is defined).

go_crazy() {
    git log  main/php.h | 
    awk '/^commit / { print $2 }' | 
    tac
}

match relevant lines and remove cruft.

api() { 
    sed -n ' /#define PHP_API_VERSION /{
        s///; p; q } ' main/php.h
}

php_version () { 
    sed -n " /#define PHP_VERSION /{ 
        s///; 
        s/[\"']//g; 
        p; q 
    } " main/php_version.h
}

do the doo!

for i in `tags`
do

    git co -f $i
    echo $i `api`

done  > /tmp/tag.apis; 

for i in `go_crazy`
do

    git co -f $i
    echo `php_version` `api`

done > /tmp/many.versions

Results

$ awk '{ print $2, $1 }' /tmp/many.versions /tmp/tag.apis  | sort -u -k1,1
19990421 4.0pa1
20010119 4.0.5-dev
20010901 4.0.8-dev
20020307 4.3.0-dev
20020918 4.3.0-dev
20030518 5.0.0-dev
20030820 5.0.0b2-dev
20031103 5.0.0b3-dev
20031224 5.0.0RC1-dev
20041225 5.1.0-dev
20090626 5.3.0
20100412 5.3.99-dev
20121113 5.5.0-dev
20131106 5.6.0-dev
20131218 5.7.0-dev
 4.0pa1
 php-5.0.1b1

For the curious

Versions starting with php- are git tags and presumably official releases.

$ awk 'NF==2 { print $2, $1 }' /tmp/tag.apis /tmp/many.versions  | sort 

19990421 4.0.0
19990421 4.0.1
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.1-dev
19990421 4.0.2
19990421 4.0.2
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.2-dev
19990421 4.0.3-dev
19990421 4.0.4-dev
19990421 4.0.4-dev
19990421 4.0.5-dev
19990421 4.0.5-dev
19990421 4.0B1
19990421 4.0B2
19990421 4.0b2-dev
19990421 4.0b2-dev
19990421 4.0b2-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-dev
19990421 4.0B3-RC2
19990421 4.0b3-RC5
19990421 4.0b3-RC5
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-dev
19990421 4.0b4-rc1
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0b5-dev
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0pa1
19990421 4.0RC1
19990421 4.0RC1
19990421 4.0RC2
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
19990421 4.0RC2-dev
20010119 4.0.5-dev
20010119 4.0.5-dev
20010119 4.0.5-dev
20010119 4.0.5-dev
20010119 4.0.5-dev
20010119 4.0.6-dev
20010119 4.0.6-dev
20010119 4.0.6-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010119 4.0.7-dev
20010901 4.0.8-dev
20010901 4.0.8-dev
20010901 4.0.8-dev
20010901 4.2.0-dev
20010901 4.2.1-dev
20010901 4.2.1-dev
20010901 4.2.1-dev
20010901 4.2.1-dev
20010901 4.2.1-dev
20010901 4.2.1-dev
20010901 4.3.0-dev
20010901 4.3.0-dev
20010901 4.3.0-dev
20010901 4.3.0-dev
20010901 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020307 4.3.0-dev
20020918 4.3.0-dev
20020918 4.4.0-dev
20020918 4.4.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20020918 5.0.0-dev
20030518 5.0.0b2-dev
20030518 5.0.0b2-dev
20030518 5.0.0-dev
20030518 5.0.0-dev
20030518 5.0.0-dev
20030518 php-5.0.0b1
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 5.0.0b2-dev
20030820 php-5.0.0b2
20031103 5.0.0b3-dev
20031103 php-5.0.0b3
20031224 5.0.0RC1-dev
20031224 5.0.0RC1-dev
20031224 5.0.0RC1-dev
20031224 5.1.0-dev
20031224 5.1.0-dev
20031224 5.1.0-dev
20031224 5.1.0-dev
20031224 5.1.0-dev
20031224 5.1.0-dev
20031224 php-5.0.0
20031224 php-5.0.0b4
20031224 php-5.0.1
20031224 php-5.0.2
20031224 php-5.0.3
20031224 php-5.0.4
20031224 php-5.0.5
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.0-dev
20041225 5.1.2-dev
20041225 5.1.2RC2-dev
20041225 5.1.3-dev
20041225 5.1.3-dev
20041225 5.2.0-dev
20041225 5.2.0-dev
20041225 5.2.0RC4-dev
20041225 5.2.1-dev
20041225 5.2.1-dev
20041225 5.2.1RC2-dev
20041225 5.2.1RC2-dev
20041225 5.2.5-dev
20041225 5.3.0alpha2-dev
20041225 5.3.0alpha2-dev
20041225 5.3.0alpha2-dev
20041225 5.3.0alpha2-dev
20041225 5.3.0alpha2-dev
20041225 5.3.0alpha3-dev
20041225 5.3.0alpha4-dev
20041225 5.3.0-dev
20041225 5.3.0-dev
20041225 5.3.0-dev
20041225 5.3.0-dev
20041225 5.3.0-dev
20041225 php-5.1.0
20041225 php-5.1.0b1
20041225 php-5.1.0b2
20041225 php-5.1.0b3
20041225 php-5.1.1
20041225 php-5.1.2
20041225 php-5.1.3
20041225 php-5.1.4
20041225 php-5.1.5
20041225 php-5.1.6
20041225 php-5.2.0
20041225 php-5.2.1
20041225 php-5.2.10
20041225 php-5.2.11
20041225 php-5.2.12
20041225 php-5.2.13
20041225 php-5.2.14
20041225 php-5.2.15
20041225 php-5.2.16
20041225 php-5.2.17
20041225 php-5.2.2
20041225 php-5.2.3
20041225 php-5.2.4
20041225 php-5.2.5
20041225 php-5.2.6
20041225 php-5.2.7
20041225 php-5.2.8
20041225 php-5.2.9
20090626 5.3.0
20090626 5.3.3-dev
20090626 5.3.3-dev
20090626 5.3.3-dev
20090626 5.3.3-dev
20090626 5.3.3-dev
20090626 5.3.99-dev
20090626 php-5.3.0
20090626 php-5.3.1
20090626 php-5.3.10
20090626 php-5.3.11
20090626 php-5.3.12
20090626 php-5.3.13
20090626 php-5.3.14
20090626 php-5.3.15
20090626 php-5.3.16
20090626 php-5.3.17
20090626 php-5.3.18
20090626 php-5.3.19
20090626 php-5.3.2
20090626 php-5.3.20
20090626 php-5.3.21
20090626 php-5.3.22
20090626 php-5.3.23
20090626 php-5.3.24
20090626 php-5.3.25
20090626 php-5.3.26
20090626 php-5.3.27
20090626 php-5.3.28
20090626 php-5.3.3
20090626 php-5.3.4
20090626 php-5.3.5
20090626 php-5.3.6
20090626 php-5.3.7
20090626 php-5.3.8
20090626 php-5.3.9
20100412 5.3.99-dev
20100412 5.3.99-dev
20100412 5.3.99-dev
20100412 5.3.99-dev
20100412 5.3.99-dev
20100412 5.3.99-dev
20100412 5.5.0-dev
20100412 5.5.0-dev
20100412 5.5.0-dev
20100412 5.5.0-dev
20100412 5.5.0-dev
20100412 php-5.4.0
20100412 php-5.4.1
20100412 php-5.4.10
20100412 php-5.4.11
20100412 php-5.4.12
20100412 php-5.4.13
20100412 php-5.4.14
20100412 php-5.4.15
20100412 php-5.4.16
20100412 php-5.4.17
20100412 php-5.4.18
20100412 php-5.4.19
20100412 php-5.4.2
20100412 php-5.4.20
20100412 php-5.4.21
20100412 php-5.4.22
20100412 php-5.4.23
20100412 php-5.4.24
20100412 php-5.4.25
20100412 php-5.4.26
20100412 php-5.4.3
20100412 php-5.4.4
20100412 php-5.4.5
20100412 php-5.4.6
20100412 php-5.4.7
20100412 php-5.4.8
20100412 php-5.4.9
20121113 5.5.0-dev
20121113 5.5.0-dev
20121113 5.6.0-dev
20121113 5.6.0-dev
20121113 php-5.5.0
20121113 php-5.5.1
20121113 php-5.5.10
20121113 php-5.5.2
20121113 php-5.5.3
20121113 php-5.5.4
20121113 php-5.5.5
20121113 php-5.5.6
20121113 php-5.5.7
20121113 php-5.5.8
20121113 php-5.5.9
20131106 5.6.0-dev
20131106 5.6.0-dev
20131106 5.6.0-dev
20131106 5.6.0-dev
20131218 5.7.0-dev
20131218 5.7.0-dev
20131218 5.7.0-dev



回答2:


I've looked for such a thing in the past, but haven't found any really good sources. (Searching for some of the API versions shows a post I made a while back listing them as one of the top hits!) Here are all of the recent ones:

  • PHP 5.2: 20060613
  • PHP 5.3: 20090626
  • PHP 5.4: 20100525
  • PHP 5.5: 20120211
  • PHP 5.6: 20131226 (as of 5.6.0alpha3)


来源:https://stackoverflow.com/questions/22050098/how-do-php-releases-match-api-yyyymmdd-signature-tag

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!