tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: fully supporting static lining in NetBSD (ar "zero" flag)
On Aug 6, 2008, at 3:33 PM, Greg A. Woods; Planix, Inc. wrote:
However, I'm perfectly OK with saying "if you do this, we don't
jump through hoops to make sure stuff like PAM works". Or threads.
Well if the system only provides lame implementations of features
which result in them only supporting dynamic linking/loading, then
that's very short-sighted.
Sometimes it's just a matter of practicality.
PAM, for example, can easily be implemented in such a way that a
static-only version can be built and used where all desired
mechanisms are statically linked into the system. (Of course
choosing to use PAM in an environment where source code can be used
by _users_ to completely rebuild their systems is a poor idea in the
first place.)
Sure, it's "easy"... our PAM can already do it, but it sure is a pain,
because programs that use PAM now have to know a priori which PAM
mechanisms will be used so they can bring in all of the supporting
libraries (e.g. the plethora of Kerberos libraries, etc.)
Of course, you could also make the argument that it's no longer PAM,
because it's not exactly plug-able if you can't actually load a plug-in.
The same applies to _every_ scenario where binary-only vendors have
tried to use dynamic/runtime loading of object code to support
additional flexibility in their distributions which might not
otherwise be possible without providing source code and the means
for _users_ to rebuild and update their systems _entirely_ from
source code only. This is even true of some of the gargantuan UI
frameworks which currently require, for _very_ naive reasons,
dynamic runtime loading of object code.
As far as I can tell, you're making a religious argument, here. Of
course, I am in no way suggesting that NetBSD become a binary-only
vendor.
For example a simple patch in has shown that even the infamous
CITRUS support for locales can be fixed such that it trivially
supports static linking of all the desired runtime modules.
Indeed I'm not aware yet of any real or valid reason to _require_
threaded programs to make use of a runtime dynamic link-loader
either. PR #37454, for example, identifies an issue with the
current implementation, not a show-stopper that prevents use of
pthreads in static-only binaries.
Well, it's true that part of the issue with the current implementation
is that pthreads is in a separate library. Note, I have also
advocated for pthreads to move directly into libc, and for all
programs to behave as if they are "threaded".
Much of the reasoning I've seen from you so far seems, at least from
my perspective, to be based solely on the requirements of binary-
only vendors. You construe (in other posts) that "modern" systems
require in some way the use of runtime dynamic link/loading of code.
I'm not basing this on "the requirements of binary-only vendors". And
my assertion that modern systems "require in some way the use of
runtime dynamic link/loading of code" is based on what I have
observed of user expectations ... certainly not all users (since you
are obviously so biased against the notion of dynamic extensibility).
That is simply _not_ true, except and unless you're considering
_only_ the requirements of binary-only vendors. It may be a
_feature_ to give users of binary distributions the ability to
dynamically add new (and/or 3rd party) options to their systems
without requiring that they rebuild their entire systems from source
again, but such a feature is hardly a requirement of a "modern"
operating system.
Well, it's my opinion that an OS that does not provide such a feature
is antiquated. You're entitled to your opinion, and I'm entitled to
mine.
I certainly don't object to supporting mechanisms which binary-only
vendors might find useful to support additional runtime features in
their distributions, but I think it's critical to maintain full
support of static linking too.
We already don't have full support for static linking. There are some
things that don't work well/properly if you use static linking. I
don't think it's a good use of NetBSD's development resources to fix
all of those issues and continue to maintain it going forward.
So, since we don't really support it fully anyway, and it would not be
a good use of NetBSD development resources, I'm proposing to just get
rid of it. It would also simplify some aspects of maintaining /
developing the NetBSD OS in the future.
Indeed as a contributor and user of NetBSD I'm fully willing and
able to help as much as I can to maintain the ability of NetBSD to
make full use of all its modern features when it is built as a
static-only binary distribution.
I can't really say that I've seen you contribute code in this area
thus far...
-- thorpej
Home |
Main Index |
Thread Index |
Old Index