Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Python бағдарламалау тілінің іске асырылуы
Python programming language implementation
IronPython – NET және Mono фреймворктары үшін жасалған Python бағдарламалау тілінің іске асырылуы. Қазіргі уақытта жоба GitHub-тағы еріктілер тобымен қолдауға алынып келеді. Бұл тегін және ашық кодты бағдарламалық қамтамасыз ету, оны Microsoft Visual Studio IDE-сіне арналған тегін және ашық кодты кеңейтім – Visual Studio үшін Python Tools арқылы іске асыруға болады. IronPython толығымен C# тілінде жазылған, бірақ оның бір бөлігі Python тілінде жазылған кодты генератор арқылы автоматты түрде жасалады. IronPython динамикалық тілдер үшін динамикалық типтеу және динамикалық әдіс шақыру мүмкіндіктерін ұсынатын, ортақ тілдік инфрақұрылымның (Common Language Infrastructure) үстінде жұмыс істейтін Динамикалық тіл орындалу уақытының (DLR) негізінде іске асырылған. DLR NET Framework 4.0 құрамына кіреді және 2009 жылғы 2.4 нұсқасынан бастап Mono құрамына да енген. DLR ескі CLI іске асырылымдарында кітапхана ретінде де қолданылуы мүмкін.
IronPython is an implementation of the Python programming language targeting the NET and Mono frameworks. The project is currently maintained by a group of volunteers at GitHub. It is free and open source software, and can be implemented with Python Tools for Visual Studio, which is a free and open source extension for Microsoft's Visual Studio IDE. IronPython is written entirely in C#, although some of its code is automatically generated by a code generator written in Python. IronPython is implemented on top of the Dynamic Language Runtime (DLR), a library running on top of the Common Language Infrastructure that provides dynamic typing and dynamic method dispatch, among other things, for dynamic languages. The DLR is part of the NET Framework 4.0 and is also a part of Mono since version 2.4 from 2009. The DLR can also be used as a library on older CLI implementations.
Қалыптасу және жол картасы
Джим Хугунин жобаны құрды және оған 2006 жылдың 5 қыркүйегінде шыққан 1.0 нұсқасына дейін белсенді түрде үлес қосты. IronPython 2.0 2008 жылдың 10 желтоқсанында шығарылды. 1.0 нұсқасынан кейін оны 2.7 Бета 1 нұсқасына дейін Microsoft-тың шағын командасы қолдады. Microsoft 2010 жылдың соңында IronPython (және оның бауырлас жобасы IronRuby) жобасын тоқтатты, содан кейін Хугунин Google-да жұмыс істеуге кетті. Қазіргі уақытта жобаны GitHub-тағы еріктілер тобы күзеп қадағалайды. 2.0 нұсқасы 2008 жылдың 10 желтоқсанында шығарылды және 2009 жылдың 23 қазанында 2.0.3 нұсқасы ретінде жаңартылды. IronPython 2.0.3 тек NET Framework 3.5-ке дейін үйлесімді. 2009 жылдың 11 желтоқсанында шығарылған және 2010 жылдың 12 сәуірінде жаңартылған 2.6 нұсқасы CPython 2.6-ға бағытталған. IronPython 2.6.1 нұсқасы тек NET Framework 4.0-пен ғана екілік түрде үйлесімді. IronPython 2.6.1 NET Framework 3.5 жүйесінде жұмыс істеу үшін бастапқы кодтан құрастырылуы керек. 2010 жылдың 21 қазанында шыққан IronPython 2.6.2 NET Framework 4.0 және NET Framework 3.5 жүйелерімен екілік түрде үйлесімді. 2.7 нұсқасы 2011 жылдың 12 наурызында шығарылды және CPython 2.7-ге бағытталған. 2.7.1 нұсқасы 2011 жылдың 21 қазанында шығарылды және CPython 2.7-ге бағытталған. 2.7.2.1 нұсқасы 2012 жылдың 13 наурызында шығарылды. Ол ZIP файл пішіміндегі кітапханаларды, SQLite және компиляцияланған атқарушы файлдарды қолдайды. 2.7.4 нұсқасы 2013 жылдың 7 қыркүйегінде шығарылды. 2.7.5 нұсқасы 2014 жылдың 6 желтоқсанында шығарылды және көбінесе қателерді түзетуден тұрады. 2.7.6 нұсқасы 2016 жылдың 21 тамызында шығарылды және тек қателерді түзетуден тұрады. 2.7.7 нұсқасы 2016 жылдың 7 желтоқсанында шығарылды және тек қателерді түзетуден тұрады. 2.7.8 нұсқасы 2018 жылдың 16 ақпанында шығарылды және қателерді түзету, кодты қайта ұйымдастыру және жаңартылған тесттік инфрақұрылымнан (Linux жүйесінде Mono астында маңызды сынақтарды қоса) тұрады. Бұл NET Core-ді қолдайтын алғашқы нұсқа. 2.7.9 нұсқасы 2018 жылдың 9 қазанында шығарылды және қателерді түзету, қайта ұйымдастырылған кодтан тұрады. Ол IronPython 3-тен бұрынғы соңғы нұсқа болып табылады. 2.7.10 нұсқасы 2020 жылдың 27 сәуірінде шығарылды және NET Core 3.1 қолдауын қосады. 2.7.11 нұсқасы 2020 жылдың 17 қарашасында шығарылды және NET 5 жүйесінде жұмыс істегенде туындаған мәселелерді шешеді. 2.7.12 нұсқасы 2022 жылдың 21 қаңтарында шығарылды және NET 6 мәселелерін шешеді, сондай-ақ NET core 2.1 қолдауын жояды. 3.4.0 нұсқасы 2022 жылдың 12 желтоқсанында шығарылды және Python 3.x-ті қолдайтын алғашқы нұсқа болып табылады.
Jim Hugunin created the project and actively contributed to it up until Version 1.0 which was released on September 5, 2006. IronPython 2.0 was released on December 10, 2008. After version 1.0 it was maintained by a small team at Microsoft until the 2.7 Beta 1 release. Microsoft abandoned IronPython (and its sister project IronRuby) in late 2010, after which Hugunin left to work at Google. The project is currently maintained by a group of volunteers at GitHub. Release 2.0, released on December 10, 2008, and updated as 2.0.3 on October 23, 2009, targets CPython 2.5. IronPython 2.0.3 is only compatible up to NET Framework 3.5. Release 2.6, released on December 11, 2009, and updated on April 12, 2010, targets CPython 2.6. IronPython 2.6.1 versions is binary compatible only with NET Framework 4.0. IronPython 2.6.1 must be compiled from sources to run on NET Framework 3.5. IronPython 2.6.2, released on October 21, 2010, is binary compatible with both NET Framework 4.0 and NET Framework 3.5. Release 2.7 was released on March 12, 2011 and it targets CPython 2.7. Release 2.7.1 was released on October 21, 2011 and it targets CPython 2.7. Release 2.7.2.1 was released on March 13, 2012. It enables support for ZIP file format libraries, SQLite, and compiled executables. Release 2.7.4 was released on September 7, 2013. Release 2.7.5 was released on December 6, 2014 and mostly consists of bug fixes. Release 2.7.6 was released on August 21, 2016 and only consists of bug fixes. Release 2.7.7 was released on December 7, 2016 and only consists of bug fixes. Release 2.7.8 was released on February 16, 2018 and consists of bug fixes, reorganized code, and an updated test infrastructure (including significant testing on Linux under Mono). It is also the first release to support NET Core. Release 2.7.9 was released on October 9, 2018 and consists of bug fixes, reorganized code. It is intended to be the last release before IronPython 3. Release 2.7.10 was released on April 27, 2020 and adds NET Core 3.1 support. Release 2.7.11 was released on November 17, 2020 and resolves issues when running on NET 5. Release 2.7.12 was released on January 21, 2022 and resolves issues with NET 6 and removes support for NET core 2.1
Release 3.4.0 was released on December 12, 2022 and is the first release to support Python 3. x.
CPython-пен айырмашылықтары
Python-ның CPython және IronPython анықтамалық нұсқалары арасында кейбір ерекшеліктер бар. IronPython негізінде құрылған кейбір жобалар CPython-да жұмыс істемейтіні мәлім. Керісінше, C тілінде жасалған тілге қосымшаларға тәуелді CPython қолданбалары, егер олар .NET өзара әрекеттесуі арқылы іске асырылмаса, IronPython-мен үйлесімсіз болады. Мысалы, NumPy 2011 жылы Microsoft компаниясымен интеграцияланды, бұл оған тәуелді кодты және кітапханаларды тікелей .NET Framework-тен іске қосуға мүмкіндік берді.
There are some differences between the Python reference implementation CPython and IronPython. Some projects built on top of IronPython are known not to work under CPython. Conversely, CPython applications that depend on extensions to the language that are implemented in C are not compatible with IronPython
, unless they are implemented in a NET interop. For example, NumPy was wrapped by Microsoft in 2011, allowing code and libraries dependent on it to be run directly from NET Framework.
Лицензия
0.6 нұсқасына дейін IronPython Common Public License талаптары бойынша жарияланды. 2004 жылдың тамызында жоба жетекшісі тағайындалғаннан кейін IronPython Microsoft-тың ортақ код бастамасының бір бөлігі ретінде қолжетімді болды. Бұл лицензия OSI бекітпегенімен, авторлар оның ашық код анықтамасына сай келетінін мәлімдейді. 2.0 альфа нұсқасымен лицензия Microsoft Public License-қа өзгертілді, ол OSI мақұлдаған. Ең соңғы нұсқалары Apache License 2.0 талаптарымен жарияланады.
Until version 0.6, IronPython was released under the terms of Common Public License. Following recruitment of the project lead in August 2004, IronPython was made available as part of Microsoft's Shared Source initiative. This license is not OSI approved but the authors claim it meets the open source definition. With the 2.0 alpha release, the license was changed to the Microsoft Public License, which the OSI has approved. The latest versions are released under the terms of the Apache License 2.0.
Интерфейстің кеңейе алу мүмкіндігі
IronPython-ның басты артықшылықтарының бірі – .NET тілінде жазылған қолданбалық фреймворктерге қосымша мүмкіндіктер беру қабаты ретінде жұмыс істеуі. Қолданыстағы .NET қолданбалық фреймворкке IronPython интерпретаторын енгізу салыстырмалы түрде оңай. Ол орнатылғаннан кейін, бағынышты әзірлеушілер IronPython-да жазылған скрипттерді пайдалана алады, олар фреймворктегі .NET объектілерімен өзара әрекеттеседі, осылайша фреймворктің код базасын өзгертпей-ақ, оның интерфейсіндегі функционалдықты кеңейтеді. IronPython рефлексияны кеңінен пайдаланады. .NET объектісіне сілтеме берілгенде, ол сол объектіге қолжетімді типтер мен әдістерді автоматты түрде импорттайды. Бұл IronPython скрипті ішінде .NET объектілерімен жұмыс істегенде өте түсінікті тәжірибеге алып келеді.
One of IronPython's key advantages is in its function as an extensibility layer to application frameworks written in a NET language. It is relatively simple to integrate an IronPython interpreter into an existing NET application framework. Once in place, downstream developers can use scripts written in IronPython that interact with NET objects in the framework, thereby extending the functionality in the framework's interface, without having to change any of the framework's code base. IronPython makes extensive use of reflection. When passed in a reference to a NET object, it will automatically import the types and methods available to that object. This results in a highly intuitive experience when working with NET objects from within an IronPython script.
Өнер көрсету
Python-ның CPython-мен, Python-ның эталондық нұсқасымен салыстырғанда IronPython-ның жұмысқа қойылу сипаттамалары қолданылған нақты сынаққа байланысты. IronPython PyStone скрипті арқылы алынған көптеген сынақтарда CPython-нан нашар нәтижелер көрсетеді, бірақ басқа сынақтарда жақсырақ өнім береді. IronPython жіптерді немесе көп ядролы жүйені пайдаланатын Python бағдарламаларында артықшылыққа ие болуы мүмкін, себебі ол JIT компиляторымен жабдықталған және Global Interpreter Lock-қа ие емес.
The performance characteristics of IronPython compared to CPython, the reference implementation of Python, depends on the exact benchmark used. IronPython performs worse than CPython on most benchmarks taken with the PyStone script but better on other benchmarks. IronPython may perform better in Python programs that use threads or multiple cores, as it has a JIT compiler, and also because it doesn't have the Global Interpreter Lock.