Re: Mark all GUC variable as PGDLLIMPORT
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Chapman Flack <chap@anastigmatix.net>, Julien Rouhaud <rjuju123@gmail.com>, Michael Paquier <michael@paquier.xyz>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-02-19T00:02:18Z
Lists: pgsql-hackers
Hi, On 2022-02-15 08:06:58 -0800, Andres Freund wrote: > The more I think about it the more I'm convinced that if we want to do this, > we should do it for variables and functions. Btw, if we were to do this, we should just use -fvisibility=hidden everywhere and would see the same set of failures on unixoid systems as on windows. Of course only in in-core extensions, but it'd still be better than nothing. I proposed using -fvisibility=hidden in extensions: https://postgr.es/m/20211101020311.av6hphdl6xbjbuif@alap3.anarazel.de Mostly because using explicit symbol exports makes it a lot easier to build extensions libraries on windows (with meson, but also everything built outside of postgres with msvc). But also because it makes function calls *inside* an extension have noticeably lower overhead. And it makes the set of symbols exported smaller. One problem I encountered was that it's actually kind of hard to set build flags only for extension libraries: https://postgr.es/m/20220111025328.iq5g6uck53j5qtin%40alap3.anarazel.de But if we added explicit exports to everything we export, we'd not need to restrict the use of -fvisibility=hidden to extension libraries anymore. Would get decent error messages on all platforms. Subsequently we could yield a bit of performance from critical paths by marking selected symbols as *not* exported. That'd make them a tad cheaper to call and allow the optimizer more leeway. Greetings, Andres Freund
Commits
-
Remove PGDLLIMPORT marker from __pg_log_level
- 8d3341266508 15.0 landed
-
Mark a few 'bbsink' related functions / variables static.
- b5f44225b833 15.0 landed
-
Add some missing PGDLLIMPORT markings
- 5edeb574285e 15.0 landed
-
Apply PGDLLIMPORT markings broadly.
- 8ec569479fc2 15.0 landed
-
Helper script to apply PGDLLIMPORT markings.
- 80900d469091 15.0 landed
-
Simplify declaring variables exported from libpgcommon and libpgport.
- e04a8059a74c 15.0 cited