跳至主要內容
YIP NEWS
YIP NEWS
生活 美食生活

10月25日 刊出

一個檔案走三個系統,就像一個鍋走遍你家的三個爐

一位開發者把 ripgrep 打包成單一可執行檔 rg.com、跨三大系統與雙架構還能讓多種語言直接呼叫,我們把這件事翻譯成廚房裡一鍋到底、一具爐具走天下的滋味故事。

刊出 (台北時間) 閱讀約 3 分鐘

廚房裡有一種人,鍋子特別多。煎魚一隻鍋、煮湯一隻鍋、炒個青菜又一隻鍋。櫥櫃塞滿了,真要開火的時候,還是站在原地想半天:今天這道菜,該拿哪一隻?

V2EX 上有位署名 bear330 的開發者,最近分享了一個小專案,解決的是另一種「鍋太多」的煩惱。ripgrep(簡稱 rg)是一個很好用的文字搜尋工具,速度快、脾氣好,寫程式的人幾乎人手一隻。麻煩在於,它並非每個平臺都開箱即用。Windows 一套、macOS 一套、Linux 又要看 CPU 架構,x86_64 和 ARM64 各有各的裝法。你要是還想讓 Python、Node.js 或 Java 的程式直接叫它幫忙,那組合就更多了,像食譜上寫著「依爐具調整火候」,每換一個爐就要重來一次。

他的做法很乾脆:把 rg 打包成所謂的 APE(Actually Portable Executable),一個叫 rg.com 的單一可執行檔,Windows、Linux、macOS 都能跑,x86_64 和 ARM64 都喫得下。再透過他自己做的 APEBind,為不同程式語言生成統一的呼叫介面。一份材料,一個鍋,哪個爐都上得了。

這件事讓人想起廚房裡那種「一物多用」的快感。好的壓力鍋就是這樣:燉牛肉可以,煮白飯可以,連快速滷一鍋蛋都行。你不用為每道菜添購專用器具,櫥櫃清爽,腦子也清爽。

更妙的是,他說同樣的思路還做了另外兩個專案。一個叫 sympy-ape,讓 Java 和 Node.js 可以直接呼叫 Python 的 SymPy,過程中完全不需要裝 Python。另一個叫 tika-ape,讓 Python 直接使用 Apache Tika,不必另外安裝 JVM 那一整套依賴。

翻成廚房的語言,這就像:你想做一道需要味噌的菜,但家裡沒有味噌,也不想為了一鍋湯特地去買一整包。鄰居把味噌直接調成一小罐高湯塊遞給你,丟進去就好,不必自己從黃豆開始發酵。依賴這種東西,說穿了就是「為了一道菜要養一整座菜園」的成本。能省下來,爐臺前的人會感激。

原始碼放在 GitHub 上,專案叫 rg-ape。他也在文末說了,如果反應不錯,考慮再擴充到更多程式語言。這句話很像菜市場裡試喫攤的老闆:「你先喫喫看,合口味我再做多一點。」

工具的滋味和食物的滋味,道理相通。真正好用的東西,往往不是功能最花俏的那個,而是那個讓你少洗幾個鍋、少開幾趟超市的。一個檔案走三個系統,聽起來是工程師的事,但那份「把麻煩一次收拾乾淨」的體貼,和一鍋到底的晚餐,是同一種溫柔。

下次你站在櫥櫃前猶豫要拿哪隻鍋的時候,不妨想想 rg.com:有時候,你需要的就是那隻哪裡都能去的。