IronPython

Ironpython
IronPython 3 logo.svg
Ironpython-logo.png
Originalautor (en) Jim Hugunin, Microsoft
Entwickler (en) Dino Viehland,
.NET Foundation
Erstveröffentlichung 5. September 2006; vor 15 Jahren[1]
Stabile Version
2.7.11[2] Edit this on Wikidata / 17. November 2020; Vor 20 Monaten
Vorschau -Version
3.4.0-beta1 / 30. April, 2022; vor 3 Monaten
Repository
Geschrieben in C#
Betriebssystem Fenster, Linux, Mac OS
Plattform .NET Framework, .NETZ, Mono
Typ Python -Programmiersprache Implementierung
Lizenz Apache -Lizenz 2.0
Webseite Ironpython.Netz Edit this on Wikidata

Ironpython ist eine Implementierung der Python -Programmiersprache Targeting auf die .NET Framework und Mono. Jim Hugunin Erstellte das Projekt und trug aktiv dazu bei, bis zu Version 1.0, die am 5. September 2006 veröffentlicht wurde.[3] Ironpython 2.0 wurde am 10. Dezember 2008 veröffentlicht.[4] Nach Version 1.0 wurde es von einem kleinen Team beibehalten Microsoft Bis zur Version von 2.7 Beta 1. Microsoft gab Ironpython (und sein Schwesterprojekt Ironruby) Ende 2010, nach der Hugunin bei Google arbeitete.[5] Das Projekt wird derzeit von einer Gruppe von Freiwilligen beibehalten GitHub. Es ist kostenlose und Open-Source Visual Studio Ide.[6][7]

Ironpython ist vollständig in geschrieben C#, obwohl ein Teil seines Codes automatisch durch a generiert wird Code Generator Geschrieben in Python.

Ironpython wird über dem implementiert Dynamische Sprachlaufzeit (DLR), eine Bibliothek, die über dem läuft Gemeinsame Sprachinfrastruktur Dies bietet unter anderem dynamische Typisierung und dynamische Methode für den Versand für dynamische Sprachen.[8] Der DLR ist Teil des .NET Framework 4.0 und seit Version 2.4 aus dem Jahr 2009 auch Teil von Mono.[9] Der DLR kann auch als Bibliothek für ältere CLI -Implementierungen verwendet werden.

Status und Roadmap

  • Release 2.0, veröffentlicht am 10. Dezember 2008 und am 23. Oktober 2009 als 2.0.3 aktualisiert, zielt auf CPython 2.5 ab.[10] Ironpython 2.0.3 ist nur bis zu .NET Framework 3.5 kompatibel.
  • Release 2.6, veröffentlicht am 11. Dezember 2009 und am 12. April 2010 aktualisiert, zielt auf CPython 2.6 ab.[11] Ironpython 2.6.1 -Versionen sind nur mit .NET Framework 4.0 -kompatibel. Ironpython 2.6.1 muss aus Quellen zusammengestellt werden, um auf .NET Framework 3.5 auszuführen. Ironpython 2.6.2, das am 21. Oktober 2010 veröffentlicht wurde, ist binär kompatibel mit .NET Framework 4.0- und .NET Framework 3.5.
  • Release 2.7 wurde am 12. März 2011 veröffentlicht und zielt auf CPython 2.7 ab.[12]
  • Release 2.7.1 wurde am 21. Oktober 2011 veröffentlicht und zielt auf CPython 2.7 ab.[13]
  • Release 2.7.2.1 wurde am 13. März 2012 veröffentlicht. Es ermöglicht die Unterstützung für ZIP -Dateiformat Bibliotheken, Sqliteund kompilierte ausführbare Säle.[14]
  • Release 2.7.4 wurde am 7. September 2013 veröffentlicht.[15]
  • Release 2.7.5 wurde am 6. Dezember 2014 veröffentlicht und besteht hauptsächlich aus Fehlerbehebungen.[16]
  • Release 2.7.6 wurde am 21. August 2016 veröffentlicht und besteht nur aus Fehlerbehebungen.[17]
  • Release 2.7.7 wurde am 7. Dezember 2016 veröffentlicht und besteht nur aus Fehlerbehebungen.[18]
  • Release 2.7.8 wurde am 16. Februar 2018 veröffentlicht und besteht aus Fehlerbehebungen, neu organisierter Code und einer aktualisierten Testinfrastruktur (einschließlich bedeutender Tests auf Linux unter Mono). Es ist auch die erste Veröffentlichung zur Unterstützung .NET CORE.[19]
  • Release 2.7.9 wurde am 9. Oktober 2018 veröffentlicht und besteht aus Fehlerbehebungen, neu organisierter Code. Es soll die letzte Veröffentlichung vor Ironpython 3 sein.[20]
  • Release 2.7.10 wurde am 27. April 2020 veröffentlicht und fügt .NET Core 3.1 -Unterstützung hinzu.[21]
  • Release 2.7.11 wurde am 17. November 2020 veröffentlicht und löst Probleme beim Laufen auf .Net 5.

Unterschiede mit CPython

Es gibt einige Unterschiede zwischen der Python -Referenz -Implementierung CPython und Ironpython.[22] Einige Projekte, die auf Ironpython basieren, sind bekannt, dass sie unter CPython nicht arbeiten.[23] Umgekehrt sind CPython -Anwendungen, die von Erweiterungen der Sprache abhängen, die in C implementiert sind, nicht mit Ironpython kompatibel.[24] es sei denn, sie werden in einem .NET -Interop implementiert. Zum Beispiel, Numpy wurde 2011 von Microsoft umwickelt, sodass Code und Bibliotheken davon abhängen, direkt von .NET Framework ausgeführt zu werden.[25]

Silberlicht

Ironpython wird auf Silberlicht (Das wird von Microsoft veraltet und hat in den meisten Webbrowsern bereits Unterstützung verloren[26]). Es kann als Skriptmotor im Browser genauso verwendet werden JavaScript Motor.[27] Ironpython-Skripte werden wie einfache clientseitige JavaScript-Skripte in übergeben -Stichworte. Es ist dann auch möglich, eingebettet zu ändern Xaml Markup.

Die Technologie dahinter heißt Gestalt.

// DLR -Initialisierungsskript.<Skript src="http://gestalt.ironpython.net/dlr-latest.js" Typ="Text/JavaScript"> </Skript> // clientseitiges Skript, das an Ironpython und Silverlight übergeben wurde.<Skript Typ="Text/Python">  Fenster.Alarm("Hallo aus Python") Skript> 

Das gleiche funktioniert für Ironruby.

Lizenz

Bis Version 0.6 wurde Ironpython unter den Bedingungen von veröffentlicht Gemeinsame öffentliche Lizenz.[28] Nach der Einstellung des Projektleiters im August 2004 wurde Ironpython im Rahmen von Microsoft's zur Verfügung gestellt Gemeinsame Quelle Initiative. Diese Lizenz ist nicht Osi-Genehmigt, aber die Autoren behaupten, sie erfüllt die Open-Source-Definition.[29] Mit der Veröffentlichung von 2.0 Alpha wurde die Lizenz in die geändert Microsoft Public Lizenz,[30] was die OSI genehmigt hat. Die neuesten Versionen werden unter den Bestimmungen der veröffentlicht Apache -Lizenz 2.0.

Schnittstellenerweiterbarkeit

Einer der wichtigsten Vorteile von Ironpython liegt in seiner Funktion als Erweiterbarkeitsschicht für Anwendungsrahmenbedingungen in einer .NET -Sprache. Es ist relativ einfach, einen Ironpython -Dolmetscher in ein vorhandenes .NET -Anwendungsframework zu integrieren. Sobald nachgelassene Entwickler in Ironpython geschrieben sind, die mit .NET -Objekten im Framework interagieren, können Sie Skripte verwenden, um die Funktionalität in der Schnittstelle des Frameworks zu erweitern, ohne die Codebasis des Frameworks ändern zu müssen.[31]

Ironpython nutzt umfassend von Betrachtung. Wenn es in einem Verweis auf ein .NET -Objekt übergeben wird, importiert es automatisch die für dieses Objekt verfügbaren Typen und Methoden. Dies führt zu einer sehr intuitiven Erfahrung bei der Arbeit mit .NET -Objekten aus einem Ironpython -Skript.

Beispiele

Das folgende Ironpython -Skript manipuliert .NET Framework -Objekte. Dieses Skript kann von einem Client-Seite-Anwendungsentwickler von Drittanbietern geliefert und über eine Schnittstelle in das serverseitige Framework übergeben werden. Beachten Sie, dass weder die Schnittstelle noch der serverseitige Code geändert werden, um die von der Clientanwendung erforderlichen Analysen zu unterstützen.

aus Bookservice importieren Buchhandlung   BookswrittenByBookerPrizeWinners = [Buchen.Titel zum Buchen in Buchhandlung.Getallbooks()   wenn "Booker -Preis" in Buchen.Autor.Majorawards] 

Angenommen, das .NET -Framework implementiert eine Klasse. Buchhandlung, in einem Modul genannt Bookserviceund veröffentlicht eine Schnittstelle, in die Ironpython -Skripte gesendet und ausgeführt werden können.

Dieses Skript wird, wenn er an diese Schnittstelle gesendet wird, die gesamte Liste der Bücher, die vom Framework geführt werden, iterieren und die von den Booker-Preis ausgezeichneten Autoren ausgewählt haben.

Interessant ist, dass die Verantwortung für das Schreiben der tatsächlichen Analysen beim Kunden-Seiten-Entwickler liegt. Die Anforderungen des Server-Seiten-Entwicklers sind minimal und bieten im Wesentlichen nur Zugriff auf die vom Server verwalteten Daten. Dieses Designmuster vereinfacht die Bereitstellung und Wartung komplexer Anwendungsrahmen erheblich.

Das folgende Skript verwendet das .NET -Framework, um eine einfache Hello World -Nachricht zu erstellen.

importieren CLR CLR.Füge Referenz hinzu("System.Windows.forms") aus System.Windows.forms importieren Nachrichtenbox Nachrichtenbox.Zeigen("Hallo Welt") 

Leistung

Die Leistungsmerkmale von Ironpython im Vergleich zu CpythonDie Referenzimplementierung von Python hängt von dem genauen Benchmark ab. Ironpython spielt bei den meisten Benchmarks, die mit dem genommen wurden Pystone Skript aber besser auf anderen Benchmarks.[32] Ironpython kann in Python -Programmen, die Fäden oder mehrere Kerne verwenden, besser abschneiden, da es a hat Jit Compiler und auch, weil es das nicht hat Global Interpreter Lock.[33][34]

Siehe auch

Verweise

  1. ^ "Codeplex -Archiv".
  2. ^ "Release 2.7.11". 17. November 2020. Abgerufen 8. Dezember 2020.
  3. ^ "Jim Hugunins Blog: Ironpython 1.0 heute veröffentlicht!". 2006-09-05. Abgerufen 2006-12-14.
  4. ^ "Veröffentlichungsdaten für Ironpython". 2008-12-10. Abgerufen 2009-01-25.
  5. ^ Clarke, Gavin (2010-10-22). "Microsoft schneidet lose Eisensprachen". Das Register. Abgerufen 2012-04-05.
  6. ^ "Ironpython.net". Abgerufen 2013-07-03.
  7. ^ "Python-Tools für Visual Studio-Home". Python -Tools für Visual Studio. Archiviert von das Original Am 2018-01-26. Abgerufen 2013-07-03.
  8. ^ "Dynamische Sprachlaufübersicht". Microsoft. Abgerufen 2014-04-01.
  9. ^ "2009-07-02 Marek Safar · Mono/Mono@340222f". GitHub.
  10. ^ "2.0.3". ironpython.codeplex.com. Archiviert von das Original Am 2017-12-26. Abgerufen 2010-10-16.
  11. ^ "2.6". ironpython.codeplex.com. Archiviert von das Original 2018-01-13. Abgerufen 2010-10-16.
  12. ^ "2.7". ironpython.codeplex.com. Archiviert von das Original Am 2018-01-02. Abgerufen 2011-03-12.
  13. ^ "2.7.1". ironpython.codeplex.com. Archiviert von das Original Am 2017-12-26. Abgerufen 2011-12-30.
  14. ^ "2.7.2.1". ironpython.codeplex.com. Archiviert von das Original Am 2017-12-26. Abgerufen 2012-03-24.
  15. ^ "2.7.4". ironpython.codeplex.com. Archiviert von das Original Am 2018-01-16. Abgerufen 2014-12-07.
  16. ^ "2.7.5". ironpython.codeplex.com. Archiviert von das Original Am 2018-01-26. Abgerufen 2014-12-07.
  17. ^ "2.7.6". github.com. Abgerufen 2016-08-21.
  18. ^ "2.7.7". github.com. Abgerufen 2018-01-05.
  19. ^ "2.7.8". github.com. Abgerufen 2018-01-05.
  20. ^ "2.7.9". github.com. Abgerufen 2018-10-09.
  21. ^ "IronLanguages/Ironpython2". GitHub. Abgerufen 2020-06-26.
  22. ^ "Unterschiede zwischen Ironpython 1.0 und CPython 2.4.3". Microsoft. 2007-12-18. Abgerufen 2008-02-09.
  23. ^ Foord, Michael. "Neues Projekt: Implementieren von .NET -Bibliotheken in reinem Python". Archiviert von das Original am 2008-08-30. Abgerufen 2008-02-09.
  24. ^ EBY, Phillip (15. Oktober 2005). "Kinder einer geringeren Python". Abgerufen 2008-07-09.
  25. ^ "Numpy und Scipy für .net". Abgerufen 2019-04-05.
  26. ^ "Silverlight 5 Systemanforderungen". www.microsoft.com. Abgerufen 2019-11-16.
  27. ^ "Browseranwendungen in Python schreiben". Ironpython.net. Archiviert von das Original 2013-03-17.
  28. ^ "Original Ironpython Homepage". 2004-07-28. Archiviert von das Original am 23. Februar 2010. Abgerufen 2007-05-13.
  29. ^ "Gemeinsame Quelllizenz für Ironpython". 2006-04-28. Abgerufen 2007-05-13.
  30. ^ "Microsoft Licensive Lizenz". 2007-04-28. Abgerufen 2007-05-13.
  31. ^ "Verwenden von .NET -Objekten von Ironpython in Resolver One". Archiviert von das Original am 2009-01-14. Abgerufen 2008-11-18.
  32. ^ "Ironpython Performance Report". Abgerufen 2009-10-05.
  33. ^ "Ironpython auf Python.org". python.org. Abgerufen 2011-04-04. Ironpython hat keinen GIL- und Multi-Thread-Code kann Multi-Core-Prozessoren verwenden.
  34. ^ "Archivierte Kopie". Archiviert von das Original Am 2015-10-31. Abgerufen 2015-07-15.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)

Externe Links