본 문서는 t-ruby 언어의 초기 사양 초안입니다. TypeScript와 Ruby의 철학을 결합하여, Ruby 위에서 선택적 정적 타입 시스템을 제공하는 t-ruby의 구조와 설계 방향을 기술합니다.
t-ruby는 Ruby 위에서 동작하는 선택적 정적 타입 레이어(Optional/Gradual Type System) 입니다.
trc 컴파일러가 .trb 소스 파일을 다음 형태로 변환합니다:
- 실행 가능한 Ruby 코드 (
.rb) - Ruby 시그니처 파일 (
.rbs) - t-ruby 고급 선언 파일 (
.d.trb)
이 언어는 Ruby의 문법과 정신을 유지하면서도, TypeScript의 개발 경험(DX)을 도입하여 "선택 가능한 정적 타입"을 제공합니다.
- Ruby를 대체하지 않는다 — t-ruby는 별도의 타입 레이어이며, Ruby가 런타임입니다.
- 점진적 도입 가능 — 부분적
.trb도입 → 전체 프로젝트 전환이 가능합니다. - TypeScript 수준의 DX — 타입 시스템, 인터페이스, 제네릭, 유니온/인터섹션, 추론 지원; IDE 친화적.
- RBS 호환성 — t-ruby는 RBS 상위호환을 목표로 하며, 투영 시 RBS 범위로 단순화됩니다.
- Ruby 문화 존중 — YAML 기반 설정 (
trbconfig.yml); Ruby 개발자에게 자연스러운 문법.
| 확장자 | 의미 | 설명 |
|---|---|---|
.trb |
t-ruby 소스 | 개발자가 작성하는 기본 단위 |
.rb |
컴파일된 Ruby | Ruby 런타임용 실행 결과물 |
.rbs |
Ruby 시그니처 | RBS 생태계 연동, 보수적 타입 투영 |
.d.trb |
t-ruby 선언 | t-ruby 고급 타입 완전 보존 |
trbconfig.yml |
설정 파일 | t-ruby 컴파일 설정 |
(개발자 작성)
*.trb
│
▼
trc (t-ruby 컴파일러)
│
┌────────────┴────────────────┐
▼ ▼
*.rb *.rbs (옵션)
(실행 코드) (RBS 범위 내 타입 투영)
▼
*.d.trb (옵션)
(t-ruby 고급 타입)
- 타입 관련 요소는 전부 제거.
- Ruby 문법을 파괴하지 않는 방식으로 변환.
- Ruby 3.x 문법 타겟.
- RBS 포맷에 맞게 보수적으로 투영.
- 고급 타입(조건부, 매핑)은 단순화되거나
untyped로 강등.
- t-ruby 고급 타입 시스템의 완전한 형태 포함.
.trb파일에서 재구성된 정제된 선언.- IDE/LSP/정적분석기의 정교한 분석 가능.
세부 사양은 다음 문서를 참조하세요:
| 문서 | 내용 |
|---|---|
| 문법 사양 | 함수, 타입 주석, 타입 별칭, 인터페이스, 제네릭 |
| 타입 시스템 | RBS 서브셋, 고급 타입, 정적 분석, 오류 모델 |
| AST 모델 | AST 구조 및 노드 타입 |
Ruby 기본 객체에 대한 최소 타입 정의 제공:
type String = builtin
interface Enumerable[T]
def map(): Array[T]
end
표준 타입 선언은 RBS에서 자동 변환하거나 수동 정의 가능.
- 모듈/클래스 타입 지원
- trait-like mixin 타입 모델
- 매크로 기반 타입 생성기
- 고급 추론 엔진
- Ruby 3 패턴매칭과 정적 타입 연동
v0.x: 실험적 단계, 문법/타입 변경 가능v1.0: 안정화된 언어 사양 공개- 공식 스펙 문서는 영어, 한국어, 일본어로 제공
본 사양 문서의 라이선스는 추후 결정 예정 (TBD).