Re: C++ in jemalloc

From: Warner Losh <imp_at_bsdimp.com>
Date: Thu, 5 Oct 2017 14:33:25 -0700
On Thu, Oct 5, 2017 at 2:24 PM, Ian Lepore <ian_at_freebsd.org> wrote:

> On Thu, 2017-10-05 at 14:01 -0700, Warner Losh wrote:
> > On Thu, Oct 5, 2017 at 11:59 AM, David Goldblatt
> > wrote:
> >
> > >
> > >  Hi all,
> > >
> > > The jemalloc developers have wanted to start using C++ for a while, to
> > > enable some targeted refactorings of code we have trouble maintaining
> due
> > > to brittleness or complexity (e.g. moving thousand line macro
> definitions
> > > to templates, changing the build->extract symbols->rebuild mangling
> scheme
> > > for internal symbols to one using C++ namespaces). We'd been holding
> off
> > > because we thought that FreeBSD base all had to compile on GCC 4.2, in
> > > order to support some esoteric architectures[1].
> > >
> > > The other day though, I noticed that there is some C++ shipping with
> > > FreeBSD; /usr/bin/dtc and /sbin/devd (the former claiming in the
> HACKING
> > > document that C++11 is a minimum for FreeBSD 11). This, combined with
> the
> > > fact that ports now points to a modern gcc, makes me think we were
> > > incorrect, and can turn on C++ without breaking FreeBSD builds.
> > >
> > > Am I right? Will anything break if jemalloc needs a C++ compiler to
> build?
> > > We will of course not use exceptions, RTTI, global constructors, the
> C++
> > > stdlib, or anything else that might affect C source or link
> compatibility.
> > >
> > > Thanks,
> > > David (on behalf of the jemalloc developers
> > >
> > > [1] That being said, we don't compile or test on those architectures,
> and
> > > so probably don't work there in the first place if I'm being honest.
> But
> > > we'd also like to avoid making that a permanent state of affairs that
> can't
> > > be changed.
> > >
> > For FreeBSD 10 and earlier, this would likely break all architectures
> that
> > aren't x86. Starting in FreeBSD 11, arm and powerpc are supported by
> clang,
> > but not super well. For FreeBSD 12, we're getting close for everything
> > except sparc64 (whose fate has not yet been finally decided).
> >
> > So for the popular architectures, this arrangement might work. For
> building
> > with external toolchains, it might also work. Some of the less popular
> > architectures may be a problem.
> >
> > Does that help? It isn't completely cut and dried, but it should be
> helpful
> > for you making a decision.
> >
> > Warner
>
> Wait a sec... we've been compiling C++ code with gcc 4.2 since like
> 2006.  What am I missing here that keeps this answer from being a
> simple "go for it"?
>
> Just stay away from C++11 features and gcc 4.2 should work fine.  (DTC
> may require C++11, but that was likely the author's choice given that
> there was no requirement for it to work on pre-clang versions of
> freebsd).
>

It's the ubiquity of C++11 is why I didn't just say "Go for it".

Warner
Received on Thu Oct 05 2017 - 19:33:26 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:13 UTC