Implement interface ArrayAccess in the Value class
[plcapi.git] / NEWS
diff --git a/NEWS b/NEWS
index 6d86918..b35859b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-XML-RPC for PHP version 4.0.0 - 2015/Y/Z
+XML-RPC for PHP version 4.0.0 alpha - 2015/Y/Z
 
 This release does away with the past and starts a transition to modern-world php.
 
@@ -10,24 +10,37 @@ 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: 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: debug messages are not html-escaped any more when executing from the command line
+* 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.0 nightly, plus HHVM; code-coverage information
   is generated using php 5.6 and uploaded to both Code Coverage and Scrutinizer online services
@@ -36,31 +49,60 @@ PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
 
 * improved: when phpunit is used to generate code-coverage data, the code executed server-side is accounted for
 
-* improved: the testsuite has basic checks for the debugger and demo files
+* improved: the test suite has basic checks for the debugger and demo files
+
+* improved: more tests in the test suite
+
+* fixed: the server would not reset the user-set debug messages between subsequent service() calls
 
-* fixed: the debugger would fail sending a request with ISO-8859-1 payload (it missed the character set declaration)
+* 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 prologue only
+* 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 prologue 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 prologue
+* fixed: the function decode_xml() would not decode an xml with character set declaration in the xml prolog
 
-* improved: echo all debug messages even when there are characters in them which php deems in a wrong encoding
-  (this is visible e.g. in the debugger)
+* 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
 
 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.
 
@@ -77,15 +119,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
 
@@ -100,13 +146,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