From owner-svn-src-all@freebsd.org Tue Aug 18 21:17:47 2015 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5564A9BCE82; Tue, 18 Aug 2015 21:17:47 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailhost.stack.nl", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 1A64C267; Tue, 18 Aug 2015 21:17:47 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id A99B735930A; Tue, 18 Aug 2015 23:17:43 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id 7230428494; Tue, 18 Aug 2015 23:17:43 +0200 (CEST) Date: Tue, 18 Aug 2015 23:17:43 +0200 From: Jilles Tjoelker To: Jan Beich Cc: Jason Evans , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r286866 - in head: contrib/jemalloc contrib/jemalloc/doc contrib/jemalloc/include/jemalloc contrib/jemalloc/include/jemalloc/internal contrib/jemalloc/src include lib/libc/gen lib/libc/... Message-ID: <20150818211743.GA29760@stack.nl> References: <201508180021.t7I0LQwE016289@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 21:17:47 -0000 On Tue, Aug 18, 2015 at 09:49:44PM +0200, Jan Beich wrote: > Jason Evans writes: > >>> Index: include/malloc_np.h > [...] > >>> +typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); > >>> +typedef bool (chunk_dalloc_t)(void *, size_t, bool, unsigned); > malloc_np.h changes regressing consumers isn't surprising given the lack > of tests for jemalloc shipped with FreeBSD. > $ cc -include malloc_np.h -c -xc - In file included from :311: > In file included from :1: > /usr/include/malloc_np.h:39:55: error: unknown type name 'bool' > typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); > ^ > /usr/include/malloc_np.h:39:63: error: unknown type name 'bool' > typedef void *(chunk_alloc_t)(void *, size_t, size_t, bool *, bool *, unsigned); A #include will of course fix this, but by using 1, 0 and _Bool instead of true, false and bool you can make it work without adding namespace pollution. This might be useful if someone has bool defined or typedeffed to something else. Note that only the header files need to be uglified this way. > >>> + - Add sdallocx(), which implements sized deallocation. The primary > >>> + optimization over dallocx() is the removal of a metadata read, which often > >>> + suffers an L1 cache miss. > >> [...] > >>> + - Remove the *allocm() API, which is superseded by the *allocx() API. > >> Symbol.map and manpages haven't been updated. You can't really remove anything from Symbol.map files, since that breaks binary compatibility for applications that used the removed symbols. Such breakage usually crashes the application if and when it attempts to use a removed symbol. To avoid the breakage, wrappers invoking the new APIs should be provided; using some special symver directives, it is possible to prevent linking new applications against the obsolete symbols. A corollary is that experimental APIs should not be added to Symbol.map. It may be better for developers that want to use experimental APIs to build jemalloc themselves, or to use jemalloc from ports (although such a port doesn't seem to exist, currently). -- Jilles Tjoelker