vj 0.2.0

vj: a SystemVerilog (IEEE 1800-2023) simulator built on slang and LLVM.
//! The "kernel prologue" AB-006 names: the minimal proof that `vj`
//! can always embed a compiled ABI symbol with no dlopen and no separate
//! manual link step.
//!
//! **Deviation from the plan's literal text** (documented in the Task 11
//! commit, updated at the harness/abi integration merge): this module
//! originally defined its own `#[unsafe(no_mangle)] extern "C" fn
//! sim_abi_version`, gated `#[cfg(not(feature = "static-test-kernel"))]`
//! so it never doubly-defined the symbol build.rs's static fixture archive
//! also exports when that feature is on. That standalone definition is
//! removed here: A2-part2 Task 4 (ledger CG-127, RT-003, landed after Task
//! 11) made `vj-runtime` an ordinary, unconditional dependency of this
//! crate, and `vj-runtime::aot_exports` already exports a REAL
//! `#[unsafe(no_mangle)] extern "C" fn sim_abi_version` (`sim_abi_version()
//! -> u32 { vj_abi::VJ_ABI_VERSION }`, byte-for-byte the same body
//! this module's own version had) -- unconditionally, in every build
//! configuration of this crate. Keeping both would be a genuine
//! duplicate-`#[no_mangle]`-symbol link error (confirmed: this is exactly
//! what happened the moment both tracks' work landed in the same binary).
//! AB-006's "no dlopen, no runtime loader" guarantee is unweakened -- it is
//! now satisfied by a REAL production export instead of a synthetic
//! stand-in, in the default build configuration; the `static-test-kernel`
//! feature's own archive-injected `sim_abi_version` (see `build.rs`'s own
//! doc comment) remains this crate's dedicated proof for the AOT-*static*
//! packaging path specifically.