Build Typed Jerboa Rust artifacts
ober
fd69fca6a3d3667fa75fdec14e1e555c20284f72
--- 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 --- 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 --- 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 --- 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)]