Skip to content

Latest commit

 

History

History
132 lines (90 loc) · 4.04 KB

File metadata and controls

132 lines (90 loc) · 4.04 KB

t-ruby 언어 사양서 (초안)

본 문서는 t-ruby 언어의 초기 사양 초안입니다. TypeScript와 Ruby의 철학을 결합하여, Ruby 위에서 선택적 정적 타입 시스템을 제공하는 t-ruby의 구조와 설계 방향을 기술합니다.

번역: English | 日本語


1. 개요

t-ruby는 Ruby 위에서 동작하는 선택적 정적 타입 레이어(Optional/Gradual Type System) 입니다. trc 컴파일러가 .trb 소스 파일을 다음 형태로 변환합니다:

  • 실행 가능한 Ruby 코드 (.rb)
  • Ruby 시그니처 파일 (.rbs)
  • t-ruby 고급 선언 파일 (.d.trb)

이 언어는 Ruby의 문법과 정신을 유지하면서도, TypeScript의 개발 경험(DX)을 도입하여 "선택 가능한 정적 타입"을 제공합니다.


2. 언어 철학

  1. Ruby를 대체하지 않는다 — t-ruby는 별도의 타입 레이어이며, Ruby가 런타임입니다.
  2. 점진적 도입 가능 — 부분적 .trb 도입 → 전체 프로젝트 전환이 가능합니다.
  3. TypeScript 수준의 DX — 타입 시스템, 인터페이스, 제네릭, 유니온/인터섹션, 추론 지원; IDE 친화적.
  4. RBS 호환성 — t-ruby는 RBS 상위호환을 목표로 하며, 투영 시 RBS 범위로 단순화됩니다.
  5. Ruby 문화 존중 — YAML 기반 설정 (trbconfig.yml); Ruby 개발자에게 자연스러운 문법.

3. 파일 구조 및 확장자

확장자 의미 설명
.trb t-ruby 소스 개발자가 작성하는 기본 단위
.rb 컴파일된 Ruby Ruby 런타임용 실행 결과물
.rbs Ruby 시그니처 RBS 생태계 연동, 보수적 타입 투영
.d.trb t-ruby 선언 t-ruby 고급 타입 완전 보존
trbconfig.yml 설정 파일 t-ruby 컴파일 설정

4. 컴파일 파이프라인

           (개발자 작성)
               *.trb
                   │
                   ▼
            trc (t-ruby 컴파일러)
                   │
      ┌────────────┴────────────────┐
      ▼                             ▼
   *.rb                         *.rbs (옵션)
 (실행 코드)              (RBS 범위 내 타입 투영)

      ▼
 *.d.trb (옵션)
(t-ruby 고급 타입)

4.1 .rb 출력 규칙

  • 타입 관련 요소는 전부 제거.
  • Ruby 문법을 파괴하지 않는 방식으로 변환.
  • Ruby 3.x 문법 타겟.

4.2 .rbs 출력 규칙

  • RBS 포맷에 맞게 보수적으로 투영.
  • 고급 타입(조건부, 매핑)은 단순화되거나 untyped로 강등.

4.3 .d.trb 출력 규칙

  • t-ruby 고급 타입 시스템의 완전한 형태 포함.
  • .trb 파일에서 재구성된 정제된 선언.
  • IDE/LSP/정적분석기의 정교한 분석 가능.

5. 세부 사양

세부 사양은 다음 문서를 참조하세요:

문서 내용
문법 사양 함수, 타입 주석, 타입 별칭, 인터페이스, 제네릭
타입 시스템 RBS 서브셋, 고급 타입, 정적 분석, 오류 모델
AST 모델 AST 구조 및 노드 타입

6. 표준 라이브러리 타입 (초안)

Ruby 기본 객체에 대한 최소 타입 정의 제공:

type String = builtin
interface Enumerable[T]
  def map(): Array[T]
end

표준 타입 선언은 RBS에서 자동 변환하거나 수동 정의 가능.


7. 향후 확장 계획

  • 모듈/클래스 타입 지원
  • trait-like mixin 타입 모델
  • 매크로 기반 타입 생성기
  • 고급 추론 엔진
  • Ruby 3 패턴매칭과 정적 타입 연동

8. 버전 관리 및 스펙 규약

  • v0.x: 실험적 단계, 문법/타입 변경 가능
  • v1.0: 안정화된 언어 사양 공개
  • 공식 스펙 문서는 영어, 한국어, 일본어로 제공

9. 라이선스

본 사양 문서의 라이선스는 추후 결정 예정 (TBD).