CXX ์ ํ์ฌํญ
CXX๋ฅผ ์ฌ์ฉํ ๋ ๋จ์ฐ ๊ฐ์ฅ ์ ์ฉํ ํ์ด์ง๋ ์ ํ ์ฐธ์กฐ์ ๋๋ค.
CXX๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ก์ ์ ํฉํฉ๋๋ค.
- Rust-C++ ์ธํฐํ์ด์ค๋ ๋งค์ฐ ๋จ์ํ์ฌ ๋ชจ๋ ์ ์ธํ ์ ์์ต๋๋ค.
- ์ด๋ฏธ CXX์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ์ ํ๋ง ์ฌ์ฉํ๊ณ ์์ต๋๋ค(์:
std::unique_ptr
,std::string
,&[u8]
๋ฑ).
๋ง์ ์ ํ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Rust์ Option
์ ํ์ ์ง์๋์ง ์์ต๋๋ค.
์ด๋ฌํ ์ ํ์ฌํญ์ผ๋ก ์ธํด ์์์ Rust-C++ ์ํธ ์ด์ฉ์ฑ์ด ์๋ ์ ๊ฒฉ๋ฆฌ๋ โ๋ฆฌํ ๋ ธ๋โ์ ๊ฒฝ์ฐ์๋ง Chromium์์ Rust๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Chromium์์ Rust ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ ๋ ์ข์ ์ถ๋ฐ์ ์ ์ธ์ด ๊ฒฝ๊ณ์ CXX ๋ฐ์ธ๋ฉ ์ด์์ ์์ฑํ์ฌ ์ถฉ๋ถํ ๋จ์ํ๊ฒ ํ์๋๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
In addition, right now, Rust code in one component cannot depend on Rust
code in another, due to linking details in our component build. That's another
reason to restrict Rust to use in leaf nodes.
CXX์ ๋ค๋ฅธ ์ด๋ ค์ด ๋ฌธ์ ๋ ๋ ผ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค๋ฅ ์ฒ๋ฆฌ๋ C++ ์์ธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค(๋ค์ ์ฌ๋ผ์ด๋์ ๋์ ์์).
- ํจ์ ํฌ์ธํฐ๋ ์ฌ์ฉํ๊ธฐ ์ด์ํฉ๋๋ค.