From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Brian Cully via "Emacs development discussions." Newsgroups: gmane.emacs.devel Subject: Re: [PROPOSAL] Builder, a build system integration for Emacs Date: Sat, 27 May 2023 10:55:48 -0400 Message-ID: <87jzwtyg0y.fsf@psyduck.jhoto.kublai.com> References: <95980ffc-86e7-ad54-4a20-539d8c6ea5d0@mailo.com> <3f68f4bc-d426-0bcc-1329-674c12b29386@mailo.com> <76e12f7c-335f-476b-ffb3-fd8e8e4ab5d0@mailo.com> <87pm6rx4ea.fsf@yahoo.com> <87wn0ytefw.fsf@gmail.com> <83h6s0n95y.fsf@gnu.org> <83edn4myz4.fsf@gnu.org> <83a5xsmuc0.fsf@gnu.org> <831qj4mlg7.fsf@gnu.org> Reply-To: Brian Cully Mime-Version: 1.0 Content-Type: text/plain; format=flowed Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36506"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.10.2; emacs 30.0.50 Cc: Gregory Heytings , eliz@gnu.org, tomas@tuxteam.de, emacs-devel@gnu.org To: rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 27 17:03:21 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q2vRw-0009Dv-Qb for ged-emacs-devel@m.gmane-mx.org; Sat, 27 May 2023 17:03:21 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q2vRE-0007dn-MB; Sat, 27 May 2023 11:02:36 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q2vRD-0007aC-7h for emacs-devel@gnu.org; Sat, 27 May 2023 11:02:35 -0400 Original-Received: from coleridge.kublai.com ([166.84.7.167] helo=mail.spork.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q2vRB-00019m-Al; Sat, 27 May 2023 11:02:35 -0400 Original-Received: from psyduck (ool-18b8e9e7.dyn.optonline.net [24.184.233.231]) by mail.spork.org (Postfix) with ESMTPSA id 05B67C1B2; Sat, 27 May 2023 11:01:50 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=spork.org; s=dkim; t=1685199721; bh=X+OlH3TrVkY3MlKn/gnH2B8MyKu6+47y00dBfCxRCf0=; h=References:From:To:Cc:Subject:Date:In-reply-to; b=F2cwaBLXFWVWsHNUcdIi7O31UchhUMDbTK7EbKcxrNzmbStL+bTFoV9qFcM3U6yPj CKnU8oRWjD0RBHU+wkZw1CUnJ+gtKArBUiMUY59Y/NxWzzXhVk2bv4bF+UMO+t9tQX 3dQF4jP9Kb8pWQbySmd7REi0fbtapjS+nLez9Yrc= In-reply-to: Received-SPF: pass client-ip=166.84.7.167; envelope-from=bjc@spork.org; helo=mail.spork.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:306369 Archived-At: Richard Stallman writes: > I have trouble understanding that. Before dynamic libraries, we > used > static libraries. Each library was a .o file, made by > compilation. > > But how can each program have its own version of one and the > same > library? Does Rust store all libraries as **source code** > and recompile each library each time that library is linked > into a program? More than that, each Rust program can have many versions of any particular symbol. If program A links in libraries B and C, and B links with D version 1, while C links with D version 2, then A will have symbols from both versions of D linked in with it. It is able to do this because when Rust does name mangling, the names are mangled with library metadata, including version, so that the symbols in the object file equivalent have unique names. It's worth noting that Rust doesn't use standard .a/.so/.o files, but something like them called with a .rlib extension, which contains extra information not available in the aforementioned formats. -bjc