LuaJit - Lua Just in Time Compiler

last updated: {{ โ€œ1736305941โ€ | date: โ€œ%Y-%m-%d %H:%Mโ€ }} Intro ํ•จ์ˆ˜๋“ค์ด ์ฒ˜์Œ ์‹คํ–‰ ๋  ๋•Œ ํ•„์š”์— ์˜ํ•ด ์ปดํŒŒ์ผ๋œ๋‹ค. ์ด๊ฒƒ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘๋˜๋Š” ๊ฒƒ๊ณผ ๋ถˆํ•„์š”ํ•œ ์ž‘์—…์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ด ์ค€๋‹ค. LuaJit์€ neovim์— ๊ธฐ๋ณธ ํƒ‘์žฌ๋˜์–ด ์žˆ๋‹ค. python, ruby ๋“ฑ์˜ Jit๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค€๋‹ค. LuaJit์˜ FFI(Foreign Function Interface)๋Š” Low-Level C์–ธ์–ด ํ•จ์ˆ˜๋“ค์„ ๋ณ„๋‹ค๋ฅธ ์ž‘์—… ์—†์ด ์ง์ ‘์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ์— ๊ฒฌ์ค„๋งŒํผ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ ๋‹ค. nginx์— LuaJIT์„ ํฌํ•จ์‹œ์ผœ์„œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ํ•œ OpenResty ์›น ์„œ๋ฒ„๋„ ์žˆ๋‹ค. ...

2022-08-30 ยท 446 words

Luarocks - lua ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ

INTRO lua์˜ ํ™•์žฅ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. INSTALL and SETUP Install System-Wide : /usr/local/ $ sudo apt install luarocks # luarocks ์„ค์น˜ $ sudo luarocks install stdlib # ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ $ sudo chmod a+r /usr/local/share/lua/5.1/* # ์ผ๋ฐ˜์‚ฌ์šฉ์ž ์ฝ๊ธฐ ๊ถŒํ•œ ๋ถ€์—ฌ $ sudo luarocks install package_name # ํŒจํ‚ค์ง€ ์„ค์น˜ Install User Base : $HOME/.luarocks $ sudo apt install luarocks # luarocks ์„ค์น˜ $ echo 'PATH=$PATH:$HOME/.luarocks/bin' >> ~/.bashrc # add luarock bin path $ echo 'eval "$(luarocks path --bin)"' >> ~/.bashrc # add LUA_PATH, LUA_CPATH $ . ~/.bashrc $ luarocks install --local package_name # ํŒจํ‚ค์ง€ ์„ค์น˜ (--local) Rcoktree Structure: ๊ธฐ๋ณธ ์„ค์น˜ ๊ตฌ์กฐ {base} (base rocks tree directory) โ”œโ”€โ”€ bin (deployment of command line scripts) โ”œโ”€โ”€ lib โ”‚ โ”œโ”€โ”€ luarocks โ”‚ โ”‚ โ””โ”€โ”€ rocks (contains manifest and sub-dirs with rocks) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ lua โ”‚ โ””โ”€โ”€ 5.1 (deployment of binary modules) โ”‚ โ””โ”€โ”€ share โ””โ”€โ”€ lua โ””โ”€โ”€ 5.1 (deployment of Lua modules) Usage $ luarocks # show help and usage $ luarocks list # show installed packages $ luarocks search pack_name # search packages $ luarocks install pack_name # remove installed packages $ luarocks show pack_name # show info installed packages $ luarocks remove pack_name # remove installed packages ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ก€ ํŒจํ‚ค์ง€๋Š” http://luarocks.org ์ฐธ์กฐ - ๊ฐ ๋ชจ๋“ˆ ๋‹ค์šด๋กœ๋“œ ์ˆœ์œ„๋„ ์ฐธ๊ณ  ...

2022-08-30 ยท 309 words

Luastatic - lua ๋…๋ฆฝ์‹คํ–‰ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ปดํŒŒ์ผ๋Ÿฌ

Intro lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹จ๋… ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ (gcc๋กœ ์ปดํŒŒ์ผ) ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธฐ๊ณ  ๋น ๋ฅธ ๋‹จ๋… ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ฐ”๊พธ๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉ ๋˜๋Š” ๊ฐœ๋ฐœ์‹œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฃจ์•„ํŒŒ์ผ์„ require๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๊ณ ์ž ํ•  ๋•Œ luarocks๋กœ ์„ค์น˜ํ•œ๋‹ค. luarocks๋กœ ์„ค์น˜๋œ ๋ชจ๋“ˆ์€ ~/.bashrc์— eval "$(luarocks path --bin)"๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ํฌํ•จ๋œ๋‹ค. ๋ฌธ์ œ๋Š” ๊ฐ™์€ ๋ฆฌ๋ˆ…์Šค๋ผ๋„ ๋ฒ„์ „๊ฐ„ ๋ฐฐํฌํŒ๊ฐ„์— glibc ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ๊ฑฐ์˜ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ๋งŒ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค. ๋‹จ, alpine linux์˜ ๊ฒฝ์šฐ์—๋Š” glibc ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ์—†๊ณ , ์šฉ๋Ÿ‰๋„ ์ž‘๋‹ค. debian ๊ณ„์—ด ์š”๊ตฌ์‚ฌํ•ญ: build-essential(gcc), lua, luastatic alpine Linux ์š”๊ตฌ์‚ฌํ•ญ: build-base, clang, luajit, luastatic Install and Howto Install $ luarocks install --local luastatic # install luastatic $ export PATH=$PATH:$HOME/.luarocks/bin # set PATH for luarocks bin $ luastatic # show version and usage Compile Single Lua file $ luastatic myprogram.lua \ /usr/lib/x86_64-linux-gnu/liblua5.1.a \ -I /usr/include/lua5.1 $ ./myprogram Embed library.lua for require(โ€œlibraryโ€) $ luastatic myprogram.lua \ myprogram.lua \ library.lua \ /usr/lib/x86_64-linux-gnu/liblua5.1.a \ -I /usr/include/lua5.1 C library containing luaopen_() $ luastatic myprogram.lua \ library.a \ /usr/lib/x86_64-linux-gnu/liblua5.1.a \ -I /usr/include/lua5.1 LuaJit on Ubuntu - ์šฐ๋ถ„ํˆฌ์—์„œ LuaJit ์‚ฌ์šฉ $ sudo apt install luajit # install luajit - 2.1.0 $ sudo apt install libluajit-5.1-dev # install libluajit dev - 5.1 $ luastatic myprogram.lua \ /usr/lib/x86_64-linux-gnu/libluajit-5.1.a \ -I /usr/include/luajit-2.1 \ -no-pie LuaJit on Alpine - LuaJit, clang with musl lib static compile # apk add luajit luajit-dev # install luajit - 2.1.0 # apk add build-base clang make # install build base and clang # env CC=clang luastatic myprogram.lua \ /usr/lib/x86_64-linux-gnu/libluajit-5.1.a \ -I /usr/include/luajit-2.1 \ -no-pie ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ์กฐ Links https://github.com/ers35/luastatic ...

2022-08-30 ยท (updated 2022-11-29) ยท 249 words

Lua Install

Install ์„ค์น˜ - luaJit๊ณผ์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด 5.1๋กœ ์„ค์น˜. sudo apt install lua5.1 lua -v - version lua -h - help lua -i - interactive mode Hello World hello-world.lua #!/usr/bin/env lua print("Hello World!") ์‹คํ–‰ chmod u+x hello-world.lua ./hello-world.lua Lua - Cli ์ธํ„ฐํ”„๋ฆฌํ„ฐ $ lua Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > print('Hello World!') Hello World! > os.exit() -- ๋˜๋Š” Control + d (๋ฆฌ๋ˆ…์Šค)

2022-08-30 ยท (updated 2022-09-17) ยท 63 words

Lua Intro - ์™œ lua์ธ๊ฐ€

Intro 1993 ๊ฐœ๋ฐœ, ํ˜ธ๋ฒ ๋ฅดํˆฌ ์˜ˆ๋ฃจ์ž˜๋ง์Šคํ‚ค, ํฌ๋ฅดํˆฌ๊ฐˆ์–ด ๋‹ฌ์„ ์˜๋ฏธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๊ต‰์žฅํžˆ ์ž‘๊ณ  ๊ฐ€๋ฒผ์šด ์ธํ„ฐํ”„๋ฆฌํ„ฐํ˜• ์–ธ์–ด์ด๋‹ค. ํŒŒ์ด์ฌ์ด๋‚˜ ๋ฃจ๋น„์— ๋น„ํ•ด ๊ฐ€๋ณ๊ณ  ๋งค์šฐ ๋น ๋ฅด๋‹ค ์ฝ”๋”ฉ์ด ๊ฐ„๊ฒฐํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ์ ˆ์ฐจํ˜•, ์˜ค๋ธŒ์ ํŠธํ˜•, ํ•จ์ˆ˜ํ˜• ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ํฐ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„๋งŒ ์•„๋‹ˆ๋ผ๋ฉด ์—ฌ๋Ÿฌ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค. ๊ทธ๊ฒƒ์€ ๋งˆ์น˜ DB์—์„œ sqlite3๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๊ฐ™๋‹ค. neovim์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์ž๊ธฐ๋งŒ์˜ vim ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์šฉ๋„ C/C++ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฆฌ์ปดํŒŒ์ผ์ด๋‚˜ ๋ฆฌ๋กœ๋”ฉ์—†์ด ๋ฐ”๋กœ ์„ค์ • ๋ณ€ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์  ๋•Œ๋ฌธ์— ํŠนํžˆ ๊ฒŒ์ž„์—…๊ณ„์—์„œ ๋งŽ์ด ์“ฐ์ธ๋‹ค. ๊ฐœ๋ฐœ์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ Lua๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ์ผ ์™ธ์—๋„, ์•„์˜ˆ ๊ฒŒ์ž„ ์ฝ”๋“œ๋ฅผ Lua๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. API๋ฅผ ์œ ์ €๋“ค์—๊ฒŒ ๊ณต๊ฐœํ•˜์—ฌ MOD์ œ์ž‘์ด๋‚˜ ๊ฒŒ์ž„์˜ ์ปค์Šคํ…€ UI ์„ค์ • ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. Links Lua ๋‚˜๋ฌด์œ„ํ‚ค: https://namu.wiki/w/Lua

2022-08-30 ยท (updated 2022-09-08) ยท 104 words