Expand description
Crate root — see README.md for overview.
Re-exports§
pub use vm_helper::perl_bracket_version;pub use vm_helper::FEAT_SAY;pub use vm_helper::FEAT_STATE;pub use vm_helper::FEAT_SWITCH;pub use vm_helper::FEAT_UNICODE_STRINGS;
Modules§
- agent
stryke agent— Persistent load testing agent for distributed stress testing.- ai
- AI primitives — Phase 0 (“walking skeleton”) of the design in
docs/AI_PRIMITIVES.md. - ai_
sugar - Source-level desugar for
tool fnandmcp_serversyntax. - aop
- Aspect-oriented programming primitives for stryke.
- aot
- Ahead-of-time build: bake a Perl script into a copy of the running
strykebinary as a compressed trailer, producing a self-contained executable. - ast
- AST node types for the Perl 5 interpreter.
Every node carries a
linefield for error reporting. - banner
- Stryke ASCII logo + live-stats box banner. Single source of truth shared by:
- builtins
- Builtins dispatched from
FuncCall(names not modeled as dedicatedExprKinds). I/O usesInterpreter::io_file_slotsfor rawread/write/seekalongside buffered handles. - builtins_
bio_ geom_ markov - Bioinformatics, 3D geometry, sequence alignment, file format header parsers, resampling, Markov chains.
- builtins_
bits_ music_ stats - Bit manipulation, music theory, hash functions, text utilities, statistical tests. Pure deterministic functions.
- builtins_
combin_ audio_ physics - Combinatorics, audio synthesis, search algorithms, physics 2D, noise generators, RNG variants, polygonal numbers.
- builtins_
const - Constants & distribution helpers.
HTTP status codes return their numeric value. HTTP method names
return their canonical uppercase form. Distribution PDF/quantile/
sampler functions use the
statrscrate. - builtins_
data - HTML / JSON / XML / CSS primitives.
Uses
serde_jsonandscraper(both already deps). XML/CSS ops that don’t have a clean crate-backed implementation use lightweight regex/string parsing — pragmatic, not RFC-perfect. - builtins_
games_ ml_ chem - Game theory, ML inference primitives, operations research, chemistry, language modeling, information-theoretic divergences.
- builtins_
geom - Geometric primitives, complex numbers, color-space extras, and trig extras. Pure functions, no external crates.
- builtins_
iter - Iterator combinator + string-distance extras. Pure functions, no external crates.
- builtins_
linalg_ graph_ date - Linear algebra (matrices), graph algorithms, calendar/date helpers, special math. Pure functions only.
- builtins_
mathx - Math / number theory / random extras.
- builtins_
misc - Miscellaneous primitives: BigInt ops + game/physics
vectors + probabilistic data structures + audio synthesis basics +
geo extras. Pure functions where possible; BigInt uses
num-bigint. - builtins_
misc2 - Currency / ML / file-path / locale / channels. Pure functions where possible. Channels honor capacity, oneshot auto-close, and subscriber cursors; timeout args are accepted but no-op in the single-thread VM.
- builtins_
net - Network / IP / CIDR / MAC primitives — Phase 1 of the 10k-builtin push.
- builtins_
phonetic_ geo_ codec - Phonetic algorithms, geo projections, base58/base91, astronomy, CRC variants, color blending, compression primitives.
- builtins_
quant - Quantitative builtins: technical indicators, time-series ops, finance, optimization, numerical methods. Pure functions; deliberately compact implementations.
- builtins_
ratings_ geom_ units - Ratings/tournaments, image morphology, computational geometry 2D, crypto primitives, physics constants, case conversions, photography, unit conversions.
- builtins_
validate - Validation / input-check primitives.
- builtins_
vision_ ir_ algorithms - Computer vision / image kernels, information retrieval, distance metrics, Bayesian updates, RL primitives, color spaces, window functions, trie / Fenwick / union-find, network extras.
- bytecode
- capture
- Structured shell output:
capture("cmd"). - cli_
runners - Shared runners for
stryke checkandstryke test. - cluster
- Persistent SSH worker pool dispatcher for
pmap_on. - compiler
- controller
stryke controller— Interactive REPL for coordinating stress test agents.- convert
- Convert standard Perl source to idiomatic stryke syntax.
- dap
- Debug Adapter Protocol (DAP) server for stryke.
- data_
section - Split
__DATA__from program source (line must equal__DATA__after trim). - debugger
- Interactive debugger for stryke programs.
- deconvert
- Deconvert stryke .stk syntax back to standard Perl .pl syntax.
- deparse
- AST-to-source deparser for serializing code refs.
- doc_
render - Render raw hover-doc markdown (from
lsp::doc_text_for) into a terminal display string. Same visual surface as thestryke docsinteractive browser — bold topic heading, dim rule, cyan inlinebackticks, greencode fences— but without the pager chrome (header/footer banner, page navigation hints), so a single doc page can be returned by thedocs(TOPIC)builtin and printed inline at the REPL. - english
English.pm-style scalar aliases (use English).- error
- fmt
- Pretty-print parsed Perl back to source (
stryke --fmt). Regenerate withpython3 tools/gen_fmt.pyafterast.rschanges. - format
- Perl
format/write— picture lines and field padding (subset of Perl 5perlform). - getopts
getopts— Getopt::Long-style CLI flag parser.- kvstore
- rkyv-backed KV store — first-class CRUD store in any scripting language.
- lexer
- list_
builtins - Stryke list builtins — native Rust implementations of
sum,min,max,uniq,reduce,zip, thepairsfamily, and friends. Every fn here is a bare-name builtin reachable via [dispatch_by_name]; there is no Perl module emulation layer. - lsp
- Language server protocol (stdio) for editors —
stryke --lsp. - lsp_
docs_ domains - Hand-written LSP hover descriptions for stryke builtins grouped by domain.
Returned via
doc_for_label_textfallback — every entry here is concise, signature-typed, and ships a runnable example. - lsp_
extras - Additional LSP capabilities for
stryke --lsp: - mcp
- MCP client (Model Context Protocol) — Phase 2 of AI_PRIMITIVES.md.
- minify
- Source-code minifier for stryke (
stryke minify FILE). - mro
- C3 method resolution order (Perl
mro/Algorithm::C3style). - native_
data - Native CSV (
csvcrate), SQLite (rusqlite), and HTTP JSON (ureq+serde_json) helpers. - pack
- Subset of Perl
pack/unpackfor binary I/O. Supported:AaNnVvCQqZHxwiIlLsSfd(optional repeat count after each;*for some). - par_
lines - Memory-mapped parallel line iteration for
par_lines PATH, fn { ... }. Splits the file into byte ranges aligned to line starts, then processes each chunk in parallel with rayon (each chunk scans its lines sequentially). - par_
pipeline par_pipeline— two overloads:- par_
walk - Parallel recursive directory walk for
par_walk PATH, fn { ... }. - parallel_
trace - Optional stderr tracing for
mysyncmutations undertrace { ... }andfan. - parser
- pcache
- Thread-safe memoization for
crate::ast::ExprKind::PcacheExpr. - pchannel
- Typed message channels for parallel blocks (
pchannel,send,recv,pselect). - perf_
recorder - Wall-clock recorder for
stryke --record. Writes one row per stryke invocation to~/.stryke/perf.sqlite, queryable via theperfviewbuiltin. - perl_
decode - UTF-8 vs Latin-1 octet decoding for Perl-compatible text (no dependency on
crate::value). Used by I/O,par_lines, and byte stringification. - perl_fs
- Perl-style filesystem helpers (
stat,glob, etc.). - perl_
inc - Resolve
@INCpaths from the systemperlbinary (same directories Perl searches for.pmfiles). - perl_
pty - PTY-driven interactive automation — Phases 1–4 of the Tcl/Expect-style
feature. Builtins are bare-name and take the handle hashref as first
argument; method-form
$h->expect(...)works through the thinPtyHandleclass shipped viaPTY_HANDLE_CLASS_STK. - perl_
signal - Minimal
%SIGdelivery for common signals (Unix). Handlers run between statements. - pkg
- stryke package manager — RFC:
docs/PACKAGE_REGISTRY.md. - ppool
- Persistent thread pool (
ppool) — workers pull jobs from a shared queue and run each task on a freshVMHelperon an existing OS thread (no rayon task spawn per item; threads stay alive between jobs). - profiler
- Wall-clock profiler for
stryke --profile. - pwatch
- Parallel file notifications for
pwatch GLOB, fn { ... }(notify + rayon). - remote_
wire - Framed bincode over stdin/stdout for
stryke --remote-worker(distributedpmap_on). - rust_
ffi - Inline Rust FFI —
rust { ... }blocks compiled to a cdylib on first run, dlopened, and registered as Perl-callable subs. - rust_
sugar - Source-level desugaring for
rust { ... }FFI blocks. - scope
- script_
cache - rkyv-backed bytecode cache for scripts.
- secrets
- Encrypted secrets — AES-256-GCM authenticated encryption.
- serialize_
normalize - Free-function recursive flatten of stryke
ClassInstance/StructInstancevalues into plain hashref / arrayref trees, for use by serializers (to_json,to_xml,to_yaml,to_toml,to_html,ddump) that take&[StrykeValue]and don’t have a&VMHelperto consult. - shell_
exec - Shell executor state for zshrs.
- shell_
fds - File descriptor utilities for zshrs.
- shell_
history - SQLite-backed command history for zshrs.
- shell_
jobs - Job control for zshrs
- shell_
parse - Zsh parser — direct port from zsh/Src/parse.c.
- shell_
signal - Signal handling for zshrs
- shell_
zle - ZLE - Zsh Line Editor
- shell_
zwc - ZWC (Zsh Word Code) file parser. Direct port of the dump-file family in zsh/Src/parse.c:3077-end.
- sketches
- Probabilistic data structures as native stryke builtins.
- special_
vars - Perl 5
${^NAME}scalars: see perlvar. - static_
analysis - Static analysis pass for detecting undefined variables and subroutines.
- stress
- Expanded stress-testing surface. The original
stress_cpu/stress_mem/stress_io/stress_test/heatbuiltins live inbuiltins.rs; this module adds the rest of the load-axis matrix — float / int / cache / branch / sort compute; sustained-disk + IOPS; TCP / HTTP / DNS network; fork / thread churn; alloc / mmap memory; crypto / compress / regex / json kernels; ramp / burst / oscillate patterns; and per-system telemetry (temp / freq / throttle / load / meminfo). - token
- value
- vm
- vm_
helper - web
- Web framework runtime — Rails-shaped builtins for stryke.
- web_orm
- Web framework ORM + migrator runtime — PASS 3 + PASS 4.
- zsh_lex
- Zsh lexical analyzer - Direct port from zsh/Src/lex.c
- zsh_
parse - Zsh parser — direct port from zsh/Src/parse.c.
- zsh_
tokens - Zsh lexical analyzer - Direct port from zsh/Src/lex.c
Constants§
Statics§
- zsh_
errflag - Port of
int errflagfromSrc/init.c. Tracks whether an error has been raised (ERRFLAG_ERROR = 1) or break/return is in flight (ERRFLAG_INT = 2).
Functions§
- bigint_
pragma - Returns
truewhenuse bigint;is active in this script. - compat_
mode - Returns
truewhen--compatis active. - compile_
and_ run_ prelude - Compile program and run only the prelude (BEGIN/CHECK/INIT phase blocks) via the VM.
Stores the compiled chunk on
interp.line_mode_chunkfor per-line re-execution. - convert_
to_ stryke - Convert a parsed program to stryke syntax with
|>pipes and no semicolons. - convert_
to_ stryke_ with_ options - Convert a parsed program to stryke syntax with custom options.
- deconvert_
to_ perl - Deconvert a parsed stryke program back to standard Perl .pl syntax.
- deconvert_
to_ perl_ with_ options - Deconvert a parsed stryke program back to standard Perl .pl syntax with options.
- format_
program - Parse a string of Perl code and return the AST.
Pretty-print a parsed program as Perl-like source (
stryke --fmt). - lint_
program - Parse + register top-level subs /
use(same as the VM path), then compile to bytecode without running. Also runs static analysis to detect undefined variables and subroutines. - no_
interop_ mode - Effective no-interop flag for this thread: TLS override if set, else the process-wide default. Hot path — called from parser/lexer.
- no_
interop_ mode_ tls - Read the current thread’s no-interop override (without falling back). Used by RAII guards to save/restore.
- parse
- parse_
and_ run_ module_ in_ file - Like
parse_and_run_string_in_file, but marks parsing as a module load. Allows shadowing stryke builtins (e.g.sub blessed { ... }) unless--no-interopis active. - parse_
and_ run_ string - Parse and execute a string of Perl code within an existing interpreter.
Compile and execute via the bytecode VM.
Uses
VMHelper::filefor both parse diagnostics and__FILE__during this execution. - parse_
and_ run_ string_ in_ file - Like
parse_and_run_string, but parse errors and__FILE__for this run usefile(e.g. a required module path). RestoresVMHelper::fileafter execution. - parse_
module_ with_ file - Like
parse_with_file, but marks the parser as loading a module. Modules are allowed to shadow stryke builtins (e.g.sub blessed { ... }in Scalar::Util.pm) unless--no-interop. - parse_
with_ file - Parse with a source path for lexer/parser diagnostics (
… at FILE line N), e.g. a script path or a required.pmabsolute path. Useparsefor snippets where-eis appropriate. - run
- Parse and execute a string of Perl code with a fresh interpreter.
- run_
line_ body - Execute the body portion of a pre-compiled chunk for one input line.
Sets
$_toline_str, runs frombody_start_ipto Halt, returns$_for-poutput. - run_
lsp_ stdio - Language server over stdio (
stryke --lsp). Returns a process exit code. - set_
bigint_ pragma - Enable bigint pragma (
use bigint;) — integer overflow promotes toBigIntinstead of demoting tof64. - set_
compat_ mode - Enable Perl 5 strict-compatibility mode (disables all stryke extensions).
- set_
no_ interop_ mode - Set the process-wide default for no-interop mode. Used by the CLI
(
--no-interop); threads without a thread-local override inherit it. - set_
no_ interop_ mode_ tls - Set the current thread’s no-interop override.
Noneclears it;Some(b)pins this thread tob. Sibling threads are unaffected — the primitive that letscheck_no_interopwork safely frompmaps. - try_
vm_ execute - Try to compile and run via bytecode VM. Returns None if compilation fails.
- vendor_
perl_ inc_ path - Crate-root
vendor/perl(e.g.List/Util.pm). Thestryke/strykedriver prepends this to@INCwhen the directory exists so in-tree pure-Perl modules shadow XS-only core stubs.