CNWei e52ba67d7e feat(env): 支持环境变量数组跨平台自动拼接
- 支持在 Lua 中配置数组格式的环境变量(如 PATH),由 Rust 按 OS 自动使用 `;` 或 `:` 拼接
- 保持普通字符串格式环境变量的直接覆盖逻辑
- 新增 `ShimConfig::to_command()` 用于快速创建 Command 对象
- 新增 error.rs 明确错误类型
- 新增 build.rs 优化编译
2026-08-13 20:11:55 +08:00
2021-01-21 23:05:19 +08:00
2021-01-21 23:05:19 +08:00
2021-01-21 23:05:19 +08:00
2021-01-21 23:05:19 +08:00
2021-01-21 23:05:19 +08:00

rshim

rshim is the shim program written in rust.

Why this exist?

There are several versions of shim:

  1. the official shim.cs was written in c# and required an instantiation of a .NET command line app every time it was started therefore is slower than directly executing. And it dose not handle Ctrl+C event correctly.

  2. shim.c is ok with performance and Ctrl+C event handling,but sometimes suffer memory violation (randomly exited with return code 3221226356).

  3. shim.cpp didn't work on my machine, calling it with any executable result in an infinite recursion of creating subprocess until eating all memory for unknown subtle reason.

rshim :

  1. less probability with bug and undefined behavior.
  2. properly handle variety errors.
  3. friendly error message.
  4. properly handle Ctrl+C events.
  5. properly handle utf-8 with or without bom in shim file.

Installation

First install rust

cargo build --release

Close any running process with existed shim. then

./repshims.bat

Executable Size

Without crt-static enabled: around 200kb

With crt-static enabled: around 300kb

Description
shim written in rust
Readme 356 KiB
Languages
Rust 95.1%
Batchfile 4.9%