Re: Meson far from ready on Windows

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: walther@technowledgy.de, Dave Page <dpage@pgadmin.org>
Cc: Nazir Bilal Yavuz <byavuz81@gmail.com>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2024-06-22T21:17:43Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. meson: Add dependency lookups via names used by cmake

  2. meson: Add support for detecting gss without pkg-config

  3. meson: Add support for detecting ossp-uuid without pkg-config

Hi, 

On June 22, 2024 7:32:01 PM GMT+02:00, walther@technowledgy.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.