ЖелезоПитон
![]() ![]() | |
Оригинальный автор(ы) | Джим Хугунин , Microsoft |
---|---|
Разработчик(и) | Дино Виланд, Фонд .NET |
Первоначальный выпуск | 5 сентября 2006 г [1] |
Стабильная версия | 3.4.1
/ 12 июля 2023 г |
Предварительный выпуск | 3.4.0-бета1
/ 30 апреля 2022 г |
Репозиторий | |
Написано в | С# |
Операционная система | Windows , Linux , MacOS |
Платформа | .NET Framework , .NET , моно |
Тип | языка программирования Python Реализация |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | железный питон ![]() |
IronPython — это реализация языка программирования Python, предназначенная для платформ .NET и Mono . В настоящее время проект поддерживается группой волонтеров на GitHub . Это бесплатное программное обеспечение с открытым исходным кодом, которое можно реализовать с помощью инструментов Python для Visual Studio, которые представляют собой бесплатное расширение с открытым исходным кодом для Microsoft Visual Studio IDE. [2] [3]
IronPython полностью написан на C# , хотя часть его кода автоматически генерируется генератором кода, написанным на Python.
IronPython реализован поверх Dynamic Language Runtime (DLR), библиотеки, работающей поверх Common Language Infrastructure , которая обеспечивает динамическую типизацию и динамическую отправку методов, среди прочего, для динамических языков. [4] DLR является частью .NET Framework 4.0, а также частью Mono, начиная с версии 2.4 с 2009 года. [5] DLR также можно использовать в качестве библиотеки в старых реализациях CLI.
Статус и дорожная карта
[ редактировать ]Джим Хугунин создал проект и активно участвовал в нем вплоть до версии 1.0, выпущенной 5 сентября 2006 года. [6] IronPython 2.0 был выпущен 10 декабря 2008 года. [7] После версии 1.0 ее поддерживала небольшая команда Microsoft до выпуска 2.7 Beta 1. Microsoft отказалась от IronPython (и родственного ему проекта IronRuby ) в конце 2010 года, после чего Хугунин ушел работать в Google. [8] В настоящее время проект поддерживается группой волонтеров на GitHub .
- Версия 2.0, выпущенная 10 декабря 2008 г. и обновленная до версии 2.0.3 23 октября 2009 г., ориентирована на CPython 2.5. [9] IronPython 2.0.3 совместим только с .NET Framework 3.5.
- Версия 2.6, выпущенная 11 декабря 2009 г. и обновленная 12 апреля 2010 г., ориентирована на CPython 2.6. [10] Версии IronPython 2.6.1 двоично совместимы только с .NET Framework 4.0. IronPython 2.6.1 необходимо скомпилировать из исходных кодов для работы на .NET Framework 3.5. IronPython 2.6.2, выпущенный 21 октября 2010 г., совместим на двоичном уровне как с .NET Framework 4.0, так и с .NET Framework 3.5.
- Версия 2.7 была выпущена 12 марта 2011 г. и предназначена для CPython 2.7. [11]
- Версия 2.7.1 была выпущена 21 октября 2011 г. и предназначена для CPython 2.7. [12]
- Версия 2.7.2.1 была выпущена 13 марта 2012 года. Она обеспечивает поддержку библиотек формата файлов ZIP , SQLite и скомпилированных исполняемых файлов. [13]
- Версия 2.7.4 была выпущена 7 сентября 2013 г. [14]
- Версия 2.7.5 была выпущена 6 декабря 2014 г. и в основном содержит исправления ошибок. [15]
- Версия 2.7.6 была выпущена 21 августа 2016 г. и содержит только исправления ошибок. [16]
- Версия 2.7.7 была выпущена 7 декабря 2016 г. и содержит только исправления ошибок. [17]
- Релиз 2.7.8 был выпущен 16 февраля 2018 года и содержит исправления ошибок, реорганизованный код и обновленную инфраструктуру тестирования (включая значительное тестирование на Linux под Mono ). Это также первый выпуск с поддержкой .NET Core . [18]
- Релиз 2.7.9 вышел 9 октября 2018 г. и содержит исправления ошибок и реорганизованный код. Предполагается, что это будет последний выпуск перед IronPython 3. [19]
- Версия 2.7.10 была выпущена 27 апреля 2020 г. и в нее добавлена поддержка .NET Core 3.1. [20]
- Выпуск 2.7.11 был выпущен 17 ноября 2020 г. и устраняет проблемы при работе в .NET 5 .
- Версия 2.7.12 была выпущена 21 января 2022 г. и устраняет проблемы с .NET 6 и удаляет поддержку .NET Core 2.1. [21]
- Версия 3.4.0 была выпущена 12 декабря 2022 г. и является первой версией с поддержкой Python 3.x. [22]
Различия с CPython
[ редактировать ]![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( июль 2012 г. ) |
Существуют некоторые различия между эталонной реализацией Python CPython и IronPython. [23] Известно, что некоторые проекты, созданные на базе IronPython, не работают под CPython. [24] И наоборот, приложения CPython, которые зависят от расширений языка, реализованных на C, несовместимы с IronPython. , [25] если они не реализованы во взаимодействии .NET. Например, NumPy был обернут Microsoft в 2011 году, что позволило запускать код и зависимые от него библиотеки непосредственно из .NET Framework. [26]
Сильверлайт
[ редактировать ]IronPython поддерживается в Silverlight (который устарел Microsoft и уже потерял поддержку в большинстве веб-браузеров). [27] ). Его можно использовать в качестве механизма сценариев в браузере, как и движок JavaScript . [28] Сценарии IronPython передаются как простые клиентские сценарии JavaScript в <script>
-теги. Затем также можно изменить встроенную разметку XAML .
Технология, лежащая в основе этого, называется гештальт. [ нужна ссылка ]
// DLR initialization script.
<script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/javascript"></script>
// Client-side script passed to IronPython and Silverlight.
<script type="text/python">
window.Alert("Hello from Python")
</script>
То же самое работает и с IronRuby .
Лицензия
[ редактировать ]До версии 0.6 IronPython выпускался на условиях Common Public License . [29] После найма руководителя проекта в августе 2004 года IronPython стал доступен в рамках Microsoft Shared Source инициативы . Эта лицензия не одобрена OSI , но авторы утверждают, что она соответствует определению открытого исходного кода. [30] В альфа-версии 2.0 лицензия была изменена на Microsoft Public License . [31] который OSI одобрил. Последние версии выпускаются на условиях лицензии Apache 2.0 .
Расширяемость интерфейса
[ редактировать ]Одним из ключевых преимуществ IronPython является его функция уровня расширения для платформ приложений, написанных на языке .NET. Относительно просто интегрировать интерпретатор IronPython в существующую среду приложений .NET. После внедрения последующие разработчики могут использовать сценарии, написанные на IronPython, которые взаимодействуют с объектами .NET в платформе, тем самым расширяя функциональность интерфейса платформы без необходимости изменения какой-либо базы кода платформы. [32]
IronPython широко использует отражение . При передаче ссылки на объект .NET она автоматически импортирует типы и методы, доступные для этого объекта. Это обеспечивает интуитивно понятный интерфейс работы с объектами .NET из сценария IronPython.
Примеры
[ редактировать ]Следующий сценарий IronPython управляет объектами .NET Framework. Этот сценарий может быть предоставлен сторонним разработчиком клиентского приложения и передан в серверную среду через интерфейс. Обратите внимание, что ни интерфейс, ни серверный код не модифицируются для поддержки аналитики, необходимой клиентскому приложению.
from BookService import BookDictionary
booksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks()
if "Booker Prize" in book.Author.MajorAwards]
В этом случае предположим, что .NET Framework реализует класс BookDictionary в модуле BookService и публикует интерфейс, в который можно отправлять и выполнять сценарии IronPython.
Этот сценарий, отправленный в этот интерфейс, будет перебирать весь список книг, поддерживаемых платформой, и выбирать книги, написанные авторами, лауреатами Букеровской премии.
Что интересно, ответственность за написание фактической аналитики лежит на разработчике клиентской части. Требования к разработчику серверной части минимальны: по сути, он просто обеспечивает доступ к данным, поддерживаемым сервером. Этот шаблон проектирования значительно упрощает развертывание и обслуживание сложных платформ приложений.
Следующий сценарий использует .NET Framework для создания простого сообщения Hello World.
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World")
Производительность
[ редактировать ]Характеристики производительности IronPython по сравнению с CPython , эталонной реализацией Python, зависят от конкретного используемого теста. IronPython работает хуже, чем CPython, в большинстве тестов, выполненных с помощью сценария PyStone , но лучше в других тестах. [33] IronPython может работать лучше в программах Python, использующих потоки или несколько ядер, поскольку у него есть JIT- компилятор, а также потому, что у него нет Global Interpreter Lock . [34] [35]
См. также
[ редактировать ]- Boo — язык для .NET Framework и Mono с синтаксисом, вдохновленным Python, и функциями, заимствованными из C# и Ruby.
- Кобра
- Железная схема
- Jython — реализация Python для виртуальной машины Java.
- Китон
- PyPy — автономный интерпретатор языка программирования Python.
- Человеческая структура
- Unladen Swallow - (ныне несуществующая) ветвь CPython, целью которой было обеспечение превосходной производительности с использованием LLVM. на основе JIT- компилятора
Ссылки
[ редактировать ]- ^ «Архив CodePlex» . Архивировано из оригинала 26 декабря 2017 г. Проверено 30 мая 2014 г.
- ^ «IronPython.net» . Проверено 3 июля 2013 г.
- ^ «Инструменты Python для Visual Studio — Главная страница» . Инструменты Python для Visual Studio . Архивировано из оригинала 26 января 2018 г. Проверено 3 июля 2013 г.
- ^ «Обзор среды выполнения динамического языка» . Майкрософт . Проверено 1 апреля 2014 г.
- ^ "2009-07-02 Марек Сафар · mono/Mono@340222f" . Гитхаб .
- ^ «Блог Джима Хугунина: сегодня выпущен IronPython 1.0!» . 05 сентября 2006 г. Проверено 14 декабря 2006 г.
- ^ «Даты выпуска IronPython» . 10 декабря 2008 г. Проверено 25 января 2009 г.
- ^ Кларк, Гэвин (22 октября 2010 г.). «Microsoft освобождает железные языки» . Регистр . Проверено 5 апреля 2012 г.
- ^ «2.0.3» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 16 октября 2010 г.
- ^ «2,6» . Ironpython.codeplex.com. Архивировано из оригинала 13 января 2018 г. Проверено 16 октября 2010 г.
- ^ «2,7» . Ironpython.codeplex.com. Архивировано из оригинала 2 января 2018 г. Проверено 12 марта 2011 г.
- ^ «2.7.1» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 30 декабря 2011 г.
- ^ «2.7.2.1» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 24 марта 2012 г.
- ^ «2.7.4» . Ironpython.codeplex.com. Архивировано из оригинала 16 января 2018 г. Проверено 7 декабря 2014 г.
- ^ «2.7.5» . Ironpython.codeplex.com. Архивировано из оригинала 26 января 2018 г. Проверено 7 декабря 2014 г.
- ^ «2.7.6» . github.com . Проверено 21 августа 2016 г.
- ^ «2.7.7» . github.com . Проверено 05 января 2018 г.
- ^ «2.7.8» . github.com . Проверено 05 января 2018 г.
- ^ «2.7.9» . github.com . Проверено 9 октября 2018 г.
- ^ «IronLanguages/ironpython2» . Гитхаб . Проверено 26 июня 2020 г.
- ^ «Релизы · IronLanguages/ironpython2» . Гитхаб . Проверено 08 августа 2022 г.
- ^ «Релизы · IronLanguages/ironpython3» . Гитхаб . Проверено 9 июля 2023 г.
- ^ «Различия между IronPython 1.0 и CPython 2.4.3» . Майкрософт . 18 декабря 2007 г. Проверено 9 февраля 2008 г.
- ^ Фурд, Майкл. «Новый проект: реализация .NET-библиотек на чистом Python» . Архивировано из оригинала 30 августа 2008 г. Проверено 9 февраля 2008 г.
- ^ Эби, Филипп (15 октября 2005 г.). «Дети малого питона» . Проверено 9 июля 2008 г.
- ^ «NumPy и SciPy для .NET» . Проверено 5 апреля 2019 г.
- ^ «Системные требования Silverlight 5» . www.microsoft.com . Проверено 16 ноября 2019 г.
- ^ «Написание браузерных приложений на Python» . IronPython.net . Архивировано из оригинала 17 марта 2013 г.
- ^ «Исходная домашняя страница IronPython» . 28 июля 2004 г. Архивировано из оригинала 23 февраля 2010 года . Проверено 13 мая 2007 г.
- ^ «Лицензия на общий исходный код для IronPython» . 28 апреля 2006 г. Проверено 13 мая 2007 г.
- ^ «Разрешительная лицензия Microsoft» . 28 апреля 2007 г. Проверено 13 мая 2007 г.
- ^ «Использование объектов .NET из IronPython в Resolver One» . Архивировано из оригинала 14 января 2009 г. Проверено 18 ноября 2008 г.
- ^ «Отчет о производительности IronPython» . Архивировано из оригинала 19 января 2013 года . Проверено 5 октября 2009 г.
- ^ «IronPython на python.org» . python.org . Проверено 4 апреля 2011 г.
IronPython не имеет GIL, и многопоточный код может использовать многоядерные процессоры.
- ^ «Самая сложная проблема Python, еще раз» . Архивировано из оригинала 31 октября 2015 г. Проверено 15 июля 2015 г.
Внешние ссылки
[ редактировать ]- Языки программирования .NET
- Бесплатное программное обеспечение, написанное на C Sharp.
- бесплатное программное обеспечение Майкрософт
- Языки программирования Майкрософт
- Реализации Python (языка программирования)
- Библиотеки Python (языка программирования)
- Программное обеспечение, использующее лицензию Apache
- программное обеспечение 2006 года