Кіріспе

Python бағдарламалау тілінің іске асырылуы

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 іске асырылымдарында кітапхана ретінде де қолданылуы мүмкін.

Қалыптасу және жол картасы

Джим Хугунин жобаны құрды және оған 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-ті қолдайтын алғашқы нұсқа болып табылады.

CPython-пен айырмашылықтары

Python-ның CPython және IronPython анықтамалық нұсқалары арасында кейбір ерекшеліктер бар. IronPython негізінде құрылған кейбір жобалар CPython-да жұмыс істемейтіні мәлім. Керісінше, C тілінде жасалған тілге қосымшаларға тәуелді CPython қолданбалары, егер олар .NET өзара әрекеттесуі арқылы іске асырылмаса, IronPython-мен үйлесімсіз болады. Мысалы, NumPy 2011 жылы Microsoft компаниясымен интеграцияланды, бұл оған тәуелді кодты және кітапханаларды тікелей .NET Framework-тен іске қосуға мүмкіндік берді.

Лицензия

0.6 нұсқасына дейін IronPython Common Public License талаптары бойынша жарияланды. 2004 жылдың тамызында жоба жетекшісі тағайындалғаннан кейін IronPython Microsoft-тың ортақ код бастамасының бір бөлігі ретінде қолжетімді болды. Бұл лицензия OSI бекітпегенімен, авторлар оның ашық код анықтамасына сай келетінін мәлімдейді. 2.0 альфа нұсқасымен лицензия Microsoft Public License-қа өзгертілді, ол OSI мақұлдаған. Ең соңғы нұсқалары Apache License 2.0 талаптарымен жарияланады.

Интерфейстің кеңейе алу мүмкіндігі

IronPython-ның басты артықшылықтарының бірі – .NET тілінде жазылған қолданбалық фреймворктерге қосымша мүмкіндіктер беру қабаты ретінде жұмыс істеуі. Қолданыстағы .NET қолданбалық фреймворкке IronPython интерпретаторын енгізу салыстырмалы түрде оңай. Ол орнатылғаннан кейін, бағынышты әзірлеушілер IronPython-да жазылған скрипттерді пайдалана алады, олар фреймворктегі .NET объектілерімен өзара әрекеттеседі, осылайша фреймворктің код базасын өзгертпей-ақ, оның интерфейсіндегі функционалдықты кеңейтеді. IronPython рефлексияны кеңінен пайдаланады. .NET объектісіне сілтеме берілгенде, ол сол объектіге қолжетімді типтер мен әдістерді автоматты түрде импорттайды. Бұл IronPython скрипті ішінде .NET объектілерімен жұмыс істегенде өте түсінікті тәжірибеге алып келеді.

Өнер көрсету

Python-ның CPython-мен, Python-ның эталондық нұсқасымен салыстырғанда IronPython-ның жұмысқа қойылу сипаттамалары қолданылған нақты сынаққа байланысты. IronPython PyStone скрипті арқылы алынған көптеген сынақтарда CPython-нан нашар нәтижелер көрсетеді, бірақ басқа сынақтарда жақсырақ өнім береді. IronPython жіптерді немесе көп ядролы жүйені пайдаланатын Python бағдарламаларында артықшылыққа ие болуы мүмкін, себебі ол JIT компиляторымен жабдықталған және Global Interpreter Lock-қа ие емес.