Goal
Set up the gem skeleton and the embeddable Ruby VM so later phases have a foundation to build on.
Tasks
Notes
Rust is chosen over plain C because the ABI types come for free from the nsgi crate, and catch_unwind + ownership directly serve the protocol's no-unwind-into-host rule.
Goal
Set up the gem skeleton and the embeddable Ruby VM so later phases have a foundation to build on.
Tasks
lib/nsgi.rb, Rust cdylib underext/, Cargo workspace depending onnsgi = "0.1"(published protocol crate) +rb-syswith thelink-rubyfeaturensgi_handlecall (ruby_init, load path setup)host_ctxis opaque per spec, so the app file is located out-of-band viaNSGI_APP=./app.rbrake compile(or equivalent) producing the cdylib; CI matrix (Ruby 3.2+, Linux/macOS)Notes
Rust is chosen over plain C because the ABI types come for free from the
nsgicrate, andcatch_unwind+ ownership directly serve the protocol's no-unwind-into-host rule.