1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! zshrs extensions — features zsh C does **not** have.
//!
//! This is the **only** sanctioned non-port directory in the tree
//! (alongside `src/recorder/`). Every file here implements
//! functionality that goes beyond upstream zsh: AOT compilation,
//! daemon coordination, autoload/script/plugin caches, fish-style
//! features (autosuggest, abbreviation expansion, syntax-highlight),
//! persistent worker pools, ZWC byte-code helpers used by the AOT
//! pipeline, etc. These have no corresponding C function and are not
//! expected to.
//!
//! Rules (see `docs/PORT.md` for the canonical statement):
//!
//! 1. Files here MUST implement a feature that zsh C demonstrably
//! does **not** have. If a similar feature exists in zsh, port
//! it instead — the port belongs under `src/ported/`.
//! 2. Files here MUST NOT duplicate or shadow any port. Extensions
//! are additive only.
//! 3. The `port_purity` integration test exempts `src/extensions/`
//! from the 1:1 file-existence rule on this basis.
//!
//! These submodules are also exposed at the crate root via
//! `#[path = "extensions/<name>.rs"] pub mod <name>;` declarations in
//! `src/lib.rs` and `src/ported/zle/mod.rs` so existing call-sites
//! that reference `crate::aot::`, `crate::completion::`, etc. continue
//! to resolve. Both paths point at the same file — they are aliases.
pub use crateaot;
pub use cratearith_compiler;
pub use crateast_sexp;
pub use crateautoload_cache;
pub use cratecanonical_apply;
pub use cratecompile_zsh;
pub use cratecompletion;
pub use crateconfig;
pub use cratedaemon_presence;
pub use crateext_builtins;
pub use cratefds;
pub use cratefish_features;
pub use crateheredoc_ast;
pub use cratezsh_ast;
pub use cratehistory;
pub use cratelog;
pub use crateoverlay_snapshot;
pub use crateplugin_cache;
pub use crateregex_mod;
pub use cratescript_cache;
pub use cratestringsort;
pub use crateworker;
pub use cratezwc;
pub use cratezwc_decode;