29๋…„ ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— 5.4์›” XNUMX์ผ ๋ฃจ์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ƒˆ ๋ฒ„์ „์ธ XNUMX๊ฐ€ ์กฐ์šฉํ•˜๊ณ  ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Lua๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‰ฝ๊ฒŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํ•ด์„๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด Lua๋Š” ํ”„๋กœ๊ทธ๋žจ(ํŠนํžˆ ์ปดํ“จํ„ฐ ๊ฒŒ์ž„)์˜ ๊ตฌ์„ฑ์„ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์„ค๋ช…ํ•˜๋Š” ์–ธ์–ด๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Lua๋Š” MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „(5.3.5)์€ 10๋…„ 2018์›” XNUMX์ผ์— ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ

  • ์„ธ๋Œ€ ๊ธฐ๋ฐ˜์˜ ์ƒˆ๋กœ์šด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(generational). collectgarbage ํ•จ์ˆ˜์—์„œ setpause ๋ฐ setstepmul ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€์‹  incremental ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ๊ฒฝ๊ณ  ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ;

  • math.random์˜ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์€ libc์—์„œ ์ œ๊ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€์‹  xoshiro256** ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‚œ์ˆ˜๋กœ ์ƒ์„ฑ๊ธฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒ์ˆ˜ ๋ณ€์ˆ˜;

  • "to-be-closed" ๋ณ€์ˆ˜๋Š” ๋ฒ”์œ„๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ __close ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ง€์—ญ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • ์ƒˆ ํ•จ์ˆ˜ lua_resetthread - ์Šคํƒ์„ ์ง€์šฐ๊ณ  ๋ชจ๋“  "๋‹ซํžŒ" ๋ณ€์ˆ˜๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ coroutine.close - ์ง€์ •๋œ ์ฝ”๋ฃจํ‹ด๊ณผ ๋ชจ๋“  "๋‹ซ์„ ์ˆ˜ ์žˆ๋Š”" ๋ณ€์ˆ˜๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ(userdata)๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์•ก์„ธ์Šคํ•˜๋Š” ๊ฐ’ ์ง‘ํ•ฉ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค: lua_newuserdatauv, lua_setiuservalue ๋ฐ lua_getiuservalue;

  • ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋””๋ฒ„๊น… ์ •๋ณด์™€ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • for ๋ฃจํ”„์—์„œ ์ •์ˆ˜ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

  • ์ผ์น˜ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์˜คํ”„์…‹์„ ์ง€์ •ํ•˜๋Š” string.gmatch ํ•จ์ˆ˜์— ์„ ํƒ์  ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ์•”์‹œ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋ฌธ์ž์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™๋˜์—ˆ์œผ๋ฉฐ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ์‚ฐ "1" + "2"์˜ ๊ฒฐ๊ณผ๋Š” ์ด์ œ ๋ถ€๋™ ์†Œ์ˆ˜์ ์ด ์•„๋‹Œ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ธฐ๋Šฅ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ด ์ค„์–ด๋“ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • string.format ํ•จ์ˆ˜์˜ ์ƒˆ ํ˜•์‹ ๋ฌธ์ž - %p(ํฌ์ธํ„ฐ์šฉ);

  • utf8 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ตœ๋Œ€ 2ยณยน์˜ ๋ฌธ์ž ์ฝ”๋“œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(ํŠน์ˆ˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ตœ๋Œ€ 0x10FFFF์˜ ์ฝ”๋“œ๋งŒ ํ—ˆ์šฉ๋˜๊ณ  ์„œ๋กœ๊ฒŒ์ดํŠธ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ).

  • ๊ฐ’ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ •์ˆ˜ ์ƒ์ˆ˜๋Š” ๋ถ€๋™ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๋น„ํŠธ ํด๋ฆฌํ•‘ ๋ฐœ์ƒ).

  • __lt ๋ฉ”ํƒ€๋ฉ”์†Œ๋“œ๋Š” ๋” ์ด์ƒ __le ๋ฉ”ํƒ€๋ฉ”์†Œ๋“œ๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ __le ๋ฉ”ํƒ€๋ฉ”์†Œ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ ˆ์ด๋ธ”์ด ํ˜„์žฌ ๋ฒ”์œ„์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ(์™ธ๋ถ€ ๋ฒ”์œ„์— ์ •์˜๋œ ๊ฒฝ์šฐ์—๋„) goto ๋ฌธ์˜ ๋ ˆ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • __gc ๋ฉ”ํƒ€๋ฉ”์†Œ๋“œ๋Š” ๋‹จ์ˆœํ•œ ํ•จ์ˆ˜ ์ด์ƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ๋„๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ์ธ์‡„ ๊ธฐ๋Šฅ์€ ๊ฐ ์ธ์ˆ˜์— ๋Œ€ํ•ด tostring์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์ง€๋งŒ ์ž์ฒด ๋‚ด๋ถ€ ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • io.lines ํ•จ์ˆ˜๋Š” ์ด์ „ ๋™์ž‘์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ๋Œ€์‹  ๋„ค ๊ฐœ์˜ ๊ฐ’ ์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ์„ ๊ด„ํ˜ธ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : linux.org.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€