ClojureScript, async/await 지원으로 JavaScript 생태계와 더 가까워지다!
ClojureScript 1.12.145 릴리스, async/await 지원을 통해 JavaScript와의 상호 운용성 개선
core.async 라이브러리(Library)를 통한 기존 비동기 프로그래밍 방식과의 차이점 및 장단점 논의
JavaScript 생태계와의 통합을 통해 프론트엔드 개발(Frontend Development)의 잠재력 확대
Google Closure Compiler 의존성 및 ClojureScript 채택의 어려움에 대한 커뮤니티의 우려
ClojureScript의 async/await 도입 배경
ClojureScript 1.12.145 릴리스는 ECMAScript 2016을 타겟팅하여 JavaScript와의 상호 운용성을 개선했다. 특히, async/await 지원을 통해 브라우저 API(Browser API) 및 라이브러리(Library) 사용 시 별도의 의존성 추가 없이 비동기 코드를 작성할 수 있게 되었다. 이는 ClojureScript 사용자들의 설문 조사에서 가장 많이 요청된 기능 중 하나였다.
core.async 라이브러리와의 비교
커뮤니티에서는 ClojureScript가 core.async 라이브러리(Library)를 통해 이미 비동기 프로그래밍을 지원해왔다는 점을 언급하며, async/await 도입의 의미를 되짚어본다. core.async는 CSP(Communicating Sequential Processes) 스타일의 비동기 프로그래밍을 제공하며, async/await는 보다 직관적인 방식으로 비동기 코드를 작성할 수 있게 한다. 두 방식 간의 장단점(Trade-offs)에 대한 논의가 이루어질 수 있다.
JavaScript 생태계와의 상호 운용성 개선
이번 릴리스는 ClojureScript가 JavaScript 생태계와 더욱 긴밀하게 통합될 수 있는 기반을 마련했다는 점에서 의미가 크다. async/await 지원을 통해 모던 JavaScript 라이브러리(Modern JavaScript Libraries)와의 연동이 용이해졌으며, 이는 ClojureScript를 활용한 프론트엔드 개발(Frontend Development)의 가능성을 확장한다. 하지만, Google Closure Compiler 의존성은 여전히 해결해야 할 과제로 남아있다.
ClojureScript 채택의 어려움
일부 개발자들은 ClojureScript를 개인 프로젝트 외에 상업적인 프로젝트에 적용하는 것에 대한 어려움을 토로한다. 이는 학습 곡선(Learning Curve), 생태계 성숙도(Ecosystem Maturity), 그리고 JavaScript 프레임워크(JavaScript Framework)에 대한 높은 의존성 때문일 수 있다. 또한, ClojureScript가 타입 검사(Type Checking)를 지원하지 않는다는 점도 단점으로 지적된다.