아이언피톤

IronPython
아이언피톤
IronPython 3 logo.svg
Ironpython-logo.png
원본 작성자짐 후구닌, 마이크로소프트
개발자디노 비엘랜드
.NET 파운데이션
초기 릴리즈2006년 9월 5일;[1] 15년(2006-09-05)
안정적 해제
2.7.11[2] / 2020년 11월 17일; 15개월 전(2020년 11월 17일)
릴리스 미리 보기
3.4.0-알파1 / 2021년 4월 20일; 10개월(2021-04-20)
리포지토리
기록 위치C#
운영 체제Windows, Linux, MacOS
플랫폼.NET Framework, .NET, 모노
유형Python 프로그래밍 언어 구현
면허증아파치 라이선스 2.0
웹사이트ironpython.net Edit this on Wikidata

IronPython은 를 대상으로 하는 Python 프로그래밍 언어의 구현이다.NET FrameworkMono.짐 후구닌은 이 프로젝트를 만들어 2006년 9월 5일 발매된 버전 1.0까지 적극적으로 기여했다.[3]IronPython 2.0은 2008년 12월 10일에 출시되었다.[4]버전 1.0 이후 마이크로소프트의 소규모 팀이 2.7 베타 1을 출시할 때까지 유지했다.마이크로소프트는 2010년 말 IronPython(및 자매 프로젝트 IronRuby)을 포기했고, 그 후 후구닌은 구글에서 일하기 위해 떠났다.[5]이 프로젝트는 현재 GitHub의 자원봉사자들에 의해 유지되고 있다.무료 오픈소스 소프트웨어로 마이크로소프트 Visual Studio IDE의 무료 오픈소스 확장인 Python Tools for Visual Studio로 구현할 수 있다.[6][7]

IronPython은 일부 코드는 Python으로 작성된 코드 생성기에 의해 자동으로 생성되지만, 전적으로 C#로 작성된다.

IronPython은 DLR(Dynamic Language Runtime) 에 구현되는데, 무엇보다도 동적 언어에 대해 동적 타이핑과 동적 방법 디스패치를 제공한다.[8]DLR은 의 일부임.NET Framework 4.0은 2009년 버전 2.4 이후 Mono에 속해 있기도 하다.[9]DLR은 이전 CLI 구현의 라이브러리로도 사용할 수 있다.

상태 및 로드맵

  • 2008년 12월 10일에 발매되었고, 2009년 10월 23일에 2.0.3으로 갱신된 릴리즈 2.0은 CPython 2.5를 목표로 한다.[10]IronPython 2.0.3은 까지만 호환 가능.NET Framework 3.5.
  • 2009년 12월 11일에 발매되고 2010년 4월 12일에 갱신된 릴리즈 2.6은 CPython 2.6을 목표로 한다.[11]IronPython 2.6.1 버전은 와만 호환되는 이진 버전이다.NET Framework 4.0.IronPython 2.6.1은 에서 실행할 소스로부터 컴파일되어야 한다.NET Framework 3.5.2010년 10월 21일에 출시된 IronPython 2.6.2는 두 가지 버전 모두와 호환된다.NET Framework 4.0 및 .NET Framework 3.5.
  • 릴리즈 2.7은 2011년 3월 12일에 출시되었으며 CPython 2.7을 목표로 한다.[12]
  • 릴리즈 2.7.1은 2011년 10월 21일에 출시되었으며 CPython 2.7을 목표로 한다.[13]
  • 릴리즈 2.7.2.1은 2012년 3월 13일에 출시되었다.ZIP 파일 형식 라이브러리, SQLite 및 컴파일된 실행 파일에 대한 지원을 가능하게 한다.[14]
  • 릴리즈 2.7.4는 2013년 9월 7일에 출시되었다.[15]
  • 릴리스 2.7.5는 2014년 12월 6일에 출시되었으며 대부분 버그 수정으로 구성되어 있다.[16]
  • 릴리스 2.7.6은 2016년 8월 21일에 출시되었으며 버그 수정으로만 구성되어 있다.[17]
  • 릴리스 2.7.7은 2016년 12월 7일에 출시되었으며 버그 수정으로만 구성되어 있다.[18]
  • 릴리즈 2.7.8은 2018년 2월 16일에 출시되었으며 버그 수정, 재구성 코드, 업데이트된 테스트 인프라(Mono에 따른 Linux에서의 중요 테스트 포함)로 구성된다.그것은 또한 지지한 첫 번째 발매물이다.NET Core.[19]
  • 릴리즈 2.7.9는 2018년 10월 9일에 출시되었으며 버그 수정, 재구성 코드로 구성된다.그것은 아이언피톤 3 이전의 마지막 출시로 의도되었다.[20]
  • 릴리즈 2.7.10은 2020년 4월 27일에 출시되었고 추가되었다.NET Core 3.1 지원.[21]
  • 릴리즈 2.7.11은 2020년 11월 17일에 출시되었으며 에 실행될 때 문제를 해결한다.NET 5.

CPython과의 차이점

파이썬 참조 구현 CPython과 IronPython 사이에는 약간의 차이가 있다.[22]IronPython 위에 건설된 일부 프로젝트는 CPython에서 작동하지 않는 것으로 알려져 있다.[23]반대로, C에서 구현되는 언어의 확장에 의존하는 CPython 애플리케이션은 에서 구현되지 않는 한 IronPython과 호환되지 않는다.[24]NET interop예를 들어 NumPy는 2011년 마이크로소프트에 의해 포장되어 에 종속된 코드와 라이브러리를 에서 직접 실행할 수 있게 되었다.NET Framework.[25]

실버라이트

IronPython은 Silverlight(마이크로소프트가 더 이상 사용하지 않으며 대부분의 웹 브라우저에서[26] 이미 지원을 잃었다)에서 지원된다.자바스크립트 엔진과 마찬가지로 브라우저에서 스크립팅 엔진으로 사용할 수 있다.[27]IronPython 스크립트는 의 간단한 클라이언트측 JavaScript 스크립트처럼 전달됨<script>-태그, 임베디드 XAML 마크업 수정 가능

이것의 이면에 있는 기술은 게슈탈트라고 불린다.[citation needed]

// DLR 초기화 스크립트.<script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/light"> // 클라이언트측 스크립트가 IronPython과 Silverlight에 전달되었다.<script type="text/text" .Alert("Hello from Python") </script>

IronRubby도 마찬가지야.

면허증

버전 0.6까지, IronPython은 공통공인허가 조건에 따라 출시되었다.[28]2004년 8월 프로젝트 리드를 모집한 후 마이크로소프트의 공유 소스 이니셔티브의 일환으로 아이언피톤을 사용할 수 있게 되었다.이 라이선스는 OSI가 승인한 것은 아니지만, 저자들은 이 라이선스가 오픈소스 정의를 충족한다고 주장한다.[29]2.0 알파 릴리즈와 함께 OSI가 승인한 마이크로소프트 퍼블릭 라이센스로 라이선스가 변경됐다.[30]최신 버전은 Apache License 2.0의 조건에 따라 출시된다.

인터페이스 확장성

IronPython의 주요 장점 중 하나는 에 작성된 애플리케이션 프레임워크에 대한 확장성 계층으로서의 기능이다.NET 언어.IronPython 통역기를 기존 에 통합하는 것은 비교적 간단하다.NET 애플리케이션 프레임워크.다운스트림 개발자는 일단 자리를 잡으면 와 상호 작용하는 IronPython으로 작성된 스크립트를 사용할 수 있다.프레임워크의 NET 오브젝트, 따라서 프레임워크의 코드 기반을 변경하지 않고도 프레임워크의 인터페이스의 기능을 확장한다.[31]

아이언피톤은 반사를 광범위하게 사용한다.에 대한 참조를 전달했을 때.NET object는 자동으로 해당 object에서 사용할 수 있는 종류와 메서드를 가져올 것이다.따라서 와 함께 작업할 때 매우 직관적인 경험을 하게 된다.IronPython 스크립트 내의 NET 개체.

다음의 아이언피톤 대본은 조작을 한다.NET Framework 객체.이 스크립트는 타사 클라이언트측 애플리케이션 개발자가 제공할 수 있으며 인터페이스를 통해 서버측 프레임워크로 전달된다.클라이언트 응용 프로그램에서 필요한 분석을 지원하도록 인터페이스나 서버측 코드가 수정되지 않는다는 점에 유의하십시오.

로부터 북서비스 수입하다 북디커리   책WritedBookerPrizeWinners = [.제목 을 위해   북디커리.겟올북스()                                      만일 "부커상"  .작가.메이저 아워즈] 

이 경우에는 을 가정해 보십시오.NET Framework는 BookService라는 모듈에서 클래스 BookDictionary를 구현하고 IronPython 스크립트를 보내고 실행할 수 있는 인터페이스를 게시한다.

이 대본은, 그 인터페이스로 보내질 때, 프레임워크에 의해 유지되는 책의 전체 목록을 반복하고, 부커상 수상 작가들에 의해 쓰여진 책들을 골라낼 것이다.

흥미로운 것은 실제 분석 작성에 대한 책임이 클라이언트 측 개발자에게 있다는 점이다.서버측 개발자에 대한 요구는 미미하며, 본질적으로 서버에 의해 유지되는 데이터에 대한 액세스를 제공할 뿐이다.이러한 설계 패턴은 복잡한 애플리케이션 프레임워크의 배치와 유지보수를 크게 단순화한다.

다음 스크립트는 를 사용한다.간단한 Hello World 메시지를 만드는 NET Framework.

수입하다 clr clr.AddReference("시스템.창문들양식")  로부터 시스템.Windows.양식 수입하다 메시지 상자 메시지 상자.("헬로 월드") 

퍼포먼스

파이썬의 기준 구현인 CPython에 비해 IronPython의 성능 특성은 정확한 벤치마크에 따라 달라진다.IronPython은 PyStone 스크립트로 채택된 대부분의 벤치마크에서 CPython보다 성능이 낮지만 다른 벤치마크에서는 더 우수하다.[32]IronPython은 JIT 컴파일러가 있고 Global Intervirator Lock이 없기 때문에 스레드나 다중 코어를 사용하는 Python 프로그램에서 더 좋은 성능을 보일 수 있다.[33][34]

참고 항목

참조

  1. ^ "CodePlex Archive".
  2. ^ "Release 2.7.11". 17 November 2020. Retrieved 8 December 2020.
  3. ^ "Jim Hugunin's blog: IronPython 1.0 released today!". 2006-09-05. Retrieved 2006-12-14.
  4. ^ "Release dates for ironpython". 2008-12-10. Retrieved 2009-01-25.
  5. ^ Clarke, Gavin (2010-10-22). "Microsoft cuts loose Iron languages". The Register. Retrieved 2012-04-05.
  6. ^ "IronPython.net". Retrieved 2013-07-03.
  7. ^ "Python Tools for Visual Studio- Home". Python Tools for Visual Studio. Archived from the original on 2018-01-26. Retrieved 2013-07-03.
  8. ^ "Dynamic Language Runtime Overview". Microsoft. Retrieved 2014-04-01.
  9. ^ "2009-07-02 Marek Safar · mono/Mono@340222f". GitHub.
  10. ^ "2.0.3". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2010-10-16.
  11. ^ "2.6". ironpython.codeplex.com. Archived from the original on 2018-01-13. Retrieved 2010-10-16.
  12. ^ "2.7". ironpython.codeplex.com. Archived from the original on 2018-01-02. Retrieved 2011-03-12.
  13. ^ "2.7.1". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2011-12-30.
  14. ^ "2.7.2.1". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2012-03-24.
  15. ^ "2.7.4". ironpython.codeplex.com. Archived from the original on 2018-01-16. Retrieved 2014-12-07.
  16. ^ "2.7.5". ironpython.codeplex.com. Archived from the original on 2018-01-26. Retrieved 2014-12-07.
  17. ^ "2.7.6". github.com. Retrieved 2016-08-21.
  18. ^ "2.7.7". github.com. Retrieved 2018-01-05.
  19. ^ "2.7.8". github.com. Retrieved 2018-01-05.
  20. ^ "2.7.9". github.com. Retrieved 2018-10-09.
  21. ^ "IronLanguages/ironpython2". GitHub. Retrieved 2020-06-26.
  22. ^ "Differences between IronPython 1.0 and CPython 2.4.3". Microsoft. 2007-12-18. Retrieved 2008-02-09.
  23. ^ Foord, Michael. "New Project: Implementing .NET Libraries in Pure Python". Archived from the original on 2008-08-30. Retrieved 2008-02-09.
  24. ^ Eby, Phillip (15 October 2005). "Children of a Lesser Python". Retrieved 2008-07-09.
  25. ^ "NumPy and SciPy for .NET". Retrieved 2019-04-05.
  26. ^ "Silverlight 5 System Requirements". www.microsoft.com. Retrieved 2019-11-16.
  27. ^ "Write browser applications in Python". IronPython.net. Archived from the original on 2013-03-17.
  28. ^ "Original IronPython homepage". 2004-07-28. Archived from the original on February 23, 2010. Retrieved 2007-05-13.
  29. ^ "Shared Source License for IronPython". 2006-04-28. Retrieved 2007-05-13.
  30. ^ "Microsoft permissive license". 2007-04-28. Retrieved 2007-05-13.
  31. ^ "Using .NET objects from IronPython in Resolver One". Archived from the original on 2009-01-14. Retrieved 2008-11-18.
  32. ^ "IronPython Performance Report". Retrieved 2009-10-05.
  33. ^ "IronPython at python.org". python.org. Retrieved 2011-04-04. IronPython has no GIL and multi-threaded code can use multi core processors.
  34. ^ "Archived copy". Archived from the original on 2015-10-31. Retrieved 2015-07-15.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)

외부 링크