๊ฐ•์˜ ๊ตฌ์„ฑ

๊ฐ•์‚ฌ๋ฅผ ์œ„ํ•œ ์•ˆ๋‚ด ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

Rust ๊ธฐ์ดˆ

์ฒซ 4์ผ์€ Rust ๊ธฐ์ดˆ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๋งŽ์€ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Course schedule:

  • Day 1 Morning (2 hours and 10 minutes, including breaks)
SegmentDuration
๊ฐœ์š”5 minutes
Hello World!15 minutes
ํƒ€์ž… ๋ฐ ๊ฐ’45 minutes
ํ๋ฆ„ ์ œ์–ด40 minutes
  • Day 1 Afternoon (2 hours and 15 minutes, including breaks)
SegmentDuration
ํŠœํ”Œ ๋ฐ ๋ฐฐ์—ด35 minutes
์ฐธ์กฐ35 minutes
์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…50 minutes
  • Day 2 Morning (2 hours and 55 minutes, including breaks)
SegmentDuration
๊ฐœ์š”3 minutes
ํŒจํ„ด ๋งค์นญ1 hour
๋ฉ”์†Œ๋“œ์™€ ํŠธ๋ ˆ์ดํŠธ50 minutes
์ œ๋„ค๋ฆญ40 minutes
  • Day 2 Afternoon (3 hours and 10 minutes, including breaks)
SegmentDuration
ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ1 hour and 20 minutes
ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ1 hour and 40 minutes
  • Day 3 Morning (2 hours and 20 minutes, including breaks)
SegmentDuration
๊ฐœ์š”3 minutes
๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ1 hour
์Šค๋งˆํŠธ ํฌ์ธํ„ฐ55 minutes
  • Day 3 Afternoon (2 hours and 10 minutes, including breaks)
SegmentDuration
๋นŒ๋ฆผ50 minutes
์ˆ˜๋ช…1 hour and 10 minutes
  • Day 4 Morning (2 hours and 40 minutes, including breaks)
SegmentDuration
๊ฐœ์š”3 minutes
Iterators45 minutes
๋ชจ๋“ˆ40 minutes
ํ…Œ์ŠคํŠธ45 minutes
  • Day 4 Afternoon (2 hours and 10 minutes, including breaks)
SegmentDuration
์˜ค๋ฅ˜์ฒ˜๋ฆฌ55 minutes
์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ1 hour and 5 minutes

์‹ฌํ™” ํ•™์Šต

In addition to the 4-day class on Rust Fundamentals, we cover some more specialized topics:

Rust in Android

The Rust in Android deep dive is a half-day course on using Rust for Android platform development. This includes interoperability with C, C++, and Java.

AOSP ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ปดํ“จํ„ฐ์— ์ฒดํฌ์•„์›ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ๊ทธ ์ปดํ“จํ„ฐ์—์„œ ๊ณผ์ • ์ €์žฅ์†Œ๋ฅผ ์ฒดํฌ์•„์›ƒํ•˜๊ณ  src/android/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ AOSP ์ฝ”๋“œ์˜ ๋ฃจํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ๊ณผ์ œ์šฉ์œผ๋กœ ์ถ”๊ฐ€๋œ Android.bpํŒŒ์ผ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

adb sync ๋ช…๋ ์–ด๊ฐ€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ํ˜น์€ ์‹ค์ œ ์žฅ์น˜์™€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  src/android/build_all.sh๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ๋ชจ๋“  ์•ˆ๋“œ๋กœ์ด๋“œ ์˜ˆ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๋นŒ๋“œํ•ด ๋ณด์„ธ์š”. ๊ทธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฝ๊ณ , ๊ทธ ์•ˆ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋“ค์„ ํ™•์ธํ•œ ํ›„ ๊ฐ ๋ช…๋ น์–ด๋“ค์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•ด๋„ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

Chromium์—์„œ Rust ์‚ฌ์šฉ

Chromium์—์„œ Rust ์‚ฌ์šฉ ์ด ๊ณผ์ •์€ Chromium ๋ธŒ๋ผ์šฐ์ €์˜ ์ผ๋ถ€๋กœ Rust๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๋ฐ˜๋‚˜์ ˆ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Chromium์˜ gn ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ Rust๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์„œ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (โ€œcratesโ€)๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•, C++ ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Chromium์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ, ๊ตฌ์„ฑ์š”์†Œ ๋นŒ๋“œ๋Š” ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ถŒ์žฅ๋˜์ง€๋งŒ ๋ชจ๋“  ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œํ•œ Chromium ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Bare-Metal Rust

The Bare-Metal Rust deep dive is a full day class on using Rust for bare-metal (embedded) development. Both microcontrollers and application processors are covered.

๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ํŒŒํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” BBC micro:bit v2 ๊ฐœ๋ฐœ ๋ณด๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌ๋งคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ์‹œ์ž‘ ํŽ˜์ด์ง€์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ฐ์ข… ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Concurrency in Rust

The Concurrency in Rust deep dive is a full day class on classical as well as async/await concurrency.

์ƒˆ ํฌ๋ ˆ์ดํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ์˜์กด์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ด ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ src/main.rs์— ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

cargo init concurrency
cd concurrency
cargo add tokio --features full
cargo run

๊ฐ•์˜ ํ˜•์‹

์ด ๊ฐ•์˜๋Š” ๊ฐ•์‚ฌ์™€ ์ˆ˜๊ฐ•์ƒ์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์†Œํ†ตํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•˜๋„๋ก ๋””์ž์ธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์งˆ๋ฌธ์„ ํ†ตํ•ด ๋Ÿฌ์ŠคํŠธ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์„ ํƒํ—˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”!