Lua 新訊 |
|
狀態:需要人員協助新增此頁面的項目(請見頁尾)。部分近期新聞遺漏。
(2008-12-14) 公告:Lua Programming Gems 書籍 [1][2] 出版,由 Luiz Henrique de Figueiredo 公告。 [68]
(2008-12-12) 公告:LuaDist [3], LuaRocks 的變型版,由 Peter Drahos 公告。 [69]
(2008-12-02) 主題:藉由 Alchemy 編譯 Lua 以便用於 ActionScript? (Flash) [70],由 Robert Stehwien 發表。
(2008-11-17) 公告:Mochalua [4],Lua 執行時間與 API 的 Java J2ME 移植,由 Patrick Meehan 公告。 [71]
(2008-11-13) 公告:LuCI 專案 [5],針對嵌入式裝置 / 網路收集 Lua 軟體,由 Steven Barth 公告 [72]
(2008-11-12) 公告:複數運算函式庫(根據 C99) [6] 由 Luiz Henrique de Figueiredo 公告。 [73]
[遺漏的項目]
(2008-05-xx) 公告:Windows 用的 Lua [7],Windows 的 Lua 腳本環境,具備安裝程式、Lua 二進位檔案、眾多 Lua 函式庫以及文件,由 Ryan Pusztai 公告 [74][75][76][77][78]
[遺漏的項目]
(2008-05-07) 公告:patch-lua-5.1.3,修補所有已知 [bugs] 的 patch 檔案 Lua 5.1.3,由 LuizHenriqueDeFigueiredo 發表。 [79]
[遺漏的項目]
(2008-02-19) 主題:Lua 5.2 即將變更的清單 [80] 初始清單,由 Roberto Ierusalimschy 發表。
(2008-02-18) 主題:Nanoki 與 Sputnik wiki 示範 [81][8],由 Petite Abeille 與 Yuri Takhteyev 發表。關於將 lua-users.org wiki 搬移至其中一個 Lua 實作,此處有長篇討論。
(2008-02-11) 錯誤:LUAI_MAXCSTACK 必須小於 -LUA_REGISTRYINDEX,由 Patrick Donnelly 報告 [82][9]
(2008-02-09) 公告:LuaRocks 0.4.2 [10],Lua 模組的部署和管理系統,由 Hisham Muhammad 公告 [84]。LuaRocks 的目標類似於 Perl CPAN [11] 或 Ruby
Gems [12]。
(2008-02-06) 公告:Metalua 0.4 [13],可使用編譯時期元程式設計擴充 Lua 的語言與編譯器,由 FabienFleutot 發佈。 [14] Metalua 允許在一致的架構中擴充語法。本專案有一個新的 wiki 頁面:MetaLua。
(2008-02-05) 公告:LuaJIT 1.1.4 [15],Lua 的即時編譯器,以及LuaJIT 2.0 的路線圖 [85],由 MikePall 發佈。 [86] LuaJIT 1.1.4 對 Lua 5.1.3 進行更新。LuaJIT 在 x86/IA-32 CPU 中提供較高的效能。Coco 1.1.4,Lua 中 True C 協程的擴充,也更新了。
[遺漏的項目]
(2008-02-02) 修補程式:lvm.c 中新的表格範圍支援 (TableScope),由 DavidManura 發佈。 [87]
[遺漏的項目]
(2008-01-31) 修補程式:由 Hu Qiwei 發佈,支援try/catch/finally [88][89][90]。return
和 break
在 try
區塊中是被禁止的。
finalize
和 guard
區塊。(2008-01-30) 程式碼修補:C 格式 string 語法分析於 llex.c 執行 [93] 由 EricTetz 發布。如此一來,詞法分析程式可以如同 C 語言一樣,自動連接鄰近的字串(例如,x = "a" "b" --> x = "ab"
),其目的在於避免不必要地配置許多小字串。如此一來,某些構造,例如將 f "a" "b"
解釋為 (f "a") "b"
的寫法會失效。可以利用在詞法分析程式中僅針對括弧之前的字串進行連接或要求新的詞法連接運算子,來解決這個問題。也有人建議進行常數折疊連接(例如,x = "a" .. "b" --> x = "ab"
),但需要在分析程式中執行,會造成效能損失。一個非常簡單的解決方案,就是使用新的跳脫序列忽略空白(包括嵌入的換行符號)。
x = "a\ \b" --> x = "ab"
[遺漏的項目]
(2008-01-25) Lua 公告:Lua 5.1.3 已發布 [94]。 此為一純粹修復程式碼錯誤的版本 [17],且遵循本月稍早釋出的候選版本 [95][96][97][98][18]。
[遺漏的項目]
(2008-01-20) 主題:Lua 工作坊 08 日期建議 [99][100][101],Matthew Burke 發布。
[遺漏的項目]
(2007-12-19) 主題:Lua 函式的預設最大引數限制通常將命令列引數的數量限制在約 2048 個左右 [102],NormanRamsey 提及。[102] Linux 2.6 的限制約為 32K [103]。Roberto 提及,arg
表格支援任意長度,並建議變更 Lua,取消將命令列引數傳遞為獨立引數給函數的機制。 [104]
(2007-12-18)公告:Shake 1.0.1/1.0 [19],使用 Leg 進行的透明 Lua 測試引擎 [20],由 Andre Carregal 發布 [105][106]。如此一來,單位測試可以撰寫為簡單的 assert
呼叫。通常,assert
呼叫(例如,assert(a == b, 'test equals')
)如果發生失敗,所提供的資訊會比 jUnit 類型的 [21] 測試所提供的資訊少,例如 assert_equal(a, b, 'test equals')
,原因是 a
和 b
的值無法讓測試函數取得。Shake 透過使用 Leg [20] 分析原始碼來克服這個問題。另請參閱 單元測試。
(2007-12-18) 手冊公告:Lua 參考手冊現在提供西班牙語版本 [107],由 Julio Manuel Fern�ndez-D�az 撰寫。
(2007-12-18) 公告:LuaRocks 0.3.2/0.3.1/0.3 [10],Lua 模組的部署系統與管理系統,公告者為 Hisham Muhammad [108][109][110]。LuaRocks 的目標與 Perl CPAN [11] 或 Ruby
Gems [12] 類似。
(2007-12-17) 公告:LuaPascal [22],Lua 與 Pascal(Delphi)之間的整合,公告者為 Macro Antonio Abreu [111]。
(2007-12-17) 公告:LuaService [23] alpha 版 2/1,一個以Lua 撰寫 Windows 服務應用程式的架構,公告者為 Ross Berteig [112][113]。目標之一是讓 Xavante [24] 網路伺服器以服務的形式執行。「以服務形式執行的優點包括在 Windows 啟動時自動啟動應用程式,而且在主控台中無需任何使用者登入即可執行。」
(2007-12-17) 修補程式:快速字串雜湊修補程式,針對 Lua 字串,由 MikePall 發布。「新的雜湊演算法是 Bob Jenkins 的快速旋轉和混合雜湊 [25] 的劣質變體。它從字串中雜湊最多 12 個字元,從開頭、中間和結尾選取。基本概念為:較少的提取、更多的位元混合、無迴圈和恆定的雜湊時間。」目前的版本以未對齊的方式存取 32 位元字元組以提昇速度(在 x86 中沒問題)。據報導,其速度比 Lua 的雜湊函式快 2 至 10 倍,並使某些字串密集的基準測試速度加快 5 至 10%。該修補程式已包含在 LuaJIT 2.x 中,但也可以套用於 Lua 5.1.2。
(2007-12-17) 公告:另一個純 Lua 的 XML 解析器由 Peter Hickman 作為一個實驗發布 [114]。這會將 XML 字串轉譯成巢狀的 Lua 表格,且沒有損失。有關另一個純 Lua 的 XML 解析器,請參閱 [115]。有關其他 Lua XML 介面,請參閱 LuaXml。
(2007-12-16) 主題:Win32 GUI 繫結簡短的討論由 Habib 開啟 [116][117],主要集中於wxLua JPEG 顯示。
(2007-12-15) 主題:Lua 介面 [26] 至 Gnuplot [27],公告者為 Ken Smith [118]。Gnuplot 是一個可攜式的指令列驅動、互動式資料和函式繪圖工具程式,適用於許多平台。另一個 Lua Gnuplot 介面 [28] 也受到關注 [119]。
(2007-12-15) 公告:Andreas Weis 宣布「檔案系統操作函式庫」[120]。它主要是一種編寫它的練習,並且可能與LuaFile
System [29] 和 ExtensionProposal 有重複的部份。
(2007-12-15) 主題:在 Lua 中加入「小型字串最佳化 (SSO)」的影響[30],RiciLake 最近的 SpeedingUpStrings 討論串由 Alex Mania 再度開啟 [121]。關於 FastStringPatch,RiciLake 提出了 SSO 的 [122] 問題。其他討論串則評論了 [123] 避免在 C 中使用 lua_pushstring
將字串內部化。
(2007-12-13) 公告:SteveDonovan 宣布推出 Scite-debug 0.8 [31],一個可供偵錯器使用的 Scite 文字編輯器擴充套件 [124]。現在它支援 clidebugger [32] 以及實驗性質的 jdb 和 mdb 支援。
(2007-12-12) 主題:Brett Kugler 開啟的「字串存取與元方法」討論串
(2007-12-11) 主題:NormanRamsey 開啟的「為什麼 os.exit
會略過 __gc
終結子」討論串 [126]。建議使用 atexit
[33] C 函式和 gcc __attribute__((destructor))
[34]。並注意到了與多個 Lua 狀態有關的問題。
(2007-12-11) WIKI-主題:SpeedingUpStrings - RiciLake 研究了修補 Lua 的字串以延遲內部鍊結的效能提升。在此,字串可以存在於兩種狀態之一:一般狀態,或稱為預字串。預字串具有固定大小的緩衝區,就像一般字串,但可以變動,而且不內部鍊結(亦即具有雜湊值,且單一個體儲存在全域字串表中 [35])。預字串可以轉換為一般字串,但反之則不行。轉換可以是自動且透明的,以符合 C API 的舊版相容性。預字串假設的主要優點是,在某些情況下,其使用可以避免 malloc 和/或複製:無須 malloc 緩衝區、寫入緩衝區和從緩衝區建立字串(第二次 malloc + 複製),可以將預字串做為緩衝區進行 malloc、寫入預字串,並將預字串轉換為字串(不需額外的 malloc 或複製,僅須內部鍊結)。此外,預字串由於可以變動,因此可以重複使用(可避免更多次的 malloc 和內部鍊結)。一些基準顯示內部鍊結僅為 200-250 奈秒(64 位元 AMD Turion),而 malloc 時間在不包含 I/O 的特殊硬迴圈中可能是執行時間中相當大的百分比。結論是,相對於增加的複雜性,預字串的效能提升並非值得。後續討論請見 [127] 清單。
(2007-12-11) 主題修補:原子與 userdata 終結函數中發生停滯 (luaC_separateudate
),討論由 Niklas Frykholm 開始 [128],並貼出 lgc.c 修補程式 [129]。
(2007-12-11) 手冊需求:使用 Lua 進行程式設計的書籍 [36] 已70% 翻譯為日文。Yutaka Ueno 徵求校對者 [130]。
(2007-12-10) 公告:Lua 信號函式庫 1.0 [37],由 Patrick Donnelly 公告 [131][132]。範例:<< signal.signal("SIGTERM", function() print "dying..."; os.exit(1) end); signal.raise("SIGTERM")
>>。
(2007-12-10) 公告:CairoPad [38],實驗 Lua
Cairo 的即時便條紙應用程式 [39],Cairo 的綁定 [40][41] 2D 不含裝置的基於向量的繪圖函式庫,由 Hakki Dogusan 公告 [133]
(2007-12-10) 公告:「[為什麼] 一般來說,基於暫存器的 VM 現今被認為給予比基於堆疊的 VM 更好的效能?」Duck 問道。 [134]。David Olofson 指出暫存器 VM 的使用指令較少,可用於對抗 VM 中高度的指令碼偏差 [135]。文件已參照 [136]。
(2007-12-09) 公告:Lua Workshop 2008 [42] 將由位於華盛頓特區的喬治·華盛頓大學主辦,Matthew Burke 宣布 [137]。「工作坊的主要目標是讓 Lua 社群(或至少部分社群)齊聚一堂,親自見面並針對 Lua 語言、其用途和其實作進行討論。另一個目標則是協助將有關 Lua 的資訊傳播至產業界和學術界...」[42]。註冊免費開放給所有對 Lua 有興趣的人。
(2007-12-09) 主題:此個 LuaNews 頁面,由 DavidManura 宣布 [138] 並加以討論。有人建議加入更長的註解和 RSS 支援 [131][134]。
(2007-12-08) 公告:簡單的 XML -> Lua 表格轉譯器 [43],基於「BadgerFish」 [44] XML -> JSON [45] (即 Java
Script 表格) 轉譯器,由 Petite Abeille 宣布 [139]。以下使用 DataDumper 舉例說明:<<
require "XML"; dofile 'DataDumper.lua'; print(DataDumper(XML [[<alice charlie="david"><bob>charlie</bob><bob>david</bob></alice>]]))
>>。此程式碼的輸出為 << return { alice={ ["@charlie"]="david", bob={ { ["$"]="charlie" }, { ["$"]="david" } } }
} >>。此段程式碼僅略多於 100 行非註解行。此轉譯提供便利性,但不保證一定可逆 [46][140]。若要取得其他 Lua XML 介面,請參閱 LuaXml。
(2007-12-06) 公告:LuaCairo [39] 更新,其為套件,用以連結 Cairo [40][41],這是一個與裝置無關的 2D 向量式圖形程式庫,由 Hakki Dogusan 宣布 [141]。
(2007-12-05) 主題:John Dunn 發問:「是否有可能讓我的應用程式靜態連結至 Lua,但也允許[動態連結的]基於 DLL 的套件正常運作?」[142][143][144]
(2007-12-03) 公告:針對 Mac OS X Xcode 3 的 Lua 語法著色 [47] 由 Graham Henstridge 發布 [145]。
(2007-12-03) 主題:針對採用 130,000 個使用者資料物件的垃圾回收效能提出的問題,Niklas Frykholm 發問。 [146]
(2007-12-03) 公告:LuaMacro [48] 更新,由 Steve Donovan 公佈。 [147] 「今日的巨集是列表解析。」
(2007-11-29) 公告:IUP 2.6 [49],可攜式的 GUI 工具組,由 Antonio Scuri 公佈 [148]。
(2007-11-29) 公告:CD 5.0 [50],Canvas Draw 繪圖工具組,與平台無關的繪圖函式庫,由 Antonio Scuri 公佈 [149]。
(2007-11-29) 公告:IM 3.3 [51],用於數位影像,由 Antonio Scuri 公佈 [150]。
(2007-11-29) 主題:延伸 xpcall
[52] 以接收引數,由 Patrick Donnelly 提議 [151],其中有 Roberto 的留言。
(2007-11-28) 錯誤:「如果針對無效的物件呼叫, lua_setfenv
可能會當機」 [53] 由 Mike Pall 回報,且 Roberto 證實,並提供修補程式。 [152]
(2007-11-27) 主題:在職場中導入 Lua 的理由,由 Tim Hunter 詢問 [153]。在 [154] 到 [155]、[156][157][158] 的文章中貼出各種連結。
(2007-11-25) 主題:建議為 [Lua 錯誤 #5.1.2-4] (遞迴共程式可能會溢出 C 堆疊)提出修補程式,由 Jim Whitehead II 轉發 [159]。Roberto 仍然偏好「將 nCcalls
從 lua_State
移至 global_State
的想法」。 [160]
(2007-11-24) 公告:LuaTask 1.6.4 [54] 由 Daniel Quintela 公佈 [161]。
(2007-11-22) 公告:ilua,Lua 的增強互動式提示(InteractiveLua),由 Steve Donovan 公佈 [162]。避免使用「=
」,並支援漂亮的列印。
(2007-11-20) 主題:在 LuaForge 上加入對 Subversion [55] 的支援,而非只支援 CVS,進行討論。 [163]。其他成員推薦使用分散式 SCM。Stefan Sandberg 和 Andre Carregal 提及,這可能在明年發生,並有可能支援其他 SCM,只要在 GForge 升級期間完成 [164][165]。需要協助。
(2007-11-19) 公告:bitlib 22、23 及 24 位元運算函式庫 [56] [166][167][168] 由 Reuben Thomas 發布
(2007-11-19) 宣布:Leg 0.1,用 Lua 5.1 語法和 API,讓使用者在 LPeg 中處理 [169],由 Humberto S. N. dos Anjos 宣布。David Manura 發現這與 LuaFish 類似。Humberto 宣布進一步計畫,打算用 Lua 和 LPeg 來寫一個 Lua 5.1 優化編譯器 [170]。之後還有關於靜態優化的討論。
(2007-11-19) 通知:開始編排 Lua Gems book [1],由 Luiz Henrique de Figueiredo 指出 [171]。
(2007-11-17) 主題:「除了使用 next 或 pairs 而面對 O(n) 複雜度,還有其他 實作優先佇列 的 Lua 方式嗎?」由 W. C. Bubel 提出 [172]
(2007-11-17) 主題:Dalvik VM [57] 被討論 [173],一種由 Google 使用的類 Java 暫存器 VM。
(2007-11-16) 宣布:精簡版的 poll
[58] binding,已修補於 lposix [59],由 Steve Donovan 發布 [174]。
(2007-11-15) 宣布-修補程式:新增 Lua -t switch,用來忽略環境變數設定,概念類似 Perl 的污點模式,透過修補 Lua 發布,由 Reuben Thomas 發布 [175]。
(2007-11-15) 宣布-修補程式:新增 Lua 命令列歷程支援,透過搭配 readline 修補 Lua 發布,由 Reuben Thomas 發布。 [176]
(2007-11-15) 主題:Lua 專案清單 [60] 進行精簡 [177]。Roberto 指出清單變得很長 [178]。一些人建議將舊連結移到 wiki。
(2007-11-14) 手冊-註解:Peter Cawley 指出 未記載的 lua_pushliteral
API 函式,並進行討論 [179]。Lhf 寫道:「當你有一個字面值字串,而非字串指標時,請使用 lua_pushliteral
。lua_pushliteral
比 lua_pushstring
稍微快一些,因為它避免調用 strlen
;它也允許包含嵌入式零的字串。」#define lua_pushliteral(L, s) lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
(2007-11-14) 主題:沒有 __hash 元方法
來讓兩個物件在表格中查到相同的值,再次進行討論 [180]。
(2007-11-12) 錯誤:table.remove(t, #t+1)
會移除最後一個元素,由 Patrick Donnelly 回報 [181],Roberto 確認並提供可用的修補程式 [61]。
(2007-11-10) 宣布:一個新的 Lua 相關部落格 [182] 名為 [lua nova],由 Nathan Youngman 宣布。
(2007-11-10) 手冊-修正:手冊中 luaL_getmetafield
錯誤處理 出錯,由 David Manura 回報且 Roberto 已修正。lua_next
與 lua_gc
錯誤處理也進行討論。
(2007-11-10) 公告:Scite-debug [183],一個 Scite 文字編輯器延伸套件,適用於偵錯程式,如 gdb 和 Lua remDebug [62],由 Steve Donovan 公告。連結兩個 Lua VM 到一個流程中的靜態變數衝突問題也由 Mike Pall 指出 [184]。
(2007-11-10) 主題:建立 PDF 模組討論 [185],包括 [lpdf]、[LuaHPDF]、[CD]、[LuaTeX] 和 [LuaCairo]。
(2007-11-10) 主題:Lua 執行緒 套件簡短討論 [186] 並比較 [63]。
(2007-11-09) 主題:在沙盒中保護 getfenv
[187] 解決方法由 David Manura 張貼 [188]。
(2007-11-07/09) 公告:clue 1、2 和 3 簡化 Lua-C 介面 [64][189][190][191] 由 Reuben Thomas 發布
(2007-11-07) 主題:手機上使用 Lua [192],例如 Qualcomm 在 BREW 2007 中的 Lua Trig Development,作者為 Kevin Hunter [65],由 Roberto 和其他人提出建議。Mike Pall 提出 Lua 在手機上應用廣泛的原因清單 [193]。
(2007-11-07) 主題:switch/case 陳述式 長篇討論重新由 Steve Donovan 開啟 [194]。結構化模式比對 [195] 如 Haskell/OCaml/Metalua 等語言中,由 Fabien 和其他人推薦,並建議微調語法變體
match k with 10, 11 then return 1 with 12 then return 2 with i if 13<=i and i<=16 then return 4 with c/"^([a-z]+)([0-9]*)$" then printf("1st part: %s; 2nd part: %s", c[1], c[2]) end -- note: return breaks out of function containing the switch.
一些重點說明
(2007-11-07) 主題:討論 Lua 中如何實作「編輯並繼續」功能 [205],這個功能和 The Sims 遊戲有關 [66]。
(2007-11-06) 主題:為何Lua 模組系統是使用 C 編寫,而不是 Lua?[206],Matt Campbell 如此發問。C 實作相當簡單,否則可能會因為自舉程式而變得複雜。另請參閱 Lua Compat [67]。
{2007-11-06} 主題:如 Enrico Colombini 所見,某些 C 函式庫函式(例如 lvm.c 中的 strcoll)可能會在內部呼叫 malloc,繞過 Lua 分配器 [207]。Mike Pall [208] 再次主張 [209],Lua 核心應該避免陷入自然語言支援 (NLS)/locale 函式的泥淖中。
此頁面的宗旨類似於其他語言的新聞和郵件討論串摘要 ([Perl][Python][OCaml][Haskell])。它類似於 [lua.org 新聞頁面],不同的是,它位於 wiki 上,因此 Lua 社群中的所有人均可對其做出貢獻,而且它可以有更深入的探討。我們只會提及郵件討論串上討論的最值得注意的重點,以及其他網站上的重要有趣事項。此頁面可能會被移動或重新整理,我們會觀察情況並在稍後決定。也許不再需要編輯的舊新聞將會被歸檔到另一個網站。 --DavidManura
在郵件清單中所提到的包含 LuaForge 專案更新公告可能會有重複,建議移除。 LuaForge 專案網站主頁已經公告所有更新,包含未在電子郵件清單上公告的更新。但仍有許多專案尚未維護在 LuaForge 上。或者這個頁面應該僅保留重大版本更新。同時也可將其與頂端的其他新聞頁面進行比較。
其他人建議建立 Lua 部落格或期刊,類似於 [use.perl.org],以及現已關閉的 [Perl Journal] 與 [C/C++ Users' Journal]。儘管 wiki 已達成許多相同的功能,但尚未編輯到高標準,而 [Lua Programming Gems] 可能能達成此標準。偶爾,Lua 會在 [ONLamp] 等較通用的網站上出現。 --DavidManura
討論此頁面的相關訊息可以參考 [138][134][210][211]。
如果您想提交單一新聞項目的摘要,只需張貼於此頁面最頂端或最底端以供審閱。 (可能您剛好在郵件清單上讀到值得注意的討論串,並充分理解所提出的觀點。)項目可能會經過審閱/編輯。
格式大致如下,您可以使用上述文章作為範本。
(<YYYY-MM-DD>) <POSTING TYPE>: <SUBJECT>[<LINK TO SUBJECT>] <ACTION TAKEN>, noted by <AUTHOR>.[<LINK TO DISCUSSION>] <A COUPLE SENTENCES OF SUMMARY> [<OTHER LINKS>]