+1 ________________________________ Von: Roger Meier Gesendet: 18.03.2015 11:28 An: [email protected] Betreff: Re: AW: [DISCUSS] let's switch to C++11 (was Re: [jira] [Commented] (THRIFT-3043) go compiler generator uses non C++98 code)
I just installed latest mingw for Windows from http://sourceforge.net/projects/mingw-w64/ gcc.exe --version gcc.exe (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. and on Debian Jessie we have gcc 4.9.1 see https://packages.debian.org/jessie/g++-mingw-w64-x86-64 Quoting Jens Geyer <[email protected]>: > What about mingw? > ________________________________ > Von: Roger Meier > Gesendet: 18.03.2015 00:44 > An: Randy Abernethy (JIRA); [email protected] > Betreff: [DISCUSS] let's switch to C++11 (was Re: [jira] [Commented] > (THRIFT-3043) go compiler generator uses non C++98 code) > > > Hi all > > We had lot of discussions and issues about C++11 support and I think > it is time to move the master branch development towards C++11 and set > this as a dependency starting wit 0.9.3 of Apache Thrift. > > reasons to move forward: > - no feature show stopper due to C++98 dependency > - no backport of patches, it's a nightmare > - master branch should focus towards future > - evolution of compiler and cpp library > - many developers already use C++11 capable compilers > - > http://cpprocks.com/c11-compiler-support-shootout-visual-studio-gcc-clang-intel/ > - gcc support -std=c++11 since version 4.7 > see https://gcc.gnu.org/projects/cxx0x.html > - clang 3.5 > - all recent Linux distros support C++11 > - centos 7 uses gcc 4.8.2 > - Debian Jessie uses gcc 4.9.2 > - Debian Wheezy uses gcc 4.7.2 > - RHEL-7.0 uses gcc 4.8.2 > - Suse 13.2 uses gcc 4.8.3 > - Suse 13.1 uses gcc 4.8.1 > - Ubuntu utopic 14.10 uses gcc 4.9.1 > - Ubuntu trusty 14.04 LTS uses gcc 4.8.2 > - Ubuntu saucy 13.10 uses gcc 4.8.1 > - it is 2015 and C++11 is ready to use in the wild > - C++11 compilers can easy be installed on older distros > - no fork of a C++11 library > > solution for older environments: > - C++98 can be handled on the 0.9.x branch if required > - install a more recent compiler > - http://www.necessaryandsufficient.net/2014/07/c11-on-centos/ > > What do you think? > > all the best! > -roger > > > On 17.03.2015 03:49, Randy Abernethy (JIRA) wrote: >> >> [ >> https://issues.apache.org/jira/browse/THRIFT-3043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14364464#comment-14364464 >> ] >> >> Randy Abernethy commented on THRIFT-3043: >> ----------------------------------------- >> >> Hey Jens: looks good, many thanks! >> >> Hey Roger: I agree, we definitely need a Cpp11 generator and lib >> ASAP. The only thing I am suggesting is that we keep the IDL >> compiler source Cpp98 until Cpp11 is ubiquitous. My hope is that we >> can fork the Cpp98 lib to create a Cpp11 lib and fork the Cpp98 >> generator to create a Cpp11 generator (which would be written in >> Cpp98). This way folks can use Cpp11 or Cpp98 in their user code. I >> think this was the plan arrived at on some other threads. The >> THeader pull from DJW >> (https://github.com/apache/thrift/pull/357.patch) is all lib so >> should apply fine to a Cpp11 lib fork. >> >> The IDL compiler is pretty simple and has no bearing on user code. >> The path of least resistance there seems to be to keep the source >> for the IDL compiler in Cpp98. That way it will compile under Cpp11 >> or Cpp98. Win win. Rewriting the compiler in Cpp11 (or Java or Go) >> does not seem like a good use of our time and we have precious >> little of it (as you pointed out on the THeader issue). Most of the >> Cpp98 breaking patches are due to unsupported variable >> initialization and the like, seems silly to cut off a large chunk of >> compatibility we already have in place for trivial stuff like that. >> >>> go compiler generator uses non C++98 code >>> ----------------------------------------- >>> >>> Key: THRIFT-3043 >>> URL: https://issues.apache.org/jira/browse/THRIFT-3043 >>> Project: Thrift >>> Issue Type: Bug >>> Components: Go - Compiler >>> Affects Versions: 0.9.3 >>> Reporter: Randy Abernethy >>> Assignee: Jens Geyer >>> Priority: Blocker >>> Fix For: 0.9.3 >>> >>> Attachments: >>> THRIFT-3043-go-compiler-generator-uses-non-C-98-code.patch >>> >>> >>> go compiler generator uses non C++98 code causing builds to fail in >>> Centos 6 and other environments. >>> ==> default: src/generate/t_go_generator.cc:415: error: in C++98 >>> ���commonInitialisms��� must be initialized by constructor, not by >>> ���{...}��� >>> ==> default: src/generate/t_go_generator.cc:415: error: deducing >>> from brace-enclosed initializer list requires #include >>> <initializer_list> >>> ==> default: src/generate/t_go_generator.cc:415: error: deducing >>> from brace-enclosed initializer list requires #include >>> <initializer_list> >>> ==> default: src/generate/t_go_generator.cc:415: warning: extended >>> initializer lists only available with -std=c++0x or -std=gnu++0x >>> ==> default: src/generate/t_go_generator.cc:415: error: no matching >>> function for call to ���std::set<std::basic_string<char, >>> std::char_traits<char>, s >>> td::allocator<char> >, std::less<std::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > >, >>> std::allocator<std::basic_string<char, std: >>> :char_traits<char>, std::allocator<char> > > >::set(<brace-enclosed >>> initializer list>)��� >>> ==> default: >>> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_set.h:188: >>> note: candidates are: std::set<_Key, >>> _Compare, >>> _ >>> Alloc>::set(const std::set<_Key, _Compare, _Alloc>&) [with _Key = >>> std::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, _Compare = s >>> td::less<std::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > >, _Alloc = >>> std::allocator<std::basic_string<char, std::char_traits<ch >>> ar>, std::allocator<char> > >] >>> ==> default: >>> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_set.h:136: >>> note: std::set<_Key, >>> _Compare, >>> _ >>> Alloc>::set() [with _Key = std::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, _Compare = >>> std::less<std::basic_string<char, std::c >>> har_traits<char>, std::allocator<char> > >, _Alloc = >>> std::allocator<std::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > >] >>> ==> default: make[3]: *** [thrift-t_go_generator.o] Error 1 >>> ==> default: make[3]: Leaving directory `/thrift/compiler/cpp' >>> ==> default: make[2]: *** [all] Error 2 >> >> >> >> -- >> This message was sent by Atlassian JIRA >> (v6.3.4#6332) >>
