cproc - C ์–ธ์–ด๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ปดํŒฉํŠธ ์ปดํŒŒ์ผ๋Ÿฌ

Wayland ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” swc ๋ณตํ•ฉ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์ธ Michael Forney๋Š” C11 ํ‘œ์ค€๊ณผ ์ผ๋ถ€ GNU ํ™•์žฅ์„ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด cproc ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ตœ์ ํ™”๋œ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” QBE ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ฝ”๋“œ๋Š” C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฌด๋ฃŒ ISC ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์€ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ํ˜„์žฌ ๋‹จ๊ณ„์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ C11 ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์œผ๋กœ๋Š” ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด, ์ „์ฒ˜๋ฆฌ๊ธฐ, PIE(์œ„์น˜ ๋…๋ฆฝ์  ์ฝ”๋“œ) ์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ธ๋ผ์ธ ์–ด์…ˆ๋ธ”๋Ÿฌ, "long double" ์œ ํ˜•, _Thread_local ์ง€์ •์ž, ํœ˜๋ฐœ์„ฑ ์œ ํ˜•, ์ ‘๋‘์‚ฌ๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์—˜"...").

๋™์‹œ์— cproc์˜ ๊ธฐ๋Šฅ์€ ์ด๋ฏธ ์ž์ฒด์ ์œผ๋กœ mcpp, gcc 4.7, binutils ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ์™€์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ปดํŒฉํŠธํ•˜๊ณ  ๋ณต์žกํ•˜์ง€ ์•Š์€ ๊ตฌํ˜„์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ค‘์ ์„ ๋‘”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ๊ธ‰ ์ปดํŒŒ์ผ๋Ÿฌ ์„ฑ๋Šฅ์˜ 70%๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ œ์•ˆ๋œ ๊ธฐ๋Šฅ์€ ๋Œ€ํ˜• ์ปดํŒŒ์ผ๋Ÿฌ์˜ 10% ์ด๋‚ด์ž…๋‹ˆ๋‹ค. Glibc, bsd libc ๋ฐ Musl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux ๋ฐ FreeBSD ํ”Œ๋žซํผ์—์„œ x86_64 ๋ฐ aarch64 ์•„ํ‚คํ…์ฒ˜์šฉ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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