Post

We have a new release (v0.6.0) that exposes FamilyConfig through the codegen public API so downstream consumers can use the same emit pipeline against their own record family without vendoring the target loops. This release also includes typed wrappers for cid-link and IETF BCP 47 language tags.

github.comRelease v0.6.0 · idiolect-dev/idiolectAdded idiolect_records::Cid newtype with parse-time multibase + multihash validation via the cid crate. Codegen now emits dev.idiolect.* cid-link fields as Option<Cid> (was Option<String>). The wr...

emit_rust, emit_typescript, and TargetEmitter::emit now take a &FamilyConfig. The CLI continues to pass idiolect_family() so its surface is unchanged; layers-codegen and other downstream consumers construct FamilyConfig::new("MyFamily", "my.ns", "my.ns.") and call the same entry points.

FamilyConfig fields are Cow<'static, str> rather than &'static str, so an external caller can construct one from runtime-owned strings without Box::leak. Static-literal call sites stay zero-allocation through Cow::Borrowed.

0 reposts0 likes

The TypeScript half gains a generated family.ts that mirrors the Rust family.rs surface. The membership predicate uses an exact NSID set lookup so the type narrowing is sound.

cid-link fields now emit as idiolect_records::Cid (validated via the cid crate) and language fields emit as idiolect_records::Language (validated via language-tags / BCP 47). Both wrappers preserve the canonical wire form so byte-for-byte fixture round-trips stay stable.