Product News

HPX version 0.9.8 released -- STE||AR Group

The STE||AR Group has released V0.9.8 of HPX -- A general purpose parallel C++ runtime system for applications of any scale.

HPX V0.9.8 Released

The newest version of HPX (V0.9.8) is now available for download! Please see here for the release notes.

HPX now exposes an API fully conforming to the concurrency related parts of the C++11 and the draft C++14 standards, extended and applied to distributed computing.

From the announcement:

  • A large part of the code base of HPX has been refactored and partially re-implemented: the threading and networking subsystems have been improved in performance, modularity, and robustness, the API was improved for closer conformance to the concurrency related parts of the C++11 and C++14 draft standards and the upcomming Concurrency TS.
  • We added new API functionality like hpx::migrate and hpx::copy_component which are the basic building blocks necessary for implementing higher level abstractions for system-wide load balancing, runtime-adaptive resource management, and object-oriented check-pointing and state-management.
  • We improved the distributed reference counting scheme used by HPX which helps managing distributed objects and memory.

Announcing the C++ FAQ

In addition to CppCon announced earlier this week, today the Standard C++ Foundation is pleased to announce a new unified C++ FAQ. The following introduction was written by Herb Sutter.

 

For the past 18 months, a small group of us led by Marshall Cline and myself have been hard at work on making a unified C++ FAQ available here at isocpp.org, as a wiki whose editing can be crowdsourced to keep it up-to-date with current information about modern C++.

The unified modern C++ FAQ is now ready to launch, and you can find the current content here:

C++ FAQ

The following is some background information about this project.

History and Goals

Until now, there have been several different overlapping FAQs, including notably:

  • Bjarne Stroustrup’s FAQ pages
  • Marshall Cline’s popular C++ FAQs Online
  • at least three different StackOverflow C++ FAQs in some form, last time I looked
  • and many others

However, in practice we noticed several difficulties with this status quo:

  1. Fragmentation: The existing FAQs are fragmented, so people often have to consult several of them in order to find a single answer. On the other hand, they frequently also overlap in their contents, which creates redundancy and sometimes inconsistent treatments of the same question.
  2. Staying up to date: They all (even Bjarne’s) contained some out-of-date material, because it’s just hard work for a single author or small group to maintain a good and always-updated FAQ.
  3. Legacy search rank: When people search for information about C++, search engines often lead to pages that are highly ranked because they are well established -- they have been available for a long time and are widely linked-to. But since C++11 in particular has changed modern C++ style and recommendations, much of this popular information has now become dated or incomplete.

To improve this, here are the following major goals of the new FAQ and how we are achieving them:

  1. Solve the fragmentation problem: Provide a unified merged FAQ, starting as a union of Marshall’s and Bjarne’s FAQs. Marshall and Bjarne (and Addison-Wesley) have graciously agreed to provide their FAQ contents as seed material to be the initial content of the FAQ. Marshall Cline has worked hard to import his FAQ into the new FAQ via his automated tools, and I have recently completed hand-editing over 50,000 words of Bjarne’s FAQ into the new FAQ wiki structure.
  2. Solve the up-to-dateness problem: Provide wiki-based crowdsourced editing and maintenance. Any qualified C++ expert can and should be able to add to and improve the FAQ -- including all committee members and the scores (possibly hundreds) of regular high-quality contributors on StackOverflow and other sites. Marshall Cline in particular has worked tirelessly for the past year to produce a robust wiki-based mechanism with good collision detection and resolution. (Note: Much of the imported FAQ information has already been updated, but much still needs to be done -- you can help by using the "recommend an improvement" on any FAQ title to let us know. More on that feature below.)
  3. Solve the legacy websearch problem: When people search for C++ information, they should quickly get to the latest isocpp.org FAQ. This will be simple thanks to Marshall’s and Bjarne’s cooperation: Currently much of the websearch traffic goes to their FAQs because of their long history and pagerank. Both Marshall and Bjarne will be updating their FAQs to either forward or link to the new FAQ on a per-FAQ level. (To enable this, we have maintained the internal FAQ tags Marshall was already using, and I kept a careful index mapping from Bjarne’s FAQ pages#tags to the new tags so that he can easily provide redirects.) This way, the isocpp.org FAQ should quickly become the de facto top search result for C++ FAQs and other C++ information.

cpp-faq-example.PNG

We’re also trying to provide additional features:

  • Provide new FAQ sections for community information. This includes things like "User Groups Worldwide" and "Partial List of ISO C++ Committee Members" FAQ sections.
  • Provide new FAQ sections for "What's new in C++11" and "... in C++14." This makes it easier to see "What's different if I already know [a certain previous standard supported by my compiler]."
  • Provide new FAQ sections for "C++ for {C#/Java | Objective-C | C | C++98 } developers." Some of these have already been created with seed content, but need more information from experts in those areas. We hope crowdsourcing will fill this gap relatively quickly; one new FAQ per contributor scales really well with lots of contributors while being a light load for everyone.
  • Provide a new FAQ section for "C++ Myths and Urban Legends." This will help socialize correct information by providing answers to common objections and misconceptions. C++ isn’t perfect and shouldn’t be presented that way, but it’s not nearly as imperfect as frequent incorrect claims would make it out to be. Misinformation helps no one, and we can deal with common misunderstandings here. Again, this currently contains some seed content; more to come.
  • Provide a way to subscribe to the latest/freshest information: RSS feed for FAQ changes. We've created an RSS feed for FAQ change diffs (link also available in left sidebar while in the FAQ) so that anyone can subscribe to a stream of diffs of current changes as they happen, including new FAQs and updates to existing FAQs. In the past, updates to the preexisting FAQs were often buried and undiscoverable, making them less useful than they could be. This way, people who care can easily be informed about new material, and suggest further edits.
    cpp-faq-recommend.png
  • Provide a way for anyone, not just FAQ editors, to suggest improvements. If you hover over any FAQ's title bar, you will see not only a permalink icon, but also an icon where you can "recommend an improvement to this FAQ" including to suggest new FAQs not yet in the list.
  • Provide a "moderated/curated" experience by having designated FAQ editors, but allow lots of people to become FAQ editors. Today there are already over 50 FAQ editors. If you offer good suggestions via the public "recommend an improvement" links, it probably won't be long before you start seeing Edit links appear when you visit the FAQ pages.
  • Provide a FAQ Discussion forum. For those interested in minutiae or sending suggestions directly to FAQ editors, you can subscribe to the faq-discussion forum, also available by email at faq-discussion@isocpp.org (email faq-discussion+subscribe@isocpp.org to subscribe by email).

Acknowledgments

Our huge thanks go out to Marshall Cline who has put in a vast amount of volunteer work to make this possible, and also to Bjarne Stroustrup, Eric Niebler, Marshall Clow, Peter Gordon, Pearson/Addison-Wesley and the many other FAQ editors who have already made improvements -- all of these people have already contributed a lot of work and help to this. Thank you! And thanks again to everyone who has worked hard to make this possible.

Herb

 

NT² 3.0 and Boost.SIMD -- Stable release

TThe first stable release of the 3.x series of MetaScale’s open-source software is available: NT² 3.0. It also includes its spin-off project, Boost.SIMD (not yet a Boost library). Many Issues have been closed since last beta. The main focus of this release cycle was to fix performances issues and to stabilize some parts of the API.

NT² 3.0 Release Announcement

Source and binary packages can be downloaded here

Full changelog is available here

Say hello to wxWidgets3.0

A few weeks ago wxWidgets3.0 was released, now it's time to take a look at it:

Say hello to wxWidgets3.0

From the Article

I remember the times, when wxWidgets 3.0 was already talked about, several years ago. Now, its been published in November, though I have to take a look at it. I've been using wxWidgets for years, but moved on to Qt for my own projects. So, lets have a look at wxWidgets 3.0...

C++ AMP beyond Windows: Targeting HSAIL and SPIR on Linux and other platforms

The HSA Foundation together with AMD and Microsoft recently announced an open source C++ AMP compiler implementation they have been working on, using the Clang/LLVM C++ compiler as a base but currently separate from Clang/LLVM. The implementation targets OpenCL, HSAIL, and SPIR 1.2 on Linux and other non-Windows platforms. When the work is finished, the intention is to approach the LLVM community to offer this work as a contribution back to the official Clang/LLVM code base if there is interest.

C++ AMP is an open specification from Microsoft that enables STL-like C++ extensions for massively parallel computation using GPUs and vector units, and is part of the basis for the Parallel STL proposal now under consideration for standardized parallel computations on multicore and vector hardware.

AMD released on Nov 12, 2013 a fully open sourced C++ AMP compiler based on  CLANG/LLVM with outputs to OpenCL and Khronos Group SPIR 1.2 initially. This compiler will have HSAIL support in early 2014 for HSA platforms.   This initial focus is bring about Linux support for C++AMP, complete with GPU acceleration.  AMD is also bringing their BOLT Standard Template library over to be qualified with this tool chain.

Microsoft is engaged with AMD and MultiCoreWare, by providing design and validation inputs to help drive the success of this project.

Coverage:

Bringing C++ AMP Beyond Windows via CLANG and LLVM

Boost Migrating to Git, Going Modular

The historically monolithic Boost project is (finally!) migrating to git, with each library in Boost moving into its own repository on github. The goal is to foster a more agile nimble development model and a more active library ecosystem. Create your own forks, hack, submit pull requests, and do all the good things that distributed version control lets you do. From the announcement on the Boost mailing list:

Subversion repository closing. Conversion to Git imminent.

by Beman Dawes

The Boost Steering Committee has given the final approval for the conversion from Subversion to Git, including the modularization of Boost library repositories.

The Subversion repository will be closed for all changes to all branches, including the sandbox, Sunday, November 23 2013, 00:00 hours UTC. That's 8 PM Saturday, US East Coast time, and 5 PM US West Coast time.

Please make no svn commits after that time. We will be adding a pre-commit hook that prevents commits, but please do not wait for that becomes active.

After svn is closed, the conversion will be run one last time, and then turned off. Then there is a week set aside for final validity checks, testing, and general scurrying around. When that is done, the boostorg repo on GitHub will open for business. If everything goes smoothly, it may take less than a week but if there are glitches it may take longer.

--Beman

Read the full thread here.

Visual C++ November 2013 CTP released, adds 13 new C++11/14 features

vc-ctp-nov13.PNGMicrosoft has announced a new Visual C++ Compiler CTP (Community Technology Preview):

Announcing the Visual C++ Compiler November 2013 CTP

In addition to the ISO C++ features added in last month's Visual c++ 2013 full release, this CTP adds the following additional ISO C++11 and draft ISO C++14 features in preview form:

  • Implicit move special member function generation (thus also completing =default)
  • Reference qualifiers on member functions (a.k.a. "& and && for *this")
  • Thread-safe function local static initialization (a.k.a. "magic statics")
  • Inheriting constructors
  • alignof/alignas
  • __func__
  • Extended sizeof
  • constexpr (except for member functions)
  • noexcept (unconditional)
  • C++14 decltype(auto)
  • C++14 auto function return type deduction
  • C++14 generic lambdas (with explicit lambda capture list)
  • (Proposed for C++17) Resumable functions and await

The new CTP installs as a new toolset under the Visual C++ 2013 IDE, allowing editing and building using the new Visual C++ compiler through the current shipping IDE. As this is a CTP, however, there is not yet other IDE support, and so for example the IDE may display red squiggles on valid code that will actually compile and run, as shown in the accompanying screenshot which exercises a generic lambda function having an auto parameter. If you do not already have a copy of Visual C++ 2013 installed and would like a free copy, several versions of the Visual C++ 2013 Express optimizing compiler are available for free via the Visual Studio Downloads page. 

New Stable Major wxWidgets 3.0.0 Release

logo9.jpgA new stable release of wxWidgets, the open source C++ library for creating cross-platform GUI applications with native look and feel, is now available.

This 3.0 release is a culmination of several years of work since the previous stable 2.8 series and so brings many important improvements compared to it, such as:

  • Much better and simpler to use support for Unicode.
  • New wxOSX/Cocoa port, suitable for development of 64 bit GUI applications under OS X.
  • Support for GTK+ 3 in wxGTK port.
  • Much improved documentation.
  • New webview library providing integration with the platform native HTML-rendering engine.
  • New propgrid and ribbon libraries.
  • New wxRichMessageDialog, wxInfoBar, wxCommandLinkButton, wxHeaderCtrl, wxRearrangeCtrl, wxTreeListCtrl, wxTimePickerCtrl, wxRichToolTip, wxBannerWindow, wxPersistentXXX and other classes.

as well as a huge number of other new features and bug fixes.

More information is available at wxWidgets home page and in the online documentation.

HPX version 0.9.7 released -- STE||AR Group, LSU

The STE||AR Group at Loisiana State University has released V0.9.7 of HPX -- A general purpose parallel C++ runtime system for applications of any scale.

HPX V0.9.7 Released

The newest version of HPX (V0.9.7) is now available for download! Over the past few months...

From the announcement:

  • Ported HPX to BlueGene/Q
  • Improved HPX support for Intel Xeon Phi® accelerators.
  • Reimplemented hpx::bind, hpx::tuple, and hpx::function for better performance and better compliance with the C++11 Standard. Added hpx::mem_fn.
  • Reworked hpx::when_all and hpx::when_any for better C++ compliance. Added hpx::when_any_swapped.
  • Added hpx::copy as a precursor for a migrate functionality, added hpx::get_ptr allowing to directly access the memory underlying a given component.
  • Added the hpx::lcos::broadcast, hpx::lcos::reduce, and hpx::lcos::fold collective operations.
  • Added support for more flexible thread affinity control from the HPX command line, such as new modes (balanced, scattered, compact), improved default settings when running multiple localities on the same node.
  • Added experimental executors for simpler thread pooling and scheduling. This API may change in the future as it will stay aligned with the ongoing C++ standardization efforts.
  • Massively improved the performance of the HPX serialization code. Added partial support for zero copy serialization of array and bitwise-copyable types.
  • General performance improvements of the code related to threads and futures.