Re: Meson far from ready on Windows

From: Andres Freund <andres(at)anarazel(dot)de>
To: walther(at)technowledgy(dot)de, Dave Page <dpage(at)pgadmin(dot)org>
Cc: Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Meson far from ready on Windows
Date: 2024-06-22 21:17:43
Message-ID: 57A7B41C-427D-4249-BF96-D5CA0CB7424A@anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On June 22, 2024 7:32:01 PM GMT+02:00, walther(at)technowledgy(dot)de wrote:
>Andres Freund:
>> FWIW, dynamic linking has a noticeable overhead on other platforms too. A
>> non-dependencies-enabled postgres can do about 2x the connections-per-second
>> than a fully kitted out postgres can (basically due to more memory mapping
>> metadata being copied). But on windows the overhead is larger because so much
>> more happens for every new connections, including loading all dlls from
>> scratch.
>>
>> I suspect linking a few libraries statically would be quite worth it on
>> windows. On other platforms it'd be quite inadvisable to statically link
>> libraries, due to security updates, [...]
>That's not necessarily true. The nix package manager and thus NixOS track all dependencies for a piece of software. If any of the dependencies are updated, all dependents are rebuilt, too. So the security concern doesn't apply here. There is a "static overlay", which builds everything linked fully statically.

Right. There's definitely some scenario where it's ok, I was simplifying a bit.

> Unfortunately, PostgreSQL doesn't build in that, so far.

I've built mostly statically linked pg without much of a problem, what trouble did you encounter? Think there were some issues with linking Kerberos and openldap statically, but not on postgres' side.

Building the postgres backend without support for dynamic linking doesn't make sense though. Extensions are just stop ingrained part of pg.

>Lately, I have been looking into building at least libpq in that static overlay, via Meson. There are two related config options:
>-Ddefault_library=shared|static|both
>-Dprefer_static
>
>The first controls which libraries (libpq, ...) to build ourselves. The second controls linking, IIUC also against external dependencies.

Pg by default builds a static libpq on nearly all platforms (not aix I think and maybe not Windows when building with autoconf, not sure about the old msvc system) today?

>Maybe it would be a first step to support -Dprefer_static?

That should work for nearly all dependencies today. Except for libintl, I think. I found that there are a lot of buglets in static link dependencies of various libraries though.

Andres
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Joseph Koshakow 2024-06-22 21:50:14 Re: Wrong security context for deferred triggers?
Previous Message Nathan Bossart 2024-06-22 20:42:47 Re: allow changing autovacuum_max_workers without restarting