[zeromq-dev] OpenPGM Roadmap

Steven McCoy steven.mccoy at miru.hk
Mon Aug 1 06:28:33 CEST 2011


Present plans as follows:

5.1 - Stable build, r115 for POSIX and 64-bit Windows, r117 for 32-bit
Windows

5.2 - Stability changes:

Building:

   - Rename pre-processor definitions to Autoconf standards, i.e.
   CONFIG_HAVE_* to HAVE_*.
   - Move pre-processor definitions from command line to config.h.
   - Wrap Autoconf in SCons for developer builds.
   - Hardcode path for new ICC layout in SCons, distro's have not backported
   any upstream updates.
   - Add support for EkoPath 4 compiler.
   - Remove support for Debian 4.
   - Remove support for Wine 1.2, Wine 1.3 now adds or fixes the majority of
   the required APIs.  Noteworthy is still the lack of IPv6 interface
   enumeration.  Parity with Windows XP API is expected and so lack of support
   for Vista+ APIs is not a concern.
   - Force Windows XP minimum build for IPv6 API compatibility.  Builds on
   newer platforms will bring in additional functionality automatically, i.e.
   WSAPoll, Slim locks, Condition variables, interface enumeration prefixes,
   IGMPv3 and MLDv2 final-state-base multicast programming.
   - Add compatibility definition of struct group_filter for OSX.
   - Add support for Vista+ comedy API ConvertLengthToIpv4Mask(), note there
   is no IPv6 equivalent.
   - Add support for MSVC intrinsic __popcnt().
   - Update Windows compatibility header winint.h to match MSVC 2010's
   version that promotes 16-bit integers to 32-bit.  Note that header reports
   the actual data types range for int_fast16_t unlike the Windows SDK which is
   presumed a defect.
   - On MSVC 2010 now use system stdint.h, earlier compilers will use
   compatibility winint.h.

Runtime:

   - Increase default interface enumeration buffer on Windows to 15KB as per
   MSDN recommendations.
   - Implement workaround for IPv6 defect in Windows 7 SP1 for prefix length
   determination of Teredo tunnels.
   - Update Windows WSARecvMsg error notice informing removed support for
   Wine 1.2 and no support for Windows 2000.
   - Detect Windows IPv4 link-local adapters as having 16-bit network
   prefix.
   - Detect Windows non-"operationally up" interfaces as having null network
   prefixes.
   - Detect and ignore Windows IPv6 default routing network prefix which
   breaks XP compatibility on Windows 7.
   - Update IP configuration dump output to see full adapter name under
   Windows and to simplify display of interface flags and network prefix length
   and scope identifiers.
   - Display TSC frequency in kilohertz for platforms with lower timer
   clocks which appears prevalent among Core Duos and Wine execution.
   - Move Windows QPC based timer to PGM_TIMER=QPC instead of PGM_TIMER=TSC.
   - Add support for native RDTSC on Windows via PGM_TIMER=TSC.
   - Add support for Windows low resolution timers via PGM_TIMER=MMTIME to
   match performance improvements from the SQL Server development team blog due
   to QPC overheads.
   - Default timer API choice to high level APIs for better out-of-box
   compatibility and stability.

Application development:

   - Detect poll() and epoll() API availability in public headers via
   standard pre-processor definitions, remove requirement for applications to
   define CONFIG_HAVE_POLL or CONFIG_HAVE_EPOLL.
   - Resolved conflicts in stdint.h usage in C++ applications under MSVC
   2010 due to conflicting system defintions.

Testing:

   - Migrating *Check* unit tests to Google Test and Google Mock frameworks.
   - Updating core code to build in C++ for testing frameworks.


6.0 - Performance release.

   - Investigate replacing RX windows with a single multiple publisher
   window.
   - Investigate long term allocated SKBs for windows at expense of
   zero-copy.  Targets performance improvement and suitability for embedded
   platforms with tighter memory limits.
   - Investigate single-thread-locked library for optimised 0MQ usage.
   - Investigate Windows rate limiting via QoS API to remove burden of
   Windows timer resolution in user-space.
   - Investigate checksum & copy performance on modern Intel cores,
   characteristics are now different to single core Xeon performance as memcpy
   API speed has significantly improved and warrants changes.

-- 
Steve-o
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20110801/a31187b3/attachment.htm>


More information about the zeromq-dev mailing list