๐ฆ Rust, ์ด์ ๋ฆฌ๋ ์ค ๋ฉ์ธ๋ผ์ธ์ ์ ์ ํธ์ ! โ ์ ์ค์ํ๊ฐ?
# ๐ ์๋ก โ โ์ ์ง๊ธ Rust์ธ๊ฐ?โ
๋ฆฌ๋ ์ค ์ปค๋์ 30๋ ๋๊ฒ C ์ธ์ด๋ง์ ์ฌ์ฉํด ์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ ๋ณด์ ์ทจ์ฝ์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค๋ฅ๊ฐ ๋์ด๋๋ฉด์, โ์์ ํ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ดโ์ ๋ํ ์๊ตฌ๊ฐ ์ปค์ง๊ณ ์์ต๋๋ค. ๋ฐ๋ก ๊ทธ๋ ๋ฑ์ฅํ ๊ฒ์ด Rust์ ๋๋ค. 2024๋ , ๋ฆฌ๋ ์ค ์ปค๋ ๋ฉ์ธ๋ผ์ธ์ Rust๊ฐ ์ ์์ผ๋ก ํฌํจ๋์๋ค๋ ์์์ ๊ฐ๋ฐ์๋ฟ ์๋๋ผ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ๋ ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ Rust๊ฐ Linux ๋ฉ์ธ๋ผ์ธ์ ๋ค์ด๊ฐ ๋ฐฐ๊ฒฝ, ์ค์ ์ ์ฉ ์ฌ๋ก, ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ๊ธฐ๋ํ ์ ์๋ ๋ณํ๋ฅผ ์ด๋ณด์๋ ์ดํดํ๊ธฐ ์ฌ์ด ์ธ์ด๋ก ํ์ด๋ณด๊ฒ ์ต๋๋ค.
# ๐ ๋ณธ๋ก
# 1๏ธโฃ Rust๊ฐ ์ ํ๋ ์ด์ โ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ & ํ๋์ ๊ธฐ๋ฅ
| C ์ธ์ด | Rust |
|--------|------|
| ํฌ์ธํฐ ์ฐ์ฐ ์์ ๋ก ์ธํ ๋ฒ๊ทธ ์ํ | ์์ ๊ถ(Ownership) ์์คํ ์ผ๋ก ์ปดํ์ผ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ ์ฐจ๋จ |
| ์๋ ๋ฉ๋ชจ๋ฆฌ ํด์ ํ์ | ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(Borrow Checker) ์ ๊ณต |
| ์ต์ ์ธ์ด ๊ธฐ๋ฅ ๋ถ์กฑ | ํจํด ๋งค์นญ, ์ ๋ค๋ฆญ, ๋ชจ๋ ์์คํ ๋ฑ ํ๋ถํ ๊ธฐ๋ฅ |
๋ฆฌ๋ ์ค ์ปค๋ ํ์ ์๋ง์ ๋ณด์ ๋ฒ๊ทธ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ค์์์ ๋น๋กฏ๋๋ค๋ ์ ์ ๊ฐ์กฐํ์ต๋๋ค. Rust๋ ์ปดํ์ผ ํ์์ ๋๋ถ๋ถ์ ์ค๋ฅ๋ฅผ ์ก์๋ด๋ฏ๋ก, ์ปค๋ ์์ค์์๋ ์์ ์ฑ์ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
# 2๏ธโฃ ๋ฉ์ธ๋ผ์ธ์ ํฌํจ๋ ์ฒซ ๋ฒ์งธ ๋ชจ๋์?
2024๋
5์, drivers/usb ๋๋ ํฐ๋ฆฌ ์๋์ Rust ๊ธฐ๋ฐ USB ๋๋ผ์ด๋ฒ๊ฐ ์ฒ์์ผ๋ก ๋ณํฉ๋์์ต๋๋ค. ์ด ๋๋ผ์ด๋ฒ๋ ๊ธฐ์กด C ๊ตฌํ๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด์๋, ๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ๊ฐ์ ํํ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์์ ์ฝ๋
rust // ๊ฐ๋จํ USB ๋๋ฐ์ด์ค ์ด๊ธฐํ ์์ fn init_device(dev: &mut UsbDevice) -> Result<(), UsbError> { // ์์ ํ๊ฒ ๋ฒํผ๋ฅผ ํ ๋นํ๊ณ , ์๋ ํด์ let buf = vec![0u8; dev.max_packet_size]; dev.read(&mut buf)?; Ok(()) }
์ด์ฒ๋ผ ์ค์ ์ปค๋ ์ฝ๋์ Rust๊ฐ ์ฌ์ฉ๋๋ ๋ชจ์ต์ ๋ณด๋ฉด, โRust๋ ์์ง ์คํ ๋จ๊ณ์ธ๊ฐ?โ ํ๋ ์๋ฌธ์ด ์ฌ๋ผ์ง๋๋ค.
# 3๏ธโฃ ์ด๋ณด ๊ฐ๋ฐ์๋ฅผ ์ํ ์ง์ ๋ฐฉ๋ฒ
Rust ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ตํ๊ธฐ โ
ownership,borrowing,match๋ฑ ํต์ฌ ๊ฐ๋ ์ ๋จผ์ ํ์ตํฉ๋๋ค.Linux ์ปค๋ ๋น๋ ํ๊ฒฝ ์ค์ โ
make defconfig && make -j$(nproc) LOCALVERSION=-rust๋ก Rust ์ง์ ์ปค๋์ ๋น๋ํฉ๋๋ค.๊ฐ๋จํ ๋ชจ๋ ์์ฑ โ
rust_modํ ํ๋ฆฟ์ ํ์ฉํด โHello, Rust!โ ๋ชจ๋์ ๋ง๋ค์ด ๋ณด์ธ์.
bash
git clone https://github.com/rust-for-linux/rust-mod
cd rust-mod
make
sudo insmod rust_hello.ko
์ ๊ณผ์ ์ ๋ฐ๋ผ ํ๋ฉด, C์ Rust๋ฅผ ๋์์ ๋ค๋ฃจ๋ ํ์ด๋ธ๋ฆฌ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ ์ฒดํํ ์ ์์ต๋๋ค.
# 4๏ธโฃ ์์ผ๋ก ๊ธฐ๋๋๋ ๋ณํ
์ ์ง์ ํ๋: ํ์ฌ๋ USB, ํ์ผ์์คํ ๋ฑ ์ผ๋ถ ์๋ธ์์คํ ์๋ง ์ ์ฉ๋์ง๋ง, ํฅํ ๋คํธ์ํน, ์ค์ผ์ค๋ฌ ๋ฑ ํต์ฌ ์์ญ์๋ Rust๊ฐ ๋์ ๋ ์ ๋ง์ ๋๋ค.
๋ณด์ ๊ฐํ: ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๊ฐ์ถ Rust ๋ชจ๋์ด ๋์ด๋ ์๋ก, ์ปค๋ ์ ์ฒด์ ๋ณด์ ์์ค์ด ์์นํฉ๋๋ค.
์ปค๋ฎค๋ํฐ ์ฑ์ฅ: Rust for Linux ํ๋ก์ ํธ๊ฐ ํ๋ฐํ ์งํ๋๋ฉด์, ์๋ก์ด ๋ฌธ์์ ํํ ๋ฆฌ์ผ์ด ์ง์์ ์ผ๋ก ๊ณต๊ฐ๋ ์์ ์ ๋๋ค.
# ๐ ๊ฒฐ๋ก โ ์ง๊ธ ๋ฐ๋ก Rust์ Linux ์ปค๋์ ๋ฐ์ ๋ค์ฌ๋ณด์ธ์!
๋ฆฌ๋ ์ค ๋ฉ์ธ๋ผ์ธ์ Rust๊ฐ ์ ์ ํธ์ ๋ ๊ฒ์ โ์์ ํ ์์คํ ํ๋ก๊ทธ๋๋ฐโ ์๋์ ์์์ ์๋ฆฌ๋ ์ ํธํ์ ๋๋ค. ์ด๋ณด์๋ผ๋ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๋ง ์ตํ๋ฉด, ๊ณง๋ฐ๋ก ์ปค๋ ๋ชจ๋ ๊ฐ๋ฐ์ ๋์ ํ ์ ์์ต๋๋ค.
ํ๋ ์ ๋
์ค๋ ๋น์ฅ Rust ๊ณต์ ๋ฌธ์(https://www.rust-lang.org/ko)์ Linux ์ปค๋ ๋น๋ ๊ฐ์ด๋๋ฅผ ํ์ธํด ๋ณด์ธ์.
๊ฐ๋จํ โHello, Rust!โ ๋ชจ๋์ ์ง์ ์ปดํ์ผํ๊ณ , ์์คํ ์ ๋ก๋ํด ๋ณด๋ ๊ฒฝํ์ ํตํด ์ค์ ๊ฐ๊ฐ์ ํค์ฐ์ธ์.
๋ธ๋ก๊ทธ ๋๊ธ์ด๋ ์ปค๋ฎค๋ํฐ(์: r/programming, rust-for-linux)์์ ์ง๋ฌธ์ ๋จ๊ธฐ๋ฉด, ์น์ ํ ๊ฐ๋ฐ์๋ค์ด ๋ต๋ณํด ์ค๋๋ค.
Rust, Linux ๋ฉ์ธ๋ผ์ธ, ์ปค๋ ๊ฐ๋ฐ์ด๋ผ๋ ํค์๋๊ฐ ์์ผ๋ก์ IT ํธ๋ ๋๋ฅผ ์ฃผ๋ํฉ๋๋ค. ์ง๊ธ ์์ํ๋ฉด, ๋ด๋ ์๋ ์ฌ๋ฌ๋ถ๋ ์์ ํ๊ณ ํจ์จ์ ์ธ ์ปค๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ต๋๋ค! ๐
Comments
Join the discussionNo comments yet. Be the first to comment.