Actually it targets three compilers (+clang). I might add that Boost.ASIO only officially supports Windows, Linux, Solaris and OS X, and only the compilers MSVC7.1 or later and g++ 3.3 or later. Some would say that is a fairly narrow set in itself.
That's not quite what I read here:
http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/overview/implem entation.html
See for yourself at http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/using.html. I agree that perhaps that list, given the list you linked to, is now out of date.
And the compilers you mentioned as officially supported by ASIO actually cover pretty much every compiler out there nowdays.
Comparing that with your requirement of the compiler that has not even been released, it doesn't look like AFIO portability level will be even remotely close to that of ASIO.
Given that we knew that VS2012 would get variadic templates later this year (which it will in the form of VS2013), we decided to just go ahead with what C++11 features will be available to > 90% of C++ users by the end of
That surely should satisfy the portability requirement, if not, then we'll work backwards until we reach > 95% of C++ users or > 99% if Boost peer review really, really wants it.
I think your estimate of "> 90% of C++ users by the end of 2013" is much too optimistic. People in corporate sector are very reluctant to update their toolsets, so expect people trying to use your new library with 3-5 year
We can work around the lack of variadic templates, and therefore support vanilla VS2012 if peer review demands it. Of course VS2012 won't make binaries which can run on Windows XP :( so maybe VS2010 support will also be demanded by peer review. If it is, we'll do what is required to meet VS2010. 2013. old
compilers.
I know, C++11 has many fancy features and all, and I'm all for its adoption too. But Boost also serves practical purpose, and if people can't use your
I used the qualifier "available to" with purpose: I agree that a compiler may be available to > 90% of C++ users but for whatever reason those users do not avail of that compiler. FYI for my other open source I still get regular bug submissions for MSVC6 breakage due to my use of C++98 features, so I'm well aware what corporate is like. That said, this is a new greenfield library, and therefore no legacy compiler technology is inconvenienced by its compiler requirements. I might add that as C++ Now 2013 showed, there are quite a few new Boost libraries on their way which are C++11 only and will only ever be C++11 only: I saw presentations on new C++11 only versions of Boost.Proto and Boost.Spirit for example. library then
that just limits its usefulness. So unless you trying to make some academic work here, the library should be more portable.
If a corporate end user really, really wants the library working on their compiler toolset, they are always free to sponsor a port to that toolset. It's all open source. Niall --- Opinions expressed here are my own and do not necessarily represent those of BlackBerry Inc.
On 17.06.2013 20:25, Niall Douglas wrote:
We can work around the lack of variadic templates, and therefore support vanilla VS2012 if peer review demands it. Of course VS2012 won't make binaries which can run on Windows XP :( so maybe VS2010 support will also be demanded by peer review. If it is, we'll do what is required to meet VS2010. JFYI: the VS2012 Update 1 can build binaries which can run on WinXP. You just need to specify the v110_xp toolset in the project options.
-- Sergey Cheban
On Mon, Jun 17, 2013 at 08:37:18PM +0400, Sergey Cheban wrote:
On 17.06.2013 20:25, Niall Douglas wrote:
We can work around the lack of variadic templates, and therefore support vanilla VS2012 if peer review demands it. Of course VS2012 won't make binaries which can run on Windows XP :( so maybe VS2010 support will also be demanded by peer review. If it is, we'll do what is required to meet VS2010. JFYI: the VS2012 Update 1 can build binaries which can run on WinXP. You just need to specify the v110_xp toolset in the project options.
Specifying this a bit closer: VS2012 RTM can't. VS2012 Update 1 can. VS2012 Update 2 can build ones that break if ATL is used, so not really. VS2012 Update 3 RC2 can. Not that this helps overly much, as Boost doesn't support toolset selection and you have to manually override %CL%, %INCLUDE%, %LIB% and more. -- Lars Viklund | zao@acc.umu.se
We can work around the lack of variadic templates, and therefore support vanilla VS2012 if peer review demands it. Of course VS2012 won't make binaries which can run on Windows XP :( so maybe VS2010 support will also be demanded by peer review. If it is, we'll do what is required to meet VS2010. JFYI: the VS2012 Update 1 can build binaries which can run on WinXP. You just need to specify the v110_xp toolset in the project options.
Specifying this a bit closer: VS2012 RTM can't. VS2012 Update 1 can. VS2012 Update 2 can build ones that break if ATL is used, so not really. VS2012 Update 3 RC2 can.
Not that this helps overly much, as Boost doesn't support toolset selection and you have to manually override %CL%, %INCLUDE%, %LIB% and more. Currently, you don't need to override anything to build the Boost
On 17.06.2013 21:05, Lars Viklund wrote: libraries that can be used with the v110_xp toolset. Unfortunately, cflags=/arch:IA32 must be specified to make the Boost libraries compatible with old CPUs that don't support SSE (we have several customers who complained about this when we had switched to the VS2012). SSE2 is the default architecture for the VS2012. -- Sergey Cheban
On Mon, Jun 17, 2013 at 09:51:53PM +0400, Sergey Cheban wrote:
Specifying this a bit closer: VS2012 RTM can't. VS2012 Update 1 can. VS2012 Update 2 can build ones that break if ATL is used, so not really. VS2012 Update 3 RC2 can.
Not that this helps overly much, as Boost doesn't support toolset selection and you have to manually override %CL%, %INCLUDE%, %LIB% and more. Currently, you don't need to override anything to build the Boost
On 17.06.2013 21:05, Lars Viklund wrote: libraries that can be used with the v110_xp toolset.
I'm suspicious over this statement. I can't see how libraries with a minimum subsystem of 6.0 could ever have a chance of loading on an XP box, unless the XP loader is insane enough to ignore such fundamental restrictions. Part of the instructions [1] to implement v110_xp-like targetting on the command line explicitly instructs to set the subsystem to 5.01/5.02 and to use a specific flavor of WSDK 7.1. If binaries built with v110 would work as-is, why bother with v110_xp's distinct SDK and build settings? I guess there might be enough luck involved by none of Boost using any of the explodey parts of the WSDK, like ATL and the other mines, but it still feels rather empirical.
Unfortunately, cflags=/arch:IA32 must be specified to make the Boost libraries compatible with old CPUs that don't support SSE (we have several customers who complained about this when we had switched to the VS2012). SSE2 is the default architecture for the VS2012.
[1] http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx -- Lars Viklund | zao@acc.umu.se
participants (4)
-
Lars Viklund
-
Niall Douglas
-
Sergey Cheban
-
Stephan T. Lavavej