iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
Software Development

30天 Lua重拾筆記系列 第 2

【30天Lua重拾筆記02】Lua的實現與選擇

  • 分享至 

  • xImage
  •  

Lua的實現與選擇

Lua LOGO

Lua的意思是葡萄牙文的「月亮」,其LOGO和其他相關也多與月亮有關。在開始使用學習Lua之前,比須先了解Lua的幾個版本與實際實現。

就像Python 2和Python 3有很大不同,Python 3各版本間又有些許不同。有些在Python 3.9能用的語法或功能,不一定可以在Python 3.5使用一樣。

Lua目前已經到了5.4版本,本系列內容也會以Lua 5.4為主。Lua 5.4於2020年釋出,所以還非常的新,有許多實現實際未達到這個標準。但Lua 5.1、5.3也已經使用多年,穩定度是可見的。就算是其餘版本的實現,也具有一定可用性。Lua設計極小,就某種程度上而言,甚至可以相對輕鬆的撰寫自己的實現。類似的於C語言,但是沒有C語言煩人的指標概念。所以Lua的實現也不少,其中著名的有:

  • LuaJIT

    極高效即時編譯的Lua實現。相容於Lua 5.1語法。

    LuaJIT is compatible to the Lua 5.1 language standard. It doesn't support the implicit arg parameter for old-style vararg functions from Lua 5.0.

  • eLua

    用於嵌入式設備開發的Lua,提供許多已經寫好的內容。(沒記錯的話也是使用Lua 5.1標準,沒用過)

  • LuaJ

    Java版的實現,支援Lua 5.2的語法。在GitHub上有另一個Fork的版本,兩個有些差異。

  • Fengari

    JS實現的版本。其他JS實現的版本還有:Moonshinelua.vm.jsStarlight。這是一個很新,也有點有趣的項目。我會在談談它。

  • IronLua

    C#的實現。

就像Python有CPython、Pypy、IronPython、Jython的實現一樣,Lua也有眾多實現,但如同許多Python項目停滯(Jython只支援到Python 2),上述許多實現也都沒在更新。雖然並不意味著你就無法使用,Lua各版本差異也沒有Python 2 和 3 如此誇張,有些實現還非常精良。但我還是會建議你只使用最原本的Lua版本。(Python的話僅推CPython、Pypy)。

不過你可能在使用的是別人提供的Lua環境,比如魔獸世界,就需要注意其提供的環境版本,其不一定有更新。

不好意思阿 ?
我自己沒在玩魔獸世界,只是大概這是最出名的應用之一。而目前看起來其仍然支援Lua,查到當下貼文於六天前發問。

魔獸世界貼文截圖

而且看起來前幾年也還是有人在寫:

自己則是重拾呵呵。

PS. Redis資料庫也包含了Lua。這次重拾,才發現有好多地方都有Lua的身影。絕對值得你學學看。

當你使用其他實現時,更要注意使用的版本。本系列會有個範例使用LuaJ,因為其只支援Lua 5.2的語法,因此有些內容你無法直接在延伸使用。另外值得一題的是Fengari是的很新的項目,撰寫當下對他有點興趣,可能會在本系列或番外提到。

線上嘗試(live demo)

官方有一個頁面可以直接在上頭嘗試Lua。

當然你還有像是Repl.it等選項。

取得Lua

你可以在Lua官網,下載到二進位版本,或是在線上玩玩。我建議你將Lua配置到系統環境變數PATH下。然後嘗試執行:

lua -v

Lua 5.4.0 Copyright (C) 1994-2020 Lua.org, PUC-Rio

編譯Lua

asciicast

Lua是純C寫成的,而且非常小,其編譯也很快速。不自己來編譯一次有點說不過去。但請確認你有以下環境:

  • C編譯器
  • Make

這邊我不打算多解釋什麼,但是為了進階的使用Lua,建議你先準備好相關工具,未來我們會再使用到。

編譯過程很簡單:

  1. 下載並解壓縮原始檔。
  2. 編譯
  3. 安裝
curl -O https://www.lua.org/ftp/lua-5.4.0.tar.gz # download Lua source code
tar -xf lua-5.4.0.tar.gz  # unzip 
cd lua-5.4.0 # go into directory
make # compile
make local # install(ref:編譯lua-local_install)

不過我不想直接安裝於系統,所以會做本地安裝。如果你想要直接裝於系統,可以將最後一行改成`lua install`。

現在在目錄下會有一個`install`目錄,其中子目錄`bin`包含著Lua的執行檔。

conda

最後,教個使用MiniConda來安裝Lua。請確認好你已經安裝`conda`

conda create -y -n lua
conda activate lua
conda install -y lua
lua -v

使用conda的好處是,可以很容易的在各版本的Lua中切換,不過當前並沒有Lua 5.4版。

LuaDist

LuaDist是官方推薦Windows下使用的一種環境。因為我個人使用經驗上不是太好,又主要使用Linux環境,預計會放到最後再多做介紹。(也可能只是我以前不太會用XD)

If you use Windows, try LuaDist, a multi-platform distribution of the Lua that includes batteries.


上一篇
【30天Lua重拾筆記01】認識Lua
下一篇
【30天Lua重拾筆記03】開發環境配置
系列文
30天 Lua重拾筆記36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言