원문 캡처 · clojure.org
원문 캡처 · clojure.org

Clojure 1.13.0-alpha10이 공개됐다. 이번 알파 버전은 구조 분해와 인라이닝 동작을 변경했으며, 기존 알파 버전과 호환되지 않을 수 있는 변경도 포함한다.

최상위 바인딩을 필수로 지정하려면 새 :req! 지시자를 사용해 바인딩을 맵 안에 넣는다. 다른 이름으로 바인딩하거나 중첩 구조 분해를 할 때도 적용할 수 있다. 예를 들어 {a :long-a}를 {:req! {a :long-a}}로 바꾼다.

:namespaced/keys[!] 지시자는 이제 네임스페이스가 지정되지 않은 키워드에도 네임스페이스를 부여한다. 이전 알파 버전에서는 & 뒤의 네임스페이스가 지정되지 않은 키가 네임스페이스가 있는 것으로 해석되지 않았으므로, 이 부분은 호환성을 깨뜨릴 수 있다.

함수 정의의 :inline은 이제 조건부로 동작한다. 인라인 정의가 nil을 반환하면 해당 함수를 인라인할 수 없다는 뜻이며, 인라인하지 않은 함수를 사용한다. get-in은 키가 담긴 리터럴 벡터를 인수로 받으면 인라인된다. 매크로 호출의 타입 힌트 메타데이터는 확장 결과에 전달되며, 필요하면 확장 결과를 identity 호출로 감쌀 수 있다. 매크로 호출과 확장 결과의 타입 힌트가 다르면 호출 쪽의 힌트가 우선한다.

사용 방법과 다운로드 정보는 Clojure 다운로드 페이지에서 확인할 수 있다. deps.edn의 :deps에 다음 의존성을 추가하면 된다.

org.clojure/clojure {:mvn/version "1.13.0-alpha10"}

Clojure CLI(어느 버전이든)로 REPL을 시작하려면 다음 명령을 사용한다.

clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha10"}}}'