build on PRs; nitpicks
[plcapi.git] / NEWS
diff --git a/NEWS b/NEWS
index 8d8c130..99046b1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,201 @@
-XML-RPC for PHP version 4.0.0 - 2015/Y/Z
+XML-RPC for PHP version 4.6.1 - 2022/2/15
+
+* fixed: one php warning with php 8 and up
+
+
+XML-RPC for PHP version 4.6.0 - 2021/12/9
+
+* fixed: compatibility with php 8.1
+
+* improved: when encoding utf8 text into us-ascii xml, use character entity references for characters number 0-31
+  (ascii non printable characters), as we were already doing when encoding iso-8859-1 text into us-ascii xml
+
+* new: method `Server::getDispatchMap()`. Useful for non-child classes which want to f.e. introspect the server
+
+* new: increase flexibility in class composition by adopting a Dependency Injection (...ish) pattern:
+  it is now possible to swap out the Logger, XMLParser and Charset classes with similar ones of your own making.
+  Example code:
+      // 1. create an instance of a custom character encoder
+      // $myCharsetEncoder = ...
+      // 2. then use it while serializing a Request:
+      Request::setCharsetEncoder($myCharsetEncoder);
+      $request->serialize($funkyCharset);
+
+* new: method `XMLParser::parse()` acquired a 4th argument
+
+* new: method `Wrapper::wrapPhpClass` allows to customize the names of the phpxmlrpc methods by stripping the original
+  class name and accompanying namespace and replace it with a user-defined prefix, via option `replace_class_name`
+
+* new: `Response` constructor gained a 4th argument
+
+* deprecated: properties `Response::hdrs`, `Response::_cookies`, `Response::raw_data`. Use `Response::httpResponse()` instead.
+  That method returns an array which also holds the http response's status code - useful in case of http errors.
+
+* deprecated: method `Request::createPayload`. Use `Request::serialize` instead
+
+* deprecated: property `Request::httpResponse`
+
+* improved: `Http::parseResponseHeaders` now throws a more specific exception in case of http errors
+
+* improved: Continuous Integration is now running on Github Actions instead of Travis
+
+
+XML-RPC for PHP version 4.5.2 - 2021/1/11
+
+* improved: better phpdocs in the the php code generated by the Wrapper class
+
+* improved: debugger favicon and page title when used from the phpjsonrpc library
+
+* fixed: allow `Encoder::decode` to properly support different target character sets for polyfill-xmlrpc decode functions
+
+* improved: allow usage of 'epivals' for the 'parameters_type' member of methods definitions in the Server dispatch map
+
+
+XML-RPC for PHP version 4.5.1 - 2021/1/3
+
+* 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.
 
@@ -15,16 +212,22 @@ PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
   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
 
-* changed: the default encoding delivered from the library to your code is now utf8.
-  It can be changed at anytime setting a value to PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding
+* 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: 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)
@@ -36,7 +239,7 @@ PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
 * 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.0 nightly, plus HHVM; code-coverage information
+  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
@@ -47,6 +250,11 @@ PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
 
 * 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
 
@@ -563,7 +771,7 @@ New features include:
    xmlrpc_client::setCredentials method.
 
  * Added test script and method for verifying correct passing of
-        booleans
+   booleans
 
 The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt