Ruby 1.9.2 릴리스 및 주요 기능
-
2010년 8월 18일 Ruby 1.9.2가 공식 릴리스되었습니다.
-
주요 개선 사항: 소켓 API 개선(IPV6), Time 클래스 재작성(2038년 문제 해결), 난수 기능 개선, 일본 휴대폰용 인코딩 추가, Enumerable 확장, Fiddle(libffi 기반 DL 대체), Psych(libyaml 기반 YAML 파서 대체) 라이브러리 추가 등이 있습니다.
릴리스 과정 회고 및 도전 과제
-
2009년 크리스마스 예정이었던 릴리스는 8개월 지연되었습니다.
-
RubySpec 대응: 다양한 Ruby 구현체 간 호환성 확보를 위해 RubySpec 준수가 필수적이었으나, 초기 1.8 기반 개발로 인한 1.9 기능 미반영, 사양 변경 문제, 리소스 부족 등으로 지연을 겪었습니다.
-
커미터 기여: Endo Yusuke의 RubySpec 패스, Maeda Shugo의 릴리스 플랜 재개 및 티켓 정리, Aaron Patterson의 Fiddle 및 Psych 개발 등 커뮤니티의 적극적인 참여가 릴리스를 가능하게 했습니다.
Ruby 1.9.1에서 1.9.2로의 발전
-
1.9.1에서 잔존했던 DL 이식성, YAML 파서 부재, RubyGems 통합, 수학 라이브러리 일관성 문제 등을 1.9.2에서 해결하고자 했습니다.
-
기능 추가뿐만 아니라 사양 안정화에 기여했으며, 최적화 도입으로 성능이 향상되었습니다.
-
RubySpec 준수를 통해 Ruby 1.9의 사양이 명확해져 Rails 3의 타겟 플랫폼으로 채택되었습니다.
향후 주의사항 및 개발 방향
- RubyGems 통합: 여전히 퀵 로더, 번들러 호환성, 설정 파일 처리 등 문제점이 존재하며, `Kernel
require` 대체 가능성 및 잠재적 충돌 문제가 논의되었습니다.
-
Test::Unit: 미니테스트 기반으로 재작성되어 경량화 및 속도 향상을 이루었으나, 하위 호환성 문제로 기존 기능 사용 시 Gem 설치가 필요합니다.
-
DL (Fiddle): 새로운 구현으로 버그 보고가 있어 주의가 요구됩니다.
-
수학 라이브러리: 수학적 일관성 확보가 목표이나 아직 미달성 상태이며, 극한값, 복소수 계산 등에서 사양 변경 가능성이 있습니다.
-
RubySpec의 미래: Ruby 1.9의 명확한 기반을 제공하여 프로파일러, 디버거, MVM(Multi-VM) 등 C Ruby 고유의 기능 탐색이 예상됩니다.
-
사양 고정 및 실험적 기능: 사양 고정은 기존 프로그램 동작 변경 가능성을, 실험적 기능은 사라질 가능성을 내포하므로 유의해야 합니다.
커미터 Q&A 주요 내용
-
Ruby 1.8/1.9 문법 호환성: 1.9 문법을 1.8에서 파싱만이라도 가능하게 하려는 시도가 있었으나 버그 및 안정성 문제로 보류 중입니다.
-
REXML: 유지보수자 부재로 대체 필요성이 제기되었으며, 테스트 부족으로 구현에 어려움이 있습니다.
-
다국어 소통: 패치 코드와 Redmine 활용이 강조되었으며, 영어 커뮤니케이션의 중요성이 언급되었습니다.
-
MVM(Multi-VM): 개발 진행 중이며 Git 저장소에서 사용 가능하나, 메인스트림 편입 시기는 미정입니다.
-
Ruby Enterprise Edition 병합: 현재 버전 그대로 병합은 어려우며, 아이디어 일부가 Ruby에 반영될 예정입니다.
-
커미터에게 중요한 것: 지속력(끈기)이 가장 중요하다고 언급되었습니다.