> On 19 Sep 2022, at 3:08 pm, René J.V. Bertin <rjvber...@gmail.com> wrote:
>
> On Monday September 19 2022 13:56:01 Chris Jones wrote:
>
>> But anyway, I m sure you will think you are right, so please feel free to
>> experiment on your own system, as you get to own the pieces there once it
>> breaks.
>
> What do you think happens when you upgrade an OS but not ALL your other
> software?
It gets replaced, such that everything uses it. Thats precisely what the port
instructions also tell you to do currently, with warnings.
I personally have no more interest in debating this with you as as I
anticipated you have already concluded you know best. So please experiment
anyway…
Chris
>
> Libc++ isn't something that is magically different from other libraries.
>
> Check the libcxx sources. There's an option to build it against the v1 or the
> v2 ABI. As long as the v1 ABI is available you can at least run applications
> built against an older libc++ version using a later version of the v1 ABI.
> Just like with any other library. If you read my initial post attentively you
> will realise that this is exactly what I have been doing for years now (and
> in case it wasn't clear, I do mean I install the libs under $prefix/lib!).
> I do not currently install a libc++.dylib, but I will start experimenting
> with this: it should just mean that any new code I build will find the
> implementation for functions that are declared by the headerfiles (and not
> marked as unavailable). Any catastrophic failure will be limited to those
> ports, not to my system
>
> In fact: the libc++ headerfiles for libc++ vX are installed with port:clang-X
> so anything built with that compiler will assume to find the implementation
> of functions declared in those headers, but will also use the ABI of that
> version! We can use the system libc++ with a much newer clang version for 2
> reasons:
> - the LLVM devs take care not to modify the ABI except possibly in
> backwards-compatible ways (like Qt also guarantee) allowing you to use newer
> libc++ headers (and thus structures/classes) with an older libc++ binary
> - Apple marks newer functions as available from a certain OS version only.
> Sooner or later they will miss a function because I doubt they test every
> feature in every new clang/llvm version on ever previous version of the OS
> where it can be built.
>
> Now, if someone knows off the top of their heads which libc++ version was
> shipped with OS 10.15.0 I'd appreciate not having to hunt down that
> information myself - thanks!
>
> R.
>
> PS: I've updated my port:libcxx from v5 to v6.0 to v6.0.1 to v8.0.0 without
> rebuilding a single port. And FYI, on Linux I do install libc++.so (= the
> linker interface library, in /usr/lib because there's no conflict there) and
> I have been building a certain number of my ports with a +libcxx variant that
> does what I hope must be evident. Those too did not require a rebuild after
> upgrading libc++.