클로저스크립트, 네이티브 async/await 지원 추가
클로저스크립트, 현대 자바스크립트의 언어 async/await 지원
클로저스크립트는 마침내 현대 자바스크립트의 언어인 async/await를 지원합니다. 공식 클로저스크립트 뉴스 페이지에 2026년 5월 7일에 게시된 새로운 릴리즈는 비동기 함수에 대한 네이티브 문법을 추가합니다. 개발자는 이제 async (fn [] …) 및 await 호출을 원시 프로미스 없이 작성할 수 있으며, 이는 일상적인 코딩에서 즉각적인 변화를 가져옵니다.
공지사항은 https://clojurescript.org/news/2026-05-07-release에 있으며, 해커 뉴스에서 149점을 얻었으며, 41개의 댓글이 활발한 논쟁을 촉발했습니다. 핵심 팀은 이미 async/await에 의존하는 자바스크립트 라이브러리와 원활한 상호 운용성을 제공하기 위한 수요 증가에 대응하여 이 추가 기능을 제공했다고 밝혔습니다. 게시물에는 버전 번호가 언급되지 않았지만 URL로 날짜가 명확해졌으며 커뮤니티는 이미 실제 프로젝트에서 이 기능을 테스트하기 시작했습니다.
async/await가 클로저스크립트 코드를 변경하는 방법
이전에는 클로저스크립트 개발자가 비동기 자바스크립트 호출을 js/Promise 객체로 래핑하고 .then 체인 또는 core.async 채널을 사용하여 흐름을 관리했습니다. 이러한 패턴은 작동하지만 부가적인 코드를 추가하고 의도를 모호하게 합니다. 네이티브 async/await를 사용하면 간단한 await (js/fetch url)이 다단계 프로미스 체인을 대체하여 코드가 동기식 클로저처럼 읽히면서 비블로킹 동작을 유지합니다.
문법은 기존 클로저 매크로와 깨끗하게 통합됩니다. async 블록은 단순히 또 다른 매크로로, 내부적으로 자바스크립트 async 함수로 확장됩니다. 클로저스크립트는 이미 자바스크립트로 컴파일되기 때문에 변환은 간단합니다. 컴파일러는 async function 정의를 내보내고 매크로가 신호를 보내는 곳에 await를 삽입합니다. 이는 새로운 런타임을 도입하지 않는다는 것을 의미합니다. 이 기능은 자바스크립트 엔진의 내장 지원을 활용합니다.
일상 개발을 위한 즉각적인 이점
실용적인 관점에서 새로운 문법은 콜백을 조작하는 정신적 오버헤드를 줄입니다. 리전트 앱의 일반적인 데이터 페칭 구성 요소는 이제 async를 선언하고 내부에서 await를 사용하는 일반 클로저 defn처럼 보입니다. 결과는 더 짧은 파일, try/catch를 사용한 더 명확한 오류 처리, 스택 추적이 원래 클로저스크립트 소스에 직접 매핑되므로 디버깅이 더 쉬워집니다.
성능 면에서 측정 가능한 페널티는 없습니다. 컴파일된 코드는 여전히 네이티브 자바스크립트 async 함수로 실행되며, 현대 V8 및 SpiderMonkey 엔진은 공격적으로 최적화합니다. 지연 시간에 민감한 개발자는 계속해서 core.async를 사용하여 세밀한 제어를 유지할 수 있지만 대부분의 HTTP 호출에 대한 기본 경로는 더 간결한 async/await 경로가 됩니다.
커뮤니티 반응 및 논란의 여지
해커 뉴스 스레드는 분할을 드러냅니다. 일부 댓글 작성자는 이 움직임을 “오랜 기간 미뤄진” 것으로 높이 평가하며, 이 문법이 클로저스크립트를 나머지 자바스크립트 생태계와 일치시키고 신규 이민자의 학습 곡선을 줄였다고 지적합니다. 다른 사람들은 “시멘틱 크리프”: 비동기를 처리하는 또 다른 방법을 도입하면 이미 core.async에 크게 의존하는 코드베이스가 분할될 수 있다는 우려를 표명합니다.
반복되는 우려는 도구 지원입니다. 클로저스크립트를 이해하는 IDE 및 린터는 새로운 매크로 형식을 인식하기 위해 업데이트가 필요합니다. 커뮤니티는 이미 인기 있는 clj-kondo 린터를 위한 풀 요청을 열었지만 전체 지원은 릴리즈보다 뒤처질 수 있습니다. 도구가 따라잡을 때까지 개발자는 잘못된 긍정 또는 자동 완성 누락을 볼 수 있으며, 이는 핵심 팀이 해결해야 할 마찰 지점입니다.
이것이 더 큰 언어 환경에 어떻게 적합한가
async/await는 자바스크립트 세계에서 새로운 것이 아닙니다. 이는 ES2017에 등장했으며 이후 비동기 코드에 대한 사실상의 패턴이 되었습니다. 자바스크립트로 컴파일되는 언어인 TypeScript 및 ReasonML은 이 문법을 일찍 채택했습니다. 클로저스크립트의 추가는 오랜 기간 지속된 상호 운용성 간격을 없애줍니다.
다른 언어들은 최근 스택 교환 스레드에서 논의된 대로 자동 종속성 추적을 탐색했습니다. 클로저스크립트는 데이터 흐름 언어가 되는 것을 목표로 하지 않지만 async/await 기능은 부가적인 코드를 줄이고 런타임이 전파를 처리하도록 허용하는 정신을 공유합니다. 또한 러스트의 async/.await 및 파이썬의 asyncio와 같은 현대 프로그래밍 언어의 경향과 일치하여 동시성에 대한 유사한 추상화로 수렴하는 아이디어를 강화합니다.
다음에 주목할 사항
다음 이정표는 채택 곡입니다. 주요 클로저스크립트 도구인 Shadow-CLJS, Figwheel 및 공식 컴파일러 자체의 향후 릴리즈를 업데이트된 async 매크로 지원과 주목하십시오. async/await 기반 API를 게시하는 최초의 실제 라이브러리에 주목하십시오. 그들의 성공은 커뮤니티가 새로운 패턴을 수용하는지 또는 core.async에 계속 고착하는지 여부를 나타내는 신호가 될 것입니다. 마지막으로, 해커 뉴스 댓글을 지표로 주목하십시오. 토론이 반대 의견 대신 실제 팁으로 정착하면 async/await는 클로저스크립트 개발자를 위한 기본 비동기 모델이 될 수 있습니다.