동적 언어 런타임

Dynamic Language Runtime
DLR(동적 언어 런타임)
원본 작성자Microsoft Dynamic Language 런타임 팀
개발자.NET 파운데이션
초기 릴리즈2010년 4월 16일; 11년(2010-04-16)
안정적 해제
1.3.1 / 2021년 12월 2일; 3개월(2021-12-02)[1]
리포지토리github.com/IronLanguages/dlr
기록 위치C#
운영 체제Windows, MacOS, Linux(Debian, Ubuntu)
플랫폼공용어 인프라
유형시스템 플랫폼
면허증아파치 라이선스 2.0
웹사이트docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

MicrosoftDLR(Dynamic Language Runtime)은 CLR(Common Language Runtime)을 기반으로 실행되며 동적 언어에 대한 컴퓨터 언어 서비스를 제공한다.이러한 서비스에는 다음이 포함된다.

DLR은 의 동적 언어를 구현하는 데 사용된다.IronPythonIronRuby 프로젝트를 포함한 NET Framework

동적 언어 구현은 공통의 기본 시스템을 공유하기 때문에, 그들이 서로 상호작용하는 것이 더 쉬워야 한다.예를 들어, 다른 동적 언어의 동적 언어에서 라이브러리를 사용할 수 있어야 한다.또한 호스팅 API는 C#, Visual Basic과 같이 정적으로 입력된 CLI 언어와의 상호운용성을 허용한다.네트.

역사

마이크로소프트의 Dynamic Language Runtime 프로젝트는 마이크로소프트가 MIX 2007에서 발표했다.[2][3]

마이크로소프트는 선적을 했다.2008년 11월에는 NET DLR 0.9 베타,[4] 2008년 12월에는 최종 0.9 베타.버전 1.0은 2010년 4월에 출하되었다.2010년 7월 마이크로소프트는 DLR의 라이센스를 마이크로소프트 퍼블릭 라이센스에서 아파치 라이센스 2.0으로 변경하였다.[5]의 발표와 함께.또한 2010년 4월에 DLR이 에 통합되었다.NET Framework 자체.[6]

GitHub에서 호스팅되는 오픈 소스 DLR 프로젝트는 언어 구현자를 위한 몇 가지 추가 기능을 가지고 있다.2010년 7월 출시 이후 몇 년 동안 이 프로젝트에 대한 활동이 거의 없었다.이는 IronRuby에서 일했던 마이크로소프트 개발자가 에 대한 마이크로소프트의 동적 언어에 대한 의지가 부족하다고 해석했다.NET Framework.[7][8]그러나 2016/17년 이후 정기적인 활동이 있어 많은 개선과 업그레이드가 이루어지고 있다.

지원되는 언어

DLR 서비스는 현재 IronRuby의 개발 버전에서 사용되고 있다.Ruby 언어의 NET 구현 및 IronPython용.[2]

2007년에 마이크로소프트는 다가오는 Visual Basic 2010 (VB 10.0)Managed JScript (ECMAScript 3.0)에 DLR을 사용할 계획을 세웠다.[9][10][11][12]그러나 2009년 8월 현재 마이크로소프트는 더 이상 DLR에 Managed JScript를 구현할 계획이 없다.[13]Visual Basic은 C#와 마찬가지로 IronPythonIronRuby와 같은 DLR에 구축된 동적 언어에서 객체에 접근할 수 있다.[14][15]

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

체계 구현인 IronScheme은 DLR을 기반으로 할 계획이었다.[17]이 아이디어는 프로젝트에서 사용하는 DLR 지점이 트렁크와 동기화되지 않게 되었고, 또한 (프로젝트 코디네이터에 따르면) 당시 DLR의 현재 버전이 Scheme의 요건 대부분을 지원할 수 없었기 때문에 포기되었다.[18]

건축

Dynamic Language Runtime은 일반 언어에 구애받지 않는 추상 구문 트리 위에 언어 특이성을 구현할 수 있다는 생각에 구축되어 있는데, 이 구문 트리의 노드는 많은 동적 언어에 공통적인 특정 기능에 대응한다.[19]이 아키텍처는 일반 스택에서 구현되어야 할 기본 언어 구성의 수가 본질적으로 제한되어야 한다는 아이디어에 의해 뒷받침된다.[20]DLR은 이러한 노드에 의해 표현되는 기능에 해당하는 코드를 동적으로 생성한다.DLR 위에 구현된 모든 동적 언어에 대한 컴파일러는 DLR 추상 트리를 생성하여 DLR 라이브러리에 넘겨야 한다.

DLR은 동적으로 업데이트됨DynamicSite객체에 바인딩 메서드의 작업을 캐시하는 객체.프로그램 수명 동안 동적 언어로 개체 유형(포함된 멤버뿐만 아니라 개체 유형도 변경될 수 있으므로 메서드 호출은 메서드 목록을 확인하여 호출이 유효한지 확인해야 한다. DynamicSite객체는 객체의 상태와 그 메서드를 나타내고 캐시한다. 객체에 대한 모든 업데이트는 에 반영된다.DynamicSite물건도.DLR은 다음을 통해 모든 메서드 호출 라우팅DynamicSite그런 다음 실제 구현과 함께 신속하게 검색하고 메소드를 바인딩하는 객체.[21]

앵무새 가상 머신(상속성이 없음)이나 다빈치 머신(JVM 명령 집합에 새 바이트 코드를 추가하여 자바의 JVM에 구축됨)과 같은 다른 노력과는 대조적으로 DLR은 기존의 공용어 런타임인 를 기반으로 구축된다.NET Framework 가상 시스템.[22]

참고 항목

  • Da Vinci Machine – Java 가상 머신(JVM) 레벨에서 Java 플랫폼에 동적 언어 지원을 제공하는 Sun Microsystems에서 시작하는 프로젝트
  • 앵무새 가상 머신

참조

  1. ^ "Releases". IronLanguages/dlr. GitHub. Retrieved 2022-01-27.
  2. ^ a b Hugunin, Jim. "A Dynamic Language Runtime (DLR)". Retrieved 2007-06-21. For the short term, our focus is on using a small number of languages to drive the first wave of DLR development where we can work closely and face-to-face with the developers in order to iron out the worst kinks in the DLR design. After this initial phase, we want to reach out to the broader language community.
  3. ^ Viehland, Dino (2008-01-15). "Roadmap for IronPython 2.0". Archived from the original on 2008-09-06. Retrieved 2008-02-09. We don't really have a document like this but the general goal is to ship IronPython 2.0 by the end of the year. For the DLR itself the plan is to ship a v1.0 around the same time as IronPython 2.0.
  4. ^ "CodePlex Archive".
  5. ^ "CodePlex Archive".
  6. ^ https://msdn.microsoft.com/en-us/library/dd233052.aspx
  7. ^ "Microsoft Tires of IronRuby; Jimmy Schementi Jumps Ship". rubyinside.com. 2010-08-07. Retrieved 2012-02-26. A year ago the team shrunk by half and our agility was severely limited. [..] Overall, I see a serious lack of commitment to IronRuby, and dynamic language[s] on .NET in general.
  8. ^ "Microsoft's Dynamic languages are dying". i-programmer.info. 2010-08-10. Retrieved 2012-02-26. Without the final push to get the languages working under Visual Studio and integrated with the designer both Iron languages are probably dead - and Microsoft seems to have lost the will to make them a success.
  9. ^ "Managed JScript announced". Retrieved 2007-05-04.
  10. ^ "What the heck is "VBx"?". 2007-05-01. Retrieved 2009-08-12. With the new DLR, we have support for IronPython, IronRuby, Javascript, and the new dynamic VBx compile
  11. ^ "Putting Mix, Silverlight, the CoreCLR and the DLR into context". 2007-05-01. Retrieved 2008-08-12.
  12. ^ "Introducing Visual Basic 10". infoq.com. 2007-05-04. Retrieved 2009-08-12. VB 10 takes advantage of a Silverlight feature called the Dynamic Language Runtime or DLR
  13. ^ Chiles, Bill (2009-06-01). "Future of Managed JScript (IronJScript)?". Retrieved 2009-08-12. The DLR JScript was experimental for informing the design of the DLR (expression trees, interop, callsites, hosting, etc.). The JS we released with asp futures and the Silverlight dynamic sdk became very old and unserviceable as the DLR continued evolving for release in CLR 4.0. Unfortunately, there are no plans at this time to develop and release a DLR-hostable JScript.
  14. ^ "What's New in Visual Basic 2010". Microsoft. 2009. Retrieved 2009-08-12. Visual Basic binds to objects from dynamic languages such as IronPython and IronRuby
  15. ^ https://msdn.microsoft.com/en-us/library/ee461504.aspx#Y480
  16. ^ "Archived copy". Archived from the original on 2012-04-28. Retrieved 2012-03-30.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  17. ^ "CodePlex Archive".
  18. ^ "Is there any silverlight sample?". 2009-05-11. Retrieved 2009-07-26. Unfortunately, my DLR branch is very out of sync with the Silverlight one. I just thought about it, perhaps I do not need the DLR perse, will investigate. The problem is that the DLR as-is, is not good enough to support the majority of the Scheme's requirements
  19. ^ Hugunin, Jim (2007-05-15). "DLR Trees (Part 1)". Retrieved 2008-02-23. The key implementation trick in the DLR is using these kinds of trees to pass code around as data and to keep code in an easily analyzable and mutable form as long as possible.
  20. ^ Nutter, Charles (2008-01-28). "Lang.NET 2008: Day 1 Thoughts". Retrieved 2008-02-23. The idea is that there's a quickly-flattening asymptotic curve to the number of expression tree nodes required to implement each new language. Whether that's the case is yet to be seen.
  21. ^ Bill Chiles (October 2007). "CLR Inside Out: IronPython and the Dynamic Language Runtime". MSDN Magazine. Retrieved 2007-08-10.
  22. ^ Rose, John (2008-02-02). "Bravo for the dynamic runtime!". Archived from the original on 2008-02-06. Retrieved 2008-02-23. The differences between the CLR and JVM extensions are interesting to note. They work completely above the level of the CLR without significantly enhancing it, while we are developing the JVM and libraries at the same time.

외부 링크