[Tnfox-discussion] v0.80 of TnFOX released
Brought to you by:
ned14
From: Niall D. <s_s...@ne...> - 2004-07-13 03:57:50
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Homepage: http://nedprod.com/TnFOX/ Docs: http://tnfox.sourceforge.net/TnFOX/html/ [Please note that FreeBSD and Win32 binaries will be uploaded tomorrow - sorry, I'm too tired to continue uploading tonight] This is a big release for the third beta release of TnFOX. As would be expected in over three months of testing, a huge number of bugs have been fixed but furthermore features have been tweaked for easier usage, small new features added and some optimisation done on certain classes now that they are mature. The TnFOX homepage now contains a table showing the completedness of each of the TnFOX extension classes. I'll only list new features here: * FOX v1.2.4 merged and FXString has been fully TnFOX-ised and now throws an exception if memory is not available for the string. * Lots of default constructors added to classes which didn't have them. Many other small API tweaks here and there. * FXIPCChannel is now mature having been very extensively tested and hand optimised:- New message routing facilities have been added and messages can now be tunnelled from one channel to another even ones unknown to the bridge; Messages now self-optimise endian conversion automatically; Extra robustness features are now present to allow FXIPCChannel to be attacked maliciously. Testing shows that FXIPCChannel is substantially faster than CORBA (OmniOrb). * All QDictBase subclasses can now have their table size be dynamically adjusted according to runtime factors by QDICTDYNRESIZE. * FXThreadPool now works, having been unintentionally completely broken in previous versions. It's also mature and hand optimised. * Generic::instantiateH has been reimplemented - it now causes less compiler slowdown and is much faster to compile. All metaprogramming tools can now take up to four variable parameters. * Build system has been much enhanced:- Whole Program Optimisation supported for compilers which have it (MSVC, ICC); Due to user request, build system can now always generate a static library; MSVC and ICC optimisation options have been hand tuned for performance. * Full support for GCC v3.5 upcoming symbol visibility extension added - now all private classes are marked as such, substantially improving generated code quality. * Linux kernel 2.6 support added. Kernel 2.6.6 is noticeably faster and less memory hungry than 2.4 which is good because 2.6.5 was slow and had broken shared memory too. All Linux precompiled binaries are now for RedHat Fedora Core 2. * Substantial improvements to the custom memory pool infrastructure, including a new port of ptmalloc2 from glibc v2.3.3. Threads can now set a "current heap" which prevents remote resource depletion attacks. This infrastructure is now mature and hand optimised. * Threading support is now mature and hand optimised. In particular, all operations involving a FXMutex are now as efficient as it's humanly possible to make it. * Lastly, unfortunately the python bindings library on POSIX still doesn't work fully - any exceptions thrown by the library (eg; when python raises an exception) lose their typeinfo should they exit that shared object and thus fail to match any catch handler. This may be a long-standing bug in GCC/GNU ld/Linux (http://sources.redhat.com/ml/libc-alpha/2002-05/msg00222.html) or indeed, it may not. Let's hope I can find a solution by next release - v0.80 is actually a whole seven days late just from investigating this one issue :( A few more words on FXIPCChannel performance - on my machine (dual Athlon 1700 running Win2k), I can sustain the following figures for operations across two IPC channels across pipes with a tunnel on the remote end: Ops per sec: 29770 asynchronous, 5306 synchronous. Multiply the first by two and the second by four to roughly calculate ops/sec across a single connection. Pipes are known to be much slower on Win2k than Linux. With sockets: 12981 asynchronous, 3018 synchronous. With sockets and 128 bit AES encryption: 5633 asynchronous, 1469 synchronous. All these figures can be improved upon again with Profile Guided Optimisation (ICC, the upcoming MSVC8) or even simply symbol ordering within the binary to improve cache locality. Enjoy! Cheers, Niall -----BEGIN PGP SIGNATURE----- Version: idw's PGP-Frontend 4.9.6.1 / 9-2003 + PGP 8.0.2 iQA/AwUBQPNdyMEcvDLFGKbPEQKQZwCguQsryau3WYJMnkGSbzRO/Fu7Q28AoImF cWHPqayORGcC0eIKitjWxess =8rbt -----END PGP SIGNATURE----- |