Jump to content

ЖелезоПитон

ЖелезоПитон
Оригинальный автор(ы) Джим Хугунин , Microsoft
Разработчик(и) Дино Виланд,
Фонд .NET
Первоначальный выпуск 5 сентября 2006 г .; 17 лет назад ( 05.09.2006 ) [1]
Стабильная версия
3.4.1 / 12 июля 2023 г .; 12 месяцев назад ( 12.07.2023 )
Предварительный выпуск
3.4.0-бета1 / 30 апреля 2022 г .; 2 года назад ( 30 апреля 2022 )
Репозиторий
Написано в С#
Операционная система Windows , Linux , MacOS
Платформа .NET Framework , .NET , моно
Тип языка программирования Python Реализация
Лицензия Лицензия Апач 2.0
Веб-сайт железный питон .сеть  Edit this on Wikidata

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

[ редактировать ]

Существуют некоторые различия между эталонной реализацией 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]

См. также

[ редактировать ]
  1. ^ «Архив CodePlex» . Архивировано из оригинала 26 декабря 2017 г. Проверено 30 мая 2014 г.
  2. ^ «IronPython.net» . Проверено 3 июля 2013 г.
  3. ^ «Инструменты Python для Visual Studio — Главная страница» . Инструменты Python для Visual Studio . Архивировано из оригинала 26 января 2018 г. Проверено 3 июля 2013 г.
  4. ^ «Обзор среды выполнения динамического языка» . Майкрософт . Проверено 1 апреля 2014 г.
  5. ^ "2009-07-02 Марек Сафар · mono/Mono@340222f" . Гитхаб .
  6. ^ «Блог Джима Хугунина: сегодня выпущен IronPython 1.0!» . 05 сентября 2006 г. Проверено 14 декабря 2006 г.
  7. ^ «Даты выпуска IronPython» . 10 декабря 2008 г. Проверено 25 января 2009 г.
  8. ^ Кларк, Гэвин (22 октября 2010 г.). «Microsoft освобождает железные языки» . Регистр . Проверено 5 апреля 2012 г.
  9. ^ «2.0.3» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 16 октября 2010 г.
  10. ^ «2,6» . Ironpython.codeplex.com. Архивировано из оригинала 13 января 2018 г. Проверено 16 октября 2010 г.
  11. ^ «2,7» . Ironpython.codeplex.com. Архивировано из оригинала 2 января 2018 г. Проверено 12 марта 2011 г.
  12. ^ «2.7.1» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 30 декабря 2011 г.
  13. ^ «2.7.2.1» . Ironpython.codeplex.com. Архивировано из оригинала 26 декабря 2017 г. Проверено 24 марта 2012 г.
  14. ^ «2.7.4» . Ironpython.codeplex.com. Архивировано из оригинала 16 января 2018 г. Проверено 7 декабря 2014 г.
  15. ^ «2.7.5» . Ironpython.codeplex.com. Архивировано из оригинала 26 января 2018 г. Проверено 7 декабря 2014 г.
  16. ^ «2.7.6» . github.com . Проверено 21 августа 2016 г.
  17. ^ «2.7.7» . github.com . Проверено 05 января 2018 г.
  18. ^ «2.7.8» . github.com . Проверено 05 января 2018 г.
  19. ^ «2.7.9» . github.com . Проверено 9 октября 2018 г.
  20. ^ «IronLanguages/ironpython2» . Гитхаб . Проверено 26 июня 2020 г.
  21. ^ «Релизы · IronLanguages/ironpython2» . Гитхаб . Проверено 08 августа 2022 г.
  22. ^ «Релизы · IronLanguages/ironpython3» . Гитхаб . Проверено 9 июля 2023 г.
  23. ^ «Различия между IronPython 1.0 и CPython 2.4.3» . Майкрософт . 18 декабря 2007 г. Проверено 9 февраля 2008 г.
  24. ^ Фурд, Майкл. «Новый проект: реализация .NET-библиотек на чистом Python» . Архивировано из оригинала 30 августа 2008 г. Проверено 9 февраля 2008 г.
  25. ^ Эби, Филипп (15 октября 2005 г.). «Дети малого питона» . Проверено 9 июля 2008 г.
  26. ^ «NumPy и SciPy для .NET» . Проверено 5 апреля 2019 г.
  27. ^ «Системные требования Silverlight 5» . www.microsoft.com . Проверено 16 ноября 2019 г.
  28. ^ «Написание браузерных приложений на Python» . IronPython.net . Архивировано из оригинала 17 марта 2013 г.
  29. ^ «Исходная домашняя страница IronPython» . 28 июля 2004 г. Архивировано из оригинала 23 февраля 2010 года . Проверено 13 мая 2007 г.
  30. ^ «Лицензия на общий исходный код для IronPython» . 28 апреля 2006 г. Проверено 13 мая 2007 г.
  31. ^ «Разрешительная лицензия Microsoft» . 28 апреля 2007 г. Проверено 13 мая 2007 г.
  32. ^ «Использование объектов .NET из IronPython в Resolver One» . Архивировано из оригинала 14 января 2009 г. Проверено 18 ноября 2008 г.
  33. ^ «Отчет о производительности IronPython» . Архивировано из оригинала 19 января 2013 года . Проверено 5 октября 2009 г.
  34. ^ «IronPython на python.org» . python.org . Проверено 4 апреля 2011 г. IronPython не имеет GIL, и многопоточный код может использовать многоядерные процессоры.
  35. ^ «Самая сложная проблема Python, еще раз» . Архивировано из оригинала 31 октября 2015 г. Проверено 15 июля 2015 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cbe8b1b23687ba425ada4e4baafe0ac9__1713968460
URL1:https://arc.ask3.ru/arc/aa/cb/c9/cbe8b1b23687ba425ada4e4baafe0ac9.html
Заголовок, (Title) документа по адресу, URL1:
IronPython - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)