本頁面會評論 Lua 模組。目標之一是找出被推薦為最佳實務,並包含於 Lua 標準程式庫和 Lua 套件中的一或多組準官方/重要的模組(例如 LuaForWindows?)
函式分類
以下是程式庫和套件中重要且必須涵蓋的函式領域,以及最能滿足這些需求的模組。
提示: [W] = 包含在 LuaForWindows? 中。[K] = 包含在 Kepler[1] 中。 [A] = ANSI C。[L] = 純 Lua 實作(無 C)
- 基礎資料結構,實用程式函式
- PenLight?[2]? [大多數為 L] - 表格/清單/集合/對應操作、字串函式、實用程式函式、I/O 實用程式函式、函式程式設計、清單理解、檔案路徑剖析、命令列剖析(請另見 StandardLibraries) -(文件編寫良好,但設計在 200906 後變化極大)
- 作業系統/系統
- 異質函式介面(FFI) - 這些介面可以連接非 Lua 程式碼,大幅擴充 Lua 的功能
- 注意:這些模組通常需要在 C 中有平台支援。
- Lua->C:Alien [W]
- Lua->Python:LunaticPython [計畫中的 W](注意:目前為 LGPL)
- Lua->Java: (選哪一個?)
- Windows 特定:
- 剖析/序列化/格式
- 注意:上述所有模組應該都能使用純 Lua [L] 或(效率更高的)ANSI C [A] 實作。
- 位元運算(BitwiseOperators - 可能為
Bit
Op) - 應用程式:二進位檔案/通訊協定處理、演算法、與 C API 對接(例如 Alien) - 結構體處理 - StructurePacking
- Unicode(選哪一個?)
- PEG:LPeg [W|A] - 品質:高,實用性:高 - 應用:lexing/parsing 超出正則表達式
- 正則表達式庫 (lrexlib?採用 MIT 授權,但使用了 BSD 正規表達式庫 (PCRE 或 Oniguruma) 或 POSIX regex.h (授權?)) 問題:[12]。假設有 LPeg,是否需要?
- XML 解析 (選哪一種?LuaExpat??[W|K] MIT 授權) - 請參閱 LuaXml
- JSON 解析 - JsonModules
- CSV 解析?(哪一個?) - LuaCsv
- Lua 解析:讓 Lua 能夠解析其自身具有理論和實務的重要性,包括建立編譯器和來源分析器。有許多不同的做法
- 儲存在 MetaLua 中的 gg 和 mlp 解析模組。[L] mlp 解析 Lua 來源 (選擇性地使用語法擴充) 為 AST。它是建立在 gg 上面,gg 能解析更通用的語法 (不僅限於 Lua),而且也很有用。文字分析器基於 Yueliang。許多 Lua 來源分析工具和編譯器重新實作都使用 mlp。AST 設計/介面經過深思熟慮,也使用在完整的 MetaLua 應用程式中。有許多使用者都進行了測試。它是用 Lua 實作,這樣做很方便,但不太可能是執行速度最快的解析器。
- Leg [5] 是另一個可能的選擇。Leg 用在 Shake [6] 單元測試架構中。Leg 是基於 LPeg (請見上文),因此應該很有效率。Leg 看起來不會產生一個定義良好的 AST (像 MetaLua)。一個好的延伸是讓它產生 MetaLua 風格的 AST 以保持一致性 (這可以在 [LuaFish] 內所包含的類似 LPeg 解析器中完成)。
- 另一種方法是使用 Lua 自己的文字分析器程式碼 (llex.c),例如 lhf 的庫 [7][8]。
- 有關其他選項,請參閱 LuaGrammar。
- 編碼
- 壓縮/解壓縮 - 請參閱 CompressionAndArchiving
- ZIP 檔案讀取/寫入 (LuaZip??[W|K] - 只讀 ZIP。採用 MIT 授權,但使用了 zzpiblib [zziplib.sourceforge.net] 庫,該庫採用 MPL/LGPL 雙重授權) - 應用:萃取 LuaRocks 封存檔、系統管理 (例如壓縮日誌檔案/萃取封存檔)、壓縮虛擬檔案系統 (例如可能儲存在 ZIP 封存檔中的模組,並使用自訂搜尋器函式載入)、讀取基於 ZIP 的格式 (例如 OpenOffice? 文件)。
- zlib 讀取/寫入 (LuaZlib??[/luazlib/]) - [9]) 的應用
- Lua 物件持久化 - PlutoLibrary
- 密碼學 - CryptographyStuff
- 注意:上述所有模組應該都能使用純 Lua [L] 或(效率更高的)ANSI C [A] 實作。
- 摘要
- MD5: (MD5?[W|K] [A-C99?] MIT 授權,也支援 DES) - 應用:驗證封存完整性(例如,LuaRocks),針對安全性的一般密碼學雜湊(例如,儲存密碼雜湊)和 Web 應用程式。
- SHA1、CRC32 - 選用哪一個?
- UniversallyUniqueIdentifiers - UUID 產生
- 測試/除錯/生成剖析
- 模組部署 - LuaRocks [W-規劃中]
- 封裝 - BinToCee 或相關的模組?srlua [10]?
- 圖形/多媒體 - 二級
- 資料庫 - 二級
- SQL: LuaSQL [W] - 品質=?,實用性=中等
- Web 應用程式 - 二級
- 數字/數學 - 二級
- 其他 - 二級?
模組等級
模組可能分級為多個級別的重要程度或適用性。一個發行版可能包含較低級別,但不會完全支援較高級別。
- 第零級 - Lua 標準函式庫和任何其他用 ANSI C 執行的模組
- 第一級 - 這些模組應該很有用、有高品質、有小尺寸、有寬鬆的授權,而且可在相當多的平台上運作(包括 POSIX 和 Win32)
- 第二級 - 這些模組可能對某些類別的應用程式很重要,而且尺寸較大
測定特性
這些品質對於決定標準函式庫和發行版中是否包含模組很有用。
- 實用性 - 模組如果在大量且多樣化的應用程式中都需要使用,那麼它就是非常實用的。例如,大量的程式需要非 ANSI 檔案系統運算,或是位元運算。注意事項:即使實作品質很差(定義請見下方),模組也仍然可能非常實用。
- 實作品質 - 這指的是良好的介面設計與較少的錯誤(廣泛的測試套件)。注意事項:特定發行版可能會做出品質保證,例如關鍵的應用程式。
- 封裝品質 - 這有些其他非功能性的品質領域:文件、LuaRocks 規格包含、建置系統等。
- 授權 - 例如 MIT 或其他授權。注意事項:特定發行版可能會局限在僅有 MIT 授權(與 Lua 相容),而其他發行版可能會允許或禁止開放原始碼或專有函式庫(例如 debian 自由/非自由 [11])
- 相依性 - 作業系統相依性、對系統函式庫的相依性、編譯器相依性(例如 GCC/MSVC),以及實作語言(例如純粹的 Lua 或 C)。注意事項:Windows 發行版不會包含與 Linux 相關的模組,而特定發行版可能會限制在純粹的 Lua 模組或 ANSI C 模組。
- 大小 - 有些東西例如 GUI 工具套件,會讓某些發行版的容量膨脹太多。容量變大的話,也較難確保品質/測試。優先選擇一個做一件事,做得好的小型函式庫,勝過選擇一個做很多事情,做得還好但不夠好的大型函式庫。
另請參閱
RecentChanges · 首選
編輯 · 歷程
上次編輯時間為 2011 年 2 月 22 日凌晨 2:48 GMT (diff)