@calcit/procs 0.13.56 → 0.13.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
package/build.rs CHANGED
@@ -5,7 +5,6 @@ use std::collections::HashMap;
5
5
  use std::env;
6
6
  use std::fs;
7
7
  use std::path::Path;
8
- use std::process::Command;
9
8
 
10
9
  #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
11
10
  #[serde(rename_all = "lowercase")]
@@ -545,39 +544,8 @@ fn parse_files(edn: Edn) -> Result<HashMap<String, FileInSnapShot>, String> {
545
544
  }
546
545
  }
547
546
 
548
- fn rustc_verbose_field<'a>(output: &'a str, name: &str) -> &'a str {
549
- output
550
- .lines()
551
- .find_map(|line| line.strip_prefix(name).map(str::trim))
552
- .unwrap_or_else(|| panic!("`rustc --version --verbose` did not report `{name}`"))
553
- }
554
-
555
- fn ffi_build_id() -> String {
556
- let rustc = env::var("RUSTC").unwrap_or_else(|_| "rustc".to_owned());
557
- let output = Command::new(&rustc)
558
- .args(["--version", "--verbose"])
559
- .output()
560
- .unwrap_or_else(|error| panic!("failed to run `{rustc} --version --verbose`: {error}"));
561
- if !output.status.success() {
562
- panic!("`{rustc} --version --verbose` failed with {}", output.status);
563
- }
564
- let verbose = String::from_utf8(output.stdout).expect("rustc verbose version must be UTF-8");
565
- let release = rustc_verbose_field(&verbose, "release:");
566
- let commit = rustc_verbose_field(&verbose, "commit-hash:");
567
- let target = env::var("TARGET").expect("Cargo must provide TARGET to build scripts");
568
- let debug_assertions = env::var_os("CARGO_CFG_DEBUG_ASSERTIONS").is_some();
569
- let panic_strategy = env::var("CARGO_CFG_PANIC").expect("Cargo must provide CARGO_CFG_PANIC to build scripts");
570
-
571
- format!("rustc={release}:{commit};target={target};debug-assertions={debug_assertions};panic={panic_strategy}")
572
- }
573
-
574
547
  fn main() {
575
548
  println!("cargo:rerun-if-changed=src/cirru/calcit-core.cirru");
576
- println!("cargo:rerun-if-env-changed=RUSTC");
577
- println!("cargo:rerun-if-env-changed=TARGET");
578
- println!("cargo:rerun-if-env-changed=CARGO_CFG_DEBUG_ASSERTIONS");
579
- println!("cargo:rerun-if-env-changed=CARGO_CFG_PANIC");
580
- println!("cargo:rustc-env=CALCIT_FFI_BUILD_ID={}", ffi_build_id());
581
549
 
582
550
  let target = env::var("TARGET").expect("Cargo must provide TARGET to build scripts");
583
551
  if target.ends_with("apple-darwin") {
@@ -0,0 +1,21 @@
1
+ # Remove Rust FFI fallback / 删除 Rust FFI fallback
2
+
3
+ ## 中文
4
+
5
+ - sync、callback、blocking 调用缺少 C-safe version/method/free symbol 时直接返回包含期望符号的迁移错误,不再查找或调用 Rust `Vec<Edn>`/trait-object function pointer。
6
+ - 删除 `EdnFfi`、`EdnFfiFn`、release-host legacy warning、build identity validation,以及 `abi_version`/`edn_version` probes。
7
+ - 删除 `--ffi-build-id` 与 build.rs 中 rustc/target/debug/panic identity 生成,C-safe wire protocol 不再绑定 host 与 dylib 的 Rust toolchain。
8
+ - native capability verifier 改为验证 buffer/async/resource protocol versions 和配套 free/release symbols;realization key/receipt 记录 protocol versions,并继续校验 artifact size/hash。
9
+ - 更新 FFI bindings、async protocol、upgrade guide 与 quick reference,明确 C-safe v1 是唯一支持边界。
10
+ - 明确 version、method、free 和 release 符号按模块实际能力要求;只实现异步 callback 的模块不导出 buffer protocol。
11
+ - 真实验证:当前 debug Calcit host 加载 release calcit-paint dylib 的 macOS blocking GUI smoke 通过,paint 也通过 verifier;只导出 legacy symbol 的 C fixture 在 caps 和 sync/async/blocking runtime 都确定性拒绝,且不会进入 Rust symbol。
12
+
13
+ ## English
14
+
15
+ - Sync, callback, and blocking calls now return migration errors naming the expected C-safe version/method/free symbols; they no longer look up or invoke Rust `Vec<Edn>`/trait-object function pointers.
16
+ - Removed `EdnFfi`, `EdnFfiFn`, release-host legacy warnings, build-identity validation, and `abi_version`/`edn_version` probes.
17
+ - Removed `--ffi-build-id` and build.rs rustc/target/debug/panic identity generation; the C-safe wire protocol no longer couples host and dylib Rust toolchains.
18
+ - Native capability verification now checks buffer/async/resource protocol versions and matching free/release symbols. Realization keys/receipts record protocol versions while retaining artifact size/hash integrity checks.
19
+ - Updated FFI bindings, async protocol, upgrade guide, and quick reference to make C-safe v1 the only supported boundary.
20
+ - Clarified that required version, method, free, and release symbols are capability-specific; async-only modules do not export the buffer protocol.
21
+ - Real validation: the current debug Calcit host passes a macOS blocking GUI smoke against the release calcit-paint dylib, which also passes verification; a C fixture exporting only a legacy symbol is deterministically rejected by caps and sync/async/blocking runtime paths without entering that Rust symbol.
@@ -0,0 +1,15 @@
1
+ # Release 0.13.57 / 发布 0.13.57
2
+
3
+ ## 中文
4
+
5
+ - 发布 C-safe FFI 迁移的最终阶段:删除 sync、async callback 和 blocking 调用的 Rust ABI fallback。
6
+ - 缺失 C-safe protocol version、method、free 或 release symbol 时返回确定性迁移错误。
7
+ - native capability verifier 和 realization receipt 直接校验 buffer、async 与 resource protocol versions。
8
+ - 更新 FFI 文档,按模块能力区分必需导出符号。
9
+
10
+ ## English
11
+
12
+ - Release the final C-safe FFI migration phase by removing Rust ABI fallback from sync, async callback, and blocking calls.
13
+ - Return deterministic migration errors for missing C-safe protocol-version, method, free, or release symbols.
14
+ - Make native capability verification and realization receipts validate buffer, async, and resource protocol versions directly.
15
+ - Update FFI documentation to distinguish required exports by module capability.
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calcit/procs",
3
- "version": "0.13.56",
3
+ "version": "0.13.57",
4
4
  "main": "./lib/calcit.procs.mjs",
5
5
  "devDependencies": {
6
6
  "@types/node": "^25.7.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calcit/procs",
3
- "version": "0.13.56",
3
+ "version": "0.13.57",
4
4
  "main": "./lib/calcit.procs.mjs",
5
5
  "devDependencies": {
6
6
  "@types/node": "^25.7.0",