본문으로 건너뛰기
Examples Verified (100%)

변경 로그

T-Ruby의 모든 주목할 만한 변경 사항은 이 파일에 문서화됩니다.

형식은 Keep a Changelog를 기반으로 하며, 이 프로젝트는 시맨틱 버저닝을 따릅니다.

[0.0.39] - 2025-12-24

추가됨

타입 추론 엔진

  • TypeScript 스타일 타입 추론 - 명시적 어노테이션 없이 자동 반환 타입 추론
  • BodyParser - 메서드 본문 IR 노드 생성을 위한 새 파서
  • TypeEnv - 변수 타입 추적을 위한 스코프 체인 관리
  • ASTTypeInferrer - 지연 평가와 캐싱을 사용한 표현식 타입 추론
  • 리터럴 추론 - "hello"String, 42Integer, truebool
  • 메서드 호출 추적 - str.upcaseString, arr.lengthInteger
  • 암묵적 반환 처리 - Ruby의 마지막 표현식을 반환 타입으로
  • 조건문 타입 추론 - if/else 분기에서 유니온 타입
  • 200개 이상의 내장 메서드 타입 - 일반적인 Ruby 메서드 반환 타입

특별 처리

  • initialize 메서드 - 항상 void 반환 (RBS 규칙)
  • 도달 불가능 코드 감지 - 무조건적 return 이후 코드 무시

예제

이전 (명시적 어노테이션 필요):

def greet(name: String): String
"Hello, #{name}!"
end

이후 (추론이 자동으로 동작):

def greet(name: String)
"Hello, #{name}!"
end
# RBS: def greet: (name: String) -> String

[미공개]

계획됨

  • 튜플 타입
  • 재귀적 타입 별칭
  • Language Server Protocol (LSP) 구현
  • VSCode 확장
  • 개선된 오류 메시지
  • Rails 타입 정의

[0.1.0-alpha] - 2025-12-09

개요

T-Ruby의 첫 알파 릴리스입니다! 이 릴리스에는 핵심 타입 시스템 기능, 작동하는 컴파일러, 기본 도구가 포함되어 있습니다. T-Ruby는 이제 실험적 사용과 커뮤니티 피드백을 받을 준비가 되었습니다.

실험적 릴리스

이것은 알파 릴리스입니다. API가 변경될 수 있으며 호환되지 않는 변경이 발생할 수 있습니다. 프로덕션 사용은 권장되지 않습니다.

추가됨

타입 시스템

  • 기본 타입 - String, Integer, Float, Boolean, Symbol, nil
  • 특수 타입 - Any, void, never, self
  • 유니온 타입 - | 연산자로 여러 타입 결합
  • 선택적 타입 - T | nil의 단축형 T?
  • Array 제네릭 - 타입이 지정된 배열을 위한 Array<T>
  • Hash 제네릭 - 타입이 지정된 해시를 위한 Hash<K, V>
  • 타입 추론 - 변수와 반환값에 대한 자동 타입 추론
  • 타입 좁히기 - is_a?nil?을 사용한 스마트 좁히기
  • 리터럴 타입 - 문자열, 숫자, 심볼, 불리언 리터럴
  • 타입 별칭 - type으로 커스텀 타입 이름 생성
  • 제네릭 타입 별칭 - type Result<T> = T | nil과 같은 제네릭 별칭
  • 교차 타입 - & 연산자로 인터페이스 결합
  • Proc 타입 - Proc<Args, Return>으로 타입 안전 proc과 lambda

함수

  • 파라미터 타입 어노테이션
  • 반환 타입 어노테이션
  • 타입이 있는 선택적 파라미터
  • 타입이 있는 가변 파라미터
  • 타입이 있는 키워드 인수
  • 블록 파라미터 타입
  • 제네릭 함수
  • 여러 타입 파라미터
  • 타입 파라미터 추론

클래스

  • 인스턴스 변수 타입 어노테이션
  • 클래스 변수 타입 어노테이션
  • 생성자 타입
  • 메서드 타입 어노테이션
  • 제네릭 클래스
  • 여러 클래스 타입 파라미터
  • 타입이 있는 상속
  • 믹스인/모듈 타입 지원

인터페이스

  • 인터페이스 정의
  • 인터페이스 구현
  • 구조적 타이핑
  • 덕 타이핑 지원
  • 제네릭 인터페이스
  • 인터페이스의 교차

컴파일러

  • .trb에서 .rb 컴파일
  • 타입 지우기 (런타임 오버헤드 없음)
  • .rbs 파일 생성
  • 디버깅을 위한 소스 맵
  • --watch로 파일 감시
  • --check로 타입 검사 모드
  • 위치가 포함된 상세 오류 메시지
  • 컬러 터미널 출력
  • CI 통합을 위한 종료 코드

표준 라이브러리

  • 코어 Ruby 타입 정의 (File, Dir, IO)
  • Time과 Date 타입
  • JSON 모듈 타입
  • YAML 모듈 타입
  • CSV 모듈 타입
  • Logger 타입
  • Net::HTTP 타입
  • URI 타입
  • 파일 시스템 유틸리티 (FileUtils, Pathname)
  • 문자열 조작 (StringIO)
  • 컬렉션 (Set)
  • 암호화 (Digest, Base64, SecureRandom)
  • 템플릿 (ERB)
  • 벤치마킹 (Benchmark)
  • 타임아웃 유틸리티

문서

  • 포괄적인 시작 가이드
  • 타입 시스템 튜토리얼
  • API 참조 문서
  • 표준 라이브러리 타입 참조
  • CLI 명령 문서
  • 에디터 설정 가이드
  • 일반 Ruby에서 마이그레이션 가이드
  • 예제 프로젝트
  • 빠른 참조를 위한 치트시트
  • 문제 해결 가이드

도구

  • trc 명령줄 컴파일러
  • 버전 정보를 위한 --version 플래그
  • 명령 문서를 위한 --help
  • 타입 전용 검사를 위한 --check
  • 개발 워크플로우를 위한 --watch
  • 커스텀 출력 경로를 위한 --output
  • RBS 생성을 위한 --rbs 플래그
  • 컬러 오류 출력
  • 보기 좋게 출력된 타입 오류

변경됨

  • N/A (최초 릴리스)

폐기 예정

  • N/A (최초 릴리스)

제거됨

  • N/A (최초 릴리스)

수정됨

  • N/A (최초 릴리스)

보안

  • N/A (최초 릴리스)

릴리스 노트

v0.1.0-alpha - 최초 알파 릴리스

릴리스 날짜: 2025년 12월 9일

이것은 T-Ruby의 첫 번째 공개 릴리스입니다! 몇 달간의 개발 끝에 Ruby 커뮤니티와 T-Ruby를 공유하게 되어 기쁩니다.

포함된 것

T-Ruby는 Ruby에 TypeScript 스타일의 정적 타이핑을 가져옵니다. 타입 어노테이션이 있는 .trb 파일로 코드를 작성하고, 런타임 오버헤드 없이 순수한 Ruby로 컴파일하며, 더 나은 도구와 적은 버그를 즐기세요.

주요 기능

  1. 점진적 타이핑 - 자신의 속도에 맞게 타입을 추가하세요. 모든 Ruby는 유효한 T-Ruby입니다.
  2. 런타임 비용 없음 - 타입은 컴파일 시점에 지워집니다. 성능 저하가 없습니다.
  3. RBS 생성 - 기존 도구와의 통합을 위해 .rbs 파일을 자동 생성합니다.
  4. 친숙한 구문 - TypeScript를 알고 있다면 편하게 느낄 것입니다.
  5. 포괄적인 Stdlib - 일반적인 Ruby 표준 라이브러리 모듈에 대한 타입 정의.

시작하기

# T-Ruby 설치
gem install t-ruby

# 파일 생성
echo 'def greet(name: String): String
"Hello, #{name}!"
end' > hello.trb

# 컴파일
trc hello.trb

# 생성된 Ruby 실행
ruby hello.rb

예제 코드

Verified
# hello.trb - 타입 안전 Ruby
class User
@name: String
@email: String
@age: Integer

def initialize(name: String, email: String, age: Integer): void
@name = name
@email = email
@age = age
end

def greet: String
"Hello, my name is #{@name}"
end

def adult?: Boolean
@age >= 18
end
end

# 사용자 생성
alice: User = User.new("Alice", "alice@example.com", 30)
bob: User = User.new("Bob", "bob@example.com", 17)

# 타입 안전 작업
users: Array<User> = [alice, bob]
adults: Array<User> = users.select { |u| u.adult? }

adults.each do |user|
puts user.greet
end

trc hello.trb로 컴파일하면 모든 타입 어노테이션이 제거된 깨끗한 Ruby 코드가 생성됩니다.

알려진 제한사항

이 알파 릴리스에는 몇 가지 제한사항이 있습니다:

  • 불완전한 stdlib 커버리지 - 아직 모든 Ruby 표준 라이브러리 모듈에 타입이 없습니다
  • IDE 지원 없음 - LSP와 에디터 확장은 v0.2에서 제공 예정
  • 제한된 오류 복구 - 타입 검사기가 일부 경우에 첫 번째 오류에서 중지됩니다
  • 성능 - 대규모 프로젝트에서 타입 검사가 느릴 수 있습니다
  • 호환되지 않는 변경 가능 - 향후 알파 릴리스에서 API가 변경될 수 있습니다

다음 계획

이미 v0.2.0을 작업 중입니다:

  • IDE 지원을 위한 Language Server Protocol (LSP)
  • VSCode 확장
  • 튜플 타입
  • 재귀적 타입 별칭
  • 더 나은 오류 메시지
  • 성능 개선

피드백 환영

이것은 실험적 릴리스입니다. 여러분의 피드백을 기다립니다!

기여자

이 릴리스에 기여해 주신 모든 분들께 감사드립니다:

  • 초기 개발 및 설계
  • 타입 시스템 구현
  • 문서 및 예제
  • 테스트 및 버그 보고
  • 커뮤니티 피드백 및 지원

Ruby와 TypeScript 커뮤니티의 영감과 지도에 특별히 감사드립니다.

라이선스

T-Ruby는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.


버전 히스토리

버전릴리스 날짜상태하이라이트
0.1.0-alpha2025-12-09알파최초 릴리스, 핵심 기능
0.2.0TBD계획됨LSP, 튜플, 도구
0.3.0TBD계획됨Rails 타입, 고급 기능
1.0.0TBD계획됨안정 릴리스

업그레이드 가이드

v0.1.0-alpha로 업그레이드

이것은 최초 릴리스이므로 업그레이드할 것이 없습니다. T-Ruby에 오신 것을 환영합니다!

향후 업그레이드를 위해 여기에 상세한 마이그레이션 가이드를 제공할 예정입니다.

폐기 예정 공지

현재 폐기 예정인 것이 없습니다. 제거하기 훨씬 전에 폐기 예정을 발표할 것입니다.

호환되지 않는 변경 정책

알파 단계 (현재)

  • 모든 버전에서 호환되지 않는 변경이 발생할 수 있음
  • 가능한 경우 폐기 예정 경고 제공
  • 중요한 변경에 대한 마이그레이션 가이드

베타 단계 (향후)

  • 마이너 버전 (0.x.0)에서만 호환되지 않는 변경
  • 최소 1개월의 폐기 예정 기간
  • 가능한 경우 자동화된 마이그레이션 도구

안정 단계 (v1.0+)

  • 패치 버전 (1.0.x)에서 호환되지 않는 변경 없음
  • 메이저 버전 (2.0.0)에서만 호환되지 않는 변경
  • 최소 6개월의 폐기 예정 기간
  • 메이저 버전에 대한 장기 지원

시맨틱 버저닝

T-Ruby는 시맨틱 버저닝을 따릅니다:

  • MAJOR 버전 (X.0.0) - 호환되지 않는 API 변경
  • MINOR 버전 (0.X.0) - 새 기능, 하위 호환
  • PATCH 버전 (0.0.X) - 버그 수정, 하위 호환

알파/베타 (0.x.x) 동안에는 마이너 버전에서 호환되지 않는 변경이 발생할 수 있습니다.

릴리스 채널

Stable

프로덕션 사용을 위한 현재 안정 버전 (v1.0.0+, 사용 가능 시).

Beta

기능 완료된 릴리스 후보 (v0.x.0, 향후).

Alpha

핵심 기능이 있는 실험적 릴리스 (v0.1.0-alpha, 현재).

Nightly

main 브랜치의 최신 빌드 (권장되지 않음).

최신 정보 얻기

아카이브

모든 릴리스는 다음에서 사용 가능합니다:


최신 개발 상태는 로드맵을 참조하세요. 기여하려면 기여 가이드를 참조하세요.