com web/php: 5.5.0 final release: ChangeLog-5.php archive/archive.xml archive/entries/2013-06-20-1.xml include/releases.inc include/version.inc
releases/5_5_0.php
| From: | David Soria Parra | Date: | Thu, 20 Jun 2013 18:24:46 +0000 |
| Subject: | com web/php: 5.5.0 final release: ChangeLog-5.php archive/archive.xml archive/entries/2013-06-20-1.xml include/releases.inc include/version.inc releases/5_5_0.php |
||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-16012@lists.php.net to get a copy of this message | ||
Commit: 34ae7256ce94fc2488571d669c03338d4b8b9b57
Author: Julien Pauli <jpauli@php.net> Thu, 20 Jun 2013 18:47:02 +0200
Committer: David Soria Parra <dsp@php.net> Thu, 20 Jun 2013 20:24:46 +0200
Parents: ffb9b8ff51e5accbb5af72655b6e0cd9403de21a
Branches: master
Link: http://git.php.net/?p=web/php.git;a=commitdiff;h=34ae7256ce94fc2488571d669c03338d4b8b9b57
Log:
5.5.0 final release
Changed paths:
M ChangeLog-5.php
M archive/archive.xml
A archive/entries/2013-06-20-1.xml
M include/releases.inc
M include/version.inc
A releases/5_5_0.php
diff --git a/ChangeLog-5.php b/ChangeLog-5.php index e32d3e7..6ba382c 100644 --- a/ChangeLog-5.php +++ b/ChangeLog-5.php @@ -11,6 +11,514 @@ function peclbugl($number) { echo "<a href=\"http://pecl.php.net/bugs/bug.php? <h1>PHP 5 ChangeLog</h1> +<a name="5.5.0"></a><!-- {{{ 5.5.0 --> +<h3>Version 5.5.0</h3> +<b>20-Jun-2013</b> +<ul> +<li>Drop support for bison < 2.4 when building PHP from GIT source</li> +</ul> + +<ul> +<li>Improved Zend Engine:</li> +<ul> + <li>Added ARMv7/v8 versions of various Zend arithmetic functions that are implemented using inline assembler</li> + <li>Added systemtap support by enabling systemtap compatible dtrace probes on linux</li> + <li>Optimized access to temporary and compiled VM variables. 8% less memory reads</li> + <li>The VM stacks for passing function arguments and syntaticaly nested calls + were merged into a single stack. The stack size needed for op_array + execution is calculated at compile time and preallocated at once. As result + all the stack push operations don't require checks for stack overflow + any more</li> +</ul> +</ul> + +<ul> +<li>General improvement:</li> +<ul> + <li>Added generators and coroutines (https://wiki.php.net/rfc/generators).</li> + <li>Added "finally" keyword. </li> + <li>Added simplified password hashing API.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> +</ul> +</ul> + +<ul> +<li>Core:</li> +<ul> + <li>Added Zend Opcache extension and enable building it by default.</li> + <li>Added array_column function which returns a column in a multidimensional array</li> + <li>Added boolval()</li> + <li>Added "Z" option to pack/unpack</li> + <li>Added optional second argument for assert() to specify custom message</li> + <li>Added support for changing the process's title in CLI/CLI-Server SAPIs. The implementation is more robust that the proctitle PECL module</li> + <li>Improve set_exception_handler while doing reset</li> + <li>Return previous handler when passing NULL to set_error_handler and set_exception_handler</li> + <li>Implemented <?php bugl(64175); ?> (Added HTTP codes as of RFC 6585)</li> + <li>Implemented <?php bugl(60738); ?> (Allow 'set_error_handler' to handle NULL)</li> + <li>Implemented <?php bugl(60524); ?> (specify temp dir by php.ini)</li> + <li>Implemented <?php bugl(46487); ?> (Dereferencing process-handles no longer waits on those processes)</li> + <li><?php bugfix(65051); ?> (count() off by one inside unset())</li> + <li><?php bugfix(64988); ?> (Class loading order affects E_STRICT warning)</li> + <li><?php bugfix(64966); ?> (segfault in zend_do_fcall_common_helper_SPEC)</li> + <li><?php bugfix(64960); ?> (Segfault in gc_zval_possible_root)</li> + <li><?php bugfix(64936); ?> (doc comments picked up from previous scanner run)</li> + <li><?php bugfix(64934); ?> (Apache2 TS crash with get_browser())</li> + <li><?php bugfix(64879); ?> (Heap based buffer overflow in quoted_printable_encode, CVE 2013-2110)</li> + <li><?php bugfix(64853); ?> (Use of no longer available ini directives causes crash on TS build)</li> + <li><?php bugfix(64821); ?> (Custom Exceptions crash when internal properties overridden)</li> + <li><?php bugfix(64720); ?> (SegFault on zend_deactivate).</li> + <li><?php bugfix(64677); ?> (execution operator `` stealing surrounding arguments)</li> + <li><?php bugfix(64660); ?> (Segfault on memory exhaustion within function definition)</li> + <li><?php bugfix(64578); ?> (debug_backtrace in set_error_handler corrupts zend heap: segfault)</li> + <li><?php bugfix(64565); ?> (copy doesn't report failure on partial copy)</li> + <li><?php bugfix(64555); ?> (foreach no longer copies keys if they are interned)</li> + <li><?php bugfix(47675); ?> and <?php bugfix(64577); ?> (fd leak on Solaris)</li> + <li><?php bugfix(64544); ?> (Valgrind warnings after using putenv)</li> + <li><?php bugfix(64515); ?> (Memoryleak when using the same variablename 2times in function declaration)</li> + <li><?php bugfix(64503); ?> (Compilation fails with error: conflicting types for 'zendparse')</li> + <li><?php bugfix(64239); ?> (Debug backtrace changed behavior since 5.4.10 or 5.4.11)</li> + <li><?php bugfix(64523); ?> allow XOR in php.ini</li> + <li><?php bugfix(64354); ?> (Unserialize array of objects whose class can't be autoloaded fail)</li> + <li><?php bugfix(64370); ?> (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT'])</li> + <li><?php bugfix(64166); ?> (quoted-printable-encode stream filter incorrectly discarding whitespace)</li> + <li><?php bugfix(64142); ?> (dval to lval different behavior on ppc64)</li> + <li><?php bugfix(64135); ?> (Exceptions from set_error_handler are not always propagated)</li> + <li><?php bugfix(63980); ?> (object members get trimmed by zero bytes)</li> + <li><?php bugfix(63874); ?> (Segfault if php_strip_whitespace has heredoc)</li> + <li><?php bugfix(63830); ?> (Segfault on undefined function call in nested generator)</li> + <li><?php bugfix(63822); ?> (Crash when using closures with ArrayAccess)</li> + <li><?php bugfix(61681); ?> (Malformed grammar)</li> + <li><?php bugfix(61038); ?> (unpack("a5", "str\0\0") does not work as expected)</li> + <li><?php bugfix(61025); ?> (__invoke() visibility not honored)</li> + <li><?php bugfix(60833); ?> (self, parent, static behave inconsistently case-sensitive)</li> + <li><?php bugfix(52126); ?> timestamp for mail.log</li> + <li><?php bugfix(49348); ?> (Uninitialized ++$foo->bar; does not cause a notice)</li> + <li><?php bugfix(23955); ?> allow specifying Max-Age attribute in setcookie()</li> + <li><?php bugfix(18556); ?> (Engine uses locale rules to handle class names)</li> + <li>Fix undefined behavior when converting double variables to integers. The double is now always rounded towards zero, the remainder of its division by 2^32 or 2^64 (depending on sizeof(long)) is calculated and it's made signed assuming a two's complement representation</li> +</ul> +</ul> + +<ul> +<li>Removed legacy features:</li> +<ul> + <li>Remove php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid()</li> + <li>Drop Windows XP and 2003 support</li> +</ul> +</ul> + +<ul> +<li>Apache2 Handler SAPI:</li> +<ul> + <li>Enabled Apache 2.4 configure option for Windows.</li> +</ul> +</ul> + +<ul> +<li>Calendar:</li> +<ul> + <li><?php bugfix(64895); ?> (Integer overflow in SndToJewish).</li> + <li><?php bugfix(54254); ?> (cal_from_jd returns month = 6 when there is only one Adar).</li> +</ul> +</ul> + +<ul> +<li>CLI server:</li> +<ul> + <li><?php bugfix(64128); ?> (buit-in web server is broken on ppc64).</li> +</ul> +</ul> + +<ul> +<li>CURL:</li> +<ul> + <li>Remove curl stream wrappers.</li> + <li>Implemented <?php bugl(46439); ?> - added CURLFile for safer file uploads</li> + <li>Added support for CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_APPEND, + CURLOPT_DIRLISTONLY, CURLOPT_NEW_DIRECTORY_PERMS, CURLOPT_NEW_FILE_PERMS, + CURLOPT_NETRC_FILE, CURLOPT_PREQUOTE, CURLOPT_KRBLEVEL, CURLOPT_MAXFILESIZE, + CURLOPT_FTP_ACCOUNT, CURLOPT_COOKIELIST, CURLOPT_IGNORE_CONTENT_LENGTH, + CURLOPT_CONNECT_ONLY, CURLOPT_LOCALPORT, CURLOPT_LOCALPORTRANGE, + CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_SSL_SESSIONID_CACHE, + CURLOPT_FTP_SSL_CCC, CURLOPT_HTTP_CONTENT_DECODING, + CURLOPT_HTTP_TRANSFER_DECODING, CURLOPT_PROXY_TRANSFER_MODE, + CURLOPT_ADDRESS_SCOPE, CURLOPT_CRLFILE, CURLOPT_ISSUERCERT, + CURLOPT_USERNAME, CURLOPT_PASSWORD, CURLOPT_PROXYUSERNAME, + CURLOPT_PROXYPASSWORD, CURLOPT_NOPROXY, CURLOPT_SOCKS5_GSSAPI_NEC, + CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOPT_TFTP_BLKSIZE, + CURLOPT_SSH_KNOWNHOSTS, CURLOPT_FTP_USE_PRET, CURLOPT_MAIL_FROM, + CURLOPT_MAIL_RCPT, CURLOPT_RTSP_CLIENT_CSEQ, CURLOPT_RTSP_SERVER_CSEQ, + CURLOPT_RTSP_SESSION_ID, CURLOPT_RTSP_STREAM_URI, CURLOPT_RTSP_TRANSPORT, + CURLOPT_RTSP_REQUEST, CURLOPT_RESOLVE, CURLOPT_ACCEPT_ENCODING, + CURLOPT_TRANSFER_ENCODING, CURLOPT_DNS_SERVERS and CURLOPT_USE_SSL</li> + <li><?php bugfix(55635); ?> (CURLOPT_BINARYTRANSFER no longer used. The constant + still exists for backward compatibility but is doing nothing)</li> + <li><?php bugfix(54995); ?> (Missing CURLINFO_RESPONSE_CODE support)</li> + <li>Added new functions curl_escape, curl_multi_setopt, curl_multi_strerror + curl_pause, curl_reset, curl_share_close, curl_share_init, + curl_share_setopt curl_strerror and curl_unescape</li> + <li>Addes new curl options CURLOPT_TELNETOPTIONS, CURLOPT_GSSAPI_DELEGATION, + CURLOPT_ACCEPTTIMEOUT_MS, CURLOPT_SSL_OPTIONS, CURLOPT_TCP_KEEPALIVE, + CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL</li> +</ul> +</ul> + +<ul> +<li>DateTime:</li> +<ul> + <li>Added DateTimeImmutable - a variant of DateTime that only returns the + modified state instead of changing itself.</li> + <li><?php bugfix(64825); ?> (Invalid free when unserializing DateTimeZone).</li> + <li><?php bugfix(64359); ?> (strftime crash with VS2012)</li> + <li><?php bugfix(62852); ?> (Unserialize Invalid Date causes crash)</li> + <li><?php bugfix(61642); ?> (modify("+5 weekdays") returns Sunday)</li> + <li><?php bugfix(60774); ?> (DateInterval::format("%a") is always zero when an + interval is created using the createFromDateString method)</li> + <li><?php bugfix(54567); ?> (DateTimeZone serialize/unserialize)</li> + <li><?php bugfix(53437); ?> (Crash when using unserialized DatePeriod instance)</li> +</ul> +</ul> + +<ul> +<li>dba:</li> +<ul> + <li><?php bugfix(62489); ?> (dba_insert not working as expected)</li> +</ul> +</ul> + +<ul> +<li>Filter:</li> +<ul> + <li>Implemented <?php bugl(49180); ?> added MAC address validation.</li> +</ul> +</ul> + +<ul> +<li>Fileinfo:</li> +<ul> + <li>Upgraded libmagic to 5.14.</li> + <li><?php bugfix(64830); ?> (mimetype detection segfaults on mp3 file)</li> + <li><?php bugfix(63590); ?> (Different results in TS and NTS under Windows)</li> + <li><?php bugfix(63248); ?> (Load multiple magic files from a directory under Windows)</li> +</ul> +</ul> + +<ul> +<li>FPM:</li> +<ul> + <li>Add --with-fpm-systemd option to report health to systemd, and + systemd_interval option to configure this. The service can now use + Type=notify in the systemd unit file.</li> + <li>Ignore QUERY_STRING when sent in SCRIPT_FILENAME</li> + <li>Log a warning when a syscall fails</li> + <li>Implemented <?php bugl(64764); ?> (add support for FPM init.d script)</li> + <li><?php bugfix(64915); ?> (error_log ignored when daemonize=0)</li> + <li><?php bugfix(63999); ?> (php with fpm fails to build on Solaris 10 or 11)</li> + <li>Fixed some possible memory or resource leaks and possible null dereference + detected by code coverity scan</li> +</ul> +</ul> + +<ul> +<li>GD:</li> +<ul> + <li><?php bugfix(64962); ?> (imagerotate produces corrupted image).</li> + <li><?php bugfix(64961); ?> (segfault in imagesetinterpolation)</li> + <li>Fix build with system libgd >= 2.1 which is now the minimal + version required (as build with previous version is broken). + No change when bundled libgd is used</li> +</ul> +</ul> + +<ul> +<li>hash:</li> +<ul> + <li>Added support for PBKDF2 via hash_pbkdf2().</li> + <li><?php bugfix(64745); ?> (hash_pbkdf2() truncates data when using default length + and hex output)</li> +</ul> +</ul> + +<ul> +<li>intl:</li> +<ul> + <li>Added UConverter wrapper.</li> + <li>The intl extension now requires ICU 4.0+</li> + <li>Added intl.use_exceptions INI directive, which controls what happens when + global errors are set together with intl.error_level</li> + <li>MessageFormatter::format() and related functions now accepted named + arguments and mixed numeric/named arguments in ICU 4.8+</li> + <li>MessageFormatter::format() and related functions now don't error out when + an insufficient argument count is provided. Instead, the placeholders will + remain unsubstituted</li> + <li>MessageFormatter::parse() and MessageFormat::format() (and their static + equivalents) don't throw away better than second precision in the arguments</li> + <li>IntlDateFormatter::__construct and datefmt_create() now accept for the + $timezone argument time zone identifiers, IntlTimeZone objects, DateTimeZone + objects and NULL</li> + <li>IntlDateFormatter::__construct and datefmt_create() no longer accept invalid + timezone identifiers or empty strings</li> + <li>The default time zone used in IntlDateFormatter::__construct and + datefmt_create() (when the corresponding argument is not passed or NULL is + passed) is now the one given by date_default_timezone_get(), not the + default ICU time zone</li> + <li>The time zone passed to the IntlDateFormatter is ignored if it is NULL and + if the calendar passed is an IntlCalendar object -- in this case, the + IntlCalendar's time zone will be used instead. Otherwise, the time zone + specified in the $timezone argument is used instead. This does not affect + old code, as IntlCalendar was introduced in this version</li> + <li>IntlDateFormatter::__construct and datefmt_create() now accept for the + $calendar argument also IntlCalendar objects</li> + <li>IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false + if the IntlDateFormatter was set up with an IntlCalendar instead of the + constants IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not + exist before this version</li> + <li>IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also accept + an IntlCalendar object, in which case its time zone is taken. Passing a + constant is still allowed, and still keeps the time zone</li> + <li>IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are + deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone() + instead</li> + <li>IntlDateFormatter::format() and datefmt_format() now also accept an + IntlCalendar object for formatting</li> + <li>Added the classes: IntlCalendar, IntlGregorianCalendar, IntlTimeZone, + IntlBreakIterator, IntlRuleBasedBreakIterator and + IntlCodePointBreakIterator</li> + <li>Added the functions: intlcal_get_keyword_values_for_locale(), + intlcal_get_now(), intlcal_get_available_locales(), intlcal_get(), + intlcal_get_time(), intlcal_set_time(), intlcal_add(), + intlcal_set_time_zone(), intlcal_after(), intlcal_before(), intlcal_set(), + intlcal_roll(), intlcal_clear(), intlcal_field_difference(), + intlcal_get_actual_maximum(), intlcal_get_actual_minimum(), + intlcal_get_day_of_week_type(), intlcal_get_first_day_of_week(), + intlcal_get_greatest_minimum(), intlcal_get_least_maximum(), + intlcal_get_locale(), intlcal_get_maximum(), + intlcal_get_minimal_days_in_first_week(), intlcal_get_minimum(), + intlcal_get_time_zone(), intlcal_get_type(), + intlcal_get_weekend_transition(), intlcal_in_daylight_time(), + intlcal_is_equivalent_to(), intlcal_is_lenient(), intlcal_is_set(), + intlcal_is_weekend(), intlcal_set_first_day_of_week(), + intlcal_set_lenient(), intlcal_equals(), + intlcal_get_repeated_wall_time_option(), + intlcal_get_skipped_wall_time_option(), + intlcal_set_repeated_wall_time_option(), + intlcal_set_skipped_wall_time_option(), intlcal_from_date_time(), + intlcal_to_date_time(), intlcal_get_error_code(), + intlcal_get_error_message(), intlgregcal_create_instance(), + intlgregcal_set_gregorian_change(), intlgregcal_get_gregorian_change() and + intlgregcal_is_leap_year()</li> + <li>Added the functions: intltz_create_time_zone(), intltz_create_default(), + intltz_get_id(), intltz_get_gmt(), intltz_get_unknown(), + intltz_create_enumeration(), intltz_count_equivalent_ids(), + intltz_create_time_zone_id_enumeration(), intltz_get_canonical_id(), + intltz_get_region(), intltz_get_tz_data_version(), + intltz_get_equivalent_id(), intltz_use_daylight_time(), intltz_get_offset(), + intltz_get_raw_offset(), intltz_has_same_rules(), intltz_get_display_name(), + intltz_get_dst_savings(), intltz_from_date_time_zone(), + intltz_to_date_time_zone(), intltz_get_error_code(), + intltz_get_error_message()</li> + <li>Added the methods: IntlDateFormatter::formatObject(), + IntlDateFormatter::getCalendarObject(), IntlDateFormatter::getTimeZone(), + IntlDateFormatter::setTimeZone()</li> + <li>Added the functions: datefmt_format_object(), datefmt_get_calendar_object(), + datefmt_get_timezone(), datefmt_set_timezone(), + datefmt_get_calendar_object(), intlcal_create_instance()</li> +</ul> +</ul> + +<ul> +<li>mbstring:</li> +<ul> + <li><?php bugfix(64769); ?> (mbstring PHPTs crash on Windows x64).</li> +</ul> +</ul> + +<ul> +<li>MCrypt:</li> +<ul> + <li>mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw E_DEPRECATED.</li> +</ul> +</ul> + +<ul> +<li>mysql:</li> +<ul> + <li>This extension is now deprecated, and deprecation warnings will be generated + when connections are established to databases via mysql_connect(), + mysql_pconnect(), or through implicit connection: use MySQLi or PDO_MySQL + instead</li> + <li>Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql. + Known for stability problems</li> + <li>Added support for SHA256 authentication available with MySQL 5.6.6+</li> +</ul> +</ul> + +<ul> +<li>mysqli:</li> +<ul> + <li>Added mysqli_begin_transaction()/mysqli::begin_transaction(). Implemented + all options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT + and ROLLBACK through options to mysqli_commit()/mysqli_rollback() and their + respective OO counterparts. They work in libmysql and mysqlnd mode</li> + <li>Added mysqli_savepoint(), mysqli_release_savepoint()</li> + <li><?php bugfix(64726); ?> (Segfault when calling fetch_object on a use_result and DB + pointer has closed)</li> + <li><?php bugfix(64394); ?> (MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS undeclared when + using Connector/C)</li> +</ul> +</ul> + +<ul> +<li>mysqlnd:</li> +<ul> + <li>Add new begin_transaction() call to the connection object. Implemented all + options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT + and ROLLBACK</li> + <li>Added mysqlnd_savepoint(), mysqlnd_release_savepoint()</li> + <li><?php bugfix(63530); ?> (mysqlnd_stmt::bind_one_parameter crashes, uses wrong alloc + for stmt->param_bind)</li> + <li>Fixed return value of mysqli_stmt_affected_rows() in the time after + prepare() and before execute()</li> +</ul> +</ul> + +<ul> +<li>PCRE:</li> +<ul> + <li>Merged PCRE 8.32</li> + <li>Deprecated the /e modifier</li> + <li><?php bugfix(63284); ?> (Upgrade PCRE to 8.31)</li> +</ul> +</ul> + +<ul> +<li>PDO:</li> +<ul> + <li><?php bugfix(63176); ?> (Segmentation fault when instantiate 2 persistent PDO to the same db server)</li> +</ul> +</ul> + +<ul> +<li>PDO_DBlib:</li> +<ul> + <li><?php bugfix(63638); ?> (Cannot connect to SQL Server 2008 with PDO dblib)</li> + <li><?php bugfix(64338); ?> (pdo_dblib can't connect to Azure SQL)</li> + <li><?php bugfix(64808); ?> (FreeTDS PDO getColumnMeta on a prepared but not executed statement crashes)</li> +</ul> +</ul> + +<ul> +<li>PDO_pgsql:</li> +<ul> + <li><?php bugfix(64949); ?> (Buffer overflow in _pdo_pgsql_error)</li> +</ul> +</ul> + +<ul> +<li>PDO_mysql:</li> +<ul> + <li><?php bugfix(48724); ?> (getColumnMeta() doesn't return native_type for BIT, TINYINT and YEAR)</li> +</ul> +</ul> + +<ul> +<li>pgsql:</li> +<ul> + <li>Added pg_escape_literal() and pg_escape_identifier()</li> + <li><?php bugfix(46408); ?> Locale number format settings can cause pg_query_params to break with numerics</li> +</ul> +</ul> + +<ul> +<li>Phar:</li> +<ul> + <li>Fixed timestamp update on Phar contents modification</li> +</ul> +</ul> + +<ul> +<li>readline:</li> +<ul> + <li><?php bugfix(55694); ?> (Expose additional readline variable to prevent default filename completion)</li> +</ul> +</ul> + +<ul> +<li>Reflection:</li> +<ul> + <li><?php bugfix(64007); ?> (There is an ability to create instance of Generator by hand)</li> +</ul> +</ul> + +<ul> +<li>Sockets:</li> +<ul> + <li>Added recvmsg() and sendmsg() wrappers</li> + <li><?php bugfix(64508); ?> (Fails to build with --disable-ipv6)</li> + <li><?php bugfix(64287); ?> (sendmsg/recvmsg shutdown handler causes segfault)</li> +</ul> +</ul> + +<ul> +<li>SPL:</li> +<ul> + <li><?php bugfix(64997); ?> (Segfault while using RecursiveIteratorIterator on 64-bits systems)</li> + <li><?php bugfix(64264); ?> (SPLFixedArray toArray problem)</li> + <li><?php bugfix(64228); ?> (RecursiveDirectoryIterator always assumes SKIP_DOTS)</li> + <li><?php bugfix(64106); ?> (Segfault on SplFixedArray[][x] = y when extended)</li> + <li><?php bugfix(60560); ?> (SplFixedArray un-/serialize, getSize(), count() return 0, keys are strings)</li> + <li><?php bugfix(52861); ?> (unset fails with ArrayObject and deep arrays)</li> + <li>Implement <?php bugl(48358); ?> (Add SplDoublyLinkedList::add() to insert an element at a given offset)</li> +</ul> +</ul> + +<ul> +<li>SNMP:</li> +<ul> + <li><?php bugfix(64765); ?> (Some IPv6 addresses get interpreted wrong)</li> + <li><?php bugfix(64159); ?> (Truncated snmpget)</li> + <li><?php bugfix(64124); ?> (IPv6 malformed)</li> + <li><?php bugfix(61981); ?> (OO API, walk: $suffix_as_key is not working correctly)</li> +</ul> +</ul> + +<ul> +<li>SOAP:</li> +<ul> + <li>Added SoapClient constructor option 'ssl_method' to specify ssl method</li> +</ul> +</ul> + +<ul> +<li>Streams:</li> +<ul> + <li><?php bugfix(64770); ?> (stream_select() fails with pipes returned by proc_open() on Windows x64)</li> + <li>Fixed Windows x64 version of stream_socket_pair() and improved error handling</li> +</ul> +</ul> + +<ul> +<li>Tokenizer:</li> +<ul> + <li><?php bugfix(60097); ?> (token_get_all fails to lex nested heredoc)</li> +</ul> +</ul> + +<ul> +<li>Zip:</li> +<ul> + <li>Upgraded libzip to 0.10.1</li> + <li><?php bugfix(64452); ?> (Zip crash intermittently)</li> + <li><?php bugfix(64342); ?> (ZipArchive::addFile() has to check for file existence)</li> +</ul> +</ul> + +<!-- }}} --> + <a name="5.4.16"></a><!-- {{{ 5.4.16 --> <h3>Version 5.4.16</h3> <b>06-Jun-2013</b> diff --git a/archive/archive.xml b/archive/archive.xml index ff8d314..fdec6fe 100644 --- a/archive/archive.xml +++ b/archive/archive.xml @@ -9,6 +9,7 @@ <uri>http://php.net/contact</uri> <email>php-webmaster@lists.php.net</email> </author> + <xi:include href="entries/2013-06-20-1.xml"/> <xi:include href="entries/2013-06-10-1.xml"/> <xi:include href="entries/2013-06-06-2.xml"/> <xi:include href="entries/2013-06-06-1.xml"/> diff --git a/archive/entries/2013-06-20-1.xml b/archive/entries/2013-06-20-1.xml new file mode 100644 index 0000000..e0eb75b --- /dev/null +++ b/archive/entries/2013-06-20-1.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<entry xmlns="http://www.w3.org/2005/Atom"> + <title>5.5.0</title> + <id>http://php.net/archive/2013.php#id2013-06-20-1</id> + <published>2013-06-20T16:20:26+00:00</published> + <updated>2013-06-20T16:20:26+00:00</updated> + <category term="releases" label="New PHP release"/> + <link href="http://php.net/index.php#id2013-06-20-1" rel="alternate" type="text/html"/> + <link href="http://php.net/archive/2013.php#id2013-06-20-1" rel="via" type="text/html"/> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <p>The PHP development team is proud to announce the immediate availability of PHP 5.5.0. + This release includes a large number of new features and bug fixes. + </p> + + <p> + <b>The key features of PHP 5.5.0 include:</b> + </p> + <ul> + <li>Added <a href="http://www.php.net/generators">generators</a> and coroutines.</li> + <li>Added <a href="http://www.php.net/exceptions">"finally"</a> keyword. </li> + <li>Added <a href="http://www.php.net/password">simplified password hashing API</a>.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> + <li>Added Zend Opcache extension and enable building it by default (OPCode cache)</li> + <li>A lot more improvements and fixes</li> + </ul> + + <p> + <b>Changes that affect compatibility:</b> + </p> + <ul> + <li><a href="http://www.php.net/php-logo-guid">PHP logo GUIDs removed</a> have been removed</li> + <li>Windows XP and 2003 support dropped</li> + <li>Case insensitivity is no longer locale specific. All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules</li> + </ul> + + <p> + For users upgrading from PHP 5.4 there is a migration guide available + <a href="http://php.net/migration55">here</a>, detailing the changes between PHP 5.4 and PHP 5.5.0. + </p> + + <p> + For a full list of changes in PHP 5.5.0, see the <a href="/ChangeLog-5.php#5.5.0">ChangeLog</a>. + </p> + </div> + </content> +</entry> diff --git a/include/releases.inc b/include/releases.inc index 4af23af..a3a216e 100644 --- a/include/releases.inc +++ b/include/releases.inc @@ -2,6 +2,75 @@ $OLDRELEASES = array ( 5 => array ( + '5.5.0' => + array ( + 'announcement' => + array ( + 'English' => '/releases/5_5_0.php', + ), + 'source' => + array ( + 0 => + array ( + 'filename' => 'php-5.5.0.tar.bz2', + 'name' => 'PHP 5.5.0 (tar.bz2)', + 'md5' => 'daf2d54e79def9fd0fb2ac7dfcefb7f3', + 'date' => '20 Jun 2013', + ), + 1 => + array ( + 'filename' => 'php-5.5.0.tar.gz', + 'name' => 'PHP 5.5.0 (tar.gz)', + 'md5' => '79c4e7a8cb0f8e2e072120775b92c523', + 'date' => '20 Jun 2013', + ), + 2 => + array ( + 'filename' => 'php-5.5.0.tar.xz', + 'name' => 'PHP 5.5.0 (tar.xz)', + 'md5' => 'c7df0cb28cfff4e277fd9cd9b73cebfb', + 'date' => '20 Jun 2013', + ), + 3 => + array ( + 'link' => 'http://windows.php.net/download/#php-5.5', + 'name' => 'Windows 5.5.0 binaries and source', + ), + ), + 'date' => '20 Jun 2013', + 'museum' => false, + ), + '5.4.16' => + array ( + 'announcement' => + array ( + 'English' => '/releases/5_4_16.php', + ), + 'source' => + array ( + 0 => + array ( + 'filename' => 'php-5.4.16.tar.bz2', + 'name' => 'PHP 5.4.16 (tar.bz2)', + 'md5' => '3d2c694d28861d707b2622c3cc941cff', + 'date' => '06 Jun 2013', + ), + 1 => + array ( + 'filename' => 'php-5.4.16.tar.gz', + 'name' => 'PHP 5.4.16 (tar.gz)', + 'md5' => '3940a5295872964495f9c56596272d68', + 'date' => '06 Jun 2013', + ), + 2 => + array ( + 'link' => 'http://windows.php.net/download/#php-5.4', + 'name' => 'Windows 5.4.16 binaries and source', + ), + ), + 'date' => '06 Jun 2013', + 'museum' => false, + ), '5.4.15' => array ( 'announcement' => diff --git a/include/version.inc b/include/version.inc index 66439d4..4a78c26 100644 --- a/include/version.inc +++ b/include/version.inc @@ -14,6 +14,17 @@ * ), * ), * );6 Dec +/* PHP 5.5 Release */ +$PHP_5_5_RC = false; // Current RC version (e.g., '5.6.7RC1') or false +$PHP_5_5_RC_DATE = '23 May 2013'; + +$PHP_5_5_VERSION = "5.5.0"; +$PHP_5_5_DATE = "20 Jun 2013"; +$PHP_5_5_MD5 = array( + "tar.bz2" => "daf2d54e79def9fd0fb2ac7dfcefb7f3", + "tar.gz" => "79c4e7a8cb0f8e2e072120775b92c523", + "tar.xz" => "c7df0cb28cfff4e277fd9cd9b73cebfb", +); /* PHP 5.4 Release */ $PHP_5_4_RC = '5.4.17RC1'; // Current RC version (e.g., '5.6.7RC1') or false $PHP_5_4_RC_DATE = '20 Jun 2013'; @@ -39,6 +50,33 @@ $PHP_5_3_MD5 = array( $RELEASES = array( 5 => array( + $PHP_5_5_VERSION => array( + "announcement" => true, + "source" => array( + array( + "filename" => "php-$PHP_5_5_VERSION.tar.bz2", + "name" => "PHP $PHP_5_5_VERSION (tar.bz2)", + "md5" => $PHP_5_5_MD5["tar.bz2"], + "date" => $PHP_5_5_DATE, + ), + array( + "filename" => "php-$PHP_5_5_VERSION.tar.gz", + "name" => "PHP $PHP_5_5_VERSION (tar.gz)", + "md5" => $PHP_5_5_MD5["tar.gz"], + "date" => $PHP_5_5_DATE, + ), + array( + "filename" => "php-$PHP_5_5_VERSION.tar.xz", + "name" => "PHP $PHP_5_5_VERSION (tar.xz)", + "md5" => $PHP_5_5_MD5["tar.xz"], + "date" => $PHP_5_5_DATE, + ), + array( + "link" => 'http://windows.php.net/download/#php-5.5', + "name" => "Windows $PHP_5_5_VERSION binaries and source", + ), + ), + ), $PHP_5_4_VERSION => array( "announcement" => true, "source" => array( @@ -84,7 +122,7 @@ $RELEASES = array( ), ); -$PHP_5_VERSION = $PHP_5_4_VERSION; // Some scripts require this set -$PHP_5_DATE = $PHP_5_4_DATE; // Used by buumpRelease script -$PHP_5_RC_DATE = $PHP_5_4_RC_DATE; // Used by master +$PHP_5_VERSION = $PHP_5_5_VERSION; // Some scripts require this set +$PHP_5_DATE = $PHP_5_5_DATE; // Used by buumpRelease script +$PHP_5_RC_DATE = $PHP_5_5_RC_DATE; // Used by master diff --git a/releases/5_5_0.php b/releases/5_5_0.php new file mode 100644 index 0000000..a7d5aaa --- /dev/null +++ b/releases/5_5_0.php @@ -0,0 +1,51 @@ +<?php +// $Id: 5_2_0.php,v 1.4 2007/01/16 16:04:05 bjori Exp $ +$_SERVER['BASE_PAGE'] = 'releases/5_5_0.php'; +include_once $_SERVER['DOCUMENT_ROOT'] . '/include/prepend.inc'; +site_header("PHP 5.5.0 Release Announcement"); +?> + +<h1>PHP 5.5.0 Release Announcement</h1> +<p> +The PHP development team is proud to announce the immediate availability +of PHP <a href="http://php.net/downloads.php#v5.5.0">5.5.0</a>. +This release includes a large number of new features and bug fixes. +</p> + +<p> +<b>The key features of PHP 5.5.0 include:</b> +</p> +<ul> + <li>Added <a href="http://www.php.net/generators">generators</a> and coroutines.</li> + <li>Added <a href="http://www.php.net/exceptions">"finally"</a> keyword. </li> + <li>Added <a href="http://www.php.net/password">simplified password hashing API</a>.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> + <li>Added Zend Opcache extension and enable building it by default (OPCode cache)</li> + <li>A lot more improvements and fixes</li> +</ul> + +<p> +<b>Changes that affect compatibility:</b> +</p> +<ul> + <li><a href="http://www.php.net/php-logo-guid">PHP logo GUIDs removed</a> have been removed</li> + <li>Windows XP and 2003 support dropped</li> + <li>Case insensitivity is no longer locale specific. All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules</li> +</ul> + +<p> +For users upgrading from PHP 5.4 there is a migration guide available +<a href="http://php.net/migration55">here</a>, detailing the changes between +PHP 5.4 and PHP 5.5.0. +</p> + +<p> + For a full list of changes in PHP 5.5.0, see the + <a href="/ChangeLog-5.php#5.5.0">ChangeLog</a>. +</p> + +<?php site_footer(); ?>
diff --git a/ChangeLog-5.php b/ChangeLog-5.php index e32d3e7..6ba382c 100644 --- a/ChangeLog-5.php +++ b/ChangeLog-5.php @@ -11,6 +11,514 @@ function peclbugl($number) { echo "<a href=\"http://pecl.php.net/bugs/bug.php? <h1>PHP 5 ChangeLog</h1> +<a name="5.5.0"></a><!-- {{{ 5.5.0 --> +<h3>Version 5.5.0</h3> +<b>20-Jun-2013</b> +<ul> +<li>Drop support for bison < 2.4 when building PHP from GIT source</li> +</ul> + +<ul> +<li>Improved Zend Engine:</li> +<ul> + <li>Added ARMv7/v8 versions of various Zend arithmetic functions that are implemented using inline assembler</li> + <li>Added systemtap support by enabling systemtap compatible dtrace probes on linux</li> + <li>Optimized access to temporary and compiled VM variables. 8% less memory reads</li> + <li>The VM stacks for passing function arguments and syntaticaly nested calls + were merged into a single stack. The stack size needed for op_array + execution is calculated at compile time and preallocated at once. As result + all the stack push operations don't require checks for stack overflow + any more</li> +</ul> +</ul> + +<ul> +<li>General improvement:</li> +<ul> + <li>Added generators and coroutines (https://wiki.php.net/rfc/generators).</li> + <li>Added "finally" keyword. </li> + <li>Added simplified password hashing API.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> +</ul> +</ul> + +<ul> +<li>Core:</li> +<ul> + <li>Added Zend Opcache extension and enable building it by default.</li> + <li>Added array_column function which returns a column in a multidimensional array</li> + <li>Added boolval()</li> + <li>Added "Z" option to pack/unpack</li> + <li>Added optional second argument for assert() to specify custom message</li> + <li>Added support for changing the process's title in CLI/CLI-Server SAPIs. The implementation is more robust that the proctitle PECL module</li> + <li>Improve set_exception_handler while doing reset</li> + <li>Return previous handler when passing NULL to set_error_handler and set_exception_handler</li> + <li>Implemented <?php bugl(64175); ?> (Added HTTP codes as of RFC 6585)</li> + <li>Implemented <?php bugl(60738); ?> (Allow 'set_error_handler' to handle NULL)</li> + <li>Implemented <?php bugl(60524); ?> (specify temp dir by php.ini)</li> + <li>Implemented <?php bugl(46487); ?> (Dereferencing process-handles no longer waits on those processes)</li> + <li><?php bugfix(65051); ?> (count() off by one inside unset())</li> + <li><?php bugfix(64988); ?> (Class loading order affects E_STRICT warning)</li> + <li><?php bugfix(64966); ?> (segfault in zend_do_fcall_common_helper_SPEC)</li> + <li><?php bugfix(64960); ?> (Segfault in gc_zval_possible_root)</li> + <li><?php bugfix(64936); ?> (doc comments picked up from previous scanner run)</li> + <li><?php bugfix(64934); ?> (Apache2 TS crash with get_browser())</li> + <li><?php bugfix(64879); ?> (Heap based buffer overflow in quoted_printable_encode, CVE 2013-2110)</li> + <li><?php bugfix(64853); ?> (Use of no longer available ini directives causes crash on TS build)</li> + <li><?php bugfix(64821); ?> (Custom Exceptions crash when internal properties overridden)</li> + <li><?php bugfix(64720); ?> (SegFault on zend_deactivate).</li> + <li><?php bugfix(64677); ?> (execution operator `` stealing surrounding arguments)</li> + <li><?php bugfix(64660); ?> (Segfault on memory exhaustion within function definition)</li> + <li><?php bugfix(64578); ?> (debug_backtrace in set_error_handler corrupts zend heap: segfault)</li> + <li><?php bugfix(64565); ?> (copy doesn't report failure on partial copy)</li> + <li><?php bugfix(64555); ?> (foreach no longer copies keys if they are interned)</li> + <li><?php bugfix(47675); ?> and <?php bugfix(64577); ?> (fd leak on Solaris)</li> + <li><?php bugfix(64544); ?> (Valgrind warnings after using putenv)</li> + <li><?php bugfix(64515); ?> (Memoryleak when using the same variablename 2times in function declaration)</li> + <li><?php bugfix(64503); ?> (Compilation fails with error: conflicting types for 'zendparse')</li> + <li><?php bugfix(64239); ?> (Debug backtrace changed behavior since 5.4.10 or 5.4.11)</li> + <li><?php bugfix(64523); ?> allow XOR in php.ini</li> + <li><?php bugfix(64354); ?> (Unserialize array of objects whose class can't be autoloaded fail)</li> + <li><?php bugfix(64370); ?> (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT'])</li> + <li><?php bugfix(64166); ?> (quoted-printable-encode stream filter incorrectly discarding whitespace)</li> + <li><?php bugfix(64142); ?> (dval to lval different behavior on ppc64)</li> + <li><?php bugfix(64135); ?> (Exceptions from set_error_handler are not always propagated)</li> + <li><?php bugfix(63980); ?> (object members get trimmed by zero bytes)</li> + <li><?php bugfix(63874); ?> (Segfault if php_strip_whitespace has heredoc)</li> + <li><?php bugfix(63830); ?> (Segfault on undefined function call in nested generator)</li> + <li><?php bugfix(63822); ?> (Crash when using closures with ArrayAccess)</li> + <li><?php bugfix(61681); ?> (Malformed grammar)</li> + <li><?php bugfix(61038); ?> (unpack("a5", "str\0\0") does not work as expected)</li> + <li><?php bugfix(61025); ?> (__invoke() visibility not honored)</li> + <li><?php bugfix(60833); ?> (self, parent, static behave inconsistently case-sensitive)</li> + <li><?php bugfix(52126); ?> timestamp for mail.log</li> + <li><?php bugfix(49348); ?> (Uninitialized ++$foo->bar; does not cause a notice)</li> + <li><?php bugfix(23955); ?> allow specifying Max-Age attribute in setcookie()</li> + <li><?php bugfix(18556); ?> (Engine uses locale rules to handle class names)</li> + <li>Fix undefined behavior when converting double variables to integers. The double is now always rounded towards zero, the remainder of its division by 2^32 or 2^64 (depending on sizeof(long)) is calculated and it's made signed assuming a two's complement representation</li> +</ul> +</ul> + +<ul> +<li>Removed legacy features:</li> +<ul> + <li>Remove php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid()</li> + <li>Drop Windows XP and 2003 support</li> +</ul> +</ul> + +<ul> +<li>Apache2 Handler SAPI:</li> +<ul> + <li>Enabled Apache 2.4 configure option for Windows.</li> +</ul> +</ul> + +<ul> +<li>Calendar:</li> +<ul> + <li><?php bugfix(64895); ?> (Integer overflow in SndToJewish).</li> + <li><?php bugfix(54254); ?> (cal_from_jd returns month = 6 when there is only one Adar).</li> +</ul> +</ul> + +<ul> +<li>CLI server:</li> +<ul> + <li><?php bugfix(64128); ?> (buit-in web server is broken on ppc64).</li> +</ul> +</ul> + +<ul> +<li>CURL:</li> +<ul> + <li>Remove curl stream wrappers.</li> + <li>Implemented <?php bugl(46439); ?> - added CURLFile for safer file uploads</li> + <li>Added support for CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_APPEND, + CURLOPT_DIRLISTONLY, CURLOPT_NEW_DIRECTORY_PERMS, CURLOPT_NEW_FILE_PERMS, + CURLOPT_NETRC_FILE, CURLOPT_PREQUOTE, CURLOPT_KRBLEVEL, CURLOPT_MAXFILESIZE, + CURLOPT_FTP_ACCOUNT, CURLOPT_COOKIELIST, CURLOPT_IGNORE_CONTENT_LENGTH, + CURLOPT_CONNECT_ONLY, CURLOPT_LOCALPORT, CURLOPT_LOCALPORTRANGE, + CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_SSL_SESSIONID_CACHE, + CURLOPT_FTP_SSL_CCC, CURLOPT_HTTP_CONTENT_DECODING, + CURLOPT_HTTP_TRANSFER_DECODING, CURLOPT_PROXY_TRANSFER_MODE, + CURLOPT_ADDRESS_SCOPE, CURLOPT_CRLFILE, CURLOPT_ISSUERCERT, + CURLOPT_USERNAME, CURLOPT_PASSWORD, CURLOPT_PROXYUSERNAME, + CURLOPT_PROXYPASSWORD, CURLOPT_NOPROXY, CURLOPT_SOCKS5_GSSAPI_NEC, + CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOPT_TFTP_BLKSIZE, + CURLOPT_SSH_KNOWNHOSTS, CURLOPT_FTP_USE_PRET, CURLOPT_MAIL_FROM, + CURLOPT_MAIL_RCPT, CURLOPT_RTSP_CLIENT_CSEQ, CURLOPT_RTSP_SERVER_CSEQ, + CURLOPT_RTSP_SESSION_ID, CURLOPT_RTSP_STREAM_URI, CURLOPT_RTSP_TRANSPORT, + CURLOPT_RTSP_REQUEST, CURLOPT_RESOLVE, CURLOPT_ACCEPT_ENCODING, + CURLOPT_TRANSFER_ENCODING, CURLOPT_DNS_SERVERS and CURLOPT_USE_SSL</li> + <li><?php bugfix(55635); ?> (CURLOPT_BINARYTRANSFER no longer used. The constant + still exists for backward compatibility but is doing nothing)</li> + <li><?php bugfix(54995); ?> (Missing CURLINFO_RESPONSE_CODE support)</li> + <li>Added new functions curl_escape, curl_multi_setopt, curl_multi_strerror + curl_pause, curl_reset, curl_share_close, curl_share_init, + curl_share_setopt curl_strerror and curl_unescape</li> + <li>Addes new curl options CURLOPT_TELNETOPTIONS, CURLOPT_GSSAPI_DELEGATION, + CURLOPT_ACCEPTTIMEOUT_MS, CURLOPT_SSL_OPTIONS, CURLOPT_TCP_KEEPALIVE, + CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL</li> +</ul> +</ul> + +<ul> +<li>DateTime:</li> +<ul> + <li>Added DateTimeImmutable - a variant of DateTime that only returns the + modified state instead of changing itself.</li> + <li><?php bugfix(64825); ?> (Invalid free when unserializing DateTimeZone).</li> + <li><?php bugfix(64359); ?> (strftime crash with VS2012)</li> + <li><?php bugfix(62852); ?> (Unserialize Invalid Date causes crash)</li> + <li><?php bugfix(61642); ?> (modify("+5 weekdays") returns Sunday)</li> + <li><?php bugfix(60774); ?> (DateInterval::format("%a") is always zero when an + interval is created using the createFromDateString method)</li> + <li><?php bugfix(54567); ?> (DateTimeZone serialize/unserialize)</li> + <li><?php bugfix(53437); ?> (Crash when using unserialized DatePeriod instance)</li> +</ul> +</ul> + +<ul> +<li>dba:</li> +<ul> + <li><?php bugfix(62489); ?> (dba_insert not working as expected)</li> +</ul> +</ul> + +<ul> +<li>Filter:</li> +<ul> + <li>Implemented <?php bugl(49180); ?> added MAC address validation.</li> +</ul> +</ul> + +<ul> +<li>Fileinfo:</li> +<ul> + <li>Upgraded libmagic to 5.14.</li> + <li><?php bugfix(64830); ?> (mimetype detection segfaults on mp3 file)</li> + <li><?php bugfix(63590); ?> (Different results in TS and NTS under Windows)</li> + <li><?php bugfix(63248); ?> (Load multiple magic files from a directory under Windows)</li> +</ul> +</ul> + +<ul> +<li>FPM:</li> +<ul> + <li>Add --with-fpm-systemd option to report health to systemd, and + systemd_interval option to configure this. The service can now use + Type=notify in the systemd unit file.</li> + <li>Ignore QUERY_STRING when sent in SCRIPT_FILENAME</li> + <li>Log a warning when a syscall fails</li> + <li>Implemented <?php bugl(64764); ?> (add support for FPM init.d script)</li> + <li><?php bugfix(64915); ?> (error_log ignored when daemonize=0)</li> + <li><?php bugfix(63999); ?> (php with fpm fails to build on Solaris 10 or 11)</li> + <li>Fixed some possible memory or resource leaks and possible null dereference + detected by code coverity scan</li> +</ul> +</ul> + +<ul> +<li>GD:</li> +<ul> + <li><?php bugfix(64962); ?> (imagerotate produces corrupted image).</li> + <li><?php bugfix(64961); ?> (segfault in imagesetinterpolation)</li> + <li>Fix build with system libgd >= 2.1 which is now the minimal + version required (as build with previous version is broken). + No change when bundled libgd is used</li> +</ul> +</ul> + +<ul> +<li>hash:</li> +<ul> + <li>Added support for PBKDF2 via hash_pbkdf2().</li> + <li><?php bugfix(64745); ?> (hash_pbkdf2() truncates data when using default length + and hex output)</li> +</ul> +</ul> + +<ul> +<li>intl:</li> +<ul> + <li>Added UConverter wrapper.</li> + <li>The intl extension now requires ICU 4.0+</li> + <li>Added intl.use_exceptions INI directive, which controls what happens when + global errors are set together with intl.error_level</li> + <li>MessageFormatter::format() and related functions now accepted named + arguments and mixed numeric/named arguments in ICU 4.8+</li> + <li>MessageFormatter::format() and related functions now don't error out when + an insufficient argument count is provided. Instead, the placeholders will + remain unsubstituted</li> + <li>MessageFormatter::parse() and MessageFormat::format() (and their static + equivalents) don't throw away better than second precision in the arguments</li> + <li>IntlDateFormatter::__construct and datefmt_create() now accept for the + $timezone argument time zone identifiers, IntlTimeZone objects, DateTimeZone + objects and NULL</li> + <li>IntlDateFormatter::__construct and datefmt_create() no longer accept invalid + timezone identifiers or empty strings</li> + <li>The default time zone used in IntlDateFormatter::__construct and + datefmt_create() (when the corresponding argument is not passed or NULL is + passed) is now the one given by date_default_timezone_get(), not the + default ICU time zone</li> + <li>The time zone passed to the IntlDateFormatter is ignored if it is NULL and + if the calendar passed is an IntlCalendar object -- in this case, the + IntlCalendar's time zone will be used instead. Otherwise, the time zone + specified in the $timezone argument is used instead. This does not affect + old code, as IntlCalendar was introduced in this version</li> + <li>IntlDateFormatter::__construct and datefmt_create() now accept for the + $calendar argument also IntlCalendar objects</li> + <li>IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false + if the IntlDateFormatter was set up with an IntlCalendar instead of the + constants IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not + exist before this version</li> + <li>IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also accept + an IntlCalendar object, in which case its time zone is taken. Passing a + constant is still allowed, and still keeps the time zone</li> + <li>IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are + deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone() + instead</li> + <li>IntlDateFormatter::format() and datefmt_format() now also accept an + IntlCalendar object for formatting</li> + <li>Added the classes: IntlCalendar, IntlGregorianCalendar, IntlTimeZone, + IntlBreakIterator, IntlRuleBasedBreakIterator and + IntlCodePointBreakIterator</li> + <li>Added the functions: intlcal_get_keyword_values_for_locale(), + intlcal_get_now(), intlcal_get_available_locales(), intlcal_get(), + intlcal_get_time(), intlcal_set_time(), intlcal_add(), + intlcal_set_time_zone(), intlcal_after(), intlcal_before(), intlcal_set(), + intlcal_roll(), intlcal_clear(), intlcal_field_difference(), + intlcal_get_actual_maximum(), intlcal_get_actual_minimum(), + intlcal_get_day_of_week_type(), intlcal_get_first_day_of_week(), + intlcal_get_greatest_minimum(), intlcal_get_least_maximum(), + intlcal_get_locale(), intlcal_get_maximum(), + intlcal_get_minimal_days_in_first_week(), intlcal_get_minimum(), + intlcal_get_time_zone(), intlcal_get_type(), + intlcal_get_weekend_transition(), intlcal_in_daylight_time(), + intlcal_is_equivalent_to(), intlcal_is_lenient(), intlcal_is_set(), + intlcal_is_weekend(), intlcal_set_first_day_of_week(), + intlcal_set_lenient(), intlcal_equals(), + intlcal_get_repeated_wall_time_option(), + intlcal_get_skipped_wall_time_option(), + intlcal_set_repeated_wall_time_option(), + intlcal_set_skipped_wall_time_option(), intlcal_from_date_time(), + intlcal_to_date_time(), intlcal_get_error_code(), + intlcal_get_error_message(), intlgregcal_create_instance(), + intlgregcal_set_gregorian_change(), intlgregcal_get_gregorian_change() and + intlgregcal_is_leap_year()</li> + <li>Added the functions: intltz_create_time_zone(), intltz_create_default(), + intltz_get_id(), intltz_get_gmt(), intltz_get_unknown(), + intltz_create_enumeration(), intltz_count_equivalent_ids(), + intltz_create_time_zone_id_enumeration(), intltz_get_canonical_id(), + intltz_get_region(), intltz_get_tz_data_version(), + intltz_get_equivalent_id(), intltz_use_daylight_time(), intltz_get_offset(), + intltz_get_raw_offset(), intltz_has_same_rules(), intltz_get_display_name(), + intltz_get_dst_savings(), intltz_from_date_time_zone(), + intltz_to_date_time_zone(), intltz_get_error_code(), + intltz_get_error_message()</li> + <li>Added the methods: IntlDateFormatter::formatObject(), + IntlDateFormatter::getCalendarObject(), IntlDateFormatter::getTimeZone(), + IntlDateFormatter::setTimeZone()</li> + <li>Added the functions: datefmt_format_object(), datefmt_get_calendar_object(), + datefmt_get_timezone(), datefmt_set_timezone(), + datefmt_get_calendar_object(), intlcal_create_instance()</li> +</ul> +</ul> + +<ul> +<li>mbstring:</li> +<ul> + <li><?php bugfix(64769); ?> (mbstring PHPTs crash on Windows x64).</li> +</ul> +</ul> + +<ul> +<li>MCrypt:</li> +<ul> + <li>mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw E_DEPRECATED.</li> +</ul> +</ul> + +<ul> +<li>mysql:</li> +<ul> + <li>This extension is now deprecated, and deprecation warnings will be generated + when connections are established to databases via mysql_connect(), + mysql_pconnect(), or through implicit connection: use MySQLi or PDO_MySQL + instead</li> + <li>Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql. + Known for stability problems</li> + <li>Added support for SHA256 authentication available with MySQL 5.6.6+</li> +</ul> +</ul> + +<ul> +<li>mysqli:</li> +<ul> + <li>Added mysqli_begin_transaction()/mysqli::begin_transaction(). Implemented + all options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT + and ROLLBACK through options to mysqli_commit()/mysqli_rollback() and their + respective OO counterparts. They work in libmysql and mysqlnd mode</li> + <li>Added mysqli_savepoint(), mysqli_release_savepoint()</li> + <li><?php bugfix(64726); ?> (Segfault when calling fetch_object on a use_result and DB + pointer has closed)</li> + <li><?php bugfix(64394); ?> (MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS undeclared when + using Connector/C)</li> +</ul> +</ul> + +<ul> +<li>mysqlnd:</li> +<ul> + <li>Add new begin_transaction() call to the connection object. Implemented all + options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT + and ROLLBACK</li> + <li>Added mysqlnd_savepoint(), mysqlnd_release_savepoint()</li> + <li><?php bugfix(63530); ?> (mysqlnd_stmt::bind_one_parameter crashes, uses wrong alloc + for stmt->param_bind)</li> + <li>Fixed return value of mysqli_stmt_affected_rows() in the time after + prepare() and before execute()</li> +</ul> +</ul> + +<ul> +<li>PCRE:</li> +<ul> + <li>Merged PCRE 8.32</li> + <li>Deprecated the /e modifier</li> + <li><?php bugfix(63284); ?> (Upgrade PCRE to 8.31)</li> +</ul> +</ul> + +<ul> +<li>PDO:</li> +<ul> + <li><?php bugfix(63176); ?> (Segmentation fault when instantiate 2 persistent PDO to the same db server)</li> +</ul> +</ul> + +<ul> +<li>PDO_DBlib:</li> +<ul> + <li><?php bugfix(63638); ?> (Cannot connect to SQL Server 2008 with PDO dblib)</li> + <li><?php bugfix(64338); ?> (pdo_dblib can't connect to Azure SQL)</li> + <li><?php bugfix(64808); ?> (FreeTDS PDO getColumnMeta on a prepared but not executed statement crashes)</li> +</ul> +</ul> + +<ul> +<li>PDO_pgsql:</li> +<ul> + <li><?php bugfix(64949); ?> (Buffer overflow in _pdo_pgsql_error)</li> +</ul> +</ul> + +<ul> +<li>PDO_mysql:</li> +<ul> + <li><?php bugfix(48724); ?> (getColumnMeta() doesn't return native_type for BIT, TINYINT and YEAR)</li> +</ul> +</ul> + +<ul> +<li>pgsql:</li> +<ul> + <li>Added pg_escape_literal() and pg_escape_identifier()</li> + <li><?php bugfix(46408); ?> Locale number format settings can cause pg_query_params to break with numerics</li> +</ul> +</ul> + +<ul> +<li>Phar:</li> +<ul> + <li>Fixed timestamp update on Phar contents modification</li> +</ul> +</ul> + +<ul> +<li>readline:</li> +<ul> + <li><?php bugfix(55694); ?> (Expose additional readline variable to prevent default filename completion)</li> +</ul> +</ul> + +<ul> +<li>Reflection:</li> +<ul> + <li><?php bugfix(64007); ?> (There is an ability to create instance of Generator by hand)</li> +</ul> +</ul> + +<ul> +<li>Sockets:</li> +<ul> + <li>Added recvmsg() and sendmsg() wrappers</li> + <li><?php bugfix(64508); ?> (Fails to build with --disable-ipv6)</li> + <li><?php bugfix(64287); ?> (sendmsg/recvmsg shutdown handler causes segfault)</li> +</ul> +</ul> + +<ul> +<li>SPL:</li> +<ul> + <li><?php bugfix(64997); ?> (Segfault while using RecursiveIteratorIterator on 64-bits systems)</li> + <li><?php bugfix(64264); ?> (SPLFixedArray toArray problem)</li> + <li><?php bugfix(64228); ?> (RecursiveDirectoryIterator always assumes SKIP_DOTS)</li> + <li><?php bugfix(64106); ?> (Segfault on SplFixedArray[][x] = y when extended)</li> + <li><?php bugfix(60560); ?> (SplFixedArray un-/serialize, getSize(), count() return 0, keys are strings)</li> + <li><?php bugfix(52861); ?> (unset fails with ArrayObject and deep arrays)</li> + <li>Implement <?php bugl(48358); ?> (Add SplDoublyLinkedList::add() to insert an element at a given offset)</li> +</ul> +</ul> + +<ul> +<li>SNMP:</li> +<ul> + <li><?php bugfix(64765); ?> (Some IPv6 addresses get interpreted wrong)</li> + <li><?php bugfix(64159); ?> (Truncated snmpget)</li> + <li><?php bugfix(64124); ?> (IPv6 malformed)</li> + <li><?php bugfix(61981); ?> (OO API, walk: $suffix_as_key is not working correctly)</li> +</ul> +</ul> + +<ul> +<li>SOAP:</li> +<ul> + <li>Added SoapClient constructor option 'ssl_method' to specify ssl method</li> +</ul> +</ul> + +<ul> +<li>Streams:</li> +<ul> + <li><?php bugfix(64770); ?> (stream_select() fails with pipes returned by proc_open() on Windows x64)</li> + <li>Fixed Windows x64 version of stream_socket_pair() and improved error handling</li> +</ul> +</ul> + +<ul> +<li>Tokenizer:</li> +<ul> + <li><?php bugfix(60097); ?> (token_get_all fails to lex nested heredoc)</li> +</ul> +</ul> + +<ul> +<li>Zip:</li> +<ul> + <li>Upgraded libzip to 0.10.1</li> + <li><?php bugfix(64452); ?> (Zip crash intermittently)</li> + <li><?php bugfix(64342); ?> (ZipArchive::addFile() has to check for file existence)</li> +</ul> +</ul> + +<!-- }}} --> + <a name="5.4.16"></a><!-- {{{ 5.4.16 --> <h3>Version 5.4.16</h3> <b>06-Jun-2013</b> diff --git a/archive/archive.xml b/archive/archive.xml index ff8d314..fdec6fe 100644 --- a/archive/archive.xml +++ b/archive/archive.xml @@ -9,6 +9,7 @@ <uri>http://php.net/contact</uri> <email>php-webmaster@lists.php.net</email> </author> + <xi:include href="entries/2013-06-20-1.xml"/> <xi:include href="entries/2013-06-10-1.xml"/> <xi:include href="entries/2013-06-06-2.xml"/> <xi:include href="entries/2013-06-06-1.xml"/> diff --git a/archive/entries/2013-06-20-1.xml b/archive/entries/2013-06-20-1.xml new file mode 100644 index 0000000..e0eb75b --- /dev/null +++ b/archive/entries/2013-06-20-1.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<entry xmlns="http://www.w3.org/2005/Atom"> + <title>5.5.0</title> + <id>http://php.net/archive/2013.php#id2013-06-20-1</id> + <published>2013-06-20T16:20:26+00:00</published> + <updated>2013-06-20T16:20:26+00:00</updated> + <category term="releases" label="New PHP release"/> + <link href="http://php.net/index.php#id2013-06-20-1" rel="alternate" type="text/html"/> + <link href="http://php.net/archive/2013.php#id2013-06-20-1" rel="via" type="text/html"/> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <p>The PHP development team is proud to announce the immediate availability of PHP 5.5.0. + This release includes a large number of new features and bug fixes. + </p> + + <p> + <b>The key features of PHP 5.5.0 include:</b> + </p> + <ul> + <li>Added <a href="http://www.php.net/generators">generators</a> and coroutines.</li> + <li>Added <a href="http://www.php.net/exceptions">"finally"</a> keyword. </li> + <li>Added <a href="http://www.php.net/password">simplified password hashing API</a>.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> + <li>Added Zend Opcache extension and enable building it by default (OPCode cache)</li> + <li>A lot more improvements and fixes</li> + </ul> + + <p> + <b>Changes that affect compatibility:</b> + </p> + <ul> + <li><a href="http://www.php.net/php-logo-guid">PHP logo GUIDs removed</a> have been removed</li> + <li>Windows XP and 2003 support dropped</li> + <li>Case insensitivity is no longer locale specific. All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules</li> + </ul> + + <p> + For users upgrading from PHP 5.4 there is a migration guide available + <a href="http://php.net/migration55">here</a>, detailing the changes between PHP 5.4 and PHP 5.5.0. + </p> + + <p> + For a full list of changes in PHP 5.5.0, see the <a href="/ChangeLog-5.php#5.5.0">ChangeLog</a>. + </p> + </div> + </content> +</entry> diff --git a/include/releases.inc b/include/releases.inc index 4af23af..a3a216e 100644 --- a/include/releases.inc +++ b/include/releases.inc @@ -2,6 +2,75 @@ $OLDRELEASES = array ( 5 => array ( + '5.5.0' => + array ( + 'announcement' => + array ( + 'English' => '/releases/5_5_0.php', + ), + 'source' => + array ( + 0 => + array ( + 'filename' => 'php-5.5.0.tar.bz2', + 'name' => 'PHP 5.5.0 (tar.bz2)', + 'md5' => 'daf2d54e79def9fd0fb2ac7dfcefb7f3', + 'date' => '20 Jun 2013', + ), + 1 => + array ( + 'filename' => 'php-5.5.0.tar.gz', + 'name' => 'PHP 5.5.0 (tar.gz)', + 'md5' => '79c4e7a8cb0f8e2e072120775b92c523', + 'date' => '20 Jun 2013', + ), + 2 => + array ( + 'filename' => 'php-5.5.0.tar.xz', + 'name' => 'PHP 5.5.0 (tar.xz)', + 'md5' => 'c7df0cb28cfff4e277fd9cd9b73cebfb', + 'date' => '20 Jun 2013', + ), + 3 => + array ( + 'link' => 'http://windows.php.net/download/#php-5.5', + 'name' => 'Windows 5.5.0 binaries and source', + ), + ), + 'date' => '20 Jun 2013', + 'museum' => false, + ), + '5.4.16' => + array ( + 'announcement' => + array ( + 'English' => '/releases/5_4_16.php', + ), + 'source' => + array ( + 0 => + array ( + 'filename' => 'php-5.4.16.tar.bz2', + 'name' => 'PHP 5.4.16 (tar.bz2)', + 'md5' => '3d2c694d28861d707b2622c3cc941cff', + 'date' => '06 Jun 2013', + ), + 1 => + array ( + 'filename' => 'php-5.4.16.tar.gz', + 'name' => 'PHP 5.4.16 (tar.gz)', + 'md5' => '3940a5295872964495f9c56596272d68', + 'date' => '06 Jun 2013', + ), + 2 => + array ( + 'link' => 'http://windows.php.net/download/#php-5.4', + 'name' => 'Windows 5.4.16 binaries and source', + ), + ), + 'date' => '06 Jun 2013', + 'museum' => false, + ), '5.4.15' => array ( 'announcement' => diff --git a/include/version.inc b/include/version.inc index 66439d4..4a78c26 100644 --- a/include/version.inc +++ b/include/version.inc @@ -14,6 +14,17 @@ * ), * ), * );6 Dec +/* PHP 5.5 Release */ +$PHP_5_5_RC = false; // Current RC version (e.g., '5.6.7RC1') or false +$PHP_5_5_RC_DATE = '23 May 2013'; + +$PHP_5_5_VERSION = "5.5.0"; +$PHP_5_5_DATE = "20 Jun 2013"; +$PHP_5_5_MD5 = array( + "tar.bz2" => "daf2d54e79def9fd0fb2ac7dfcefb7f3", + "tar.gz" => "79c4e7a8cb0f8e2e072120775b92c523", + "tar.xz" => "c7df0cb28cfff4e277fd9cd9b73cebfb", +); /* PHP 5.4 Release */ $PHP_5_4_RC = '5.4.17RC1'; // Current RC version (e.g., '5.6.7RC1') or false $PHP_5_4_RC_DATE = '20 Jun 2013'; @@ -39,6 +50,33 @@ $PHP_5_3_MD5 = array( $RELEASES = array( 5 => array( + $PHP_5_5_VERSION => array( + "announcement" => true, + "source" => array( + array( + "filename" => "php-$PHP_5_5_VERSION.tar.bz2", + "name" => "PHP $PHP_5_5_VERSION (tar.bz2)", + "md5" => $PHP_5_5_MD5["tar.bz2"], + "date" => $PHP_5_5_DATE, + ), + array( + "filename" => "php-$PHP_5_5_VERSION.tar.gz", + "name" => "PHP $PHP_5_5_VERSION (tar.gz)", + "md5" => $PHP_5_5_MD5["tar.gz"], + "date" => $PHP_5_5_DATE, + ), + array( + "filename" => "php-$PHP_5_5_VERSION.tar.xz", + "name" => "PHP $PHP_5_5_VERSION (tar.xz)", + "md5" => $PHP_5_5_MD5["tar.xz"], + "date" => $PHP_5_5_DATE, + ), + array( + "link" => 'http://windows.php.net/download/#php-5.5', + "name" => "Windows $PHP_5_5_VERSION binaries and source", + ), + ), + ), $PHP_5_4_VERSION => array( "announcement" => true, "source" => array( @@ -84,7 +122,7 @@ $RELEASES = array( ), ); -$PHP_5_VERSION = $PHP_5_4_VERSION; // Some scripts require this set -$PHP_5_DATE = $PHP_5_4_DATE; // Used by buumpRelease script -$PHP_5_RC_DATE = $PHP_5_4_RC_DATE; // Used by master +$PHP_5_VERSION = $PHP_5_5_VERSION; // Some scripts require this set +$PHP_5_DATE = $PHP_5_5_DATE; // Used by buumpRelease script +$PHP_5_RC_DATE = $PHP_5_5_RC_DATE; // Used by master diff --git a/releases/5_5_0.php b/releases/5_5_0.php new file mode 100644 index 0000000..a7d5aaa --- /dev/null +++ b/releases/5_5_0.php @@ -0,0 +1,51 @@ +<?php +// $Id: 5_2_0.php,v 1.4 2007/01/16 16:04:05 bjori Exp $ +$_SERVER['BASE_PAGE'] = 'releases/5_5_0.php'; +include_once $_SERVER['DOCUMENT_ROOT'] . '/include/prepend.inc'; +site_header("PHP 5.5.0 Release Announcement"); +?> + +<h1>PHP 5.5.0 Release Announcement</h1> +<p> +The PHP development team is proud to announce the immediate availability +of PHP <a href="http://php.net/downloads.php#v5.5.0">5.5.0</a>. +This release includes a large number of new features and bug fixes. +</p> + +<p> +<b>The key features of PHP 5.5.0 include:</b> +</p> +<ul> + <li>Added <a href="http://www.php.net/generators">generators</a> and coroutines.</li> + <li>Added <a href="http://www.php.net/exceptions">"finally"</a> keyword. </li> + <li>Added <a href="http://www.php.net/password">simplified password hashing API</a>.</li> + <li>Added support for constant array/string dereferencing.</li> + <li>Added Class Name Resolution As Scalar Via "class" Keyword</li> + <li>Added support for using empty() on the result of function calls and other expressions</li> + <li>Added support for non-scalar Iterator keys in foreach</li> + <li>Added support for list in foreach</li> + <li>Added Zend Opcache extension and enable building it by default (OPCode cache)</li> + <li>A lot more improvements and fixes</li> +</ul> + +<p> +<b>Changes that affect compatibility:</b> +</p> +<ul> + <li><a href="http://www.php.net/php-logo-guid">PHP logo GUIDs removed</a> have been removed</li> + <li>Windows XP and 2003 support dropped</li> + <li>Case insensitivity is no longer locale specific. All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules</li> +</ul> + +<p> +For users upgrading from PHP 5.4 there is a migration guide available +<a href="http://php.net/migration55">here</a>, detailing the changes between +PHP 5.4 and PHP 5.5.0. +</p> + +<p> + For a full list of changes in PHP 5.5.0, see the + <a href="/ChangeLog-5.php#5.5.0">ChangeLog</a>. +</p> + +<?php site_footer(); ?>