PrevUpHomeNext

Appendix - Release Notes

RCF 2.2.0.0 - 2016-04-13
RCF 2.1.0.0 - 2015-06-01
RCF 2.0.1.101 - 2014-09-06
RCF 2.0.1.100 - 2014-04-24
RCF 2.0.0.2685 - 2013-07-17
RCF 2.0.0.2683 - 2013-06-18
RCF 2.0.0.2682 - 2013-06-01
RCF 2.0.0.2679 - 2013-03-27
RCF 2.0.0.2678 - 2013-03-07
RCF 2.0.0.2675 - 2013-01-03
RCF 2.0.0.2673 - 2012-10-28
RCF 2.0.0.2672 - 2012-10-23
RCF 2.0.0.2670 - 2012-10-16
RCF 2.0.0.2668 - 2012-10-15
RCF 2.0.0.2665 - 2012-09-29
RCF 2.0.0.2664 - 2012-09-24
RCF 2.0.0.2661 - 2012-09-02
RCF 2.0.0.2648 - 2012-08-19
RCF 1.3.1
RCF 1.3
RCF 1.2
RCF 1.1
RCF 1.0
RCF 0.9d
RCF 0.9c
  • Fix clock skew issues on Linux by using CLOCK_MONOTONIC. Only enabled if RCF_USE_CLOCK_MONOTONIC is defined.
  • Add support for IPv6 UDP multicasting.
  • Add support for Basic and NTLM proxy authentication when using HTTPS. NTLM authentication is only supported in Windows builds.
  • Fix various other bugs reported by email and on forums.
  • Fix compatibility issues with Visual Studio 2015.
  • Fix compatibility issues with Boost 1.60.0.
  • Downloads:
  • Significant improvements to HTTP/HTTPS support, including
    • Support for HTTP reverse proxies.
    • Maintaining RCF sessions across multiple HTTP connections.
  • Publish/subscribe now supported over HTTP and HTTPS.
  • Fix for performance issue with asio deadline_timer objects being associated with the wrong io_service object.
  • UdpClientTransport - disconnect() should close the local socket, so subsequent calls use a new socket and port.
  • UdpServerTransport - fix for thread init functors not being called.
  • Schannel-based SSL - change default protocol from SSL 3.0 to TLS 1.0 .
  • Downloads:
  • Fix default settings of RCF_FEATURE_SF and RCF_FEATURE_BOOST_SERIALIZATION config macros, to respect legacy RCF_USE_SF_SERIALIZATION and RCF_USE_BOOST_SERIALIZATION macros.
  • Fix compiler error when deriving custom class from RcfClient<>.
  • Fix compiler warnings appearing in Visual Studio 2013 Update 3, about deprecated functions in Winsock.
  • Downloads:
  • Fix potential busy loop for multithreaded UDP servers.
  • Expose RcfServer::getFilterService() for code using legacy custom filters.
  • Fix for RCF_USE_PROTOBUF define not working.
  • Fix potential handle leak in Windows thread implementation (win_thread.hpp).
  • Fix for thread joining in Windows thread implementation (win_thread::join()) - contributed by acDev on support forums.
  • Fix bug in shutdown order for RcfServer.
  • Implement RCF_OPENSSL_STATIC define, to allow static linking to OpenSSL.
  • Explicitly unload zlib and OpenSSL DLL's, when deinitializing RCF.
  • Implement serialization for various QT classes - see SF/Q*.hpp. Contributed by acDev on support forums.
  • Fix serialization for std::vector<bool>.
  • Implement serialization for std::bitset<>.
  • Implement SF_SERIALIZE_ENUM_CLASS macro, to simplify serialization of C++11 enum classes.
  • Fix compiler error when serializing shared_ptr<const T>.
  • Publish/subscribe - published messages are now sent asynchronously and concurrently on all subscriber connections.
  • Implement Publisher::getSubscriberCount(), to return number of subscriptions for a publisher.
  • Downloads:
  • More informative error messages upon certificate validation failure, when using OpenSSL.
  • Fix for thread local cache leaks reported by Visual Leak Detector.
  • Fix order of destruction issue in RcfServer destructor, when using multiple server transports.
  • Downloads:
  • Fix potential order of destruction problem in SessionTimeoutService.
  • Fix bool conversion compiler error in RcfSession::hasDefaultServerStub() (reported on gcc 4.6.3) .
  • Accumulate multiple ByteBuffer's in SSPI filter, to prevent potential fragmentation of network send operations.
  • ThreadPool refactored, with simpler constructors and get / set methods.
  • Classes renamed: I_Endpoint to Endpoint, I_ServerTransport to ServerTransport, I_ClientTransport to ClientTransport, I_NetworkSession to NetworkSession, I_RemoteAddress to RemoteAddress.
  • Removed NamedPipeEndpoint class. Code using NamedPipeEndpoint should use Win32NamedPipeEndpoint or UnixLocalEndpoint instead.
  • Refactoring and simplifications to SSL functionality:
    • Added RCF::setSslImplementation(), RcfServer::setSslImplementation() and ClientStub::setSslImplementation() , to configure whether RCF uses Schannel or OpenSSL.
    • Renamed setSslCertificate() to setCertificate(), and setSslCaCertificate() to setCaCertificate().
    • Merged certificate validation callback signature, from boost::function<bool(OpenSslEncryptionFilter &)> and boost::function<bool(SspiFilter &)> , to boost::function<bool(I_Certificate *)>.
    • Merged setSchannelCertificateValidationCb() and setOpenSslCertificateValidationCb() , to setCertificateValidationCallback().
    • Renamed setSchannelDefaultCertificateValidation() to setEnableSchannelCertificateValidation().
    • Added Win32Certificate::getCertificateName(), Win32Certificate::getIssuerName(), X509Certificate::getCertificateName(), and X509Certificate::getIssuerName() functions.
    • Referencing arbitrary Windows stores from PfxCertificate::addToStore() and StoreCertificate::StoreCertificate() , using the Win32CertificateLocation and Win32CertificateStore enums.
    • Added StoreCertificateIterator class, for iterating through certificates in a Windows store.
  • Downloads:
  • Add dummy parameters to RCF::init() and RCF::RcfInitDeinit::RcfInitDeinit(), to trap compiler define mismatches when building RCF as a DLL.
  • Server throws an exception immediately, if a client specifies a ping-back interval that is less than the minimum ping-back interval of the server.
  • Downloads:
  • Fix compatibility with Boost 1.53.0, by removing usages of boost::shared_static_cast<>.
  • Increase the maximum number of RCF methods in a RCF interface, from 100 to 200. If you need more than 100 methods, define RCF_MAX_METHOD_COUNT=200 in your build.
  • zlib and OpenSSL libraries are now loaded dynamically at runtime, rather than linked. This means that if you are building RCF with RCF_USE_ZLIB or RCF_USE_OPENSSL, you no longer need to link to zlib and OpenSSL. RCF will load the zlib and OpenSSL libraries at runtime, on the first execution of any compression code, or OpenSSL-based encryption code.
  • Changed Visual Studio demo solution, to build and use a RCF DLL.
  • Changed cmake demo projects, to link against pthread and dl on non-Windows platforms.
  • Downloads:
  • Trigger compiler error if user defines UNICODE or _UNICODE when building RCF on non-Windows platforms.
  • Fix compiler error when using RCF_USE_BOOST_FILESYSTEM together with RCF_USE_BOOST_SERIALIZATION.
  • Downloads:
  • Fix compiler error when RCF_USE_BOOST_SERIALIZATION is defined but not RCF_USE_SF_SERIALIZATION.
  • Improve JSON-RPC response message from server, when server fails to parse JSON-RPC request.
  • Downloads:
  • Reinstate support for UNIX domain socket transports.
  • Preserve last file modification timestamps, when transferring files.
  • Add I_ServerTransport::getInitialNumberOfCOnnections() / I_ServerTransport::setInitialNumberOfCOnnections() to get and set the initial number of listening connections that are created when a server transport starts. Default value is 1.
  • Fix Winsock compiler errors in Visual Studio 2003 demo projects, by defining WIN32_LEAN_AND_MEAN.
  • Downloads:
  • Introduce RCF_USE_BOOST_ASIO configuration macro, to build RCF against the version of Asio that is in Boost. If RCF_USE_BOOST_ASIO is not defined, RCF will be built against the version of Asio that is included in RCF.
  • Fix compiler errors when building on Cygwin. For Cygwin builds, RCF_USE_BOOST_ASIO is defined automatically.
  • Fix bug with asynchronous call dispatching, when used with oneway calls.
  • Fix possible busy loop in RCF_VERIFY() macro.
  • Downloads:
  • 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.
  • Downloads:
  • 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 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.
  • Downloads:
  • 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:
    • Added documentation for publish/subscribe topics.
    • Added documentation for Protocol Buffer support.
    • Rewrote section on Versioning.
    • Documented workaround for internal compiler error with Borland C++Builder 2007.
    • Added release notes.
  • Downloads:
  • 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.
  • Downloads:
  • 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.
  • Downloads:
  • 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.
  • Downloads:
  • 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.

PrevUpHomeNext