unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Julian Graham <joolean@gmail.com>
To: Andy Wingo <wingo@pobox.com>
Cc: "Ludovic Courtès" <ludo@gnu.org>, guile-devel@gnu.org
Subject: Re: Merging Guile-R6RS-Libs in `master'
Date: Wed, 22 Apr 2009 16:22:57 -0400	[thread overview]
Message-ID: <2bc5f8210904221322w7e08ea88i340831e74d61443f@mail.gmail.com> (raw)
In-Reply-To: <m3d4b479g7.fsf@pobox.com>

Hi Andy,

> Guile should probably only support one "live" version of a module. So
> Guile's internal module namespace stays the same. Versions are only
> important when loading files from disk. I propose that we do it like
> this:

Actually, I'd like to disagree here -- maybe I've been writing too
much Java, but isn't it possible that the VM would be running more
than one "program" (or maybe I misunderstand that term)?  Or let's say
that I absolutely need version 4 of library `foo', but that in the
transitive closure of my library dependencies, there's another library
(which I may prefer not to modify) that absolutely needs version 3 of
`foo'.


>  (foo bar) -> foo/bar.scm in the path, just as we have it now
>  (foo bar (n)) -> foo/barSEPn.scm, where SEP is some separator not
>  valid in identifiers.
>
> Candidates for SEP? Unfortunately all the ones that can be bare in the
> shell seem to be taken. Actually maybe `/' is a good candidate, or in
> general the path separator. So it would be foo/bar/n.scm, where n would
> be the version.
>
> We then fix the path-searching functions in load.c to understand
> versions -- some trickiness there but we can do it.

I like this, except it puts the constraint on module authors that
their source files need to be named n.scm.  Maybe that's not a big
deal (and it could be mitigated with some kind of "install"
procedure), but what if the mapping were:

(foo bar baz (m n)) -> foo/bar/m/n/baz.scm


Regards,
Julian




  parent reply	other threads:[~2009-04-22 20:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-21 21:18 Merging Guile-R6RS-Libs in `master' Ludovic Courtès
2009-04-21 21:45 ` Julian Graham
2009-04-22  7:55   ` Ludovic Courtès
2009-04-22 14:55     ` Julian Graham
2009-04-22 15:53       ` Ludovic Courtès
2009-04-22 18:32         ` Julian Graham
2009-04-22 19:52           ` Andy Wingo
2009-04-22 20:09             ` Ludovic Courtès
2009-04-22 20:22             ` Julian Graham [this message]
2009-04-22 21:53               ` Andy Wingo
2009-04-22 19:08         ` Andy Wingo
2009-04-22 19:57           ` Ludovic Courtès
2009-04-22 19:07     ` Andy Wingo
2009-04-22 19:51       ` Ludovic Courtès
2009-04-22 20:10         ` Julian Graham
2009-04-21 21:58 ` Andy Wingo
2009-04-22  8:04   ` Ludovic Courtès
2009-05-27 22:27     ` Ludovic Courtès
2009-05-28 17:52       ` Andy Wingo
2009-05-28 19:16         ` Ludovic Courtès
2009-05-28 21:25           ` Ludovic Courtès
2009-05-29  9:02           ` Andy Wingo

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

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2bc5f8210904221322w7e08ea88i340831e74d61443f@mail.gmail.com \
    --to=joolean@gmail.com \
    --cc=guile-devel@gnu.org \
    --cc=ludo@gnu.org \
    --cc=wingo@pobox.com \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).