|
From: | Brian Cully |
Subject: | Re: [PROPOSAL] Builder, a build system integration for Emacs |
Date: | Sat, 27 May 2023 10:55:48 -0400 |
User-agent: | mu4e 1.10.2; emacs 30.0.50 |
Richard Stallman <rms@gnu.org> 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 samelibrary? 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
[Prev in Thread] | Current Thread | [Next in Thread] |