From: "Davis Herring" <herring@lanl.gov>
To: "Stephen J. Turnbull" <stephen@xemacs.org>
Cc: Leo <sdl.web@gmail.com>, emacs-devel@gnu.org
Subject: Re: Is (provide 'foo) at the start good or bad?
Date: Mon, 15 Jun 2009 11:20:41 -0700 (PDT) [thread overview]
Message-ID: <42424.130.55.118.19.1245090041.squirrel@webmail.lanl.gov> (raw)
In-Reply-To: <877hzeci43.fsf@uwakimon.sk.tsukuba.ac.jp>
> > > Because external packages don't know about the mutual dependency, and
> > > shouldn't have to. Multiple versions of the files may support the
> > > same interfaces, some with and some without mutual dependency. Etc.
> >
> > That was case #3, wasn't it?
>
> No. You're missing the "multiple versions" case. (Although GNU Emacs
> prefers to "support" 3rd party libraries by incorporating them, other
> Emacsen try to support third parties as independent projects, and that
> doesn't necessarily mean there's a blessed third party for each such
> library, either.)
(I think most of the productive ideas here have been stated. Purely for
my edification:) Why, if we have Av1 and Bv1, neither of which requires
the other (or at least only one requires the other), and Av2 and Bv2,
which are mutually dependent, can't we merge only the latter and have ABv2
(perhaps with one or two tiny files that let (require 'A) and (require 'B)
find it) while still leaving the old, independent versions separate?
...I suppose you could have the situation where Av1 requires Bv1, and then
Bv2 also requires Av1, and you'd like to not have to modify A. But then
you could either make Av1.0.1 that just changes the `require's (not much
of a hassle since people that would need it are upgrading B anyway), or
else make A(+B)v2 (and a B stub) rather than Bv2 at all. Right?
Later you said that the (mutually-dependent versions of the) libraries
might continue to be developed separately. That seems odd to me, since
they will always be loaded together, and they might need to be upgraded
together. But if it does happen, then perhaps the right thing is to put
`require's as late as possible and `provide's right before them, so that
both mutual recursion and `eval-after-load' will work (most of the time).
Davis
--
This product is sold by volume, not by mass. If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.
next prev parent reply other threads:[~2009-06-15 18:20 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-11 12:56 Is (provide 'foo) at the start good or bad? William Xu
2009-06-11 17:01 ` Leo
2009-06-12 4:09 ` Stephen J. Turnbull
2009-06-12 5:01 ` William Xu
2009-06-12 10:02 ` Thien-Thi Nguyen
2009-06-12 10:26 ` Stephen J. Turnbull
2009-06-12 15:15 ` William Xu
2009-06-12 8:36 ` Alan Mackenzie
2009-06-12 10:10 ` Stephen J. Turnbull
2009-06-12 23:00 ` Davis Herring
2009-06-13 12:19 ` Stephen J. Turnbull
2009-06-14 19:30 ` Davis Herring
2009-06-15 3:04 ` Stephen J. Turnbull
2009-06-15 18:20 ` Davis Herring [this message]
2009-06-16 3:47 ` Stephen J. Turnbull
2009-06-12 21:16 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42424.130.55.118.19.1245090041.squirrel@webmail.lanl.gov \
--to=herring@lanl.gov \
--cc=emacs-devel@gnu.org \
--cc=sdl.web@gmail.com \
--cc=stephen@xemacs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.