SQLite擬遷移至輕量建置系統Autosetup,提升可維護性與穩定性

2024-10-29 | 李建興

SQLite開發團隊啟動了一項探索性專案,計畫將現有建置系統從原本的GNU Autotools,轉移至Autosetup。這項變更的目的是要提高系統的可維護性和穩定性,但由於新系統與現有配置方法存在一些差異,可能對部分應用的自動化建置流程產生影響。目前團隊正在積極測試新方案,並持續收集回饋以決定最終實作。

SQLite從創立以來就使用GNU Autotools作為主要建置工具,由於其開源和靈活等特性,能夠適應多數Unix-like平臺和作業系統,但是隨著SQLite應用逐漸擴展至各種嵌入式和企業環境,Autotools複雜的語法和外部相依需求,逐漸成為專案維護的阻礙,因此SQLite團隊希望更換成更為簡化的建置工具Autosetup,能夠嵌入至專案原始碼樹中,維持建置的獨立性和穩定性。

Autosetup是一個使用TCL語法的建置工具,內建輕量版的TCL直譯器JimTCL,可用於不具備完整TCL安裝的環境,由於SQLite團隊長期以來測試和工具皆使用TCL,因此Autosetup也就成為理想的建置工具選擇。

SQLite團隊現在正探索遷移至Autosetup的可能性,以解決Autotools的維護困難。因為Autosetup的輕量特性,減少了建置系統的複雜性和開發人員負擔,此外,將Autosetup直接嵌入到專案中,SQLite團隊也就不用擔心外部工具更新時所帶來潛在的不相容問題。

而且相較於Autotools,Autosetup擁有更簡單的語法和更快的執行速度,過去Autotools架構混合了GNU m4和POSIX Shell語法,而Autosetup僅使用TCL,使得建置流程對開發者更為友善。而且SQLite專案中原本相依於TCL的所有程式碼生成步驟,現在都可以直接使用Autosetup提供的JimTCL完成,大幅減少建置過程的系統需求。

雖然Autosetup擁有不少優勢,但是也產生一些新的問題,像是Autosetup主要針對POSIX標準開發,目前對部分非POSIX平臺的支援尚未完全確認。SQLite團隊正在評估對應方案,當新系統無法全面相容這些平臺,可能會透過提供靜態Makefile確保新系統的相容性。

另外,因為Autosetup和Autotools在解析和執行配置旗標的方式不同,部分建置選項需要重新命名以保持相同語義,雖然這些變更僅會影響少數自動化建置流程,但開發者仍需要調整腳本跟新系統相容。

SQLite團隊正在測試Autosetup的適用性,以確保新系統能在相容性和長期維護性間取得平衡,目前團隊尚未做出最終決定,將會根據測試結果決定是否正式遷移。

資料來源: https://www.ithome.com.tw/news/165736

Related posts