맨위로가기

동적 언어 런타임

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

동적 언어 런타임(DLR)은 마이크로소프트가 개발한 .NET Framework 위에서 실행되는 라이브러리이다. 2007년에 처음 발표되었으며, 파이썬과 루비와 같은 동적 언어를 .NET 환경에서 사용할 수 있도록 지원한다. DLR은 .NET Framework 4.0부터 통합되었으며, 2010년에는 라이선스가 변경되었다. IronPython과 IronRuby 개발에 사용되었으며, C#과 Visual Basic에서도 동적 언어 객체에 접근할 수 있도록 지원한다. DLR은 언어별 특성을 추상 구문 트리 위에 구현하여 다양한 동적 언어를 지원하며, DynamicSite 객체를 통해 메서드 바인딩을 캐싱하여 성능을 향상시킨다.

더 읽어볼만한 페이지

  • 닷넷 용어 - XAML
    XAML은 마이크로소프트에서 개발한 XML 기반의 마크업 언어로, 사용자 인터페이스, 데이터 바인딩, 이벤트 처리 등을 정의하며 WPF, Silverlight, WF, WinRT API 앱, Xamarin.Forms 등에서 UI 개발에 널리 사용된다.
  • 닷넷 용어 - 윈도우 커뮤니케이션 파운데이션
    윈도우 커뮤니케이션 파운데이션(WCF)은 마이크로소프트가 분산 시스템 개발을 용이하게 하고 서비스 지향 아키텍처(SOA)를 구현하기 위해 개발한 프레임워크로, 다양한 전송 프로토콜과 메시지 인코딩 방식을 지원하며 닷넷 프레임워크 3.0의 일부로 출시되어 다양한 유형의 애플리케이션 통합을 목표로 한다.
  • 마이크로소프트의 자유 소프트웨어 - 마이크로소프트 코그니티브 툴킷
  • 마이크로소프트의 자유 소프트웨어 - ASP.NET
    ASP.NET은 .NET Framework 기반의 마이크로소프트 웹 애플리케이션 개발 플랫폼으로, ISAPI를 통해 동작하며 다양한 프로그래밍 모델과 개발 도구를 지원하고, 부트스트랩, OAuth 2.0, OData 등 최신 기술을 통합하여 강력한 웹 개발 환경을 제공한다.
  • 2010년 소프트웨어 - 빅쿼리
    빅쿼리는 구글의 데이터 분석 서비스로, 드레멜을 기반으로 수조 행의 데이터에 대한 빠른 쿼리를 가능하게 하며, 데이터 관리, 쿼리 실행, 서비스 통합, 접근 제어, 기계 학습 기능을 제공한다.
  • 2010년 소프트웨어 - 애플 북스
    애플이 개발한 애플 북스는 iOS 및 macOS 기기에서 전자책 및 오디오북을 판매 및 소비하고 읽는 데 사용되는 앱으로, 다양한 사용자 설정 기능과 기기 간 동기화를 지원하지만, 독점적인 파일 형식 사용 및 앱 내 구매 정책 등으로 논란이 있다.
동적 언어 런타임 - [IT 관련 정보]에 관한 문서
기본 정보
이름동적 언어 런타임
영어 이름Dynamic Language Runtime (DLR)
개발
저자마이크로소프트 동적 언어 런타임 팀
개발자.NET 파운데이션
출시
최초 출시일2010년 4월 16일
최신 버전1.3.1
최신 버전 출시일2021년 12월 2일
기타 정보
저장소IronLanguages/dlr GitHub 저장소
프로그래밍 언어C#
운영체제Windows
macOS
리눅스 (데비안, Ubuntu)
플랫폼공용 언어 인프라스트럭처
장르시스템 플랫폼
라이선스아파치 라이선스 2.0
웹사이트동적 언어 런타임 개요

2. 역사

마이크로소프트의 동적 언어 런타임(DLR) 프로젝트는 2007년 MIX 행사에서 처음 발표되었다.[12][2]

2008년 11월에 .NET DLR 0.9 베타 버전이 출시되었고,[3] 같은 해 12월에 최종 0.9 버전이 출시되었다. 2010년 4월에는 DLR 1.0 버전이 출시되었다. 2010년 7월, 마이크로소프트는 DLR의 라이선스를 Microsoft Public License에서 Apache License 2.0으로 변경하였다.[4] DLR은 .NET 4와 함께 .NET Framework 자체에 통합되었다.[5]

GitHub에서 호스팅되는 오픈 소스 DLR 프로젝트는 한동안 활동이 뜸했으나, 2016/17년 이후 다시 활동이 재개되어 여러 개선 및 업그레이드가 이루어졌다.

2. 1. IronRuby 및 IronPython 개발

DLR 개발의 주요 결과물 중 하나는 IronRubyIronPython 프로젝트이다.[12] 이 프로젝트들은 각각 Ruby 및 Python 언어를 .NET 환경에서 실행할 수 있도록 지원한다. DLR 서비스는 현재 IronRuby 개발 버전, Ruby 언어의 .NET 구현, 그리고 IronPython에서 사용되고 있다.[23]

2. 2. Managed JScript 중단

2009년 8월, 마이크로소프트는 DLR 기반의 Managed JScript 구현 계획을 중단한다고 발표했다.[13]

3. 지원 언어

DLR은 IronPython, IronRuby 등 다양한 동적 언어를 지원한다.[12] C#와 Visual Basic .NET 같은 정적 형식 언어도 DLR을 통해 동적 언어의 객체에 접근할 수 있다.[14][15]

Windows 8에서 출시된 PowerShell 3.0은 DLR을 사용하도록 업데이트되었다.[16]

IronScheme은 DLR 기반으로 구축될 예정이었으나, 당시 DLR의 한계로 인해 중단되었다.[18]

4. 아키텍처

동적 언어 런타임(DLR)은 여러 동적 언어에 공통적인 기능을 하는 노드들로 구성된 언어 독립적 추상 구문 트리(AST) 위에 언어별 특성을 구현하는 방식으로 설계되었다.[19] 이 아키텍처는 범용 스택에 구현해야 하는 기본적인 언어 구성 요소의 수를 제한해야 한다는 아이디어를 바탕으로 한다.[20] DLR은 이러한 노드가 나타내는 기능에 해당하는 코드를 동적으로 생성한다. DLR 위에 구현된 동적 언어 컴파일러는 DLR 추상 트리를 생성하여 DLR 라이브러리에 전달한다.

4. 1. DynamicSite 객체

DLR은 `DynamicSite` 객체를 제공하는데, 이 객체는 메서드를 객체에 바인딩하고 동적으로 업데이트하는 역할을 한다. 동적 언어에서는 프로그램 실행 중에 객체의 유형과 멤버가 변경될 수 있으므로, 메서드 호출 시 호출이 유효한지 확인하기 위해 메서드 목록을 확인해야 한다. `DynamicSite` 객체는 객체와 해당 메서드의 상태를 캐시하고, 객체가 변경되면 `DynamicSite` 객체도 업데이트된다. DLR은 모든 메서드 호출을 `DynamicSite` 객체를 통해 라우팅하며, `DynamicSite` 객체는 빠른 조회를 수행하여 실제 구현과 메서드를 바인딩한다.[21][43]

4. 2. CLR과의 관계

DLR은 기존의 공통 언어 런타임(CLR), 즉 .NET Framework 가상 머신 위에 구축되었다.[22] 이는 자바 가상 머신의 핵심 부분에 동적 프로그래밍 언어 지원을 추가하려는 Da Vinci 머신 등과 같은 시도와 대조적이다.[44]

참조

[1] 웹사이트 Releases https://github.com/I[...] 2022-01-27
[2] 웹사이트 Roadmap for IronPython 2.0 http://lists.ironpyt[...] 2008-02-09
[3] 웹사이트 CodePlex Archive http://www.codeplex.[...]
[4] 웹사이트 CodePlex Archive http://dlr.codeplex.[...] 2010-07-27
[5] 웹사이트 Dynamic Language Runtime Overview - .NET Framework https://msdn.microso[...] 2024-03-30
[6] 웹사이트 Microsoft Tires of IronRuby; Jimmy Schementi Jumps Ship http://www.rubyinsid[...] rubyinside.com 2012-02-26
[7] 웹사이트 Microsoft's Dynamic languages are dying http://www.i-program[...] i-programmer.info 2012-02-26
[8] 웹사이트 Managed JScript announced http://blogs.msdn.co[...] 2007-05-04
[9] 웹사이트 What the heck is "VBx"? http://www.panoptico[...] 2009-08-12
[10] 웹사이트 Putting Mix, Silverlight, the CoreCLR and the DLR into context http://www.hanselman[...] 2008-08-12
[11] 웹사이트 Introducing Visual Basic 10 http://www.infoq.com[...] infoq.com 2009-08-12
[12] 웹사이트 A Dynamic Language Runtime (DLR) http://blogs.msdn.co[...] 2007-06-21
[13] 웹사이트 Future of Managed JScript (IronJScript)? http://dlr.codeplex.[...] 2009-08-12
[14] 웹사이트 What's New in Visual Basic 2010 https://msdn.microso[...] Microsoft 2009-08-12
[15] 웹사이트 Walkthrough: Creating and Using Dynamic Objects (C# and Visual Basic) https://msdn.microso[...] 2023-02-25
[16] 웹사이트 PowerShell 3 – Finally on the DLR! http://huddledmasses[...] 2012-03-30
[17] 웹사이트 CodePlex Archive http://www.codeplex.[...]
[18] 웹사이트 Is there any silverlight sample? http://ironscheme.co[...] 2009-07-26
[19] 웹사이트 DLR Trees (Part 1) http://blogs.msdn.co[...] 2008-02-23
[20] 웹사이트 Lang.NET 2008: Day 1 Thoughts http://headius.blogs[...] 2008-02-23
[21] 웹사이트 CLR Inside Out: IronPython and the Dynamic Language Runtime http://msdn2.microso[...] MSDN Magazine 2007-08-10
[22] 웹사이트 Bravo for the dynamic runtime! http://blogs.sun.com[...] 2008-02-23
[23] 웹사이트 A Dynamic Language Runtime (DLR) http://blogs.msdn.co[...] 2007-08-24
[24] 웹사이트 A Dynamic Language Runtime (DLR) http://blogs.msdn.co[...] 2007-06-21
[25] 웹사이트 Roadmap for IronPython 2.0 http://lists.ironpyt[...] 2008-02-09
[26] 문서 http://www.codeplex.com/dlr
[27] 문서 http://dlr.codeplex.com/license
[28] 문서 http://msdn.microsoft.com/en-us/library/dd233052.aspx
[29] 웹사이트 Microsoft Tires of IronRuby; Jimmy Schementi Jumps Ship http://www.rubyinsid[...] rubyinside.com 2012-02-26
[30] 웹사이트 Microsoft's Dynamic languages are dying http://www.i-program[...] i-programmer.info 2012-02-26
[31] 웹사이트 Managed JScript announced http://blogs.msdn.co[...] 2007-05-04
[32] 웹사이트 What the heck is "VBx"? http://www.panoptico[...] 2009-08-12
[33] 웹사이트 Putting Mix, Silverlight, the CoreCLR and the DLR into context http://www.hanselman[...] 2008-08-12
[34] 웹사이트 Introducing Visual Basic 10 http://www.infoq.com[...] infoq.com 2009-08-12
[35] 웹사이트 Future of Managed JScript (IronJScript)? http://dlr.codeplex.[...] 2009-08-12
[36] 웹사이트 What's New in Visual Basic 2010 http://msdn.microsof[...] マイクロソフト 2009-08-12
[37] 웹사이트 http://msdn.microsof[...]
[38] 웹사이트 アーカイブされたコピー http://huddledmasses[...] 2012-03-30
[39] 웹사이트 http://www.codeplex.[...]
[40] 웹사이트 Is there any silverlight sample? http://ironscheme.co[...] 2009-05-11
[41] 웹사이트 DLR Trees (Part 1) http://blogs.msdn.co[...] 2007-05-15
[42] 웹사이트 Lang.NET 2008: Day 1 Thoughts https://headius.blog[...] 2008-01-28
[43] 웹사이트 CLR Inside Out: IronPython and the Dynamic Language Runtime http://msdn2.microso[...] MSDN 2007-10
[44] 웹사이트 Bravo for the dynamic runtime! http://blogs.sun.com[...] 2008-02-02
[45] 웹인용 Releases https://github.com/I[...] 2022-01-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com