Two new stdlib-surface shims, absorbed from duplication across tep + toy.
Added
SpinelKit::Hex— hex digit/byte codec:nibble(hex→0..15),nibble_char(0..15→uppercase hex),byte2(byte→two lowercase hex chars),to_int(leading hex digits→int). The decode nibble was byte-identical acrossTep::Url,Tep::Llm, andSpinelKit::Json's decoder.SpinelKit::Url— theCGI/URI-component surface:escape/unescape(RFC 3986 percent-codec),parse_query(form-urlencoded→Hash),split_url(scheme/host/port/path/query). Ported fromTep::Url; usesSpinelKit::Hex; self-contained.
SpinelKit::Json keeps its own private hex helpers so a JSON-only consumer never compiles Hex (Spinel has no tree-shaking).
Verified: CRuby parity tests + Spinel compile clean (0 degrade warnings). RBS shipped for both.
gem install spinel_kit · https://rubygems.org/gems/spinel_kit · CHANGELOG