<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Cython</id>
	<title>Cython - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Cython"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Cython&amp;action=history"/>
	<updated>2026-05-18T19:18:34Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Cython&amp;diff=1985406&amp;oldid=prev</id>
		<title>imported&gt;Fagineus: /* Entwicklungsgeschichte */ Pyrex seit 2010 tot, es wird wohl keinen Artikel geben</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Cython&amp;diff=1985406&amp;oldid=prev"/>
		<updated>2025-12-13T22:14:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Entwicklungsgeschichte: &lt;/span&gt; Pyrex seit 2010 tot, es wird wohl keinen Artikel geben&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Programmiersprache&lt;br /&gt;
|Name =&lt;br /&gt;
|Logo = &lt;br /&gt;
|Paradigma = multiparadigmatisch&lt;br /&gt;
|Erscheinungsjahr = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|Entwickler = Robert Bradshaw, Stefan Behnel et al.&lt;br /&gt;
|AktuelleVersion = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|Typisierung = [[Starke Typisierung|stark]], [[Statische Typisierung|statisch]], [[Dynamische Typisierung|dynamisch]] („[[Duck-Typing]]“)&lt;br /&gt;
|Beeinflusst_von = [[Python (Programmiersprache)|Python]], [[C (Programmiersprache)|C]], [[C++]]&lt;br /&gt;
|Website = [http://cython.org/ cython.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cython&amp;#039;&amp;#039;&amp;#039; ist eine universelle [[Höhere Programmiersprache|Programmiersprache]], die weitgehend mit [[Python (Programmiersprache)|Python]] kompatibel ist. Wie diese unterstützt sie verschiedene [[Programmierparadigma|Programmierparadigmen]] wie [[Objektorientierte Programmierung|objektorientierte]], [[Aspektorientierte Programmierung|aspektorientierte]] und [[Funktionale Programmierung|funktionale]] Programmierung. Der Hauptvorteil liegt jedoch in der Übersetzung in die Zielsprache C, was sowohl eine hohe [[Rechenleistung|Performance]] im Vergleich zum [[CPython|Standard-Python-Interpreter]] erlaubt, als auch eine direkte Interaktion mit externem Code ermöglicht, der in C, C++ oder [[Fortran]] geschrieben ist.&lt;br /&gt;
&lt;br /&gt;
Haupteinsatzgebiete sind die [[Wrapper (Software)|Anbindung]] von externen [[Programmbibliothek|Bibliotheken]] an den [[CPython]]-[[Interpreter]], sowie die Beschleunigung von Python-Code. Der Cython-[[Compiler]] kann auch zur Kompilierung reiner Python-Module verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Der generierte Code ist nicht autark, sondern benötigt eine CPython-kompatible [[Laufzeitumgebung]]. Dabei wird sowohl die Generierung von Binärmodulen („Extension-Modul“) unterstützt, die dynamisch über den &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;-Befehl in den Python-Interpreter geladen werden können, als auch die Linker-Integration des CPython-Interpreters in das generierte Modul, so dass ein ausführbares Programm entsteht (&amp;#039;&amp;#039;Embedding&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsgeschichte ==&lt;br /&gt;
Cython basiert auf Pyrex von Greg Ewing (Erstveröffentlichung am 4.&amp;amp;nbsp;April 2002&amp;lt;ref&amp;gt;[http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/ ursprüngliche Versionen des Vorgängers Pyrex]&amp;lt;/ref&amp;gt;). Im Juli 2007 wurde der Cython-Compiler durch Robert Bradshaw und Stefan Behnel als eigenständiges, offen entwickeltes Projekt von Pyrex abgespalten. Seither wurde versucht, die beiden Compiler weitgehend kompatibel zu halten, wobei jedoch Cython wesentlich weiterreichende Optimierungen anwendet und eine höhere Kompatibilität mit Python-Code erreicht. Wichtige Unterschiede zu Pyrex sind in der Cython-Dokumentation beschrieben.&lt;br /&gt;
&lt;br /&gt;
== Namensherkunft ==&lt;br /&gt;
Der Name &amp;#039;&amp;#039;&amp;#039;Cython&amp;#039;&amp;#039;&amp;#039; ist ein [[Kofferwort]] der beiden zugrunde liegenden Programmiersprachen: Python und C.&lt;br /&gt;
&lt;br /&gt;
== Ziele ==&lt;br /&gt;
Das Cython-Projekt hat sich zum Ziel gesetzt, einen Compiler für normalen Python-Code zu entwickeln,&amp;lt;ref&amp;gt;{{Webarchiv|text=Kompatibilität zu Python 2 ist erklärtes Ziel für die zukünftige Cython-Version 1.0 |url=http://wiki.cython.org/FAQ |wayback=20110810144810 }}. Abgerufen am 1.&amp;amp;nbsp;April 2024.&amp;lt;/ref&amp;gt; der durch zusätzliche (explizite) statische Typisierung eine möglichst hohe Performance und eine weitreichende Integration mit Code bietet, der in C, C++ und Fortran geschrieben ist.&lt;br /&gt;
&lt;br /&gt;
Cython ist ein optimierender Compiler, jedoch nicht im gängigen Sinne eines Compilers, der [[Binärcode]] erzeugt. Vielmehr erlaubt es die Übersetzung in C-Code, viele grundlegende [[Compiler#Programmoptimierung (ausführlich)|Optimierungen und Plattform-Anpassungen]] einem C-Compiler zu überlassen. So kann sich der Cython-Compiler selbst auf High-Level-Optimierungen auf [[Abstract Syntax Tree|AST]]-Ebene beschränken.&lt;br /&gt;
&lt;br /&gt;
Der C-Code, den Cython generiert, ist weitgehend portabel bezüglich Plattformen ([[Prozessor]], C-Compiler und [[Betriebssystem]]) und CPython-Versionen. Aktuell (Version 0.28.5) werden die CPython-Versionen 2.6 und 2.7 sowie alle von 3.3 an unterstützt. Getestete Plattformen sind unter anderem [[macOS]], [[Microsoft Windows|Windows]] und vor allem verschiedene [[Linux-Distribution]]en, mit [[32-Bit-Architektur|32-Bit]]- und [[64-Bit-Architektur|64-Bit]]-Systemversionen.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Die Kombination von Python und C erlaubt Cython ein sehr breites Anforderungsspektrum abzubilden. Möglich ist sowohl High-Level-Programmierung mit Python-Datentypen, -Sprachkonstrukten und automatischer Speicherverwaltung, als auch eine sehr C-nahe Programmierung mit C-Datentypen, C-Funktionen und manueller Speicherverwaltung. Beides kann beliebig kombiniert werden und die Interaktion mit reinem (unkompilierten) Python-Code ist ebenso nativ möglich wie die Interaktion mit C- oder C++-Code, was bei der Optimierung von Cython-Code ein sehr feingranulares Vorgehen ermöglicht. Beliebige Teile des Codes können in reinem Python geschrieben, mit Cython kompiliert, mit statischen Datentypen optimiert oder sogar nach C portiert werden, je nach Anforderung. Dadurch unterstützt Cython sehr gut das Prinzip, dass der größte Teil der Laufzeit eines Programms in einem sehr kleinen Teil des [[Quelltext]]es entsteht, also die Optimierung eines kleinen Programmteils einen sehr großen Performancegewinn bringen kann, während bei dem größten Teil des Codes eine hohe Entwicklungsgeschwindigkeit und ein geringer Wartungsaufwand wichtiger sind als eine größtmögliche Ausführungsgeschwindigkeit.&lt;br /&gt;
&lt;br /&gt;
Die Programmiersprache erreicht die Sprachintegration zwischen Python und C vor allem über Datentypen. So können verschiedene Python-Sprachkonstrukte sowohl auf Python-Datentypen als auch auf C-Datentypen angewendet werden. Ein Beispiel ist die &amp;#039;for&amp;#039;-Schleife, die in Python eine [[Foreach#Die Foreach-Schleife|Foreach-Schleife]] ist, also über beliebige iterierbare Container laufen kann (z.&amp;amp;nbsp;B. Listen oder Dateien). In Cython kann diese Schleife zudem über C++-Listen, C-Arrays und Teilarrays laufen, sowie über Pointer-Abschnitte (Slices&amp;lt;ref&amp;gt;[http://docs.python.org/glossary.html#term-slice Slices] auf docs.python.org, abgerufen am 2. August 2018&amp;lt;/ref&amp;gt;, z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;ptr[2:8]&amp;lt;/code&amp;gt; für die Offsets 2–7). Daneben erfolgt eine automatische Konvertierung zwischen verschiedenen Python-Datentypen und C-Datentypen, sowohl bei Skalartypen (Zahlen) als auch bei Zeichenketten und strukturierten Datentypen (z.&amp;amp;nbsp;B. C-Struct-Typen und Python-Dictionaries).&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
Viele der Optimierungen, die der Cython-Compiler automatisch durchführt, bewirken eine Spezialisierung des generierten C-Codes. Dazu verwendet der Compiler explizite [[Statische Typisierung|statische Typdeklarationen]] und (einfache) [[Typinferenz]], um spezialisierten C-Code für die verwendeten Datentypen und bestimmte Code-Patterns zu erzeugen. Ein großer Teil der Optimierungen im Cython-Compiler bezieht sich auf Schleifen, da sich hier zumeist ein großer Teil der Gesamtlaufzeit ansammelt.&lt;br /&gt;
&lt;br /&gt;
Kontrollstrukturen (vor allem Schleifen) sind mit Cython und einem C-Compiler übersetzt um ein Vielfaches schneller, als wenn sie von CPython interpretiert werden.&amp;lt;ref&amp;gt;[http://article.gmane.org/gmane.comp.python.cython.devel/7637 gmane.comp.python.cython.devel – pybench-Vergleich von Cython und CPython 2.6.2]&amp;lt;/ref&amp;gt; Dies ist bedingt durch optimistische Optimierungen und Typ-Inferenz. Dadurch läuft Cython-kompilierter Python-Code auch ohne explizite Typ-Deklarationen meist schneller als in CPython 2.6.x, obwohl die relative Performance natürlich vom jeweiligen Code abhängt. Durch die statische Deklaration von Datentypen und die dadurch resultierende Spezialisierung des C-Codes lässt sich jedoch zumeist eine Beschleunigung um ein Vielfaches erreichen. Vor allem bei mathematischen Berechnungen ergeben sich oft Laufzeitverbesserungen um den Faktor hundert bis tausend.&amp;lt;ref&amp;gt;{{Webarchiv|url=http://thread.gmane.org/gmane.comp.python.cython.devel/4602/focus=4619 |wayback=20170214183219 |text=gmane.comp.python.cython.devel – Passing a pointer from Python }}. Abgerufen am 1.&amp;amp;nbsp;April 2024.&amp;lt;/ref&amp;gt; Im Vergleich dazu liegt die typische Beschleunigung durch den Python-[[Just-in-time-Kompilierung|JIT-Compiler]] [[Psyco]] bei etwa vier- bis hundertfach,&amp;lt;ref&amp;gt;[http://psyco.sourceforge.net/introduction.html Psyco – Introduction]&amp;lt;/ref&amp;gt; bei [[PyPy]] in ausgewählten Fällen bei bis zu zwölffach.&amp;lt;ref&amp;gt;[http://speed.pypy.org/comparison/?exe=2%2B35%2C4%2B35%2C1%2B172&amp;amp;env=1&amp;amp;hor=false&amp;amp;bas=2%2B35&amp;amp;chart=normal+bars Geschwindigkeit von PyPy 1.4 im Vergleich zu CPython 2.6.2 mit/ohne Psyco]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der von Cython für Funktionen generierte Code ist optimiert für schnelles Entpacken und Konvertieren von Aufrufparametern. Daher ist ein Python-Aufruf von nativem Code durch einen Cython-[[Wrapper (Software)|Wrapper]] hindurch im Allgemeinen schneller als in anderen Wrapper-Implementierungen für Python.&amp;lt;ref&amp;gt;{{Webarchiv|url=http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/ |wayback=20150404154630 |text=C++-Wrapper-Benchmarks für verschiedene Python-Wrapper-Generatoren (ohne Cython) }}. Abgerufen am 1.&amp;amp;nbsp;April 2024.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://behnel.de/cycppbench/ C++-Wrapper-Benchmarks für Cython, Boost.Python und PyBindGen]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendungsgebiete ==&lt;br /&gt;
Die wichtigsten Anwendungsgebiete von Cython sind die Anbindung von externen Bibliotheken an den CPython-Interpreter, sowie die Beschleunigung von Python-Code, insbesondere in mathematischen Berechnungen und rechenintensiven [[Algorithmus|Algorithmen]].&lt;br /&gt;
&lt;br /&gt;
Beispielsweise basiert das Computeralgebrasystem [[Sage (Software)|SageMath]] zu einem großen Teil auf Cython-Code. Dieser dient sowohl zur Implementierung mathematischer Algorithmen, als auch zur Anbindung externen Codes in C, C++ und Fortran. Cython unterstützt zudem eine sehr effiziente Interaktion mit [[NumPy]]-[[Matrix (Mathematik)|Matrizen]], was darauf basierende Berechnungen stark vereinfacht.&lt;br /&gt;
&lt;br /&gt;
Die High-Performance-[[Extensible Markup Language|XML]]-Bibliothek lxml ist größtenteils in Cython implementiert. Dabei werden die externen C-Bibliotheken [[libxml2]] und libxslt an den Python-Interpreter angebunden.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Beispiel aus dem Umfeld der Cython-Core-Entwickler ist die [[Message Passing Interface|MPI]]-Bibliothek mpi4py. Sie bindet verschiedene MPI-Implementierungen an CPython an.&lt;br /&gt;
&lt;br /&gt;
Im Python-Package-Index findet sich eine kurze Liste weiterer Bibliotheken, die in Cython implementiert sind.&amp;lt;ref&amp;gt;[http://pypi.python.org/pypi?:action=browse&amp;amp;c=536 Liste der in Cython implementierten Python-Pakete auf PyPI]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verwandte und ähnliche Projekte ==&lt;br /&gt;
* Pyrex – Vorgänger von Cython&lt;br /&gt;
* Unladen Swallow – optimierte CPython-Laufzeitumgebung; basiert auf [[Low Level Virtual Machine|LLVM]]&lt;br /&gt;
* [[PyPy]] – JIT-Compiler-Framework und Python-Laufzeitumgebung, die selbst in einem Python-Dialekt (RPython) geschrieben ist&lt;br /&gt;
* [[Psyco]] – spezialisierender JIT-Compiler und Code-Optimierer für die [[CPython]]-Laufzeitumgebung&lt;br /&gt;
* Shed Skin – statisch typisierte, Python-ähnliche Programmiersprache, die nach C++ kompiliert wird&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Python (Programmiersprache)]]&lt;br /&gt;
[[Kategorie:Skriptsprache]]&lt;br /&gt;
[[Kategorie:Objektorientierte Programmiersprache]]&lt;br /&gt;
[[Kategorie:Funktionale Programmiersprache]]&lt;br /&gt;
[[Kategorie:Imperative Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Fagineus</name></author>
	</entry>
</feed>