不想为了 stderr 引入 async,我写了个小库

最近在写程序时想把报错发到 stderr,找了一圈发现,唯一相关的只有 moonbitlang/async 。但我用不到 async,为了一个 stderr 输出引入整个 async 运行时,感觉太重了。

于是我写了一个纯同步的 FFI 小库:Qisu-dev/ffi
自己定义eprintln的示例

fn eprintln(message : String) -> Unit {
  let full = message + "\n"
  let cstr = @ffi.string_to_cstr(full)
  defer @ffi.free(cstr)
  let len = @ffi.strlen(cstr)
  let _ = @ffi.fwrite(cstr, 1, len, @ffi.get_stderr())
}