CNWei 4aa619f07e refactor: 配置文件引擎迁移至 mlua 并优化环境变量注入
- 配置文件解析引擎由 shim 替换为 mlua (Lua 5.4)
- 优化路由策略:统一以根目录 shims.lua 为入口,支持 tools/ 目录模块化降级探测
- 自动注入 __SHIM_DIR__ 绝对路径与 package.path 模块搜索路径
- 环境变量改用 Command::envs 安全注入,并在 UAC 提权时透传
2026-08-12 20:19:50 +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%