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++ ์˜ˆ์™ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค(๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ์— ๋‚˜์™€ ์žˆ์Œ).
  • ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์–ด์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.