Rhombus 1.0 릴리스 노트

Rhombus 1.0 릴리스 노트

Rhombus 1.0이 이제 사용 가능하며, 기존에 친숙한 구문과 Racket 생태계의 깊은 확장성을 결합한 범용 함수형 프로그래밍 언어를 제공합니다. 이는 Lisp 스타일 매크로의 강력함과 현대적인 비 S-표현식 기반 언어의 가독성 사이의 격차를 메우도록 설계되었습니다.

핵심 설계 목표와 철학

Rhombus는 렉시컬 스코프 변수, 클로저, 객체, 패턴 매칭, 타입 파라메트리시티와 같은 프로그래밍 개념들을 현대적으로 종합하면서도 높은 확장성을 유지하는 것을 목표로 합니다. 주요 목표는 Lisp의 괄호 중심 표기법에 얽힌 가파른 학습 곡선 없이도 개발자들이 특정 도메인에 맞게 언어 지원을 맞춤화할 수 있게 하는 것입니다.

Rhombus는 Racket 위에 구축되었으며 파일을 #lang rhombus 로 시작하면 Racket 모듈로 사용할 수 있습니다. 이 관계는 Kotlin이 Java와, Elixir가 Erlang과 관계를 맺는 방식과 유사합니다; Rhombus는 raco 명령줄 도구와 DrRacket IDE를 포함한 Racket의 도구들을 활용하지만, 표준 Racket에 비해 다음과 같은 중요한 개선점을 도입합니다:

  • 전통적인 구문: 일상적인 사용에 더 친숙한 가독성 높은 들여쓰기 기반 구문.
  • 향상된 데이터 구조: 특히 리스트와 같은 사전 정의된 데이터 구조가 개선되었습니다.
  • 강화된 언어 기능: 새로운 클래스 시스템, 광범위한 패턴 매칭, 계층적 네임스페이스 조직.
  • 고급 타입 시스템: 계약과 타입 사이의 스펙트럼에 존재하는 확장 가능한 정적 정보.

메타프로그래밍과 양심구조 구문

Rhombus는 Racket의 매크로 시스템의 강력함을 유지하면서 S-표현식에 대한 요구를 없앱니다. 이는 "양심구조" 구문을 통해 구현되는데, 전통적인 표면 구문과 메타프로그래밍을 위한 S-표현식에 해당하는 "shrubbery notation"이 쌍을 이룹니다.

이 아키텍처는 Rhombus가 "오픈 컴파일러 API"를 구현하도록 하여 매크로를 컴파일 타임 메타프로그래밍으로 취급합니다. 이 접근 방식은 DSL을 일반 목적 언어에 직접 통합함으로써 고립된 도메인 전용 언어(DSL)의 함정을 피합니다.

생략 연산자 ()

Rhombus의 가장 독특한 특징 중 하나는 생략 연산자()입니다. 다른 언어에서 흔히 볼 수 있는 표준 "스플랫" 연산자와 달리, Rhombus의 생략 연산자는 매크로이며 압축된 반복을 가능하게 합니다. 중첩된 데이터 구조와 함께 작동할 수 있으며 특정 상황에서는 map 연산을 효과적으로 대체합니다.

"마법은 Rhombus가 매크로 식별자가 바인딩 컨텍스트( = 의 왼쪽), 표현식 컨텍스트, 혹은 다른 컨텍스트에 나타나는지 여부에 따라 다른 매크로를 정의하도록 허용한다는 점에 있다."

성능 및 구현

Rhombus 리스트는 RRB 트리(Relaxed Radix Balanced trees)를 사용해 구현됩니다. 이 데이터 구조는 구조적 공유와 함수형 업데이트를 제공하며, 반복, 삽입, 삭제, 추가 및 임의 읽기 연산에 대해 $O(\log n)$ 복잡도를 가집니다. RRB 트리는 캐시 친화적이며 일반적으로 $ log_{16}$ 또는 $ log_{32}$ 를 기반으로 하여 오버헤드의 상수 계수를 최소화합니다.

실용적인 적용과 생태계

Rhombus는 아직 새로운 언어이며 주류 언어만큼 방대한 라이브러리 규모를 갖추지는 않았지만, 프로덕션 사용을 목표로 하며 Racket 커뮤니티의 지원을 받고 있습니다. 현재 실제 적용 사례는 다음과 같습니다:

  • Pille: LLVM을 백엔드로 사용하는 Rhombus 기반 언어로, 강력한 메타프로그래밍을 보여줍니다.
  • Economancy: 일상적인 함수형 프로그래밍을 시연하는 테이블탑 게임 구현.
  • rhombus-html-lib: HTML 5 사양을 따르는 AI 기반 HTML 5 파서.
  • pict: 네트워킹 및 보안 강의 슬라이드와 복잡한 평가 애니메이션에 사용되는 애니메이션 이미지 라이브러리.
  • Shplait: ML의 타입 시스템과 Rhombus 구문을 결합한 교육 도구.

AI와 언어 설계의 미래

Rhombus 개발자들은 자율 코딩 에이전트의 부상이 새로운 언어나 DSL에 대한 필요성을 감소시키지 않는다고 주장합니다. Rhombus가 잘 문서화되어 있기 때문에 AI 에이전트는 이미 관용적인 Rhombus 코드를 작성하는 데 능숙함을 보여주었습니다. 제작자들은 더 나은 DSL 지원을 통해 담론 수준을 높이는 것이 인간 프로그래머와 AI 에이전트 모두에게 이익이 되며, 이들 간의 의사소통과 협업을 촉진한다고 제안합니다.

Sources