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
53
[]
= "hopper-native"
= "0.1.0"
= "2021"
= "MIT OR Apache-2.0"
= ["BluefootLabs <contact@bluefootlabs.com>", "MoonManQuark"]
= "Hopper's sovereign raw backend for Solana. Zero-copy account access, direct syscall layer, CPI infrastructure, PDA helpers, and entrypoint glue. no_std, no_alloc, no external runtime dependencies."
= "https://github.com/BluefootLabs/Hopper-Solana-Zero-copy-State-Framework"
= "https://hopperzero.dev"
= "https://docs.rs/hopper-native"
= "README.md"
= ["solana", "zero-copy", "runtime", "no-std", "syscall"]
= ["no-std", "embedded"]
[]
= "hopper_native"
[]
# `bytemuck` feature turns on the field-level Pod/Zeroable proof used
# by `#[hopper::state]` and `#[hopper::pod]` to mechanically verify
# that every field of a layout is itself zero-copy-safe. This is the
# Hopper Safety Audit's Must-Fix #5 ("enforce field-level Pod proof
# at macro expansion time"). Default-on because the safety story is
# Hopper's headline promise; programs wanting zero dependencies can
# disable it and fall back to the unsafe-impl-yourself path.
= ["cpi", "bytemuck", "legacy-projectable"]
= []
= []
= []
# Opt-in for `solana-define-syscall`'s `unstable-static-syscalls`.
# Saves 1-3 CU per syscall by replacing dynamic dispatch with direct
# calls. Off by default until the upstream feature stabilizes.
= []
= ["dep:bytemuck"]
# `legacy-projectable` exposes the `Projectable` / `SafeProjectable`
# cross-program lens traits. The Hopper Safety Audit asked these be
# gated behind a feature and marked Tier-C so new code reaches for
# `Pod`-bounded helpers (`lens::read_field_pod`, `ZeroCopy`). Default
# on for backward compatibility; programs that never use the legacy
# cross-program projection path can disable it for a leaner surface.
= []
[]
= { = true }
# `bytemuck` is no_std, no_alloc, zero-dep at the leaf. It gives
# Hopper the field-level Pod proof the audit asked for: its derive
# emits a `const _: fn() = || { ... check every field ... };` that
# rejects padding, non-Pod fields, and non-aligned primitives at
# compile time.
= { = "1", = false, = ["derive", "min_const_generics"], = true }
[]
= true