distinction -- types of dynamic loading


Subject: distinction -- types of dynamic loading
From: Paul Rohr (paul@abisource.com)
Date: Thu Apr 19 2001 - 18:43:32 CDT


[ This may have already been pointed out, but I've lost track of the
relevant thread. ]

I think we're all in agreement that one cool feature on the horizon will be
the ability to decouple certain sorts of functionality which are currently
hardwired into the ever-growing binary, such as:

  - file import/export
  - spell-check APIs
  - localizations
  - encodings
  - etc.

Just to settle on terminology, there are at least three different kinds of
dynamic loading people have been talking about:

1. Automatic. Our binary expects certain fixed entry points, and if the
loader can't find them, we don't run. We already do a fair amount of this
for required system libraries.

2. Manual. At run-time, we look for a specific library and load it
manually via the platform equivalent of dlopen(). If nothing suitable can
be found, we either complain or do without.

3. Discovery. At run-time, we look in a known place for plugins of a
certain type, loading any or all of them. This last case is most
complicated, because all such plugins must export some well-known selector
API so we know which one we want to load.

The benefit of well-designed discovery-style APIs isn't just the bloat
reduction of the original binary. It also means that *new* plugins of that
type can be built and deployed independently of the main AbiWord binaries.
However, until the APIs needed really stabilize, this is far more trouble
than it's worth.

Paul



This archive was generated by hypermail 2b25 : Thu Apr 19 2001 - 18:35:58 CDT