Zsh Mailing List Archive
Messages sorted by:
Errors on module feature [auto]loading (Re: zsh 5.0.2-test-1 is available)
- X-seq: zsh-workers 31950
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- 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
- In-reply-to: <firstname.lastname@example.org>
- List-help: <mailto:email@example.com>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:firstname.lastname@example.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <email@example.com> <20131107153315.GW3544@sym.noone.org> <firstname.lastname@example.org> <20131107191806.GA85153@redoubt.spodhuis.org> <131107173627.ZM24325@torch.brasslantern.com> <20131108071627.GA6216@redoubt.spodhuis.org> <email@example.com> <131108063903.ZM25660@torch.brasslantern.com> <firstname.lastname@example.org> <131108181143.ZM26121@torch.brasslantern.com> <email@example.com>
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
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
Messages sorted by: