nitpicks
[plcapi.git] / NEWS
diff --git a/NEWS b/NEWS
index 236358c..9ef3f45 100644 (file)
--- a/NEWS
+++ b/NEWS
-XML-RPC for PHP version 4.0.0 - 201X/Y/Z
+XML-RPC for PHP version 4.5.1 - unreleased
+
+* improved: made it easier to subclass the Helper\Charset class by allowing `instance` to use late static binding
+
+* fixed: reinstated access to xmlrpc_server->dmap (for users of the v3 API)
+
+* fixed: method `xmlrpc_encode_entitites` (for users of the v3 API)
+
+* improved: split the code of the demo server in multiple files, describing better the purpose of each
+
+
+XML-RPC for PHP version 4.5.0 - 2020/12/31
+
+* new: it is now possible to control the precision used when serializing DOUBLE values via usage of
+  `PhpXmlRpc::$xmlpc_double_precision`
+
+* fixed: `Encoder::encode` would not correctly encode DateTime and DateTimeImmutable objects
+
+* improvements to to the Helper\Date class in rejecting invalid date strings
+
+* improvements to the Wrapper class in identifying required arguments types from source code phpdoc: support 'array[]',
+  'DateTime' and 'DateTimeImmutable'
+
+* improvements to the support of the XMLRPC extension emulation (now provided by the phpxmlrpc/polyfill-xmlrpc package)
+
+* minor improvements to the Charset helper: it now loads character set conversion  tables on demand, leading to
+  slightly lower memory usage and faster execution time when using UTF8 everywhere.
+  NB: take care if you have subclassed it!
+
+* new method: `Server::isSyscall` - mostly of use to Server subclasses and friend classes such as introspectors
+
+* internal method `XMLParser::xmlrpc_ee` now accepts 3 states for its 3rd parameter instead of a bool
+
+* improvements in the inline phpdoc: tagged many methods and class member as reserved for internal usage only
+
+* minor improvements in the debugger to allow easier integration of phpxmlrpc/jsonrpc and friends
+
+* reorganized the test suite to be more manageable
+
+* removed obsolete files from the 'extras' folder; updated and moved to the 'demo' folders the perl and python
+  client scripts; moved benchmark.php and verify_compat.php to the 'extras' folder
+
+
+XML-RPC for PHP version 4.4.3 - 2020/12/17
+
+* fixed: compatibility with PHP 8.0 (fixes to the debugger, to the server's 'system.methodHelp' method and to the
+  PhpXmlRpc\Wrapper class).
+  Note that method `Value::structeach` has not been removed from the API, but it is _not_ supported when running
+  on PHP 8.0 or later - in that case it will always throw an Error.
+
+* improvements to the test stack: it is now possible to run it via Docker besides Travis; avoid using _any_ external
+  server when running tests; run Travis tests also on php 8.0; bump PHPUnit versions in use
+
+
+XML-RPC for PHP version 4.4.2 - 2020/3/4
+
+* fixed: `client->setCookie()` bug: cookie values that contain spaces are now properly encoded in a way that gets them
+  decoded back to spaces on the receiving end if the server running on php 7.4 (or does RFC-compliant cookie decoding).
+  Beforehand we were encoding spaces to '+' characters.
+
+
+XML-RPC for PHP version 4.4.1 - 2019/7/29
+
+* fixed: allow handling huge xml messages (>=10MB) (issue #71)
+
+* improved: make it easier to overtake the library's usage of `error_log`
+
+
+XML-RPC for PHP version 4.3.2 - 2019/5/27
+
+* fixed: remove one php 7.2 warning when using the v3 api
+
+* improved: the Travis tests are now run with all php versions from 5.6 to 7.3. We dropped tests with php 5.3, 5.4 and 5.5
+
+
+XML-RPC for PHP version 4.3.1 - 2018/1/20
+
+* fixed: error when using https in non-curl mode
+
+* fixed: compatibility of tests with php 7.2
+
+* fixed: html injection in sample code
+
+* fixed: warnings emitted by the *legacy* server in xmlrpcs.inc
+
+* fixed: encoding of php variables of type 'resource' when using xmlrpc_encode in php-compatibility mode
+
+* fixed: bad html tag in sample code
+
+* improved: text of error messages
+
+
+XML-RPC for PHP version 4.3.0 - 2017/11/6
+
+* fixed: compatibility with Basic/Digest/NTLM auth when using client in cURL mode (issue #58)
+
+* improved: added unit tests for Basic and Digest http auth. Also improved tests suite
+
+* new: allow to force usage of curl for http 1.0 calls, as well as plain socket for https calls, via the method
+    `Client::setUseCurl()`
+
+
+XML-RPC for PHP version 4.2.2 - 2017/10/15
+
+* fixed: compatibility with Lighttpd target servers when using client in cURL mode and request body size > 1024 bytes (issue #56)
+
+
+XML-RPC for PHP version 4.2.1 - 2017/9/3
+
+* fixed: compatibility with php 7.2 (issue #55)
+
+
+XML-RPC for PHP version 4.2.0 - 2017/6/30
+
+* improved: allow also DateTimeImmutable objects to be detected as a date when encoding
+
+
+XML-RPC for PHP version 4.1.1 - 2016/10/1
+
+* fixed: error in server class: undefined function php_xmlrpc_encode (only triggered when not using the compatibility
+    shim with old versions)
+
+
+XML-RPC for PHP version 4.1.0 - 2016/6/26
+
+* improved: Added support for receiving <I8> and <EX:I8> integers, sending <I8>
+
+    If php is compiled in 32 bit mode, and an i8 int is received from a 3rd party, and error will be emitted.
+    Integers sent from the library to 3rd parties can be encoded using the i8 tag, but default to using 'int' by default;
+    the developer will have to create values as i8 explicitly if needed.
+    The library does *not* check if an outgoing integer is too big to fit in 4 bytes and convert it to an i8 automatically.
+
+
+XML-RPC for PHP version 4.0.1 - 2016/3/27
+
+* improved: all of the API documentation has been moved out of the manual and into the source code phpdoc comments
+
+* fixed: when the internal character set is set to UTF-8 and the client sends requests (or the server responses), too
+  many characters were encoded as numeric entities, whereas some, like åäö, needed not not be
+
+* fixed: the 'valtyp' property of Response was not present in all cases; the ValType property had been added by error
+  and has been removed
+
+
+XML-RPC for PHP version 4.0.0 - 2016/1/20
 
 This release does away with the past and starts a transition to modern-world php.
 
 Code has been heavily refactored, taking care to preserve backwards compatibility as much as possible,
 but some breackage is to be expected.
 
-PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
+The minimum required php version has been increased to 5.3, even though we strongly urge you to use
+more recent versions.
 
-The minimum required php version has been increased to 5.3,
-even though we strongly urge you to use more recent versions.
+PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
 
-* new: introduction of namespaces.
+* new: introduction of namespaces and full OOP.
 
   All php classes have been renamed and moved to separate files.
   Class autoloading can now be done in accord with the PSR-4 standard.
+  All global variables and global functions have been removed.
+  Iterating over xmlrpc value objects is now easier thank to support for ArrayAccess and Traversable interfaces.
+
   Backward compatibility is maintained via lib/xmlrpc.inc, lib/xmlrpcs.inc and lib/xmlrpc_wrappers.inc.
+  For more details, head on to doc/api_changes_v4.md
 
-* improved: all php code is now formatted according to the PSR-2 standard
+* changed: the default character encoding delivered from the library to your code is now utf8.
+  It can be changed at any time setting a value to PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding
 
-* improved: this release is now tested using Travis ( https://travis-ci.org/ ).
-  Tests are executed using all php versions from 5.3 to 7.0 nightly, plus HHVM
+* improved: the library now accepts requests/responses sent using other character sets than UTF-8/ISO-8859-1/ASCII.
+  This only works when the mbstring php extension is enabled.
 
 * improved: no need to call anymore $client->setSSLVerifyHost(2) to silence a curl warning when using https
   with recent curl builds
 
+* improved: the xmlrpcval class now supports the interfaces Countable and IteratorAggregate
+
+* improved: a specific option allows users to decide the version of SSL to use for https calls.
+  This is useful f.e. for the testing suite, when the server target of calls has no proper ssl certificate,
+  and the cURL extension has been compiled with GnuTLS (such as on Travis VMs)
+
+* improved: the function wrap_php_function() now can be used to wrap closures (it is now a method btw)
+
+* improved: all wrap_something() functions now return a closure by default instead of a function name
+
+* improved: debug messages are not html-escaped any more when executing from the command line
+
+* improved: the library is now tested using Travis ( https://travis-ci.org/ ).
+  Tests are executed using all php versions from 5.3 to 7.2; code-coverage information
+  is generated using php 5.6 and uploaded to both Code Coverage and Scrutinizer online services
+
 * improved: phpunit is now installed via composer, not bundled anymore
 
 * improved: when phpunit is used to generate code-coverage data, the code executed server-side is accounted for
 
-* improved: debug messages are not html-escaped any more when executing from the command line
+* improved: the test suite has basic checks for the debugger and demo files
 
-* improved: a specific option allow users to decide the version of SSL to use for https calls.
-  This is useful f.e. for the testing suite, when the server target of calls has no proper ssl certificate,
-  and the cURL extension has been compiled with GnuTLS (such as Travis)
+* improved: more tests in the test suite
+
+* fixed: the server would not reset the user-set debug messages between subsequent service() calls
+
+* fixed: the server would not reset previous php error handlers when an exception was thrown by user code and
+  exception_handling set to 2
+
+* fixed: the server would fail to decode a request with ISO-8859-1 payload and character set declaration in the xml
+  prolog only
+
+* fixed: the client would fail to decode a response with ISO-8859-1 payload and character set declaration in the xml
+  prolog only
+
+* fixed: the function decode_xml() would not decode an xml with character set declaration in the xml prolog
+
+* fixed: the client can now successfully call methods using ISO-8859-1 or UTF-8 characters in their name
+
+* fixed: the debugger would fail sending a request with ISO-8859-1 payload (it missed the character set declaration).
+  It would have a hard time coping with ISO-8859-1 in other fields, such as e.g. the remote method name
+
+* fixed: the debugger would generate a bad payload via the 'load method synopsis' button for signatures containing NULL
+  or undefined parameters
+
+* fixed: the debugger would generate a bad payload via the 'load method synopsis' button for methods with multiple
+  signatures
+
+* improved: the debugger is displayed using UTF-8, making it more useful to debug any kind of service
+
+* improved: echo all debug messages even when there are characters in them which php deems to be in a wrong encoding;
+  previously those messages would just disappear (this is visible e.g. in the debugger)
+
+* changed: debug info handling
+    - at debug level 1, the rebuilt php objects are not dumped to screen (server-side already did that)
+    - at debug level 1, curl communication info are not dumped to screen
+    - at debug level 1, the tests echo payloads of failures; at debug level 2 all payloads
+
+* improved: makefiles have been replaced with a php_based pakefile
+
+* improved: the source for the manual is stored in asciidoc format, which can be displayed natively by GitHub
+  with nice html formatting. Also the HTML version generated by hand and bundled in tarballs is much nicer
+  to look at than previous versions
+
+* improved: all php code is now formatted according to the PSR-2 standard
 
 
 XML-RPC for PHP version 3.0.0 - 2014/6/15
@@ -40,7 +245,8 @@ XML-RPC for PHP version 3.0.0 - 2014/6/15
 This release corrects all bugs that have been reported and successfully reproduced since
 version 3.0.0 beta.
 
-The requirements have increased to php 5.1.0 - which is still way older than what you should be running for any serious purpose, really.
+The requirements have increased to php 5.1.0 - which is still way older than what you should be running for any serious
+purpose, really.
 
 It also is the first release to be installable via composer.
 
@@ -57,15 +263,19 @@ The "beta" tag is meant to indicate the fact that the refactoring has been more
 than in precedent releases and that more changes are likely to be introduced with time -
 the library is still considered to be production quality.
 
-* improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects etc...
+* improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects
+  etc...
 * improved: add support for the <ex:nil/> tag used by the apache library, both in input and output
 * improved: add support for dateTime objects in both in php_xmlrpc_encode and as parameter for constructor of xmlrpcval
 * improved: add support for timestamps as parameter for constructor of xmlrpcval
 * improved: add option 'dates_as_objects' to php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes
-* improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as explicitly binding to an ip address
+* improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as
+  explicitly binding to an ip address
 * improved: add new method SetUserAgent to xmrlpc_client to to allow having different user-agent http headers
-* improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the server is in 'phpvals' mode
-* improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map with an added option
+* improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the
+  server is in 'phpvals' mode
+* improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map
+  with an added option
 * improved: catch exceptions thrown during execution of php functions exposed as methods by the server
 * fixed: bad encoding if same object is encoded twice using php_xmlrpc_encode
 
@@ -80,13 +290,16 @@ support that ancient, broken and insecure platform.
 
 * fixed: php warning when receiving 'false' in a bool value
 * fixed: improve robustness of the debugger when parsing weird results from non-compliant servers
-* fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses comma
-* fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when communicating with some servers)
+* fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses
+  comma
+* fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when
+  communicating with some servers)
 * fixed: be more tolerant in detection of charset in http headers
 * fixed: fix encoding of UTF8 chars outside of the BMP plane
 * fixed: fix detection of zlib.output_compression
 * improved: allow the add_to_map server method to add docs for single params too
-* improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and even whole classes
+* improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and
+  even whole classes
 
 
 XML-RPC for PHP version 2.2.1 - 2008/03/06
@@ -381,3 +594,160 @@ http://cvs.sourceforge.net/viewcvs.py/phpxmlrpc/xmlrpc/ChangeLog?view=markup
 
 Please report bugs to the XML-RPC PHP mailing list or to the sourceforge project
 pages at http://sourceforge.net/projects/phpxmlrpc/
+
+
+XML-RPC for PHP version 1.0
+
+I'm pleased to announce XML-RPC for PHP version 1.0 (final). It's taken
+two years to get to the 1.0 point, but here we are, finally.  The major change
+is re-licensing with the BSD open source license, a move from the custom
+license previously used.
+
+After this release I expect to move the project to SourceForge and find
+another primary maintainer for the code.  More details will follow to the
+mailing list.
+
+It can be downloaded from http://xmlrpc.usefulinc.com/php.html
+
+Comprehensive documentation is available in the distribution, but you
+can also browse it at http://xmlrpc.usefulinc.com/doc/
+
+Bugfixes in this release include:
+
+ * Small fixes and tidying up.
+
+New features include:
+
+ * experimental support for SSL via the curl extensions to PHP.  Needs
+   PHP 4.0.2 or greater, but not PHP 4.0.6 which has broken SSL support.
+
+The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
+
+Please report bugs to the XML-RPC PHP mailing list, of which more details are
+available at http://xmlrpc.usefulinc.com/list.html, or to
+<xmlrpc@usefulinc.com>.
+
+
+XML-RPC for PHP version 1.0 beta 9
+
+I'm pleased to announce XML-RPC for PHP version 1.0 beta 9. This is
+is largely a bugfix release.
+
+It can be downloaded from http://xmlrpc.usefulinc.com/php.html
+
+Comprehensive documentation is available in the distribution, but you
+can also browse it at http://xmlrpc.usefulinc.com/doc/
+
+Bugfixes in this release include:
+
+ * Fixed string handling bug where characters between a </string>
+   and </value> tag were not ignored.
+
+ * Added in support for PHP's native boolean type.
+
+New features include:
+
+ * new getval() method (experimental only) which has support for
+   recreating nested arrays.
+ * fledgling unit test suite
+ * server.php has support for basic interop test suite
+
+The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
+
+Please test this as hard as possible and report bugs to the XML-RPC PHP
+mailing list, of which more details are available at
+http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
+
+
+XML-RPC for PHP version 1.0 beta 8
+
+I'm pleased to announce XML-RPC for PHP version 1.0 beta 8.
+
+This release fixes several bugs and adds a couple of new helper
+functions. The most critical change in this release is that you can no
+longer print debug info in comments inside a server method -- you must
+now use the new xmlrpc_debugmsg() function.
+
+It can be downloaded from http://xmlrpc.usefulinc.com/php.html
+
+Comprehensive documentation is available in the distribution, but you
+can also browse it at http://xmlrpc.usefulinc.com/doc/
+
+Bugfixes in this release include:
+
+ * fixed whitespace handling in values
+ * correct sending of Content-length from the server
+
+New features include:
+
+ * xmlrpc_debugmsg() method allows sending of debug info in comments in
+   the return payload from a server
+
+ * xmlrpc_encode() and xmlrpc_decode() translate between xmlrpcval
+   objects and PHP language arrays. They aren't suitable for all
+   datatypes, but can speed up coding in simple scenarios. Thanks to Dan
+   Libby for these.
+
+The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
+
+Please test this as hard as possible and report bugs to the XML-RPC PHP
+mailing list, of which more details are available at
+http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
+
+
+XML-RPC for PHP version 1.0 beta 7
+
+I'm pleased to announce XML-RPC for PHP version 1.0 beta 7. This is
+fixes some critical bugs that crept in. If it shows itself to be stable
+then it'll become the 1.0 release.
+
+It can be downloaded from http://xmlrpc.usefulinc.com/php.html
+
+Comprehensive documentation is available in the distribution, but you
+can also browse it at http://xmlrpc.usefulinc.com/doc/
+
+Bugfixes in this release include:
+
+ * Passing of booleans should now work as expected
+ * Dollar signs and backslashes in strings should pass OK
+ * addScalar() now works properly to append to array vals
+
+New features include:
+
+ * Added support for HTTP Basic authorization through the
+   xmlrpc_client::setCredentials method.
+
+ * Added test script and method for verifying correct passing of
+   booleans
+
+The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
+
+Please test this as hard as possible and report bugs to the XML-RPC PHP
+mailing list, of which more details are available at
+http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
+
+
+XML-RPC for PHP version 1.0 beta 6
+
+I'm pleased to announce XML-RPC for PHP version 1.0 beta 6. This is the
+final beta before the 1.0 release.
+
+It can be downloaded from http://xmlrpc.usefulinc.com/php.html
+
+Comprehensive documentation is available in the distribution, but you
+can also browse it at http://xmlrpc.usefulinc.com/doc/
+
+New features in this release include:
+
+ * Perl and Python test programs for the demo server
+ * Proper fault generation on a non-"200 OK" response from a remote host
+ * Bugfixed base64 decoding
+ * ISO8601 helper routines for translation to and from UNIX timestamps
+ * reorganization of code to allow eventual integration of alternative
+   transports
+
+The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
+
+Please test this as hard as possible and report bugs to the XML-RPC PHP
+mailing list, of which more details are available at
+http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.