Build Typed Jerboa Rust artifacts

ober

fd69fca6a3d3667fa75fdec14e1e555c20284f72

diff --git a/Makefile b/Makefile
index aaa1147..e01a6f6 100644
--- a/Makefile
+++ b/Makefile
@@ -312,7 +312,7 @@ typed-rust:
 	@$(SCHEME) --libdirs $(LIBDIRS) --script support/typed-rust.ss $(TYPED_RUST_DIR) $(TYPED_RUST_SOURCES)
 
 typed-build: typed-rust
-	@cargo check --manifest-path $(TYPED_RUST_DIR)/Cargo.toml
+	@cargo build --manifest-path $(TYPED_RUST_DIR)/Cargo.toml
 
 typed-test: test-typed-parser test-typed-checker test-typed-rust typecheck
 
diff --git a/docs/jerboa-to-rust.md b/docs/jerboa-to-rust.md
index 286c353..e9d51d5 100644
--- a/docs/jerboa-to-rust.md
+++ b/docs/jerboa-to-rust.md
@@ -439,8 +439,8 @@ Current and suggested behavior:
 
 - `typed-rust`: generate `build/typed/rust/Cargo.toml` and
   `build/typed/rust/src/lib.rs`
-- `typed-build`: generate Rust and run `cargo check`; later this should compile
-  the native artifact too
+- `typed-build`: generate Rust and run `cargo build`, producing disposable
+  `rlib`, `staticlib`, and `cdylib` artifacts
 - `typed-test`: run parser, checker, emitter, and typecheck tests; later add
   Rust unit tests plus Jerboa boundary tests
 - `typed-clean`: remove generated Rust build outputs
@@ -546,8 +546,9 @@ Second module: typed `rope`.
 - Generate `lib.rs`. Initial single-file crate output landed.
 - Generate one function returning an integer. Initial text emission for `Nat`
   functions landed.
-- Build with Cargo. Initial `make typed-build` target runs `cargo check` on
-  the main typed split-tree fixture.
+- Build with Cargo. Initial `make typed-build` target runs `cargo build` on
+  the main typed split-tree fixture and emits `rlib`, `staticlib`, and `cdylib`
+  artifacts.
 - Call from Jerboa through FFI.
 
 ### Milestone 2: Primitive Types
diff --git a/docs/typed-jerboa.md b/docs/typed-jerboa.md
index d7f90ee..97573bd 100644
--- a/docs/typed-jerboa.md
+++ b/docs/typed-jerboa.md
@@ -153,7 +153,7 @@ Current landing:
   native artifact builds and FFI wrappers are still future work.
 - `support/typed-rust.ss`, `make typed-rust`, and `make typed-build` generate a
   disposable Cargo crate under `build/typed/rust`; `typed-build` runs
-  `cargo check` against the generated crate.
+  `cargo build` against the generated crate.
 - The parser currently recognizes explicit `export` forms, `type` declarations,
   immutable and `mut` record fields, variants including nullary cases, and
   `def` forms with typed parameters and `:` or `->` return markers.
@@ -636,8 +636,9 @@ Initial meanings:
 - `typed-rust`: generate Rust for typed modules. Initial target writes
   `build/typed/rust/Cargo.toml` and `build/typed/rust/src/lib.rs` from
   `TYPED_RUST_SOURCES`, which defaults to `TYPED_SOURCES`.
-- `typed-build`: generate Rust and run `cargo check`. Native artifact builds
-  and wrappers are still pending.
+- `typed-build`: generate Rust and run `cargo build`, producing disposable
+  `rlib`, `staticlib`, and `cdylib` artifacts. Jerboa wrappers are still
+  pending.
 - `typed-test`: run typed compiler tests and runtime boundary tests. Initial
   target runs parser, checker, Rust emitter, and `typecheck`.
 - `typed-llvm`: reserved until the LLVM backend exists.
@@ -787,8 +788,9 @@ Minimum excluded features:
   exhaustive variant `match`.
 - Generate a Cargo crate. Initial `make typed-rust` / `make typed-build`
   targets landed for a primitive typed fixture.
+- Compile generated Rust as a static or dynamic library. Initial disposable
+  `rlib`/`staticlib`/`cdylib` builds landed.
 - Generate conversion functions.
-- Compile generated Rust as a static or dynamic library.
 - Generate Jerboa wrappers.
 
 ### Milestone 4: First Real Module
diff --git a/support/typed-rust.ss b/support/typed-rust.ss
index bd7af6b..5db2c53 100644
--- a/support/typed-rust.ss
+++ b/support/typed-rust.ss
@@ -100,7 +100,7 @@
             (append (reverse (read-typed-library-forms (car rest))) out)))))
 
 (define cargo-toml
-  "[package]\nname = \"jerboa-typed-generated\"\nversion = \"0.0.0\"\nedition = \"2021\"\npublish = false\n\n[lib]\ncrate-type = [\"rlib\"]\n")
+  "[package]\nname = \"jerboa-typed-generated\"\nversion = \"0.0.0\"\nedition = \"2021\"\npublish = false\n\n[lib]\ncrate-type = [\"rlib\", \"staticlib\", \"cdylib\"]\n")
 
 (define (generate-rust-crate out-dir source-paths)
   (let* ([safe-out-dir (validate-output-path out-dir)]