Nim 2.2.8 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Nim 2.2.8 ๋ฒ„์ „์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Nim์€ ํŒŒ์ด์ฌ์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ ๊ตฌ๋ฌธ๊ณผ Lisp์™€ ์œ ์‚ฌํ•œ ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ •์  ํƒ€์ž… ์ปดํŒŒ์ผ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. C, C++, JavaScript๋กœ ์ปดํŒŒ์ผ๋˜์–ด C ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ๊ณผ ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ํ‘œํ˜„๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ๋Š” MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Nim์˜ ํŠน์ง•์œผ๋กœ๋Š” ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— AST(์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ)๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋งคํฌ๋กœ ์‹œ์Šคํ…œ, ๊ฐœ๋…์„ ํ™œ์šฉํ•œ ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›, ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜, ๋‹ค์–‘ํ•œ ์ „๋žต(ARC/ORC, refc, ๋งˆํฌ์•ค์Šค์œ•)์„ ์ง€์›ํ•˜๋Š” ๊ฒฐ์ •๋ก ์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋‚ด์žฅ async/await ์ง€์›, ๊ทธ๋ฆฌ๊ณ  C/C++/JavaScript์™€์˜ ์†์‰ฌ์šด ํ†ตํ•ฉ์„ ์œ„ํ•œ FFI(Full File Inclusion) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Nim์€ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๋ถ€ํ„ฐ ์›น ๊ฐœ๋ฐœ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•œ ์–ธ์–ด๋กœ ์ž๋ฆฌ๋งค๊น€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์„œ๋ฒ„ํšจ์œจ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ ๋ฐ ๊ฐœ๋ฐœ์ž ํŽธ์˜์„ฑ์„ ์ค‘์ ์ ์œผ๋กœ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

2.2.8 ๋ฒ„์ „์€ 2.2.6 ๋ฒ„์ „ ์ถœ์‹œ ํ›„ 4๊ฐœ์›” ๋งŒ์— ๋‚˜์™”์œผ๋ฉฐ, ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํฌํ•จํ•œ 89๊ฐœ์˜ ์ปค๋ฐ‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž์˜ ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ฅด๋ฉด, ์ด์ œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฝ”๋“œ์—์„œ "-d:useMalloc" ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ ๋ฒ„๊ทธ ์ค‘:

  • ์ƒ์ˆ˜ ํ…Œ์ด๋ธ”์„ ์ˆœํšŒํ•  ๋•Œ ์ž„์‹œ ๊ฐ์ฒด๊ฐ€ ์กฐ๊ธฐ์— ์†Œ๋ฉธ๋˜์–ด SIGBUS ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„ํ–‰ ๋ฐ˜๋ณต์ž๊ฐ€ ์žˆ๋Š” SIGSEGV ์˜ค๋ฅ˜;
  • ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ .global์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ C ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • try..except๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋‹ซ๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • --debuginfo ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ C++ ์Šคํƒ€์ผ์˜ ์ด๋ฆ„ ๋ณ€ํ™˜์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • setLen ํ•จ์ˆ˜๋Š” ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋กœ ์ธํ•ด ์‹œํ€€์Šค ํฌ๊ธฐ๋ฅผ ์ค„์ผ ๋•Œ ์†๋„๊ฐ€ ๋А๋ฆฝ๋‹ˆ๋‹ค.
  • "โ€”mm:refc" ๋ชจ๋“œ์— ๋Œ€ํ•œ setLenUninit ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์—์„œ ์šฉ์–ด ์žฌ์ž‘์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
  • ์ฐธ์กฐ ๋ชจ๋“œ์—์„œ ํž™ ๊ฐ์ฒด์— ํ• ๋‹นํ•  ๋•Œ ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด SIGSEGV ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ARC/ORC/ATOMICARC ํ™˜๊ฒฝ์—์„œ ์ œ๋„ค๋ฆญ ๊ณ ์œ  ์œ ํ˜•์— ๋Œ€ํ•œ ํ›„ํฌ์—์„œ m_type์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • concept์—์„œ "items"๊ฐ€ ํฌํ•จ๋œ ํŠœํ”Œ์„ ์ „๋‹ฌํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.
  • ์žฌ๊ท€์  ๊ฐœ๋…์œผ๋กœ ์ธํ•ด ์ปดํŒŒ์ผ๋Ÿฌ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • httpclient์—์„œ HTTP ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด HTTPS ์š”์ฒญ์ด ์ž˜๋ชป ์ƒ์„ฑ๋จ;
  • shl ์ž‘์—…์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธด ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ๊ฒฝ๊ณ  ์—†์ด ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž˜๋ชป๋œ ์ œ๋„ค๋ฆญ ์ธ์Šคํ„ด์Šคํ™”๋กœ ์ธํ•ด ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ชจ๋“œ โ€”styleCheck:warn.

์ถœ์ฒ˜ : opennet.ru

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