From owner-svn-src-all@freebsd.org Mon Jan 22 10:26:49 2018 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 0293AEB8478; Mon, 22 Jan 2018 10:26:49 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 72F7075AC9; Mon, 22 Jan 2018 10:26:48 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w0MAQe4b078817 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 22 Jan 2018 12:26:43 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w0MAQe4b078817 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w0MAQdr7078816; Mon, 22 Jan 2018 12:26:40 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 22 Jan 2018 12:26:39 +0200 From: Konstantin Belousov To: Kyle Evans Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r328240 - in head: etc/mtree lib lib/libc/regex lib/libc/tests/regex lib/libregex lib/libregex/tests share/mk Message-ID: <20180122102639.GD55707@kib.kiev.ua> References: <201801220244.w0M2if3I083081@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201801220244.w0M2if3I083081@repo.freebsd.org> User-Agent: Mutt/1.9.2 (2017-12-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 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: Mon, 22 Jan 2018 10:26:49 -0000 On Mon, Jan 22, 2018 at 02:44:41AM +0000, Kyle Evans wrote: > Author: kevans > Date: Mon Jan 22 02:44:41 2018 > New Revision: 328240 > URL: https://svnweb.freebsd.org/changeset/base/328240 > > Log: > Add libregex, connect it to the build > > libregex is a regex(3) implementation intended to feature GNU extensions and > any other non-POSIX compliant extensions that are deemed worthy. > > These extensions are separated out into a separate library for the sake of > not cluttering up libc further with them as well as not deteriorating the > speed (or lack thereof) of the libc implementation. > > libregex is implemented as a build of the libc implementation with LIBREGEX > defined to distinguish this from a libc build. The reasons for > implementation like this are two-fold: > > 1.) Maintenance- This reduces the overhead induced by adding yet another > regex implementation to base. > > 2.) Ease of use- Flipping on GNU extensions will be as simple as linking > against libregex, and POSIX-compliant compilations can be guaranteed with a > REG_POSIX cflag that should be ignored by libc/regex and disables extensions > in libregex. It is also easier to keep REG_POSIX sane and POSIX pure when > implemented in this fashion. You are doing very fragile and unmaintainable trick on all consumers there. Your libregex.so exports the same symbols under the same version as the libc does. In other words, we now provide two binary-incompatible callable symbols, and selection of the symbol by the consumer depends on the DT_NEEDED order and interposing. For instance, if some program loads a module linked to your libregex, the program behaviour suddenly changes. Since the library provides incompatible implementation, it must use different versions for the symbols, at least to save others time to debug the mess.