From dev-return-41653-archive-asf-public=cust-asf.ponee.io@ignite.apache.org Mon Nov 12 11:39:15 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 68A83180660 for ; Mon, 12 Nov 2018 11:39:15 +0100 (CET) Received: (qmail 90733 invoked by uid 500); 12 Nov 2018 10:39:14 -0000 Mailing-List: contact dev-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list dev@ignite.apache.org Received: (qmail 90722 invoked by uid 99); 12 Nov 2018 10:39:14 -0000 Received: from mail-relay.apache.org (HELO mailrelay1-lw-us.apache.org) (207.244.88.152) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Nov 2018 10:39:14 +0000 Received: from mail-ua1-f42.google.com (mail-ua1-f42.google.com [209.85.222.42]) by mailrelay1-lw-us.apache.org (ASF Mail Server at mailrelay1-lw-us.apache.org) with ESMTPSA id 95D921728 for ; Mon, 12 Nov 2018 10:39:13 +0000 (UTC) Received: by mail-ua1-f42.google.com with SMTP id u19so2856741uae.4 for ; Mon, 12 Nov 2018 02:39:13 -0800 (PST) X-Gm-Message-State: AGRZ1gJDCprHNUSo09QNUpOtxegKRQJi6dUOtXFOVBkBryZGBqx3cUYn uEHZ1Y15jvoQxEboWg92bFunCApXj4ULhqSBULDjjQ== X-Google-Smtp-Source: AJdET5clOyDoM4JOjwMTRBKHf6jImC/Laultz8ImhXr0OZeXIjxr0KWpGV4ly4PPJCwTDe67wKoA6e0pRd8g8PCVEOA= X-Received: by 2002:ab0:70b4:: with SMTP id q20mr185902ual.24.1542019153191; Mon, 12 Nov 2018 02:39:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Igor Sapego Date: Mon, 12 Nov 2018 13:39:00 +0300 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Update our C++ library to C++11 standard To: dev Content-Type: multipart/alternative; boundary="000000000000dd0449057a754fd7" --000000000000dd0449057a754fd7 Content-Type: text/plain; charset="UTF-8" Vladimir, I'd wish we could do that, but unfortunately, even VS 2017 does not support all C++11 (and even C++03) features [1]. So, maybe we should also speak about dropping support of old VS and moving to at least VS 2012. You can find the benefits of this at [2]. For example, this will give us native support of atomics, fences, threads and also better language features, that can help a lot when developing API and help finding bugs during compilation. If we will adopt the "limited C++11" approach, then I believe we will need to update our API to make it more modern and convenient for C++11 users. But, unfortunately, this won't give us the complete support of C++11. Something else we should also consider here, is that C++ community can be very conservative, so some part of community could still be on C++03. [1] - https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance?view=vs-2017 [2] - https://msdn.microsoft.com/en-gb/library/hh567368.aspx Best Regards, Igor On Mon, Nov 12, 2018 at 10:28 AM Vladimir Ozerov wrote: > Igniters, > > Over time we were very conservative about language levels for our libraries > to be able to target wider platforms. But it looks like some of them are > way too old, what doing more harm than good. > > For C++ we still use C++03 standard, which 15 years old. C++11, C++15 and > C++17 were released since then. I propose to plan upgrade to C++11 version > at least. May be event C++15. Major improvements in C++11: > > 1) Standard threading model - we will be able to remove a lot > platform-dependent code (atomics, shared pointers, etc) > 2) Rvalues - most probably we will be able to benefit from move semantics > in terms of both performance and cleaner API > 3) Lambdas - this needs to be investigated, but may be we will be able to > integrate them into our compute API. > > If agreed we should plan it to AI 3.0 release, since this is a breaking > change. > > What do you think? > > Vladimir. > --000000000000dd0449057a754fd7--