IronRuby
1. 개요
IronRuby는 .NET Framework를 대상으로 하는 Ruby 프로그래밍 언어의 구현체이다. 2007년 마이크로소프트에 의해 발표되었으며, 동적 언어 런타임(DLR)을 활용하여 .NET 환경에서 Ruby 코드를 실행할 수 있게 설계되었다. 초기에는 마이크로소프트 공용 라이선스로 배포되었으나, 2010년 아파치 라이선스 2.0으로 변경되었다. 2010년 마이크로소프트가 IronRuby 개발을 커뮤니티 주도로 전환하면서 현재는 커뮤니티에서 개발이 진행되고 있다.
-
루비 (프로그래밍 언어) -
마츠모토 유키히로
마츠모토 유키히로는 루비 프로그래밍 언어를 창시하고 주요 개발자로 활동하며 MRI, mruby, streem 등 다양한 프로그래밍 언어 및 관련 기술 개발에 기여한 인물로, 오픈소스 소프트웨어 커뮤니티에 대한 공헌과 루비 온 레일즈의 성공으로 세계적인 인정을 받았다. -
루비 (프로그래밍 언어) -
루비포지
루비포지는 루비 센트럴이 운영하며 오픈 소스 루비 언어 관련 홍보를 지원하는 웹사이트였으나, 2014년 5월 15일에 서비스가 종료되었다. -
C 샤프로 작성된 자유 소프트웨어 -
밴시 (미디어 플레이어)
밴시는 플러그인을 통해 기능을 확장할 수 있으며, Mac OS X, 리눅스, 윈도우를 지원하는 미디어 플레이어이다. -
C 샤프로 작성된 자유 소프트웨어 -
MonoDevelop
MonoDevelop은 .NET 플랫폼용 통합 개발 환경으로, 비주얼 스튜디오와 유사한 기능을 제공하며 다중 플랫폼 및 다양한 프로그래밍 언어를 지원하고, 오픈 소스 IDE로서 Visual Studio for Mac의 대안으로 고려될 수 있다. -
마이크로소프트의 자유 소프트웨어 -
마이크로소프트 코그니티브 툴킷
-
마이크로소프트의 자유 소프트웨어 -
ASP.NET
ASP.NET은 .NET Framework 기반의 마이크로소프트 웹 애플리케이션 개발 플랫폼으로, ISAPI를 통해 동작하며 다양한 프로그래밍 모델과 개발 도구를 지원하고, 부트스트랩, OAuth 2.0, OData 등 최신 기술을 통합하여 강력한 웹 개발 환경을 제공한다.
2. 역사
2007년 4월 30일, 마이크로소프트는 MIX 2007에서 Wilco Bauwer의 IronRuby 프로젝트와 동일한 이름을 승인 하에 사용하는 IronRuby를 발표했다. 이는 OSCON 2007에서 대중에게 공개될 예정이었다. 2007년 7월 23일, John Lam과 DLR 디자인 팀은 OSCON에서 IronRuby 컴파일러의 pre-Alpha 버전을 발표하고, 오픈 소스 커뮤니티에 더 통합하기 위한 빠른 일정을 발표했다. 2007년 8월 31일에는 RubyForge에서 pre-alpha 단계의 코드가 공개되었는데, 소스 코드는 핵심 Microsoft 팀에 의해 정기적으로 업데이트되었지만, 팀은 핵심 DLR 라이브러리에 대한 커뮤니티 기여는 허용하지 않았다.
2008년 7월 24일, IronRuby 팀은 OSCON 2008에서 첫 번째 바이너리 알파 버전을 출시했고, 2008년 11월 19일에는 두 번째 알파 버전을 출시했다. IronRuby 팀은 Rails 지원을 위해 노력했으며, 일부 Rails 기능 테스트가 시작되었지만, 프로덕션 환경에서 Rails를 실행하려면 더 많은 작업이 필요했다.
2009년 5월 21일, RailsConf 2009에서 버전 0.5가 출시되어 IronRuby가 일부 Rails 애플리케이션을 실행할 수 있음을 시연했지만, 여전히 프로덕션 환경에서는 실행할 수 없었다. 2009년 7월 23일, OSCON 2009에서 버전 0.9가 발표되었으며, 이 버전은 성능이 향상되었다.
2010년 4월 12일, IronRuby 1.0 버전이 출시되었다. 이 버전은 .NET 4.0 위에서 실행되는 권장 버전과 .NET 2.0에서 실행되는 제한적인 기능을 가진 버전으로 제공되었으며, 후자는 Mono와 호환되는 유일한 버전이었다. IronRuby 팀은 1.0 릴리스에서 Ruby 1.8.6을 지원하고, 향후 1.x 릴리스에서는 Ruby 1.9 버전을 지원하며, Ruby 1.8.7에 대한 지원은 건너뛸 계획이었다.
2010년 7월, 마이크로소프트는 IronRuby의 라이선스를 Microsoft Public License에서 Apache License 2.0으로 변경하였다. 같은 해 10월, 마이크로소프트는 IronRuby를 포함한 Iron 프로젝트들을 "외부" 프로젝트로 전환하고, 커뮤니티 주도 개발을 지원한다고 발표했다. 이에 따라, 마이크로소프트는 IronRuby 핵심 팀원 중 한 명을 해고하고 프로젝트 자금 지원을 중단했다.
2011년 3월 13일, 커뮤니티 주도로 개발된 IronRuby 1.1.3 버전이 출시되었다. 이후 IronRuby는 커뮤니티 주도로 개발이 진행되고 있다. 2011년 2월 7일에는 커뮤니티 이관 후 첫 릴리스인 버전 1.1.2가 릴리스되었다. IronRuby는 RubySpec을 기반으로 구현되었으며, Github에 있는 IronRuby 저장소에는 MSpec 테스트 프레임워크를 사용한 RubySpec 테스트가 포함되어 있다.
2.1. 초기 발표 및 개발 (2007년 ~ 2009년)
2007년 4월 30일, 마이크로소프트는 MIX 2007에서 Wilco Bauwer의 IronRuby 프로젝트와 동일한 이름을 승인 하에 사용하는 IronRuby를 발표했다. 이는 OSCON 2007에서 대중에게 공개될 예정이었다. 2007년 7월 23일, John Lam과 DLR 디자인 팀은 OSCON에서 IronRuby 컴파일러의 pre-Alpha 버전을 발표하고, 오픈 소스 커뮤니티에 더 통합하기 위한 빠른 일정을 발표했다. 2007년 8월 31일에는 RubyForge에서 pre-alpha 단계의 코드가 공개되었는데, 소스 코드는 핵심 Microsoft 팀에 의해 정기적으로 업데이트되었지만, 팀은 핵심 DLR 라이브러리에 대한 커뮤니티 기여는 허용하지 않았다.
2008년 7월 24일, IronRuby 팀은 OSCON 2008에서 첫 번째 바이너리 알파 버전을 출시했고, 2008년 11월 19일에는 두 번째 알파 버전을 출시했다. IronRuby 팀은 Rails 지원을 위해 노력했으며, 일부 Rails 기능 테스트가 시작되었지만, 프로덕션 환경에서 Rails를 실행하려면 더 많은 작업이 필요했다.
2009년 5월 21일, RailsConf 2009에서 버전 0.5가 출시되어 IronRuby가 일부 Rails 애플리케이션을 실행할 수 있음을 시연했지만, 여전히 프로덕션 환경에서는 실행할 수 없었다. 2009년 7월 23일, OSCON 2009에서 버전 0.9가 발표되었으며, 이 버전은 성능이 향상되었다.
2.2. 정식 버전 출시 및 오픈 소스 전환 (2010년 ~ 2011년)
2010년 4월 12일, IronRuby 1.0 버전이 출시되었다. 이 버전은 .NET 4.0 위에서 실행되는 권장 버전과 .NET 2.0에서 실행되는 제한적인 기능을 가진 버전으로 제공되었으며, 후자는 Mono와 호환되는 유일한 버전이었다. IronRuby 팀은 1.0 릴리스에서 Ruby 1.8.6을 지원하고, 향후 1.x 릴리스에서는 Ruby 1.9 버전을 지원하며, Ruby 1.8.7에 대한 지원은 건너뛸 계획이었다.
2010년 7월, 마이크로소프트는 IronRuby의 라이선스를 Microsoft Public License에서 Apache License 2.0으로 변경하였다. 같은 해 10월, 마이크로소프트는 IronRuby를 포함한 Iron 프로젝트들을 "외부" 프로젝트로 전환하고, 커뮤니티 주도 개발을 지원한다고 발표했다. 이에 따라, 마이크로소프트는 IronRuby 핵심 팀원 중 한 명을 해고하고 프로젝트 자금 지원을 중단했다.
2011년 3월 13일, 커뮤니티 주도로 개발된 IronRuby 1.1.3 버전이 출시되었다.
2.3. 커뮤니티 주도 개발 (2011년 이후)
2010년 7월, 마이크로소프트는 IronRuby 핵심 팀의 두 멤버 중 한 명인 [http://jimmy.schementi.com Jimmy Schementi]를 해고하고 프로젝트 자금 지원을 중단했다. 2010년 10월, 마이크로소프트는 Iron 프로젝트(IronRuby 및 IronPython)가 "외부" 프로젝트로 변경되었으며 "Microsoft의 참여나 Microsoft 직원의 후원 없이 커뮤니티 구성원이 기여할 수 있도록" 할 것이라고 발표했다. IronRuby의 마지막으로 발표된 릴리스는 2011년 3월 13일에 버전 1.1.3으로 출시되었다.
이후 IronRuby는 커뮤니티 주도로 개발이 진행되고 있다. 2011년 2월 7일에는 커뮤니티 이관 후 첫 릴리스인 버전 1.1.2가 릴리스되었다. IronRuby는 RubySpec을 기반으로 구현되었으며, Github에 있는 IronRuby 저장소에는 MSpec 테스트 프레임워크를 사용한 RubySpec 테스트가 포함되어 있다.
3. 아키텍처
3.1. 동적 언어 런타임(DLR)
3.2. Mono 지원
IronRuby는 마이크로소프트 공용 언어 런타임(CLR)뿐만 아니라 오픈 소스 소프트웨어 구현인 모노에서도 실행될 수 있다. 그러나 마이크로소프트 관리 하에서 IronRuby 팀은 윈도우의 CLR 환경에서만 동작을 확인했고, 빌드에 따라 모노에서 빌드되지 않는 문제가 발생할 수 있었다. Mono에서의 빌드 관련 정보는 Github의 Wiki에 기술되어 있다.
3.3. .NET 상호 운용성
IronRuby는 .NET Framework 클래스와의 상호 운용성을 제공하지만, 많은 Ruby 클래스가 .NET 클래스가 아니기 때문에 제한적이다. Ruby의 관점에서 보면, .NET 클래스는 Ruby 클래스가 아니므로 상호 운용성에 제약이 따른다. 그러나 .NET 어셈블리 호출이나 .NET에서 Ruby 스크립트를 호출하는 것은 다른 환경에 비해 비교적 용이하다. .NET 4.0에서는 동적 언어에 대한 지원이 강화되어 향후 상호 운용성이 향상될 수 있다.
3.4. Silverlight 지원
IronRuby는 실버라이트에서 지원되었다. 이는 자바스크립트 엔진처럼 브라우저 내에서 스크립팅 엔진으로 사용될 수 있었다. IronRuby 스크립트는 `<script>` 태그 내에서 간단한 클라이언트 측 자바스크립트 스크립트처럼 전달되었다. 이는 임베디드 XAML 마크업을 수정하는 것도 가능하게 했다.
이 기술의 배후에는 Gestalt라는 기술이 있었다.
```xml
// DLR 초기화 스크립트.
```
이는 IronPython에서도 동일하게 작동했다.
4. 테스트
IronRuby는 루비스펙(RubySpec)을 통합하여 루비 언어 사양과의 호환성을 검증한다. 루비스펙은 루비 프로그래밍 언어의 실행 가능한 사양을 제공하는 프로젝트이다. IronRuby Git 저장소에는 MSpec 테스트 프레임워크를 포함한 RubySpec 테스트가 포함되어 있다.