brian 98/04/10 05:31:44
Modified: . STATUS
Log:
Consensus reached. Comments on the vote will be kept in the CVS logs of
course.
Revision Changes Path
1.289 +5 -95 apache-1.3/STATUS
Index: STATUS
===================================================================
RCS file: /export/home/cvs/apache-1.3/STATUS,v
retrieving revision 1.288
retrieving revision 1.289
diff -u -r1.288 -r1.289
--- STATUS 1998/04/10 10:41:13 1.288
+++ STATUS 1998/04/10 12:31:43 1.289
@@ -190,106 +190,16 @@
Closed issues:
-Open issues:
-
- * Cleanup the symbol space now in the source for
- 1.3b6 and thus for the 1.3.x release branch via the
- apache-1.3/src/test/rename/rename.cf file as the configuration for the
- renaming. The used prefix or prefixes are configureable in the file.
- +1:
- 0: Ralf, Marc
-
- Notes:
- - Marc: this is the wrong time for such a big change
-
- * What prefixes to use for the renaming:
+ * To avoid symbol clashes with third-party code compiled into the server,
+ we shall apply the prefix "ap_" to the following classes of functions:
- Apache provided general functions (e.g., ap_cpystrn)
- ap_xxx: +1: Ken, Brian, Ralf, Paul, Randy
-
- - Public API functions (e.g., palloc, bgets)
- ap_xxx: +1: Ralf, Randy, Martin, Brian, Paul
-
+ - Public API functions (e.g., palloc, bgets)
- Private functions which we can't make static (because of
cross-object usage) but should be (e.g., new_connection)
- ap_xxx: +1: Randy, Brian, Paul, Ralf
-
- Notes:
- - Ken: Veto rescinded.
- - Ralf: My opinion for my decisions are the following ones:
- 1. The short ap_ prefix is a good idea because its
- a handy prefix while still Apache specific, so I
- would use it for those symbols we deal most: API
- symbols.
- 2. There is a distinction needed between symbols
- we want explicitly export (API) and those we are
- forced to export (cross-object references).
- Hence a the apx_ prefix. It's different from ap_
- but as short as it can while still providing the
- needed information: "ap" for Apache and "x" for
- internal cross-object symbol.
- 3. When you are look at the code you notice that
- we use <name>_module for the names of the
- module's dispatch structure. First, it always
- was confusing in the past that a module named
- mod_abc_def usually had a def_abc_module symbol
- (e.g. mod_auth variants). Second the
- src/Configure stuff has great guessing problems
- due to this difference. Third, mod_so has
- resolving problems. Fourth, the user who used
- the "LoadModule" directive has the most
- problems, because he had to write down the
- correct symbol name. Fifth, the names
- xxxx_module are too generic that we can keep
- them while we rename all others. They need also
- a renaming to be Apache specific. So, to make
- them Apache specific, solve the confusion _AND_
- mark them special because of shared object
- loading, I propose apm_ as the prefix, i.e.
- name1_module bekomes apm_name1. That's short,
- Apache specific and indicates (the "m") that
- this is a module's bootstrap symbol. This
- simplifies mod_so's LoadModule, src/Configure,
- APACI's fnm.sh, etc. and makes less confusion to
- the user while still providing the private
- symbolspace.
-
- - Randy: I agree with Dean 100%. The work created to
- keep this straight far outweighs any gain this
- could give.
-
- - Ralf: I agree with Jim that although the short ap_
- prefix is good for API functions, it shouldn't be
- used for all functions. That's too less. Some
- distinction is really needed. At least between
- really exported symbols (API) and symbols which are
- just forced to be exported due to the way the
- linker works (internal cross-object references)
-
- - Roy: A prefix should only be significant in the sense that
- it allows us to avoid symbol conflicts. Within our own
- symbol set, we always want to use the same prefix because
- it allows us to more easily move functions from non-API to
- API areas, and because it prevents the nasty situation of
- having both an ap_foo_bar and apapi_foo_bar. It also reduces
- the mental gymnastics necessary when anticipating a function
- name (i.e., if everything is ap_, the prefix fades into the
- background of our cognitive model of the source code).
-
- - Martin:
- As a high priority item, *ALL* clashes with system functions
- should be avoided if at all possible. Even names like bgets()
- are ``in use'' by SVR4 and should be prefixed.
- The next priority level is a *documented* API (thanks for
- the beginnings of that, Ken!) which should IMO offer ap_*
- functions only.
- Then there's our libap approach which can best be realized by
- prefixing the functions to show where they belong.
- And finally, there's all the "private" glue that keeps the
- core together (and I don't really care if it has prefixes
- as long as there are no name clashes with 3rd party things).
-
+Open issues:
+
* Paul would like to see a 'gdbm' option because he uses
it a lot.