Rust 언어로 신뢰할 수 있는 비동기 및 얇은 애플리케이션을 작성하기 위한 런타임
요약
Tokio는 Rust 언어를 사용하여 신뢰성 높고 비동기적이며 확장 가능한 애플리케이션을 구축하기 위한 이벤트 기반의 비블로킹 I/O 플랫폼입니다. 이 런타임은 Tokio가 제공하는 작업 도둑(work-stealing) 스케줄러와 운영체제 이벤트 큐를 활용하여 네이티브 성능과 높은 안정성을 보장합니다. 또한, 웹 애플리케이션 프레임워크인 axum, hyper, tonic 등 다양한 관련 크레이트들을 함께 제공하며 생태계를 확장하고 있습니다.
핵심 포인트
- Tokio는 Rust의 소유권 및 타입 시스템을 활용하여 메모리 안전성과 스레드 안정성을 보장합니다.
- 작업 도둑 기반 태스크 스케줄러와 OS 이벤트 큐를 사용하여 고성능 비동기 I/O 처리를 구현합니다.
- 웹 서버 구축에 필요한 axum, hyper, tonic 등 모듈화되고 재사용 가능한 관련 라이브러리들을 제공합니다.
- LTS(Long Term Support) 릴리스 정책을 통해 안정적인 개발 환경을 지원하며, 사용자는 특정 버전을 고정하여 사용할 수 있습니다.
Rust 프로그래밍 언어를 사용하여 신뢰할 수 있고 비동기적이며 얇은 애플리케이션을 작성하기 위한 런타임입니다. 이는 다음과 같습니다:
- Fast: Tokio 의 제로 비용 추상 (zero-cost abstractions) 은 네이티브 성능을 제공합니다.
- Reliable: Tokio 는 Rust 의 소유권, 타입 시스템 및 동시성 모델을 활용하여 버그를 줄이고 스레드 안전성을 보장합니다.
- Scalable: Tokio 는 최소한의 발자국을 가지며 압축 (backpressure) 과 취소 (cancellation) 를 자연스럽게 처리합니다.
웹사이트 | 가이드 | API 문서 | 채팅
Tokio 는 Rust 프로그래밍 언어를 사용하여 비동기 애플리케이션을 작성하기 위한 이벤트 기반, 비블로킹 I/O 플랫폼입니다. 고수준에서는 몇 가지 주요 구성 요소를 제공합니다:
- 다중 스레드 기반의 작업 도둑 (work-stealing) 기반 태스크 스케줄러.
- 운영 체제의 이벤트 큐 (epoll, kqueue, IOCP 등) 를 기반으로 하는 리액터.
- 비동기 TCP 및 UDP 소켓.
이 구성 요소들은 비동기 애플리케이션을 구축하기 위한 런타임 구성 요소를 제공합니다.
Tokio 와 함께 기본 TCP 에코 서버.
Cargo.toml 에서 tokio crate 의 전체 기능을 활성화하는 것을 확인하세요:
[dependencies]
tokio = { version = "1.52.2", features = ["full"] }
그 다음, main.rs 에서:
use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::main]
...
더 많은 예제는 여기에서 찾을 수 있습니다. 더 큰 "실제 세계" 예제는 mini-redis 저장소를 참조하세요.
사용 가능한 기능 플래그 목록을 보려면 문서를 확인하세요.
먼저, 질문의 답변이 가이드 또는 API 문서에 있는지 확인하세요. 답변이 없다면 Tokio Discord 서버에는 활동적인 커뮤니티가 있습니다. 우리는 당신의 질문에 답할 기꺼이입니다. 또한 discussions 페이지에서 질문을 할 수 있습니다.
🎈 프로젝트 개선을 위한 감사드립니다! 당신을 매우 행복하게 생각합니다! Tokio 프로젝트에 참여하는 데 도움이 되는 기여 가이드가 있습니다.
이 저장소의 crates 외에도 Tokio 프로젝트는 다음과 같은 다른 라이브러리를 유지 관리합니다:
axum
: 에르고닉과 모듈러를 중점적으로 하는 웹 애플리케이션 프레임워크.hyper
: Rust 를 위한 빠르고 정확한 HTTP/1.1 및 HTTP/2 구현.tonic
: 고성능, 상호 운용성 및 유연성에 중점을 둔 gRPC over HTTP/2 구현.warp
: warp 속도를 위한 매우 쉬운, 조립 가능한 웹 서버 프레임워크.tower
: 견고한 네트워킹 클라이언트 및 서버 구축을 위한 모듈러 및 재사용 가능한 구성 요소 라이브러리.tracing
(전부tokio-trace): 애플리케이션 레벨 추적 및 비동기 감지 (async-aware diagnostics) 를 위한 프레임워크.mio
: OS I/O API 를 기반으로 하는 저수준, 크로스 플랫폼 추상화로tokio를 구동합니다.bytes
: 효율적인 바이트 버퍼를 포함한 바이트 작업에 대한 유틸리티.loom
: 동시성 Rust 코드 테스트 도구.
Tokio 저장소는 여러 crates 을 포함합니다. 각 crate 는 자체 changelog 가 있습니다.
tokio
- view changelog
tokio-util - view changelog
tokio-stream - view changelog
tokio-macros - view changelog
tokio-test - view changelog
Tokio 는 최소 6 개월의 MSRV (최소 지원 Rust 버전) 정책을 유지할 것입니다. MSRV 를 증가할 때, 새로운 Rust 버전은 최소 6 개月前에 출시되어야 합니다. 현재 MSRV 는 1.71 입니다.
MSRV 는 자동으로 증가되지 않으며, 오직 소수 릴리스 (minor release) 의 일부로만 증가됩니다. 과거 소수 릴리스의 MSRV 히스토리는 아래에서 찾을 수 있습니다.
- 1.48 부터 현재 - Rust 1.71
- 1.39 부터 1.47 - Rust 1.70
- 1.30 부터 1.38 - Rust 1.63
- 1.27 부터 1.29 - Rust 1.56
- 1.17 부터 1.26 - Rust 1.49
- 1.15 부터 1.16 - Rust 1.46
- 1.0 부터 1.14 - Rust 1.45
Tokio 의 MSRV 를 의존성이 간접적으로 증가시키는 상황을 피하려고 노력하고 있지만, 이를 보장하지는 않습니다. 그러나 각 미소 버전 (minor release) 은 해당 미소 버전의 MSRV 와 호환되는 의존성 버전 세트가 있습니다.
Tokio 는 고정된 릴리스 스케줄을 따르지 않지만, 일반적으로 매월 한 개의 미소 릴리스를 만듭니다. 필요에 따라 버그 수정 패치 릴리스를 만듭니다.
버그 수정 패치 릴리스를 만들기 위해 우리는 특정 미소 릴리스를 LTS (Long Term Support) 릴리스로 지정했습니다. 어떤 버그가 패치 릴리스를 필요로 할 때, 해당 버그의 수정은 각 LTS 미소 버전으로 새로운 패치 릴리스로 백포팅되어 출시됩니다. 현재 LTS 릴리스는 다음과 같습니다:
1.47.x
-
2026 년 9 월까지 LTS 릴리스. (MSRV 1.70)
1.51.x -
2027 년 3 월까지 LTS 릴리스. (MSRV 1.71)
각 LTS 릴리스는 최소 한 년 동안 백포팅된 수정을 계속 받습니다. 프로젝트에서 고정된 미소 버전을 사용하고자 하시면, LTS 릴리스를 사용하는 것을 권장합니다.
고정된 미소 버전을 사용하려면 버전으로 티트 (~) 를 지정할 수 있습니다. 예를 들어, 최신 1.47.x 패치 릴리스를 사용하고자 한다면 다음 의존성 지정을 사용할 수 있습니다:
tokio = { version = "~1.47", features = [...] }
1.8.x
-
2022 년 2 월까지 LTS 릴리스.
1.14.x -
2022 년 6 월까지 LTS 릴리스.
1.18.x -
2023 년 6 월까지 LTS 릴리스.
1.20.x -
2023 년 9 월까지 LTS 릴리스.
1.25.x -
2024 년 3 월까지 LTS 릴리스.
1.32.x -
2024 년 9 월까지 LTS 릴리스.
1.36.x -
2025 년 3 월까지 LTS 릴리스.
1.38.x -
2025 년 7 월까지 LTS 릴리스.
1.43.x -
2026 년 3 월까지 LTS 릴리스.
이 프로젝트는 MIT 라이선스를 따릅니다.
다른 명시적 언급이 없는 한, 토크리오에 의도적으로 제출된 기여물은 추가 조건 없이 MIT 라이선스로 라이선스됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기