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