zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-workers@zsh.org
Subject: Errors on module feature [auto]loading (Re: zsh 5.0.2-test-1 is available)
Date: Sun, 10 Nov 2013 12:03:54 -0800	[thread overview]
Message-ID: <131110120354.ZM21539@torch.brasslantern.com> (raw)
In-Reply-To: <20131109223250.706e20fb@pws-pc.ntlworld.com>

[> workers]

On Nov 9, 10:32pm, Peter Stephenson wrote:
}
} Suppose we load builtin bar from zsh/foo at some point, doesn't matter
} how, then run "zmodload -a bar zsh/foo". We find that a builtin bar
} exists. We can then check that zsh/foo is already loaded, and is
} already providing builtin bar.

And conversely we can tell that a builtin bar already exists that is not
provided by zsh/foo ?  This is the part that I thought for some reason
was difficult.

Where the analogy with autoloaded functions breaks down is that autoload
for functions cannot be told which file the function must come from.  It
searches $fpath and takes the first one it finds.  The autoload builtin
makes the assumption (rightly or wrongly) that $fpath is stable and that
if a function has already been loaded, it is the same one that would be
found if $fpath were searched again.

Loading of modules *themselves* with "zmodload zsh/foo" can make a similar
assumption about $module_path so the analogy holds there.

Explicit builtin autoloads with "zmodload -a zsh/foo bar" have no basis
for making that same assumption.  We've provided a way to say "bar must
come from zsh/foo, even if zsh/bar would be found first by a $module_path
search".  Therefore, if we *can't* guarantee that bar came from zsh/foo,
we should not suppress the error message.

} furthermore, given that you can check by this means the effect really
} *is* redundant rather than a conflict, it seems to me there is no
} harmful side effect of any sort.

I'm OK with this given the precondition.  Do all the rules about warning
on circular dependency, etc., apply?  If I try to explicitly autoload
from zsh/foo a feature that would implicitly be provided by zsh/bar,
when if ever would an error occur?

Aside:  Should we update the manual to say that the right way to test for
module existence is "zmodload -F module" (with no feature arguments)?  This
checks that the module could be loaded without enabling anything, whereas
"zmodload [-i] module" enables all the default features.

-- 
Barton E. Schaefer


       reply	other threads:[~2013-11-10 20:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20131106202321.4a48c77b@pws-pc.ntlworld.com>
     [not found] ` <20131107153315.GW3544@sym.noone.org>
     [not found]   ` <20131107160551.7aa195dc@pwslap01u.europe.root.pri>
     [not found]     ` <20131107191806.GA85153@redoubt.spodhuis.org>
     [not found]       ` <131107173627.ZM24325@torch.brasslantern.com>
     [not found]         ` <20131108071627.GA6216@redoubt.spodhuis.org>
     [not found]           ` <20131108093822.1534aa88@pwslap01u.europe.root.pri>
     [not found]             ` <131108063903.ZM25660@torch.brasslantern.com>
     [not found]               ` <20131108161109.6e373049@pwslap01u.europe.root.pri>
     [not found]                 ` <131108181143.ZM26121@torch.brasslantern.com>
     [not found]                   ` <20131109223250.706e20fb@pws-pc.ntlworld.com>
2013-11-10 20:03                     ` Bart Schaefer [this message]
2013-11-10 20:44                       ` Peter Stephenson
2013-11-13 20:11                     ` PATCH: autoloading already loaded features Peter Stephenson

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=131110120354.ZM21539@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-workers@zsh.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 public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).