IronPython - IronPython
Эта статья слишком полагается на Рекомендации к основные источники.Январь 2013) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Оригинальный автор (ы) | Джим Хугунин, Microsoft |
---|---|
Разработчики) | Дино Вихланд, .NET Foundation |
изначальный выпуск | 5 сентября 2006 г.[1] |
Стабильный выпуск | 2.7.10 / 27 апреля 2020 г.[2] |
Репозиторий | |
Написано в | C # |
Операционная система | Windows, Linux, macOS |
Платформа | .NET Framework, .NET Core, Мононуклеоз |
Тип | Язык программирования Python выполнение |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | железный питон |
IronPython это реализация Язык программирования Python нацеленный на .NET Framework и Мононуклеоз. Джим Хугунин создал проект и активно участвовал в нем до версии 1.0, выпущенной 5 сентября 2006 года.[3] IronPython 2.0 был выпущен 10 декабря 2008 года.[4] После версии 1.0 он поддерживался небольшой командой в Microsoft до выпуска 2.7 Beta 1. Microsoft отказалась от IronPython (и его родственного проекта IronRuby ) в конце 2010 года, после чего Хугунин ушел работать в Google.[5] В настоящее время проект поддерживается группой волонтеров в г. GitHub. Это бесплатное программное обеспечение с открытым исходным кодом, которое может быть реализовано с помощью Python Tools для Visual Studio, которое является бесплатным расширением с открытым исходным кодом для Microsoft. Visual Studio IDE.[6][7]
IronPython полностью написан на C #, хотя часть его кода автоматически генерируется генератор кода написано на Python.
IronPython реализован поверх Среда выполнения динамического языка (DLR), библиотека, работающая поверх Инфраструктура общего языка который обеспечивает динамическую типизацию и отправку динамических методов, среди прочего, для динамических языков.[8] DLR является частью .NET Framework 4.0, а также является частью Mono, начиная с версии 2.4 2009 года.[9] DLR также можно использовать в качестве библиотеки в более старых реализациях CLI.
Статус и дорожная карта
- Версия 2.0, выпущенная 10 декабря 2008 г. и обновленная до версии 2.0.3 23 октября 2009 г., нацелена на CPython 2.5.[10] IronPython 2.0.3 совместим только с .NET Framework 3.5.
- Версия 2.6, выпущенная 11 декабря 2009 г. и обновленная 12 апреля 2010 г., нацелена на CPython 2.6.[11] Версии 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.[12]
- Версия 2.7.1 была выпущена 21 октября 2011 г. и ориентирована на CPython 2.7.[13]
- Выпуск 2.7.2.1 был выпущен 13 марта 2012 г. Он обеспечивает поддержку Формат файла ZIP библиотеки, SQLite, и скомпилированные исполняемые файлы.[14]
- Релиз 2.7.4 был выпущен 7 сентября 2013 г.[15]
- Выпуск 2.7.5 был выпущен 6 декабря 2014 г. и в основном содержит исправления ошибок.[16]
- Выпуск 2.7.6 был выпущен 21 августа 2016 г. и содержит только исправления ошибок.[17]
- Выпуск 2.7.7 был выпущен 7 декабря 2016 г. и содержит только исправления ошибок.[18]
- Выпуск 2.7.8 был выпущен 16 февраля 2018 г. и состоит из исправлений ошибок, реорганизованного кода и обновленной инфраструктуры тестирования (включая значительное тестирование на Linux под Мононуклеоз ). Это также первый выпуск, поддерживающий .NET Core.[19]
- Релиз 2.7.9 был выпущен 9 октября 2018 г. и состоит из исправлений ошибок и реорганизованного кода. Предполагается, что это будет последний выпуск перед IronPython 3.[2]
- Выпуск 2.7.10 был выпущен 27 апреля 2020 г. и добавляет поддержку .NET Core 3.1.[20]
Отличия от CPython
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Июль 2012 г.) |
Между эталонной реализацией Python CPython и IronPython есть некоторые различия.[21] Известно, что некоторые проекты, созданные на основе IronPython, не работают с CPython.[22] И наоборот, приложения CPython, которые зависят от расширений языка, реализованных на C, несовместимы с IronPython,[23] если они не реализованы в .NET-взаимодействии. Например, NumPy был упакован Microsoft в 2011 году, что позволило запускать код и библиотеки, зависящие от него, непосредственно из .NET Framework.[24]
Silverlight
IronPython поддерживается Silverlight (который не рекомендуется Microsoft и уже потерял поддержку в большинстве веб-браузеров, за исключением Internet Explorer 11, поддержка которого прекратится в октябре 2021 г.[25]). Его можно использовать в качестве скриптового движка в браузере, как и JavaScript двигатель.[26] Скрипты IronPython передаются как простые клиентские скрипты JavaScript в <script>
-теги. Затем также можно изменить встроенный XAML разметка.
Технология, лежащая в основе этого, называется гештальт.[нужна цитата ]
// Скрипт инициализации DLR.<сценарий src="http://gestalt.ironpython.net/dlr-latest.js" тип="текст / javascript"></сценарий>// Клиентский скрипт передан в IronPython и Silverlight.<сценарий тип="текст / питон"> окно.Тревога("Привет из Python")</сценарий>
То же самое работает для IronRuby.
Лицензия
До версии 0.6 IronPython выпускался на условиях Общая общественная лицензия.[27] После приема на работу руководителя проекта в августе 2004 г. IronPython стал доступен как часть Microsoft Общий источник инициатива. Эта лицензия не OSI -утверждено, но авторы утверждают, что он соответствует определению открытого исходного кода.[28] В альфа-версии 2.0 лицензия была изменена на Общественная лицензия Microsoft,[29] одобренные OSI. Последние версии выпускаются в соответствии с условиями Лицензия Apache 2.0.
Расширяемость интерфейса
Одним из ключевых преимуществ IronPython является его функция в качестве уровня расширяемости для платформ приложений, написанных на языке .NET. Относительно просто интегрировать интерпретатор IronPython в существующую платформу приложений .NET. После этого нижележащие разработчики могут использовать сценарии, написанные на IronPython, которые взаимодействуют с объектами .NET в платформе, тем самым расширяя функциональные возможности интерфейса платформы без необходимости изменения какой-либо базы кода платформы.[30]
IronPython широко использует отражение. При передаче ссылки на объект .NET он автоматически импортирует типы и методы, доступные для этого объекта. Это приводит к очень интуитивному опыту работы с объектами .NET из сценария IronPython.
Примеры
Следующий скрипт IronPython управляет объектами .NET Framework. Этот сценарий может быть предоставлен сторонним разработчиком клиентского приложения и передан в серверную структуру через интерфейс. Обратите внимание, что ни интерфейс, ни код на стороне сервера не изменяются для поддержки аналитики, необходимой для клиентского приложения.
из BookService импорт КнигаСловарь книгиWrittenByBookerPrizeПобедители = [книга.Заголовок за книга в КнигаСловарь.GetAllBooks() если «Букеровская премия» в книга.Автор.MajorAwards]
В этом случае предположим, что .NET Framework реализует класс, КнигаСловарь, в модуле с именем BookService, и публикует интерфейс, в котором можно отправлять и выполнять скрипты IronPython.
Этот сценарий при отправке в этот интерфейс будет перебирать весь список книг, поддерживаемых структурой, и выбирать книги, написанные авторами, получившими Букеровскую премию.
Интересно то, что ответственность за написание собственно аналитики лежит на клиентском разработчике. Требования к разработчику на стороне сервера минимальны, по сути, он просто предоставляет доступ к данным, поддерживаемым сервером. Этот шаблон проектирования значительно упрощает развертывание и обслуживание сложных платформ приложений.
Следующий сценарий использует .NET Framework для создания простого сообщения Hello World.
импорт clrclr.AddReference("System.Windows.Forms")из System.Windows.Forms импорт Окно сообщенияОкно сообщения.Показать("Привет, мир")
Спектакль
Характеристики производительности IronPython по сравнению с CPython, эталонная реализация Python, зависит от точного используемого теста. IronPython работает хуже, чем CPython, в большинстве тестов, взятых с PyStone скрипт, но лучше на других тестах.[31]IronPython может лучше работать в программах Python, использующих потоки или несколько ядер, поскольку у него есть JIT компилятор, а также потому, что у него нет Глобальная блокировка переводчика.[32][33]
Смотрите также
- Бу - язык для .NET Framework и Mono с синтаксисом, вдохновленным Python, и функциями, заимствованными из C # и Рубин
- Кобра
- IronScheme
- Jython - реализация Python для Виртуальная машина Java
- Cython
- pypy - интерпретатор на собственном хостинге для языка программирования Python
- Структура Дао
- Незагруженная ласточка - (ныне несуществующая) ветвь CPython, цель которой - обеспечить превосходную производительность с использованием LLVM -основан вовремя компилятор
Рекомендации
- ^ http://ironpython.codeplex.com/releases/view/423
- ^ а б "2.7.9". github.com. Получено 2018-10-09.
- ^ «Блог Джима Хугунина: сегодня выпущен IronPython 1.0!». 2006-09-05. Получено 2006-12-14.
- ^ "Сроки выпуска Ironpython". 2008-12-10. Получено 2009-01-25.
- ^ Кларк, Гэвин (2010-10-22). «Microsoft отсекает железные языки». Реестр. Получено 2012-04-05.
- ^ "IronPython.net". IronPython.net. Получено 2013-07-03.
- ^ «Инструменты Python для Visual Studio - Домашняя страница». Инструменты Python для Visual Studio. Получено 2013-07-03.
- ^ «Обзор динамической среды выполнения». Microsoft. Получено 2014-04-01.
- ^ https://github.com/mono/mono/commit/340222ffe8b958cd22d9eb0388488f326845b363
- ^ "2.0.3". ironpython.codeplex.com. Получено 2010-10-16.
- ^ "2.6". ironpython.codeplex.com. Получено 2010-10-16.
- ^ "2.7". ironpython.codeplex.com. Получено 2011-03-12.
- ^ "2.7.1". ironpython.codeplex.com. Получено 2011-12-30.
- ^ "2.7.2.1". ironpython.codeplex.com. Получено 2012-03-24.
- ^ "2.7.4". ironpython.codeplex.com. Получено 2014-12-07.
- ^ "2.7.5". ironpython.codeplex.com. Получено 2014-12-07.
- ^ "2.7.6". github.com. Получено 2016-08-21.
- ^ "2.7.7". github.com. Получено 2018-01-05.
- ^ "2.7.8". github.com. Получено 2018-01-05.
- ^ "IronLanguages / ironpython2". GitHub. Получено 2020-06-26.
- ^ «Различия между IronPython 1.0 и CPython 2.4.3». Microsoft. 2007-12-18. Получено 2008-02-09.
- ^ Форд, Майкл. «Новый проект: реализация библиотек .NET на чистом Python». Архивировано из оригинал на 2008-08-30. Получено 2008-02-09.
- ^ Эби, Филипп. «Дети малого питона». Получено 2008-07-09.
- ^ «NumPy и SciPy для .NET». Получено 2019-04-05.
- ^ «Системные требования Silverlight 5». www.microsoft.com. Получено 2019-11-16.
- ^ «Написание браузерных приложений на Python». IronPython.net. Архивировано из оригинал 2013-03-17.
- ^ "Оригинальная домашняя страница IronPython". 2004-07-28. Архивировано из оригинал 23 февраля 2010 г.. Получено 2007-05-13.
- ^ «Лицензия с общим исходным кодом для IronPython». 2006-04-28. Получено 2007-05-13.
- ^ «Разрешающая лицензия Microsoft». 2007-04-28. Получено 2007-05-13.
- ^ «Использование объектов .NET из IronPython в Resolver One». Архивировано из оригинал на 2009-01-14. Получено 2008-11-18.
- ^ «Отчет о производительности IronPython». Получено 2009-10-05.
- ^ "IronPython на python.org". python.org. Получено 2011-04-04.
IronPython не имеет GIL, а многопоточный код может использовать многоядерные процессоры.
- ^ «Архивная копия». Архивировано из оригинал на 2015-10-31. Получено 2015-07-15.CS1 maint: заархивированная копия как заголовок (связь)