AI 요약
브라운대 연구팀이 async/await의 설계 공간을 탐구한 논문 "A Design Space Exploration of Async/Await"를 발표했습니다. async/await는 직선형 비동기(straight-line asynchrony) 패러다임으로 불리며 15년 이상 발전해왔지만, 언어마다 동작 방식이 예상보다 훨씬 다릅니다. 단순한 로그 작성 프로그램조차 7개 런타임에서 4가지 다른 출력을 보였고, 3가지 변형에서는 두 런타임도 동일한 결과를 내지 않았습니다. 논문은 Eagerness(즉시성), Suspension(중단), Extent(범위) 등 9가지 설계 차원을 식별했습니다.
핵심 포인트
- 7개 현대 async 런타임이 동일 프로그램에서 4가지 다른 출력 생성
- 3가지 변형 프로그램에서 7개 런타임 중 동일 출력을 내는 쌍이 하나도 없음
- "Eagerness" 차원: Lazy(Python·Rust) vs Eager(C#·JavaScript)로 구분
- 9가지 설계 차원을 Start of Life, End of Life, Cancellation 3범주로 분류
향후 전망
- 언어 간 async/await 의미론 차이에 대한 표준화 논의 촉발 가능성
- 개발자들이 자신이 사용하는 언어의 async 시맨틱을 정확히 이해할 필요성 부각
출처:hackernews
