Appendix - Release Notes
Documentation
This is a bug-fix release for RCF 1.3.
Fix for compiler error when using signed
char in RCF method signatures.
Fix performance problem when using RCF :: SspiFilter .
Multiple small message chunks are now merged into a single larger chunk
to improve network performance.
Improve SF serialization performance. Only call typeid () when necessary.
Reduced SF archive sizes. Encode small integers using a single byte rather
than 4 bytes.
Fix excessive CPU usage when using multithreaded thread pools with Boost.Asio
based transports.
Fix for boost :: any serialization. Empty boost :: any instances were causing an exception
to be thrown.
Fix bug in client-side timeout logic when polling network connection using
Windows MsgWaitForMultipleObjects () function.
Services can no longer be added or removed while an RcfServer
is running.
Fix potential null pointer crash in marshaling logic.
Rename variables named signals
and slots in order not
to interfere with QT preprocessor.
Fix preprocessor redefinition which was causing a compiler warning on OSX.
Support for IPv6 .
IP-based access
rules , to grant or deny access to IP-based servers.
IP-based client transports able to bind
to a specific local interface .
Client able to query for size
of its latest request and response messages .
User data fields
in request and response headers.
Running multiple
server transports on the same thread pool.
Server-side caching
of application objects .
Default max
message length changed from 10Kb to 1Mb.
Maximum number of methods in an RCF interface increased from 35 to 100.
Extended auto-versioning to negotiate archive
version as well as runtime
version .
SF serialization
Support for tr1 containers
and tr1 smart pointers.
Support for boost :: intrusive_ptr <> .
Serialization of std :: wstring
changed, to use UTF-8.
Boost.Serialization serialization of RCF :: Exception
now includes error arguments as well as the error message.
Fix byte ordering of fast vector serialization, for big-endian platforms.
Improved efficiency of Boost.Asio based server transports - no memory allocations
when reading or writing network data.
For Boost.Asio based server transports, added AsioServerTransport :: getIoService () to expose the internal boost :: asio :: io_service object.
Added complete example
of server-to-client callbacks ,
to User Guide.
Added FAQ ,
on server-side detection of client disconnection.
Compatibility
Support for Visual Studio 2010 compiler.
Dropped support for mingw gcc 3.2 & 3.3.
Dropped support for Borland C++ Builder 2006.
Tested against Boost versions up to 1.45.0.
Support use of Protocol
Buffers -generated classes, in RCF interfaces.
Support Protocol Buffers -based
marshaling protocol.
Support for batched
oneway calls .
Improved error messages, with context-specific arguments.
Improvements to versioning - SF archive version now passed in message header.
Signature of SF serialization functions changed, to remove redundant version
parameter.
Calling serializeParent () no longer requires type registration.
serializeParent ()
moved into SF namespace.
Added configuration macro to control behavior on assert (RCF_ALWAYS_ABORT_ON_ASSERT ).
Fix serialization of RemoteException ,
when using Boost.Serialization.
Fix several regressions introduced in 1.1.
Fix for thread-safety issue with pingback functionality.
Fix for subsecond timeouts on Unix platforms.
Fix compilation errors on Windows, if _WIN32_WINNT
<= 0x0500 .
Tested against Boost versions up to 1.42.0.
Dropped support for gcc 2.95.
Updates to the RCF User Guide :
Ping function added to RCF :: ClientStub .
Server-to-client pingbacks, for maintaining connectivity during long-running
calls (RCF :: PingBackService ).
Server-to-client callbacks.
Dynamic thread pool grows and shrinks, to accommodate client load. User
level code no longer needs to call ThreadManager :: notifyBusy () .
Progress callbacks on all transports.
Schannel-based transport filter, for SSL encryption on Windows platforms
(RCF :: SchannelFilter ).
Support for __attribute__ ( visibility ()) when exporting RCF from shared libraries
with GCC 4.x.
Memory usage optimizations.
Tested against Boost versions up to 1.39.0.
Support for more compilers (Intel C++ 9 and 10.1 for Windows, GCC 4.3)
Support for more platforms (FreeBSD and OS X).
Supports use of UNIX domain sockets as transport (RCF :: UnixLocalEndpoint ).
Tested against Boost versions up to 1.37.0.
Win32 named pipe transport implementations (RCF :: Win32NamedPipeEndpoint ).
Boost.Thread no longer required.
UDP multicasting and broadcasting.
SF serialization for boost :: tuple ,
boost :: variant , and boost :: any .
Support for exporting RCF from a DLL.
Tested against Boost versions up to 1.35.0 and Boost.Asio versions from
0.3.8.
Zero-copy, zero-heap allocation core for fast and scalable performance.
Kerberos and NTLM authentication and encryption on Windows platforms.
OpenSSL filter, for SSL authentication and encryption.
Server-side multithreading.
Server-side session objects.
Built-in runtime versioning, for backward and forward runtime compatibility.
Robust publish/subscribe functionality.
Support for legacy compilers, in particular, Visual C++ 6, Borland C++
Builder 6, and GCC 2.95.
Support for 64-bit compilers.