Skip to content

FastRPC 8.0 Changelog

volca02 edited this page Jun 8, 2016 · 5 revisions

FastRPC 8.0 changelog

This article describes the major changes in the version 8.0 of the fastrpc library.

Changes to C++ library

  • Implemented revision 3.0 of the binary protocol, which changes the datetime wire format and integer wire format. For more information, consult Binary protocol specification. Disabled by default. To enable, force the version 3 major via ProtocolVersion object supplied to ServerProxy constructor's Config_t parameter
    • Notably, if the 3.0 or higher protocol revision is enforced, the datetime transfers whole 64bit time_t timestamp
    • The protocol change is not enabled by default to enable smooth transition to the new library version - we'll probably set the protocol v3.0 as default in future releases of this library
  • Fixed a bug in XML protocol handling of faults - the parsing of string/int parameters was order-dependent
  • Fixed the code's use of signed char magic constants, so gcc 6.x is now usable
  • Changed the multicall result to be in line with normal usage - removes the enclosing array from individual results
  • Merged-in some of the notable frpc6 changes - namely the support to use custom headers from client (via ServerProxy_t)
  • Fixed method getUnMarshaledData on FRPC::TreeBuilder_t - now it does not return nullptr references, but throws Fault_t instead.
  • Fixed potential problem with exception parameters - now all formatting calls to exception constructors are behind a static ::format method.

Changes to python library

  • Added optional, named useBinary parameter (True/False/None) to loads function that allows one to force binary/xml demarshaller
  • Implemented support for custom http headers via named parameter headers in both ServerProxy and call. ServerProxy headers are specified for it's whole lifetime. Headers supplied as a named parameter to the call operation are for that one specific call, only. Format is tuple of two string tuples.
import fastrpc
p = fastrpc.ServerProxy("http://localhost:2815/RPC2", headers=(("X-Whatever", "Hello from python"),))
p.echo("check", headers=(("X-Something", "Specific for this call"),))
  • Starting with version 8.0, the native python's Bool object is used in deserialization, unless nativeBoolean=False is specified in the specific context (most notably ServerProxy constructor)