Files
rshim/README.MD
2021-01-21 23:05:19 +08:00

36 lines
1.4 KiB
Markdown

# `rshim`
rshim is the [`shim`](https://github.com/71/scoop-better-shimexe) program written in rust.
## Why this exist?
There are several versions of `shim`:
1. the official [`shim.cs`](https://github.com/lukesampson/scoop/blob/master/supporting/shimexe/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`](https://github.com/71/scoop-better-shimexe) is ok with performance and Ctrl+C event handling,but sometimes suffer memory violation (randomly exited with return code `3221226356`).
3. [`shim.cpp`](https://github.com/kiennq/scoop-better-shimexe) 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](https://rustup.rs/)
```shell
cargo build --release
```
Close any running process with existed shim.
then
```shell
./repshims.bat
```
## Executable Size
Without `crt-static` enabled: around `200kb`
With `crt-static` enabled: around `300kb`