Transcript: Python 3.13

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Paisen-Podcast. Heute Jubiläumsepisode 60.

Dominik

Hi Jochen.

Jochen

Oh, Jubiläum. Herzlichen Glückwunsch und auch herzlich willkommen Dominik.

Jochen

Ja, hey. Auch unsere Gäste.

Jochen

Genau, ja, beziehungsweise...

Jochen

Lieber Johannes, dich kennt man von.

Jochen

Ja, genau.

Jochen

Hallo zusammen und herzlichen Glückwunsch zur 60. Episode.

Dominik

Danke. Und lieber TF, auch dir.

Dominik

Ja, vielen Dank, hallo.

Dominik

Du warst ja auch schon mal da, habe ich noch in Erinnerung.

Carl Friedrich

Genau, Januar 23 haben wir gerade rekonstruiert.

Dominik

Ja, wir sprechen heute über Python 3.13. Und ich würde sagen, da legen wir auch direkt los.

Jochen

Ja, wollen wir noch News machen oder nicht?

Jochen

Ich wollte gerade sagen, mit den News.

Jochen

Genau, das ist natürlich irgendwie schon ein bisschen her. Wir sind ein bisschen spät dran. Aber es ist vielleicht auch noch interessant. Es gibt ein paar schöne Sachen, die man darüber erzählen kann, oder?

Jochen

Ja, also wollen wir direkt

Jochen

Python-Reihe 13 kommen wir auch direkt.

Jochen

War gar nicht so viel los, oder?

Jochen

Nee, sonst war auch nicht so viel los, stimmt.

Jochen

Dann machen wir das doch direkt, ja.

Jochen

Also ja, dann erzähl uns was.

Jochen

Ich hab's jetzt auch schon überall

Jochen

irgendwie installiert, wo ich irgendwie

Jochen

Projekte angefasst habe und es funktioniert super.

Jochen

Und

Jochen

genau, ja, jetzt

Jochen

haben wir da so einige Dinge.

Jochen

Vielleicht fangen wir einfach tatsächlich mit der

Jochen

neuen REPL an.

Jochen

Irgendwie die halt aus dem

Jochen

Pile-Pile-Projekt

Jochen

übernommen wurde.

Jochen

Mit der neuen REPL.

Jochen

Was ist eine REPL?

Jochen

Ja, so eine Read-Eval-Print-Loop.

Jochen

Irgendwie das, was man bekommt, wenn man

Jochen

einfach nur Python eingibt und unterdrückt.

Dominik

Also nutzt ihr schon 3.13? Alle?

Dominik

Außer Jochen?

Dominik

Nee, ich habe es noch nicht installiert.

Carl Friedrich

Ich nutze es nicht, ich nutze aber die neue REPL.

Carl Friedrich

Ah, das ist natürlich ein

Johannes

Spezialeinheit. Ja gut, ich benutze IPython überall.

Johannes

Warum nicht Bipython?

Johannes

Das hatten wir vorhin

Carl Friedrich

vorgespräch schon mal kurz besprochen.

Carl Friedrich

Also ich fand die Begründung interessant, warum sie

Carl Friedrich

eigentlich überhaupt die REPL verbessern, wenn sie

Carl Friedrich

sowieso ja wissen, dass die meisten

Carl Friedrich

Leute halt sich sowieso als erstes erstmal IPython

Carl Friedrich

installieren, weil das halt

Carl Friedrich

viel viel netter ist. Aber der

Carl Friedrich

Grund scheint zu sein, dass die

Carl Friedrich

CPython Core Devs halt

Carl Friedrich

während sie quasi dann die nächste

Carl Friedrich

Version entwickeln, erstmal

Carl Friedrich

geht PyPI nicht und

Carl Friedrich

pip nicht und

Carl Friedrich

IPython geht vielleicht auch nicht auf der neuen Version und

Carl Friedrich

damit sie es quasi beim Entwickeln etwas netter haben,

Carl Friedrich

haben sie sich quasi den schöneren Multi-Line-Edit,

Carl Friedrich

schönere History-Farben-Rapple implementiert,

Carl Friedrich

der jetzt in 3.13 released wird.

Dominik

Also ich finde es auch toll, weil ich bin ja zu faul für iPython

Dominik

und ich mache das eigentlich sonst immer klassisch.

Dominik

Und toll, endlich, bunt.

Johannes

Die Welt verbessert durch Eigennutzer, also Sauerei.

Carl Friedrich

Ja, also das mit den Farben finde ich relativ abgefahren tatsächlich.

Carl Friedrich

Also ich habe jetzt seit, weiß ich nicht, Oktober

Carl Friedrich

jetzt auch den Farbing-Rapple.

Carl Friedrich

Und wenn ich dann aber eine alte Version benutze

Carl Friedrich

und es ist dann plötzlich nur noch schwarz-weiß

Carl Friedrich

und es ist ja gar nicht so viel Farbe,

Carl Friedrich

es sind ja wirklich nur die größer als Zeichen,

Carl Friedrich

aber das kommt einem dann fast schon altbacken vor.

Dominik

Ja, Back to the Future, das ist schon ein bisschen wie damals.

Dominik

Aber schade, dass es nicht früher noch grün war oder so,

Dominik

aber ein echter Hacker und so.

Carl Friedrich

Ja, die Farbauswahl, die die C-Python-Entwickler getroffen haben,

Carl Friedrich

das war ein riesen Diskussionsthema.

Carl Friedrich

Das ist halt so Bike-Shedding-mäßig.

Carl Friedrich

Also da kann man halt gut drüber diskutieren.

Carl Friedrich

Und das Problem ist, dass man halt aus der Shell raus

Carl Friedrich

nicht rausfinden kann, ob die Shell auf schwarz auf weiß

Carl Friedrich

oder weiß auf schwarz eingestellt ist.

Carl Friedrich

Das heißt, man muss Farben wählen, die bei beiden Hintergrundfarben

Carl Friedrich

quasi noch einen einigermaßen brauchbaren Kontrast dann ergeben.

Carl Friedrich

Und deswegen ist dieses Pink und Rot ein bisschen so ein Kompromiss,

Carl Friedrich

weil das halt sowohl auf dem schwarzen Hintergrund

Carl Friedrich

als auch auf dem weißen Hintergrund noch einigermaßen gut lesbar bleibt.

Carl Friedrich

Ach okay, interessant.

Jochen

Ja, aber

Jochen

genau,

Jochen

wie kommt das denn, dass du

Jochen

die REPL schon verwendet

Jochen

hast, obwohl gar nicht...

Carl Friedrich

Ja, also die REPL ist

Carl Friedrich

das ist quasi die PyPy REPL

Carl Friedrich

nicht ganz, also die haben total viele neue Features

Carl Friedrich

eingebaut und Bugs gefixt und so, aber so

Carl Friedrich

dieses Kernfeature, dass es eben

Carl Friedrich

Multiline Edit

Carl Friedrich

gibt, also

Carl Friedrich

vielleicht können wir auch kurz sagen, was das ist, also

Carl Friedrich

wenn man quasi auf der Python

Carl Friedrich

Shell eine Funktion angibt, die halt über mehrere Zeilen

Carl Friedrich

geht und man macht dann irgendwie so einen Tippfehler

Carl Friedrich

in Zeile 2 von 8,

Carl Friedrich

dann musste man bisher halt quasi dann

Carl Friedrich

mit der History Zeile für Zeile in der richtigen

Carl Friedrich

Reihenfolge dann

Carl Friedrich

die Funktion wieder so neu zusammensetzen, die

Carl Friedrich

entsprechende kaputte Zeile dann reparieren

Carl Friedrich

und dann die anderen wieder über die History holen

Carl Friedrich

und das ist halt total nervig. Und deswegen

Carl Friedrich

gibt es jetzt eben

Carl Friedrich

Multiline Edit und PyPi hatte das,

Carl Friedrich

wie ich gerade schon gesagt habe, schon quasi schon immer,

Carl Friedrich

also in Anführungszeichen, also

Carl Friedrich

seit PyPi 2.4 oder

Carl Friedrich

2.5 oder so hatten wir das, dass man halt

Carl Friedrich

quasi, wenn man nach einer Funktion

Carl Friedrich

Pfeil nach oben drückt, dann kriegt man halt die ganze Funktion über

Carl Friedrich

mehrere Zeilen. Man kann dann auch wie in einem Editor

Carl Friedrich

mit Pfeil nach oben dann in die früheren Zeilen

Carl Friedrich

der Funktion, kann das einfach editieren, geht

Carl Friedrich

dann wieder ans Ende und mit Enter

Carl Friedrich

definiert man dann die Funktion neu.

Carl Friedrich

Und das hat ja halt, sagen wir mal,

Carl Friedrich

zwei der frühen

Carl Friedrich

Piper-Entwickler einfach so als

Carl Friedrich

in Anführungszeichen normalen Python-Code geschrieben. Das war

Carl Friedrich

einfach, also das hat eigentlich

Carl Friedrich

keine Piper-spezifischen Features irgendwie

Carl Friedrich

gebraucht. Michael Hudson,

Carl Friedrich

Doyle und Armin Rigo waren das.

Carl Friedrich

Und

Carl Friedrich

so ungefähr von einem Jahr haben halt zwei

Carl Friedrich

der C-Python-Entwickler, Luca Schlanger

Carl Friedrich

und Galindo Salgado

Carl Friedrich

gesagt, dass sie das auch gern für C-Python hätten.

Carl Friedrich

Beziehungsweise die haben halt versucht,

Carl Friedrich

sich zu überlegen, wie sie den Ripple verbessern können.

Carl Friedrich

Der Ripple war bisher in C-Python NC geschrieben

Carl Friedrich

und das macht halt alle Verbesserungen daran

Carl Friedrich

relativ nervig und aufwendig.

Carl Friedrich

Und dann haben sie halt geguckt, woher man vielleicht Python-Code

Carl Friedrich

nehmen könnte, der irgendwie

Carl Friedrich

einen Teil des Problems schon löst, ohne dann alles nochmal

Carl Friedrich

neu machen zu müssen und dann habe ich

Carl Friedrich

halt gesagt, dass sie vielleicht sich mal

Carl Friedrich

anschauen könnten, was PyPy da hat und dann haben sie das eben

Carl Friedrich

übernommen, angepasst,

Carl Friedrich

den Code auch total verbessert,

Carl Friedrich

weil in PyPy ist der auch immer noch

Carl Friedrich

Python 2 kompatibel,

Carl Friedrich

weil wir auch immer noch Python 2 Versionen releasen

Carl Friedrich

und

Carl Friedrich

also das haben die quasi so ein bisschen

Carl Friedrich

Grund überholt und neue Tests geschrieben und so

Carl Friedrich

und eben auch einiges an neuen Featuren

Carl Friedrich

hinzugefügt, also

Carl Friedrich

ich habe ein paar Notizen dazu gemacht, also einmal

Carl Friedrich

die Farben, die haben wir nicht gehabt,

Carl Friedrich

Dann diesen Paste-Mode, den es jetzt gibt, also wenn man quasi aus der Zwischenablage irgendwie mehrere Zeilen Code einfügt, dann geht ja oft die Einrückung kaputt und das ist jetzt eben auch repariert. Auch Support für Windows hatten wir bisher auch nicht und halt die Farben.

Carl Friedrich

Was ich tatsächlich auch nicht kannte,

Dominik

war, dass man einfach so ein Skript reinfügen

Dominik

kann. Ich habe gehört, dass das schon ein bisschen älter ist. Ich weiß aber nicht,

Dominik

bei welcher Version das reingekommen ist. Man kann

Dominik

eine Environment-Variable setzen und dann

Dominik

wird ein Skript ausgefügt. Das heißt, du hast deine

Dominik

Imports, die du immer machst, direkt

Dominik

mit dabei, wenn du zum Beispiel diese

Dominik

setzt. Deine Lieblingsmodule?

Dominik

Ja, nur sieben.

Dominik

Sieben?

Dominik

Finde ich ziemlich cool. Man kann dann lustige Sachen machen.

Dominik

Python Starter heißt das.

Dominik

Ja. Ja, ist ja

Dominik

sehr schön. Muss ich unbedingt für

Dominik

mein System auch bauen.

Dominik

Ja, aber genau, also

Jochen

ein großer Vorteil ist glaube ich auch jetzt,

Jochen

dass es war vorher irgendwie

Jochen

direkt in C, glaube ich, geschrieben

Jochen

und jetzt ist es halt auch

Jochen

Pure Python sozusagen und ich glaube, da kann man

Jochen

jetzt auch einfach eine ganze Menge mehr

Jochen

an die Innereien rankommen und dann auch das Verhalten so

Jochen

ändern, dass man da eine ganze Menge lustige

Jochen

Dinge mit tun kann.

Jochen

Lukas Schlager hatte da auf der

Jochen

Pure Python auch einen Vortrag gehalten.

Jochen

Das war ein Performance-Vortrag.

Jochen

Oder eine Performance performt.

Jochen

Live-Musik-Coding-Geschichten.

Jochen

Und da ist es natürlich praktisch, wenn man halt...

Jochen

Lustig war, dass der Tontechniker,

Jochen

der hat einen Euroreg dabei gehabt

Dominik

und hat irgendwie so einen hohen Ton auf seinem Synthesizer gespielt.

Dominik

Da hat der Tontechniker kurz Angst bekommen,

Dominik

dass seine Anlage Schrott geht.

Dominik

Hat alles runtergedreht auf so 20% Lautstärke oder sowas.

Dominik

Und auf einmal war es sehr leise.

Dominik

Und dann hat er fünf Minuten so gespielt.

Dominik

Und irgendwann hat jemand geklopft beim Tontechniker

Dominik

und hat dann überredet und gesagt,

Dominik

ja, Lukas, wird diese hohen Frequenzen

Dominik

jetzt nicht mehr spielen? Und dann durfte er wieder lauter drehen.

Dominik

Ja, ich glaube,

Carl Friedrich

das sieht man auch jetzt schon so ein bisschen. Es gibt halt einfach

Carl Friedrich

viel mehr Bug Reports und Patches, was den neuen Rappel angeht.

Carl Friedrich

Es ist immer noch so, dass es schon

Carl Friedrich

so ein bisschen nervig ist, daran zu arbeiten, weil

Carl Friedrich

wenn der Rappel kaputt ist, dann sieht man halt auch gleich

Carl Friedrich

nichts mehr. Also der Debugger geht nicht

Carl Friedrich

und also es ist schon,

Carl Friedrich

die haben da schon

Carl Friedrich

so ein bisschen eigene debugging-Sachen eingebaut.

Carl Friedrich

Aber es ist schon

Carl Friedrich

noch so, es bleibt so ein bisschen frickelig.

Jochen

Aber ich glaube, man kann auch die alte wieder aktivieren.

Jochen

Irgendwie insofern hat man da vielleicht die Möglichkeit,

Jochen

auch mit der Umgebungsvariable wieder auf die alten Dings zu kommen.

Jochen

Aber ja, klar, ist natürlich, wenn man es kaputt macht,

Jochen

dann ein Problem.

Carl Friedrich

Ah ja, wichtiges anderes neue Feature ist natürlich,

Carl Friedrich

dass man jetzt bei Exit keine Klammern mehr braucht.

Carl Friedrich

Oh ja.

Carl Friedrich

Ja, und ich glaube, Quid geht auch.

Carl Friedrich

Ja, vielleicht ist das so.

Carl Friedrich

Ich meine, ja.

Jochen

Ja, und Help geht auch irgendwie jetzt anders.

Jochen

Aber ehrlich gesagt, keine Ahnung genau, wie.

Carl Friedrich

Ja, es gibt jetzt diesen Help-Mode, der eingebaut ist mit F1.

Carl Friedrich

Und dann kann man quasi aus der

Carl Friedrich

Shell in so eine spezielle Help-Shell

Carl Friedrich

wechseln. Und von da dann,

Carl Friedrich

wenn man quasi die Namen von irgendwelchen Sachen, die man

Carl Friedrich

dokumentiert haben möchte, eingibt, dann kriegt man die

Carl Friedrich

direkt angezeigt.

Johannes

Aber bei Print braucht man schon noch Klammern, oder?

Johannes

Nee.

Johannes

Ich möchte so etwas

Johannes

Python 2 wieder haben.

Johannes

Soll ich das mal als Feature-Request

Johannes

vorschlagen? Also das kannst du jetzt auf jeden Fall

Johannes

für deine

Jochen

Raffle-Katze einbauen, dass sie sich dann wieder

Jochen

in Python 2... Kann ich das machen?

Jochen

Das mit dem Exit ist tatsächlich was,

Carl Friedrich

was halt Newbies sich relativ

Carl Friedrich

oft wünschen.

Carl Friedrich

Q reicht, glaube ich, auch.

Carl Friedrich

Ist das so?

Carl Friedrich

Q reicht? Nee.

Carl Friedrich

Warum steht denn das da?

Carl Friedrich

Weiß nicht. Ach, für den Head-Mode.

Jochen

Also Crit geht, aber

Jochen

Q nicht. Schade.

Dominik

Adidas QQ, da muss man direkt wieder in das

Dominik

Skript reinschreiben.

Jochen

Ja, aber so ist es auf jeden Fall

Jochen

toll. Also ich finde das auch super, dass man da jetzt

Jochen

irgendwie echt

Jochen

eine ganz brauchbare Geschichte eingebaut hat

Jochen

und gut, klar, also iPython

Jochen

ist natürlich auch nicht schlecht oder wie Python

Jochen

oder so, aber. Ja und dann

Carl Friedrich

daran angelegt, wir haben jetzt Farben ja schon angesprochen, vielleicht können wir noch

Carl Friedrich

über die Tracebacks sprechen.

Carl Friedrich

Also in 3.11

Carl Friedrich

gab es ja jetzt schon die Verbesserung, dass wir quasi

Carl Friedrich

in Tracebacks diese

Carl Friedrich

genaueren Positionen innerhalb

Dominik

von der Zeile kriegen. Wie sagt man, Dechle, Johannes?

Dominik

Genau. Dechle, ja.

Dominik

Da, wo ich herkomme, sagt man Dechle.

Johannes

Sind halt auch keine Dächer, sondern nur kleine

Johannes

Dächer. So groß sind die gar nicht.

Johannes

Ist halt so.

Johannes

Genau, also es wird

Carl Friedrich

jetzt quasi nicht mehr nur gesagt, das ist halt in Zeile

Carl Friedrich

5 der Fehler, sondern auch noch dieser Teil

Carl Friedrich

des Ausdrucks ist

Carl Friedrich

der Teil, der die Exception hervorgerufen hat.

Carl Friedrich

Und das

Carl Friedrich

wird jetzt halt auch noch jetzt dann

Carl Friedrich

farbig irgendwie anders dargestellt als der Rest der Zeile.

Carl Friedrich

Ja, auch sehr nützlich.

Carl Friedrich

Tatsächlich so ein bisschen readable

Dominik

und man muss sich

Dominik

erstmal gucken, wo ist denn jetzt der richtige Teil

Dominik

vom Traceback, sondern

Carl Friedrich

mit den Positionen, da

Carl Friedrich

habe ich, das Feature habe ich

Carl Friedrich

quasi durch einen geschickten

Carl Friedrich

Tweet provoziert.

Carl Friedrich

Da habe ich nämlich einen Screenshot

Carl Friedrich

gefälscht, wo wir, also den hat

Carl Friedrich

es nie, das Feature hat es bei uns nicht gegeben,

Carl Friedrich

aber ich habe quasi einen fiktiven Traceback

Carl Friedrich

auf Twitter fingiert

Carl Friedrich

und das hat dann dazu geführt, dass

Carl Friedrich

C-Python das wirklich entwickelt hat.

Carl Friedrich

Das fand ich

Jochen

großartig.

Jochen

Feature-Request durch

Jochen

Boßartigkeit.

Jochen

Also wir können das und ihr?

Jochen

Und dann gelogen.

Carl Friedrich

Also ich hatte schon so einen Plan, wie ich das irgendwann mal,

Carl Friedrich

wir haben das ja dann auch irgendwann

Carl Friedrich

gekriegt, aber so und T-Python hat uns dann

Carl Friedrich

halt einfach ganz schnell überholt und viel mehr Leute benutzen

Carl Friedrich

T-Python.

Carl Friedrich

Ja.

Carl Friedrich

Genau, hier kann man es auch nochmal sehen.

Carl Friedrich

Jetzt natürlich nicht, wenn ihr zuhört, aber

Carl Friedrich

genau. Ich kann es jetzt sehen.

Carl Friedrich

Das einzige, was zählt.

Carl Friedrich

Ja, ja.

Jochen

Genau. Ja, auch schön, man kriegt jetzt irgendwie gesagt, wenn man halt ein Modul genauso genannt hat wie eines aus der Standardbibliothek oder von sonstigen Dingen, die man installiert hat, glaube ich, also es gibt so ein bisschen bessere.

Jochen

Oder wenn man halt irgendwie bei Keyword-Argumenten

Jochen

das irgendwie falsch übergeben hat,

Jochen

dann kriegt man jetzt auch, da gab es vorher einfach nur

Jochen

so sehr, sehr kryptische Fehlermeldungen,

Jochen

die halt Anfänger auch sehr verunsichert haben.

Jochen

Das ist jetzt, glaube ich, auch besser.

Dominik

Er macht das Vorschlag, er versucht sich dran zu erinnern,

Dominik

was denn der Fehler schon sein könnte

Dominik

und versucht so einen kleinen Hinweis dazu zu geben.

Carl Friedrich

Ich meine, das wird halt in jeder Version

Carl Friedrich

jetzt gerade so ein bisschen verbessert.

Carl Friedrich

Es ist schon so ein, jetzt über einige Versionen

Carl Friedrich

eigentlich so ein festes Bestandteil

Carl Friedrich

von jedem C-Python-Release,

Carl Friedrich

dass sie halt sich echt Mühe geben,

Carl Friedrich

noch so ein paar der schlechten Fehlermeldungen zu verbessern.

Carl Friedrich

Und ich unterrichte halt Python-Anfänger jedes Semester.

Carl Friedrich

Das macht schon echt einen Unterschied,

Carl Friedrich

ob da dann irgendwie halt Abkürzungen vorkommen,

Carl Friedrich

die wir noch nie gehört haben

Carl Friedrich

oder einfach nur Syntax-Error ohne irgendwas anderes steht

Carl Friedrich

und wir so ein bisschen raten müssen,

Carl Friedrich

was das Problem gewesen sein könnte.

Carl Friedrich

Und ja, und das mit den Vorschlägen,

Carl Friedrich

also wenn man sich halt vertippt,

Carl Friedrich

wenn man irgendwie einen Namen vertippt,

Carl Friedrich

das ist jetzt schon seit ein, zwei Versionen,

Carl Friedrich

dass sie dann da dann Vorschläge

Carl Friedrich

machen könnten, was halt der existierende

Carl Friedrich

Name mit der kleinsten Edit-Distance ist.

Carl Friedrich

Und jetzt

Carl Friedrich

haben sie es eben noch zusätzlich hinzugefügt, dass es auch bei

Carl Friedrich

Keyword-Argumenten geht.

Carl Friedrich

Ah, okay.

Carl Friedrich

Ja.

Jochen

Also das ist auf jeden Fall vielleicht die

Jochen

größte User-Facing-Änderung,

Jochen

die man halt bekommt, wenn man

Jochen

jetzt Python 3.13 verwendet.

Jochen

Ja.

Dominik

Ja, ich würde auch sagen, wenn die ganzen Bibliotheken

Dominik

umgezogen sind, die man sonst nur nutzt, dann direkt

Dominik

kann nicht mehr so lange dauern.

Dominik

Wann zieht ihr denn immer um, bei der 3.1

Dominik

oder bei der Punkt 1 oder Punkt 2?

Jochen

Ich stelle eigentlich immer sobald,

Jochen

ich probiere es vorher schon aus,

Jochen

also einfach deswegen, um zu sehen, ob ich halt irgendwie

Jochen

bei den Paketen, die ich

Jochen

habe

Jochen

oder die ich maintaine, ob da nicht

Jochen

dann Dinge kaputt gehen, weil um mir dann halt,

Jochen

damit ich den Ärger nicht

Jochen

nach der Release kriege, gucke ich

Carl Friedrich

das halt vor. Also du bist dann einer von denen, die dann die

Carl Friedrich

Bug-Reports machen, wenn was nicht geht.

Jochen

Ja, aber meistens

Jochen

ist das halt so abstrakt, dass

Jochen

ich da gar nicht in Bugs reinlaufe.

Jochen

Also bisher,

Jochen

wo ich es probiert habe, hat es eigentlich immer funktioniert.

Jochen

Und dann

Jochen

updaten,

Jochen

das mache ich dann normalerweise, wenn es tatsächlich

Jochen

dann erscheint. Ja, aber der Rest der Software,

Dominik

den hast du ja noch nicht

Jochen

alles umgezogen. Ich habe noch nicht alles

Jochen

umgezogen. Ich habe auch bei einem Ding hat es nicht

Jochen

geklappt. Das war irgendwie bei meinem

Jochen

Fast Deploy Ding, habe ich nicht

Jochen

updaten können auf 3.13.

Jochen

weil irgendwas mit PyTest und Async und irgendwelchen Geschichten

Jochen

nicht mehr ging dann.

Jochen

Ich weiß es gar nicht mehr so genau.

Jochen

Da dachte ich, okay, da warte ich jetzt mal noch zwei Monate ab

Jochen

oder so und probiere es nochmal.

Jochen

Mal gucken, vielleicht ist es dann gefixt.

Jochen

Aber genau.

Jochen

Aber die Dinge, die ich angefasst habe,

Jochen

seitdem Python 3.13 raus ist, habe ich es umgestellt

Jochen

und es war bis jetzt auf das eine Ding kein Problem.

Dominik

Ja, die Datastandsverkehr sind immer so ein bisschen langsam.

Dominik

Dann haben die immer diese Boundaries in ihren Versionen drin

Dominik

und das nervt immer so ein bisschen.

Jochen

Ja, ja, gut, okay. Ich habe jetzt auch gerade nicht so viel

Jochen

Data Science in der Hand, daher

Jochen

ist mir das nicht so aufgefallen.

Carl Friedrich

Weil ich auch da das Gefühl habe, dass eigentlich viele Bibliotheken

Carl Friedrich

sich da jetzt inzwischen echt Mühe geben und halt schon

Carl Friedrich

bei den Betas und Release Candidates

Carl Friedrich

halt gucken, ob es geht und dann schon.

Carl Friedrich

Ja. Also es ist jetzt nicht mehr so, dass es ein halbes

Carl Friedrich

Jahr dauert oder so.

Carl Friedrich

Ja.

Dominik

Ja, ich bin gespannt, wie lange es diesmal dauert. Tatsächlich, ja.

Dominik

Ja.

Dominik

Ja.

Carl Friedrich

Wollen wir hier mit den großen Blöcken

Carl Friedrich

weitermachen oder willst du so ein paar der kleinen Sachen sammeln?

Carl Friedrich

Ich weiß nicht, jetzt hatten wir schon einen großen.

Carl Friedrich

Es gibt noch große Blöcke.

Carl Friedrich

Es gibt noch zwei große.

Jochen

Das war auch schon ein großer, ja.

Jochen

Ich habe eben noch

Jochen

die Dokumentation

Johannes

durchgeschaut und den History-Modus,

Johannes

den fand ich auch ziemlich gut.

Johannes

Mit F2 kann man seine History ansehen.

Johannes

Ist das auch persistent?

Johannes

Ja, also ich habe eben in meinen

Johannes

History reingeguckt in meiner Session,

Johannes

die ich gerade gemacht habe. Das geht sehr weit zurück.

Johannes

Ich war sehr überrascht, wie viel History da drin ist.

Johannes

Oh, da muss man jetzt ja auch passen, was man

Johannes

da noch brennt ohne Klammern.

Johannes

Ja, das will ich jetzt nicht.

Johannes

Ohne Anwalt möchte ich diese Frage

Johannes

nicht beantworten.

Johannes

Ne,

Johannes

sehr viele schöne Sachen, aber

Johannes

ich finde es sehr interessant, dass

Johannes

3.13 so ein Release ist

Johannes

mit einer riesigen Änderung

Johannes

im Frontend, also jetzt diese Rapid-Sachen,

Johannes

aber ja auch sehr

Johannes

große Änderungen im Backend,

Johannes

zu denen wir jetzt kommen.

Johannes

Du meinst jetzt Nogel?

Johannes

Ja, es sind tatsächlich

Johannes

zwei.

Johannes

Dann machen wir Ditt.

Carl Friedrich

Da habe ich mir Notizen.

Jochen

Ja, super, okay. Alles klar.

Carl Friedrich

Also beides sind ja eigentlich Sachen,

Carl Friedrich

die eher so im...

Dominik

Vielleicht nochmal für alle Leute, die einsteigen, die noch gar

Dominik

keine Ahnung von Weißwein haben, Ditt just in time.

Dominik

Was ist denn das

Dominik

und warum ist das interessant und warum ist das wichtig?

Dominik

Vielleicht nochmal so einen kurzen Aufzug

Dominik

lang und dann...

Dominik

Ja.

Carl Friedrich

Also C-Python ist ein Interpreter, also der Python-Code, der ausgeführt wird, der wird erst nach Bytecode übersetzt und der Bytecode wird aber dann von einem in C geschriebenen Interpreter ausgeführt und das gilt als nicht so schnell.

Carl Friedrich

Das ist einer der Gründe, warum Python den Ruf hat, nicht so super schnell zu sein. Und seit ein paar Versionen gibt es da einiges an Arbeiten vom Faster Python Team, was zum guten Teil von Microsoft bezahlt wird, das zu verbessern.

Carl Friedrich

Und was die machen ist, immer noch auf dem Interpreter, aber sie verändern quasi die Bytecodes zur Laufzeit in Abhängigkeit von den Typen, die in den Funktionen verwendet werden, was dazu führt, dass wenn ich halt an irgendeiner Stelle vor allem Integers benutze, dass dann für Integers angepasster Bytecode verwendet wird, was die Ausführung schneller macht.

Carl Friedrich

Und das, also dieser Prozess, der hat in 3.11 angefangen und in jeder Version gibt es da eben so ein paar Verbesserungen. Und wenn man dann aber darüber noch hinaus will, dann muss man eben, oder was man dann eben machen kann, ist nochmal zu einer anderen Technik greifen, das ist der sogenannte Just-in-Time-Compiler und das ist eine Technik, die von allen schnellen JavaScript-Implementierungen oder auch von Java verwendet wird.

Carl Friedrich

Und da ist die Idee, dass man zur Laufzeit eben Maschinencode erzeugt für die Funktionen, die man gerade ausführen möchte und das hat den Vorteil, dass man, also der Grund, warum man das zur Laufzeit macht, ist, weil man erst zur Laufzeit die Typen weiß, die in der Python-Funktion gerade verwendet werden und dann kann man eben Code erzeugen, der dann speziell angepasst ist auf die Arten und Weisen, wie die Funktionen, die man gerade ausführt, eben verwendet werden.

Jochen

Aber das kann ja auch sehr dynamisch sein,

Jochen

aber man muss dann wahrscheinlich ein paar Mal die so ausführen

Jochen

und dann gucken, was passiert und dann...

Carl Friedrich

Genau, also das ist der grundsätzliche Ansatz.

Carl Friedrich

Man fängt eben an, das erstmal so mit dem Interpreter auszuführen

Carl Friedrich

und dabei macht man so ein bisschen Beobachtung,

Carl Friedrich

was für Typen eben konkret verwendet werden,

Carl Friedrich

führt so ein paar Statistiken mit

Carl Friedrich

und nur wenn die Funktion besonders oft ausgeführt wird

Carl Friedrich

und man dann eben mit der Zeit eben so ein paar Informationen zusammen hat,

Carl Friedrich

wie die Typen so sind,

Carl Friedrich

dann fängt es sich an, quasi das so ein bisschen zu stabilisieren

Carl Friedrich

und das ist auch dann der Zeitpunkt,

Carl Friedrich

eben dann die Bytecodes umgeschrieben werden, quasi

Carl Friedrich

jetzt seit Version 3.11

Carl Friedrich

und jetzt, was

Carl Friedrich

jetzt neu ist in 3.13

Carl Friedrich

ist, dass dann eben dieser zweite Schritt hinzukommt,

Carl Friedrich

wo man dann eben nicht nur

Carl Friedrich

Bytecodes umschreibt und

Carl Friedrich

für die Situation effizientere

Carl Friedrich

Bytecodes, sondern eben auch noch

Carl Friedrich

und das ist komplett optional, also bisher

Carl Friedrich

in den Standard-Builds ist das Feature nicht drin,

Carl Friedrich

das ist eher so ein

Carl Friedrich

Feature-Outlook

Carl Friedrich

für zukünftige Versionen,

Carl Friedrich

dass man eben CPython auch neu bauen kann

Carl Friedrich

mit so einem speziellen, experimentellen Build-Time-Flag,

Carl Friedrich

was eben sagt, ich möchte jetzt gerne einen JIT-Compiler einbauen.

Carl Friedrich

Und dann wird eben zur Laufzeit

Carl Friedrich

dieser spezialisierte Bytecode genommen

Carl Friedrich

und daraus Maschinencode erzeugt.

Carl Friedrich

Und die Hoffnung ist, dass es dann eben noch schneller wird.

Carl Friedrich

In 3.13 ist es aber leider noch nicht der Fall.

Carl Friedrich

Also sie erzeugen quasi Maschinencode.

Carl Friedrich

Aber der, ja, also der macht es halt nicht,

Carl Friedrich

das macht es doch ziemlich schneller.

Carl Friedrich

das ist so ein bisschen die schlechte Nachricht, aber

Carl Friedrich

das ist trotzdem okay,

Carl Friedrich

weil das Ziel ist quasi so,

Carl Friedrich

das Fundament zu legen

Carl Friedrich

für Verbesserungen, die dann in der nächsten Version

Carl Friedrich

hoffentlich auch wirklich dazu führen, dass halt

Carl Friedrich

dann C-Python das Sachen schneller ausführen kann.

Carl Friedrich

Ja.

Carl Friedrich

Und

Jochen

das ist, glaube ich, eine spezielle Art

Jochen

von

Jochen

Just-in-Time-Compiler oder so, die es auch noch

Jochen

gar nicht so lange gibt. Das geht irgendwie zurück auf

Jochen

so ein Paper für

Jochen

Lua irgendwie, für so Copy-on-Patch

Jochen

Ich weiß nicht.

Carl Friedrich

Also so ganz kann man das nicht sagen.

Carl Friedrich

Die Idee gibt es schon sehr lang.

Carl Friedrich

Das ist ein sogenannter Template JIT.

Carl Friedrich

Und da ist die Idee, dass man,

Carl Friedrich

also man hat ja dann diese spezialisierten Bytecodes,

Carl Friedrich

also sowas wie Add to Integers oder sowas.

Carl Friedrich

Und die Idee ist, dass man quasi für alle diese Bytecodes

Carl Friedrich

so ein bisschen Maschinencode vorbereitet,

Carl Friedrich

also zu dem Zeitpunkt, wo man CPython baut.

Carl Friedrich

Und das dann, den vorbereiteten Maschinencode, also diese Templates, die werden dann so zusammen kopiert. Und die Idee von einem Template-Jit, die ist relativ alt. Aber was jetzt neu ist, und das ist eben dieser Copy-and-Patch-Ansatz, ist die Art und Weise, wie diese Templates hergestellt werden.

Carl Friedrich

Und das ist eben die Einsicht von dem Copy-and-Patch-Ansatz. Das ist ein Doktorand in Kalifornien, glaube ich, Haorang Su. Und die Idee davon ist, dass man eben den C-Compiler benutzen kann, um diese Templates vorzubereiten. Das hat viele Vorteile.

Carl Friedrich

Also man benutzt den C-Compiler, man hat so kleine Funktionen in C geschrieben, benutzt den C-Compiler, um die dann nach Maschinencode zu übersetzen und das bedeutet insbesondere, dass normalerweise, wenn man JIT schreibt, dann muss man halt anfangen für verschiedene Maschinenarchitekturen so ein Backend quasi von Null auf erstmal zu bauen und das ist halt super aufwendig, gerade wenn man viele Architekturen unterstützen will, wie das ja bei C-Python der Fall ist.

Carl Friedrich

Und die Idee von dem Copy-and-Patch-Ansatz ist, man benutzt den C-Compiler, um sich den Maschinencode erzeugen zu lassen und kopiert den dann so mit Memcpy quasi an die richtige Stelle und patcht dann eben noch so ein paar Stellen, wo man dann irgendwelche Konstanten noch so in den erzeugten Maschinencode so reinpatchen kann.

Carl Friedrich

Und dazu benutzt man linke Informationen. Das ist wirklich so ein relativ kreativer Ansatz, um halt mit vergleichsweise wenig Aufwand, also ohne so ein komplettes Backend schreiben zu müssen, trotzdem relativ schnell einen relativ guten Maschinencode erzeugen zu können.

Jochen

Ja, ich glaube, das ist irgendwie LLVM oder so wird da benutzt.

Carl Friedrich

Genau, das ist auch so ein bisschen das Problem. Also man braucht dann genau die richtige LVM-Version. Und wenn man die nicht installiert hat, dann bringt einem auch die Flag nicht. Man kann es dann trotzdem nicht bauen. Ich habe es tatsächlich noch nicht geschafft, das zu bauen, weil ich irgendwie das richtige LVM noch nicht hatte oder was. Aber ich glaube, die arbeiten da jetzt, also ich glaube, auf dem CPython-Main-Branch ist das jetzt auch irgendwie gelöst. Da werden halt dann Sachen schon eingecheckt oder, also man muss dann nicht mehr genau die richtige Point-Version von LVM installieren. Aber habe ich jetzt noch nicht ausprobiert.

Johannes

Hat LLVM nicht auch so eine IR, eine Intermediate Representation, die auch irgendwie so abstrahiert ist?

Carl Friedrich

Ja, also im Prinzip haben das die meisten optimierenden Compiler, die haben halt irgendwie so eine Zwischendarstellung, wo sie halt quasi diese benutzen, um Code zu optimieren.

Carl Friedrich

Und bei LLVM ist die deswegen relativ sichtbar, weil sie halt gute Tools haben, um die dann in so eine ASCII-Syntax zu printen und auch wieder zu parsen und weiter zu verarbeiten.

Carl Friedrich

Aber, ja.

Johannes

Auch viele technische Bauteile

Johannes

immer noch, ja klar.

Carl Friedrich

Ja, es ist schon, also es ist jetzt schon

Carl Friedrich

so ein bisschen, der JIT in 3.13,

Carl Friedrich

das ist schon wirklich eher so,

Carl Friedrich

das sind so vorbereitende

Carl Friedrich

Arbeiten. Also die Hoffnung ist eben, dass das

Carl Friedrich

dann so in den nächsten

Carl Friedrich

Versionen,

Carl Friedrich

also ich meine, bisher ist das relativ unbefriedigend.

Carl Friedrich

Wir haben einen JIT, der erzeugt ganz tollen Maschinencode,

Carl Friedrich

aber es wird halt nicht schneller.

Carl Friedrich

Also,

Carl Friedrich

Und es ist, ja, cool, aber halt irgendwie auch nutzlos.

Carl Friedrich

Also warum sollte man es machen,

Carl Friedrich

wenn sich die Performance halt dadurch gar nicht ändert?

Carl Friedrich

Aber die Hoffnung ist eben,

Carl Friedrich

dass sie dann, wenn sie jetzt weitere Optimierungen einbauen

Carl Friedrich

und bei diesem Patching,

Carl Friedrich

da kann man noch so ein paar extra Instruktionen dann wegoptimieren.

Carl Friedrich

Das haben sie, glaube ich, jetzt oft im Main Repository auch schon gemacht.

Carl Friedrich

Und die Hoffnung ist, dass dann eben, wenn 3.14 dann da ist,

Carl Friedrich

erstens eben dann, dass sie so ein paar Bugs

Carl Friedrich

gefixt haben, weil hoffentlich eben ein paar Leute

Carl Friedrich

trotzdem den

Carl Friedrich

experimentellen JIT halt mal ausprobieren

Carl Friedrich

und dann vielleicht Bug-Reports schicken

Carl Friedrich

und dass sie dann halt

Carl Friedrich

in der nächsten Version dann auch die Performance

Carl Friedrich

noch ein bisschen verbessern können.

Carl Friedrich

Und insgesamt finde ich den Ansatz halt

Carl Friedrich

cool, weil er in Anbetracht der Tatsache,

Carl Friedrich

dass das C-Python-Team halt jetzt nicht so groß

Carl Friedrich

ist, was bezahlte Entwickler angeht,

Carl Friedrich

ich finde es halt einen relativ pragmatischen

Carl Friedrich

Ansatz, wo sie ohne jetzt irgendwie

Carl Friedrich

also was ich

Carl Friedrich

Google vor acht hat, hat irgendwie

Carl Friedrich

weiß nicht, 80 Leute oder so.

Carl Friedrich

Das fand ich auch überraschend, ja.

Carl Friedrich

Und

Carl Friedrich

also das hier hat quasi mit der kleinen

Carl Friedrich

Anzahl an Festangestellten halt

Carl Friedrich

trotzdem

Carl Friedrich

mit diesem Ansatz vielleicht irgendwie recht

Carl Friedrich

pragmatisch irgendwo hinkommen können.

Carl Friedrich

Ja, ich meine. Ja, ich finde das auch cool. Ich finde das

Carl Friedrich

auch generell cool, ohne dass es jetzt

Johannes

direkt eine Geschwindigkeitsverbesserung

Johannes

bringt, einfach weil, wie du

Johannes

gesagt hast, das ist eine wichtige

Johannes

Grundlage, um dann irgendwann die Verbesserungen

Johannes

rausholen zu können. Deshalb.

Johannes

Richtige Richtung, meiner Meinung nach.

Jochen

Ja, ich meine, wenn man jetzt nicht so viel Ressourcen hat,

Jochen

muss man sich halt überlegen, wie man die ökonomisch einsetzt.

Jochen

Und wenn man jetzt sieht, was

Jochen

vielleicht V8 irgendwie macht

Jochen

oder so und das dann halt einfach später,

Jochen

wenn sich herausgestellt hat, was da gut funktioniert, halt

Jochen

dann die wesentlichen Teile nimmt

Jochen

oder so, das wäre schon... Wobei, ich weiß nicht

Jochen

genau, gibt es irgendwo

Jochen

quasi den gleichen Ansatz, der dann schon gut funktioniert?

Jochen

Weil V8 ist ja dann wahrscheinlich doch

Jochen

eher noch deutlich komplizierter oder so.

Carl Friedrich

Sehr viel komplizierter. Also V8 hat halt nicht nur

Carl Friedrich

einen JIT, sondern irgendwie drei oder so.

Carl Friedrich

Oder vier.

Carl Friedrich

Also halt dann erstmal einen, der quasi

Carl Friedrich

schlechten Code sehr schnell erzeugt und dann

Carl Friedrich

etwas besser optimiert, sehr gut optimiert.

Carl Friedrich

Dann haben sie noch einen komplett getrennten JIT für

Carl Friedrich

WebAssembly.

Carl Friedrich

Also das ist schon

Carl Friedrich

und dann natürlich auch wirklich dann

Carl Friedrich

quasi richtige Backends für ganz viele verschiedene

Carl Friedrich

Hardware-Architekturen.

Carl Friedrich

Also das ist schon ein Aufwand, den

Carl Friedrich

meiner Ansicht nach mit dem jetzigen

Carl Friedrich

Funding das C-Python-Thema erstmal so nicht

Carl Friedrich

hinkriegen kann.

Jochen

Transpilen nach,

Jochen

einfach Python transpilen nach

Jochen

JavaScript.

Jochen

Ja, oder nach

Jochen

WebAssembly.

Jochen

Das stimmt, das ist ja tatsächlich eine unterstützte

Jochen

Plattform, ja.

Johannes

Genau, das ist jetzt eine Tier-2-Plattform.

Johannes

Ja, genau, das stimmt.

Carl Friedrich

Also das ist

Carl Friedrich

so ein kleines Ding, es gibt drei neue Plattformen

Carl Friedrich

in 3.30. Ja, super spannend.

Carl Friedrich

Soll ich mal,

Carl Friedrich

ich lese mal hier vor, also

Johannes

die erste, die

Johannes

Tier 2 Plattform heißt

Johannes

WASM32 WASI, also eine

Johannes

WebAssembly Plattform.

Johannes

CF, weißt du, was

Johannes

Tier 2, weißt du, was die Tiere bedeuten?

Johannes

Ich glaube irgendwie,

Carl Friedrich

die machen Aussagen darüber, wie viel

Carl Friedrich

Bildbots sie haben und was sie so versprechen

Carl Friedrich

an

Carl Friedrich

Support über die, genau, über die

Carl Friedrich

Version. Da gibt es irgendwie ein Papp dazu.

Carl Friedrich

Ja, okay, gut. Also das kann man

Carl Friedrich

nachlesen. Aber ist jetzt eine höhere

Carl Friedrich

Zahl besser oder eine kleinere?

Carl Friedrich

Also eins ist am besten.

Johannes

Die niedrigeren Zahlen sind besser, oder? Je näher du

Johannes

am Ziel bist, an der

Johannes

Spitze, umso besser ist es. Also

Johannes

WebAssembly ist jetzt Tier 2

Johannes

Supported Plattform mit vielen Buildbots und viel

Johannes

Stabilität in der Version. Und es gibt zwei

Johannes

neue Plattformen,

Johannes

die, da war ich sehr überrascht,

Johannes

die es gibt, nämlich Android und iOS

Johannes

sind Tier 3

Johannes

Officially Supported Plattform.

Johannes

War ja früher ein riesen

Johannes

Thema, wenn man Android, wenn man

Johannes

Python auf Android ausführen wollte oder noch schlimmer

Johannes

Python auf iOS.

Johannes

Das ging auch schon sehr lange.

Jochen

Das ging auch schon sehr lange. Ich meine, es ist ja

Jochen

auch kein Problem, du kannst ja einfach

Jochen

den Interpreter auch total kopilieren

Jochen

und so. Und da ging auch

Jochen

NumPy und so, das ging alles. Und es gab

Jochen

da so eine schöne App namens

Jochen

Pythonista.

Jochen

Aber die hat

Jochen

natürlich eigentlich schon gegen die App-Store-Regeln

Jochen

verstoßen.

Jochen

Also ich meine,

Jochen

mein

Johannes

Beowulf-Cluster aus iOS,

Johannes

aus iPhones.

Johannes

Was ist genau die Regel?

Jochen

Also die App-Store-Regel ist,

Jochen

du darfst da nur

Jochen

Dinge installieren. Also

Jochen

kompilierter Code, ja, aber auch irgendwie

Jochen

C++, C, irgendwie

Jochen

Objective-C,

Jochen

und

Jochen

was war es noch?

Jochen

Ich weiß nicht, vielleicht

Jochen

ist gerade eine Handvoll Sprachen.

Jochen

Aber viel wichtiger ist doch die Regel, dass du keinen

Johannes

dynamisch erzeugten Code nachladen musst.

Jochen

Ja, das genau, ja.

Johannes

Weil dann kann Apple ja nicht mehr prüfen,

Johannes

ob du nicht irgendwelche schlimmen

Johannes

Programme nachlädst.

Dominik

Ihre Sandbox-Tests oder was auch immer die da noch mal machen.

Dominik

Ja, ist auch ein

Jochen

Und du konntest halt mit Python,

Jochen

da kannst du halt auch einfach quasi Python-Code

Jochen

auf deinem Telefon ausführen und

Jochen

das geht natürlich eigentlich nicht.

Jochen

Ja, ist klar.

Jochen

Aber es ging dann doch. Ja, aber bei Android

Jochen

wäre das ja prinzipiell gegangen.

Jochen

Nur war halt das Tooling bisher immer

Johannes

sehr umständlich. Also ich weiß,

Johannes

dass es Beware gibt und es gab auch

Johannes

Kiwi und viele andere

Johannes

Ansätze schon, aber die waren schon

Johannes

immer sehr umständlich.

Johannes

Und wenn es jetzt...

Carl Friedrich

Genau, das ist schon noch wichtig, dass es

Carl Friedrich

dass es jetzt halt quasi von den

Carl Friedrich

C-Python-Entwicklern halt mit

Carl Friedrich

versorgt wird. Ich habe jetzt nochmal nachgeschaut, was genau

Carl Friedrich

die Tires bedeuten. Also Tire 1

Carl Friedrich

ist halt das richtig gute Zeug, also so

Carl Friedrich

macOS, Windows,

Carl Friedrich

Linux.

Carl Friedrich

Tire 2 braucht man halt irgendwie

Carl Friedrich

Buildbots und mindestens zwei

Carl Friedrich

C-Python-Core-Developer, die

Carl Friedrich

eben die Plattform unterstützen

Carl Friedrich

und wenn es da

Carl Friedrich

Buildbot-Failures gibt, dann

Carl Friedrich

werden C-Python-Releases dadurch

Carl Friedrich

blockiert. Und Tire 3

Carl Friedrich

heißt eben

Carl Friedrich

BuildBot einen Core-Entwickler,

Carl Friedrich

aber wenn es da

Carl Friedrich

Bugs gibt, dann kann man trotzdem,

Carl Friedrich

also dann kann C-Python trotzdem released werden.

Carl Friedrich

Also es ist quasi so,

Carl Friedrich

wir geben uns Mühe, aber

Carl Friedrich

wenn jetzt irgendwie

Carl Friedrich

es nur noch irgendwie einen bekannten Bug auf Android

Carl Friedrich

gibt, dann releasen wir halt möglicherweise trotzdem.

Carl Friedrich

Und der

Carl Friedrich

Core-Developer, der für Android und

Carl Friedrich

iOS zuständig ist, ist übrigens Russell

Carl Friedrich

Keith-McNeil, der der

Carl Friedrich

auch Beware schon gemacht hat, der das schon lange

Carl Friedrich

gemacht,

Carl Friedrich

hat es jetzt offenbar eben reingekriegt.

Carl Friedrich

Der diesen tollen Vortrag

Jochen

gehalten hat, irgendwie

Jochen

Black Swan Events für

Jochen

ich weiß gar nicht, wie der Titel von dem Vortrag hat,

Jochen

da ging es halt genau darum, was es könnte,

Jochen

was eigentlich sind die bedrohlichsten Geschichten, die

Jochen

jetzt Python noch zustoßen können

Jochen

und ein Szenario war halt

Jochen

so, ja, was ist, wenn

Jochen

irgendwie künftige Generationen gar nicht

Jochen

mehr vor so riesigen Desktop-Dingern

Jochen

sitzen oder so, ich kann das

Jochen

gar nicht verstehen, ich finde das total toll, aber

Jochen

eher vielleicht auf Tablets oder Telefone gucken

Jochen

und dann einfach ein Vergessenheit gerät, dass

Jochen

es Python überhaupt noch gibt, weil Python gibt es halt

Jochen

nicht auf iOS oder so.

Jochen

Und dagegen sollte man vielleicht

Jochen

was tun. Und dann, ja, jetzt ist halt was

Jochen

passiert und das sieht ja schon ganz gut aus.

Carl Friedrich

Ja, ich habe das bei meinen Studenten. Man muss nach Studenten echt.

Carl Friedrich

Also ich habe halt, also ich mache

Carl Friedrich

eine Python-Einführung für alle, also

Carl Friedrich

da dürfen Informatiker nicht hin.

Carl Friedrich

Und das heißt, ich habe auch Studierende

Carl Friedrich

aus allen Fächern und

Carl Friedrich

jetzt nicht viele,

Carl Friedrich

aber da gibt es halt dann immer wieder Teilnehmende,

Carl Friedrich

die dann halt einfach auch nur ein Tablet

Carl Friedrich

haben. Tier 1?

Carl Friedrich

Ja, also da sind wir noch nicht.

Carl Friedrich

Wir haben kein Tier 1 Gerät, genau.

Carl Friedrich

Und Jupiter Notebook

Carl Friedrich

haben wir. Wir haben dann halt entweder die Möglichkeit,

Carl Friedrich

das irgendwie über Google Call-Up zu machen,

Carl Friedrich

also ich mache alles mit Jupiter Notebooks, aber das ist halt dann immer

Carl Friedrich

so ein bisschen nervig mit die Input-Dateien

Carl Friedrich

hochladen und so Zeug.

Carl Friedrich

Und dann können die sich ins Rechenzentrum setzen,

Carl Friedrich

da hast du es auch installiert, aber das ist natürlich auch total nervig,

Carl Friedrich

du musst immer deine Übungsaufgaben da machen.

Carl Friedrich

Und so einen richtig,

Carl Friedrich

also richtig guten Jupiter Support

Carl Friedrich

auf so einem

Carl Friedrich

iPad gibt es halt einfach auch noch nicht.

Carl Friedrich

Das ist schon einfach

Carl Friedrich

im Vergleich zu installiert

Carl Friedrich

an der Conda, dann ist alles in Ordnung, ist es halt schon einfach

Carl Friedrich

sehr frickelig.

Carl Friedrich

Ich muss

Johannes

noch dazu sagen, nicht, dass wir jetzt hier Personen

Johannes

übergehen, es gibt noch zweite

Johannes

Maintainer für diese Plattform, neben Russell

Johannes

Keith-McGee. Für Android

Johannes

gibt es noch den Peter Victorin

Johannes

oder Peter Victorin

Johannes

oder wie auch immer man das aussprechen mag.

Johannes

Einer von den drei,

Johannes

mir verzeihen, die Wille auf Besuch.

Johannes

Es gibt es noch den

Dominik

NetDaily. Also wieder so eine tolle Name-Calling

Dominik

gemacht, da muss ich ja nochmal kurz zum Sammelkartenspiel

Dominik

zurückkommen, was er sich kurz angekündigt hat.

Dominik

Weil ich ja auf

Dominik

dem Talk von

Dominik

Lukas Langa, der ja

Dominik

in diesem tollen Rappel irgendwie dann ein

Dominik

kurzes Befehlchen eingeben konnte,

Dominik

um das Bild von, ich dachte,

Dominik

es wäre John Romero gewesen, was

Dominik

eigentlich Pablo Cardenas Agato war.

Dominik

Und dann hatten wir kurz dieses Thema

Dominik

und ich finde das eigentlich eine coole Idee, dass man demnächst

Dominik

auf den Pycons so

Dominik

Sammelkartenspiele. Wir bringen die erste

Dominik

Edition mit, dann machen wir den Python-Podcast

Dominik

das dann Team an.

Dominik

Ich finde, die

Johannes

sollten das selbst verteilen und

Johannes

nur die Leute, die bei den Vorträgen waren,

Johannes

kriegen auch so eine Karte. Also ich glaube,

Carl Friedrich

man kann die verkaufen. Also ich vermute,

Carl Friedrich

dass das wirklich die Art und Weise ist, wie man

Carl Friedrich

endlich mal gutes Funding für 10 Seiten findet.

Carl Friedrich

Ja, dann liebe

Carl Friedrich

Zuhörer, schreibt uns, ob das die Wahrheit ist

Carl Friedrich

und dann müssen wir das wohl machen. Damals als

Dominik

NFTs. Irgendwann gab es ja auch so Sachen, die dann diese

Dominik

Bilder dann gemacht haben und das dann als NFT.

Jochen

Ja, aber das mit den NFTs

Jochen

ist immer noch die Zukunft.

Jochen

Ich weiß nicht.

Carl Friedrich

Der einzige Vorteil von AI ist, dass die die NFTs

Carl Friedrich

verdrängt haben.

Carl Friedrich

Für einen ganz

Carl Friedrich

kurzen Moment waren Grafikkarten wieder billig

Carl Friedrich

und dann hat die AI

Carl Friedrich

zugeschlagen.

Carl Friedrich

Tja.

Johannes

Okay, also es gibt zwei neue

Johannes

Plattformen, Android und iOS und

Johannes

das ist eine großartige Sache, finde ich.

Carl Friedrich

Und WebAssembly.

Johannes

Und WebAssembly, ja genau, WebAssembly ist quasi

Jochen

aufgestiegen von M-Skripten

Jochen

zu WASI.

Jochen

Wir müssen noch

Jochen

über den anderen JIT reden.

Jochen

Es gibt nämlich

Carl Friedrich

zwei JITs in 3.13 und der eine ist

Carl Friedrich

der coole, der quasi das irgendwann mal schneller machen soll,

Carl Friedrich

der aber quasi standardmäßig gar nicht

Carl Friedrich

eingebaut ist und dann gibt es aber den

Carl Friedrich

anderen, der quasi standardmäßig eingebaut ist,

Carl Friedrich

aber für einen ganz anderen Zweck und

Carl Friedrich

ich glaube in einer der

Carl Friedrich

Core.py folgen, ist Pablo Galeno

Carl Friedrich

Sagado, über den wir gerade auch schon geredet haben, sehr stolz

Carl Friedrich

drauf, dass er quasi den ersten

Carl Friedrich

C-Python-Jit gemerged hat und geschrieben hat.

Carl Friedrich

Und das ist nämlich der Jit, der benutzt wird, um

Carl Friedrich

besseres

Carl Friedrich

Profiling machen zu können.

Carl Friedrich

Und

Carl Friedrich

das funktioniert mit dem Linux Perf

Carl Friedrich

Profiler. Und das Problem,

Carl Friedrich

wenn man jetzt so ein, also der Perf Profiler

Carl Friedrich

ist eigentlich so ein Profiler für

Carl Friedrich

C. Also man kann halt sehen, was macht

Carl Friedrich

der Kernel, was macht der Linux Kernel oder was machen eben auch

Carl Friedrich

die C-Programme, die im User-Space laufen

Carl Friedrich

und man kann eben sehen, die und die

Carl Friedrich

C-Funktionen werden jetzt gerade so und so oft

Carl Friedrich

ausgeführt. Das ist so ein Sampling-Profiler, also

Carl Friedrich

der Profiling-Aufhalt ist sehr gering.

Carl Friedrich

Das Problem ist jetzt aber, dass wenn man

Carl Friedrich

quasi Python-Programme profilt,

Carl Friedrich

dann sieht man natürlich jetzt gar nicht, welche

Carl Friedrich

Python-Funktionen wie viel Zeit verbrauchen, sondern

Carl Friedrich

man sieht dann die ganze Zeit

Carl Friedrich

nur, dass halt irgendwelche Interpreter-Funktionen

Carl Friedrich

ausgeführt werden. Und da

Carl Friedrich

gibt es jetzt eben dieses neue Feature, den

Carl Friedrich

PerfJit. Und da ist die Idee,

Carl Friedrich

dass man so eine ganz, ganz kleine, irgendwie ein paar

Carl Friedrich

wenige Maschinencode-Instruktionen

Carl Friedrich

lange Funktionen generiert

Carl Friedrich

zur Laufzeit

Carl Friedrich

und für jede Python-Funktion eben genau

Carl Friedrich

eine so eine Funktion. Und das hat

Carl Friedrich

den Vorteil, dass Perf eben die ganzen Python-Funktionen

Carl Friedrich

voneinander unterscheiden kann. Wenn man eben

Carl Friedrich

nicht nur eine interpretierige

Carl Friedrich

Python-Code-Funktion

Carl Friedrich

dann sieht in Perf,

Carl Friedrich

sondern man sieht dann eben diese neu generierten

Carl Friedrich

Mini-Funktionen. Und dann

Carl Friedrich

gibt es irgendwie so einen Rückübersetzungsschritt,

Carl Friedrich

wo man dann eben sagen kann, okay,

Carl Friedrich

diese neue, neu generierte Assembly-Funktion

Carl Friedrich

an Adresse sowieso, die entspricht

Carl Friedrich

eben der Python-Funktion

Carl Friedrich

f, wie auch immer.

Carl Friedrich

Und so kann man dann eben mit

Carl Friedrich

Perf sehen, in welcher Python-Funktion man

Carl Friedrich

lange Zeit verbraucht hat.

Carl Friedrich

Das hört sich nach einem

Carl Friedrich

sehr umständlichen Weg an.

Carl Friedrich

Es ist erstaunlich umständlich, aber Profiling

Carl Friedrich

ist auch echt einfach ultra kompliziert.

Carl Friedrich

Ja, gut, klar.

Carl Friedrich

Also es gibt

Carl Friedrich

ja irgendwie so

Carl Friedrich

irgendwie eine große Sammlung

Carl Friedrich

an Profilern für Python und für andere Sprachen, aber

Carl Friedrich

C-Profile hat halt einfach

Carl Friedrich

einen riesen Overhead. Dann gibt es verschiedene

Carl Friedrich

Sampling-Profiler für Python. Wie heißt dieser?

Carl Friedrich

PySpy oder so? Der funktioniert, glaube ich,

Carl Friedrich

ziemlich gut. Habt ihr den mal benutzt?

Carl Friedrich

Nee, ich weiß

Jochen

gar nicht. Ich hab wieder vergessen, was ich

Jochen

hab mal irgendwas benutzt.

Jochen

Gibt es einen, der Hotspot heißt?

Carl Friedrich

Aber Hotspot ist, glaube ich, eine UI nur, oder?

Carl Friedrich

Wo da die Samples herkommen, weiß ich nicht so genau.

Carl Friedrich

Ja, und dann gibt es also

Carl Friedrich

unseren quasi, WMProf, der ist aber nicht mehr so richtig

Carl Friedrich

maintained. Also auf Piper schon, aber

Carl Friedrich

C-Python nicht so richtig. Ist auch Sampling.

Carl Friedrich

Also Sampling heißt halt, dass man quasi

Carl Friedrich

nicht jeden Funktionsaufruf mitschreibt, was halt

Carl Friedrich

sehr, sehr hohen Overhead hat, sondern

Carl Friedrich

einfach nur so tausendmal pro Sekunde halt guckt,

Carl Friedrich

welche Funktionen gerade auf dem Stack sind.

Carl Friedrich

Und dann sagt, so statistisch gesehen,

Carl Friedrich

sind das die Funktionen halt, die dann viel Zeit brauchen.

Carl Friedrich

Und

Carl Friedrich

Perf ist halt auch so einer. Und der Vorteil von diesem

Carl Friedrich

Sampling-Ansatz ist, dass man den Profiling-Overhead

Carl Friedrich

eben beliebig klein machen kann.

Carl Friedrich

Man kann halt die Anzahl der Samples immer kleiner machen.

Carl Friedrich

Und wenn es dann nur noch 10 Samples sind, dann ist es halt quasi genauso schnell, wie es vorher auch war. Man hat aber auch schlechtere Informationen dann sozusagen. Also man kann dann quasi die Abwägung zwischen Genauigkeit der Informationen, die man hat und Overhead beliebig ausbalancieren.

Carl Friedrich

Und Perf funktioniert halt sehr gut, wenn man da gute Informationen darüber kriegt, was auf dem C-Level funktioniert. Aber die Informationen, welche Python-Funktion da jetzt gerade involviert ist, die geht halt verloren. Und die kann man dann eben wieder zurückkriegen mit diesem neuen Perf-Integration-Feature, das jetzt in 3.13 released wurde. Aber ist auf jeden Fall frickelig.

Carl Friedrich

Also ich glaube auf Mac ist es ja auch total schwierig, weil man braucht halt so ausführbare Blöcke von Maschinencode und Apple hat da halt auch einiges an Security Features. Man muss dann quasi sicherstellen, dass man so einen Codeblock eben so hin und her wechselt zwischen ich kann den Codeblock schreiben und ich kann ihn ausführen.

Carl Friedrich

Also man kann nie gleichzeitig schreibbar und ausführbar haben, um eben so Security-Exploits unwahrscheinlicher zu machen. Und bis man das ganz genau richtig hingekriegt hat, das ist tricky. Wobei Perf ist eigentlich nur ein Linux-Projekt. Insofern habe ich, glaube ich, gerade Quatsch gesagt.

Jochen

Ach so, das gehört. Ja, ich will

Jochen

mit MacOS, ich glaube, im letzten

Jochen

Copy-by-Episode war auch irgendwie

Jochen

drin, dass der

Jochen

Memory-Profiler, Memory, den Pablo

Jochen

gerade geschrieben hat, der

Jochen

hat auf MacOS nicht funktioniert,

Jochen

weil

Jochen

irgendwie sie

Jochen

die malloc-Funktion irgendwie, also

Jochen

nicht die...

Jochen

Von einer

Jochen

Mac-Version zur nächsten.

Jochen

Kann man auch schon mal machen.

Jochen

Warum nicht?

Carl Friedrich

Ja, ich finde es cool, dass es Leute gibt, die sich dann

Carl Friedrich

wirklich mit den Linkern auf allen Plattformen rumschlagen,

Carl Friedrich

um dieses Problem zu lösen.

Carl Friedrich

Ja.

Carl Friedrich

Ja, ja, Profiling, tja.

Carl Friedrich

Das ist... Wenn das so low-level ist,

Dominik

sinkt dann eigentlich der Tier, ist dann Tier 0, oder?

Dominik

Sorry.

Dominik

Couldn't resist.

Dominik

Es ist interessant.

Dominik

Aber was ist denn das nächste

Dominik

Thema auf unserer Liste?

Jochen

Ja, na gut.

Jochen

Dann, was jetzt auch drin ist,

Jochen

das wurde auch viel diskutiert,

Jochen

ist halt, ja, es nennt sich jetzt

Jochen

Free Threading früher, No-Gill irgendwie,

Jochen

dass man halt

Jochen

optional den Gill

Jochen

ausschalten kann, ist auch eine,

Jochen

muss man Compiler-Flex setzen und dann

Jochen

neu kompilieren oder halt sich ein entsprechendes

Jochen

Binary halt via was auch immer, wie man

Jochen

halt so Python installiert, halt

Jochen

das damit installieren und dann

Jochen

kann man das benutzen.

Jochen

Tja, also... Was macht das denn überhaupt,

Jochen

der Gill?

Jochen

Oh!

Jochen

Ja, es sorgt eigentlich im Grunde dafür, dass halt der, dass immer nur, dass Python immer nur auf einer CPU läuft, wenn ich das jetzt mal ganz.

Jochen

Aber das ist ja noch eine Auswirkung, das ist ja nicht das, was dem macht.

Jochen

Ne, ich glaube, das ist tatsächlich das, was.

Johannes

Und es stimmt auch nicht, er kann auf vielen CPUs laufen, nur halt immer nur auf einer gleichzeitig.

Jochen

Ja, immer nur auf einer gleichzeitig, genau, das meinte ich.

Johannes

Aber das ist ja nur eine Auswirkung, das ist ja nicht der Grund,

Jochen

warum man das macht. Der Grund, warum man das macht, ist, dass

Jochen

viele Operationen,

Jochen

gerade was Memory Management angeht,

Jochen

man dadurch

Jochen

halt nicht, da muss man halt nicht locken,

Jochen

was man ansonsten halt müsste, weil

Jochen

wenn man den Reference Counter von irgendeiner

Jochen

Datenstruktur erhöht, oder

Carl Friedrich

Also ganz allgemein, die ganzen

Carl Friedrich

Datenstrukturen sind halt erstmal nicht

Carl Friedrich

Threadsafe.

Carl Friedrich

Und das bedeutet, dass wenn man

Johannes

die von mehreren Threads aus benutzt,

Johannes

wird alles kaputt, dass die dann kaputt gehen können.

Jochen

Um das zu verhindern, müsste man halt locken

Jochen

und wenn man lockt, dann wird alles so langsam,

Jochen

dass man keinen Vorteil

Jochen

mehr davon hat, dass man mehr

Jochen

CPUs hat. Also ich glaube,

Jochen

die ersten Versuche, das war

Jochen

das Projekt hieß irgendwie

Jochen

Gilectomy oder so.

Jochen

Es gibt noch ein älteres.

Carl Friedrich

Also so alle paar Jahre kommt mal jemand

Carl Friedrich

und schaut ein Versuch aus.

Dominik

Doch, bei 1.1 wieder nicht genau aufgepasst.

Carl Friedrich

Ja, genau. Also es war wirklich so

Carl Friedrich

1.6 oder irgendwie so was ganz frühes, wo das dann

Jochen

kann gut sein, aber da war das

Jochen

auch, also an den Versuch erinnere ich mich noch

Jochen

und da war es halt so, dass wenn man das einfach nur

Jochen

versucht hat zu locken und auch nicht

Jochen

irgendwie was kompliziertes gemacht hat, sondern

Jochen

einfach mal probiert hat, es nicht ganz so langsam hinzukriegen,

Jochen

dann war irgendwie

Jochen

Performance war so Faktor 40

Jochen

weniger und

Jochen

ja, dann hat man es auch

Jochen

Single Performance, genau.

Jochen

Und dann hat man es runtergekriegt mit Tricks auf

Jochen

20, Faktor 20

Jochen

irgendwie schlechter, aber das ist halt immer weit

Jochen

entfernt von. Irgendwie

Jochen

man will das verwenden, weil wenn das

Jochen

so eine Auswirkung hat, dann lohnt sich

Dominik

das eher nicht. Aber was macht man denn dann mit den ganzen

Dominik

Objekten, die da irgendwo rumliegen? Wie holt man die denn dann weg?

Dominik

Wie meinst du?

Dominik

Wenn man nicht mehr braucht.

Dominik

Du meinst Garbage Collector?

Jochen

Ja. Gut, das ist nochmal ein anderes...

Jochen

Der weiß ich gar nicht, ob der irgendwie...

Dominik

Aber der Reference Count ist ja dafür da, oder?

Dominik

Dass man das wieder wegräumen kann, wenn es auf null fällt.

Carl Friedrich

Also an dem Garbage Collector hatten die quasi bei diesen

Carl Friedrich

Gilectomy und so Versuchen auch nichts geändert.

Carl Friedrich

was sie gemacht haben, ist jedem Objekt einen Log zu geben

Carl Friedrich

und immer wenn ein Threat mit dem

Carl Friedrich

Objekt eben interagieren will, insbesondere

Carl Friedrich

wenn eben der Reference Count

Carl Friedrich

verändert wird, musst du halt dir erstmal

Carl Friedrich

das Log holen für das Objekt.

Carl Friedrich

Und weil halt

Carl Friedrich

ständig, um irgendeine Operation mit

Carl Friedrich

dem Objekt machen zu können, du halt ständig an dem Reference Count

Carl Friedrich

rumoperierst,

Carl Friedrich

ja, musst du halt ständig auf das Log

Carl Friedrich

warten und das hat halt

Carl Friedrich

die bisherigen Versuche, den

Carl Friedrich

Guild zu entfernen, einfach sehr, sehr teuer gemacht.

Carl Friedrich

Also die Single-Thread-Performance eben komplett ruiniert.

Dominik

Und jetzt kann es doch dann eigentlich sein,

Dominik

dass so ein Objekt dann einfach weggeräumt wird,

Dominik

obwohl es noch gebraucht wird?

Dominik

Jetzt wird es super kompliziert.

Carl Friedrich

Also wir haben jetzt, genau, es gibt ein Guild,

Carl Friedrich

der verhindert, dass mehr als ein Thread Python-Core ausführen kann.

Carl Friedrich

Also gleichzeitig auf einem Core.

Carl Friedrich

Jetzt kommt eben der nächste Versuch

Carl Friedrich

Und das ist von Sam Gross bei Meta über viele Jahre lang eben probiert worden und der hat einige sehr clevere neue Ideen da reingebracht, um zu versuchen eben die Verlangsamung für Single-Thread-Performance, soweit es geht, zu minimieren.

Carl Friedrich

Und da gibt es eben so eine ganze Bandbreite an Optimierungen, womit er dann eben versucht, genau diese Probleme in den Griff zu kriegen. Und eine davon ist eben die Beobachtung, dass die allermeisten Objekte, die werden halt trotzdem nur von einem Thread benutzt.

Carl Friedrich

Also wenn ich halt eine Funktion habe, die

Carl Friedrich

irgendwie eine Liste erstellt und da was rein

Carl Friedrich

appendet und so weiter, selbst wenn

Carl Friedrich

auf ganz vielen anderen Threads halt noch Sachen laufen,

Carl Friedrich

kommt halt kein anderer Thread

Carl Friedrich

erstmal standardmäßig an diese Liste ran.

Carl Friedrich

Das heißt, die erste Optimierung ist zu sagen,

Carl Friedrich

für die ganzen lokalen

Carl Friedrich

Objekte, die ich also nur von einem Thread

Carl Friedrich

überhaupt jemals anfasse,

Carl Friedrich

muss ich für das

Carl Friedrich

Updaten der Reference Counts eben nicht locken.

Carl Friedrich

Also das ist quasi

Carl Friedrich

so die wichtigste Optimierung.

Carl Friedrich

Genau, das heißt

Carl Friedrich

Biased Reference Counting, weil quasi

Carl Friedrich

dafür gesorgt wird, dass man eben

Carl Friedrich

nicht gesharete Objekte,

Carl Friedrich

die nur von einem Thread

Carl Friedrich

eben erreichbar sind,

Carl Friedrich

dass man da eben das Locking quasi

Carl Friedrich

sein lassen kann.

Carl Friedrich

Jetzt gibt es aber natürlich

Carl Friedrich

eine ganze andere Klasse an Objekten,

Carl Friedrich

die werden halt von ganz vielen

Carl Friedrich

verschiedenen Threads angefasst, also halt

Carl Friedrich

alles, was die ganzen Build-ins, also

Carl Friedrich

None,

Carl Friedrich

die ganzen Typen und dafür gibt es

Carl Friedrich

dann also wieder einen ganz anderen Ansatz. Und da ist nämlich

Carl Friedrich

die Idee, dass man da halt sagt,

Carl Friedrich

diese Objekte, die können eh nicht sterben.

Carl Friedrich

Also sowas wie NAN.

Dominik

Warum nicht wegräumen? NAN gibt es halt einfach

Carl Friedrich

immer und das gilt

Carl Friedrich

halt für ganz, ganz viele andere Arten von

Carl Friedrich

Objekten auch. Die meisten Typen gibt es halt immer

Carl Friedrich

und die werden dann so

Carl Friedrich

unsterblich gemacht.

Carl Friedrich

Ist das dann ein Singleton?

Carl Friedrich

Also NAN ist auch ein Singleton,

Carl Friedrich

ja, aber das ist nicht das einzige

Carl Friedrich

Kriterium. Man kann sich schon noch vorstellen, dass es Singletons gibt,

Carl Friedrich

die halt vielleicht auch sterben könnten.

Carl Friedrich

aber, also die man vielleicht wegräumen will, aber

Carl Friedrich

es gibt

Carl Friedrich

also die ganzen eingebauten Sachen, die

Carl Friedrich

werden einfach nie, also die

Carl Friedrich

werden halt nie garbage collected und deswegen kann man

Carl Friedrich

da eben auch sagen, da kriegt jetzt der Reference Count

Carl Friedrich

irgendwie so einen speziellen Flag und

Carl Friedrich

dann erhöht und senkt

Carl Friedrich

man den Reference Count eben auch nicht.

Carl Friedrich

Und das, dann muss man die auch wieder nicht

Carl Friedrich

locken, also.

Carl Friedrich

Und dann gibt es noch den dritten Ansatz

Carl Friedrich

und das ist das sogenannte Deferred Reference Counting

Carl Friedrich

und da verstehe ich die ganzen Details auch nicht komplett,

Carl Friedrich

aber da ist eben die Idee, dass man

Carl Friedrich

eben das Erhöhen und

Carl Friedrich

Senken des Reference-Counts nicht mehr

Carl Friedrich

die ganze Zeit up-to-date macht,

Carl Friedrich

um

Carl Friedrich

eben zu, also da geht es um

Carl Friedrich

Objekte, die so dazwischen sind, also die von einem

Carl Friedrich

mehr als einem Thread erreicht werden können.

Dominik

Also man erhöht, aber man

Dominik

reduziert das nicht oder beides nicht?

Dominik

Ich glaube beides

Carl Friedrich

nicht, also und dann

Carl Friedrich

das sorgt aber dafür, dass wenn der Reference-Count null wird,

Carl Friedrich

dann kann man die auch nicht sofort einsammeln, sondern

Carl Friedrich

da muss man eben warten und dann

Carl Friedrich

warten, bis alle Threads zu irgendeinem

Carl Friedrich

wohldefinierten Punkt kommen und dann kann man schauen,

Carl Friedrich

ob es nicht noch irgendwelche References

Carl Friedrich

in den Stackframes gibt oder so,

Carl Friedrich

die dann noch dazugezählt werden müssen.

Carl Friedrich

Deswegen eben Deferred. Und nur

Carl Friedrich

wenn man da dann eben überall nachgeschaut hat und

Carl Friedrich

feststellt, oh okay, das Objekt, das ist

Carl Friedrich

jetzt wirklich auch von keinem Frame-Objekt mehr

Carl Friedrich

erreichbar, dann kann ich das wirklich wegräumen.

Carl Friedrich

Und das hat auch komplizierte

Carl Friedrich

Interaktionen mit dem

Carl Friedrich

Memory Allocator,

Carl Friedrich

Da wechselt nämlich die Free-Threading-Version

Carl Friedrich

auch zu Mimalog.

Carl Friedrich

Das ist so ein von Microsoft geschriebener C-Memory-Allocator,

Carl Friedrich

der eben auch besonders gut mit Multi-Threading interagiert.

Carl Friedrich

Und da wird auf eine für mich noch nicht ganz verständliche Art und Weise

Carl Friedrich

eben mit besonderen Mimalog-Features dann erreicht,

Carl Friedrich

dass genau das Richtige passiert.

Carl Friedrich

Dass genau das Richtige passiert, das ist immer toll.

Carl Friedrich

Ja, das ist auch ...

Johannes

Ja, aber das hört sich jetzt so ein bisschen an wie so Eventual Consistency für den Reference-Counter.

Johannes

Ja, ich glaube, das ist genau.

Johannes

Weil im Endeffekt ist die Zahl, die in dem Reference-Counter drinsteht, ja auch nur dann wichtig, wenn es eine Null ist.

Carl Friedrich

Also Vorbemerkung ist, das gilt alles nur für Objekte, die eben von mehr als einem Thread erreicht werden können.

Carl Friedrich

Ja, okay, klar.

Carl Friedrich

Genau, aber für die hast du absolut recht, da ist eben da eine Zahl drin, die nicht unbedingt wirklich alle References von allen Threads dann widerspiegelt.

Carl Friedrich

Und um das Objekt dann wirklich wegräumen zu können, muss man halt nochmal nachschauen, ob das wirklich alles so gestimmt hat.

Johannes

Genau, aber für mich der Knackpunkt an dem, dass das überhaupt funktionieren kann, ist, dass die Zahl, die tatsächlich in dem Reference Count drinsteht, die meiste Zeit ja uninteressant ist.

Johannes

Solange die Zahl größer als 0 ist, ist der exakte Wert nicht wichtig, sondern es wird erst dann wichtig, wenn der exakte Wert 0 erreicht.

Dominik

Also so ein bisschen so, als wenn du die Box aufmachst und guckst, ob die Katze noch lebt.

Johannes

Ja, aber du musst sie ja nur aufmachen, wenn du es wirklich wissen willst.

Johannes

Solange es dich nicht interessiert, ob die Katze noch lebt, kannst du außen den Schalter drücken oder nicht drücken, so viel du willst.

Johannes

Und ich glaube, das ist für mich in meinem Kopf so ein bisschen der Kern an der Sache, warum das überhaupt funktionieren kann.

Johannes

Weil wir nur zu sehr wenigen Zeitpunkten wirklich den exakten Wert wissen müssen, weil wir nur zu wenigen Zeitpunkten wirklich draufschauen müssen und sagen müssen, okay, jetzt muss ich wissen, ob die Zahl wirklich null ist oder nicht.

Carl Friedrich

Ich glaube, Eventual Consistency ist auf jeden Fall ein super Gedankenmodell, weil, also Eventual Consistency wird ja auch quasi aus den gleichen Gründen eingeführt. Also natürlich kann ich, will ich, eigentlich ist es besser, wenn meine Information halt die ganze Zeit konsistent ist.

Carl Friedrich

Aber das hat halt im Datenbankbereich

Carl Friedrich

dann auch entsprechende Nachteile, Performance-Nachteile.

Carl Friedrich

Ja, und gerade in verteilten

Carl Friedrich

Datenbanken. Genau.

Carl Friedrich

Und quasi aus den gleichen

Carl Friedrich

Gründen führe ich halt quasi

Carl Friedrich

im Field, also auf einem ganz anderen

Carl Friedrich

Maßstab natürlich, aber werden die

Carl Friedrich

Deferred Reference Counts verwendet.

Carl Friedrich

Ja, cool. Super coole Sache.

Carl Friedrich

Ja, genau.

Carl Friedrich

Aber es ist halt, wie gesagt, auch bisher noch

Carl Friedrich

experimentell

Carl Friedrich

und standardmäßig nicht eingebaut. Da gibt es auch noch

Carl Friedrich

so ein paar Nachteile. Die Single Thread Performance ist

Carl Friedrich

auch quasi in der

Carl Friedrich

Free-Threading-Version schlechter im Moment.

Carl Friedrich

Ich glaube vor allem, weil sie im Moment eben noch

Carl Friedrich

dieses Bytecode-Rewriting,

Carl Friedrich

wo wir vorhin in der JIT-Sektion drüber gesprochen haben,

Carl Friedrich

noch abschalten müssen.

Carl Friedrich

Eben aus dem Grund, dass wenn ich quasi mehr

Carl Friedrich

als einen Thread habe,

Carl Friedrich

der die gleiche Python-Version ausführt

Carl Friedrich

und alle wollen jetzt den Bytecode umschreiben,

Carl Friedrich

dann habe ich da eben auch wieder

Carl Friedrich

quasi

Carl Friedrich

Mutationen derselben Datenstruktur

Carl Friedrich

von einem Thread und das will ich nicht immer locken

Carl Friedrich

und deswegen haben sie das bisher einfach

Carl Friedrich

abgeschaltet in der Free-Threading-Version

Carl Friedrich

und das sorgt dann eben für

Carl Friedrich

weiß ich nicht, 10%, 20%

Carl Friedrich

Verschlechterung der

Carl Friedrich

Single-Threading-Performance.

Carl Friedrich

Oder

Carl Friedrich

es gibt eben, ein anderes Problem ist, dass es

Carl Friedrich

gibt eben einfach ganz, ganz viel Python-Code, der

Carl Friedrich

so in der Welt ist, in irgendwelchen Bibliotheken,

Carl Friedrich

der einfach nicht Thread-Safe ist.

Carl Friedrich

Bisher konnte man sich halt so ein bisschen immer

Carl Friedrich

so durchmogeln

Carl Friedrich

mit der Tatsache, dass meistens ist man

Carl Friedrich

halt vom Gill geschützt und

Carl Friedrich

so viel Multithreaded-Python-Code

Carl Friedrich

gibt es halt auch oft nicht und

Carl Friedrich

deswegen finden wir jetzt

Carl Friedrich

wahrscheinlich die nächsten zehn Jahre

Carl Friedrich

Locking-Bugs in allen

Carl Friedrich

PyPI-Bibliotheken.

Carl Friedrich

Und für die C-Extensions

Carl Friedrich

gilt das natürlich erst recht.

Johannes

Ja, aber die C-Extensions hatten ja vorher schon

Johannes

die Möglichkeit, den GIL

Johannes

freizugeben, also NumPy zum Beispiel.

Johannes

Ja, sobald ich quasi was

Carl Friedrich

mache, was dann wirklich

Carl Friedrich

weit weg von jedem

Carl Friedrich

Python-Objekt.

Carl Friedrich

Genau, was aus dem

Johannes

Python-Memory-Management rausgeht.

Johannes

Da kannst du schon mit deinem Fuß

Johannes

deinen Sprecher kaputt hauen.

Johannes

Ja gut, okay, Footguns.

Johannes

Also genau, die große

Carl Friedrich

Mathematik-Multiplikation, die NumPy macht,

Carl Friedrich

die hat halt mit Python nichts mehr zu tun.

Carl Friedrich

Und die konnte halt dann auch schon

Carl Friedrich

auf dem extra Core dann

Carl Friedrich

den Lüfter heiß laufen lassen.

Carl Friedrich

Aber genau.

Carl Friedrich

Ja, das sind die

Carl Friedrich

wenigsten Operationen, das ist mir schon klar.

Johannes

Die prinzipielle Möglichkeit gab es vorher schon.

Johannes

Wenn ich mein eigenes Memory Management

Johannes

mache, brauche ich auch, bin ich nicht auf den Gelenk.

Jochen

Ja, aber da hat man sich dann ja auch wahrscheinlich

Jochen

dann schon Gedanken drüber gemacht, wie man das dann tut,

Jochen

ohne dass es kaputt geht. Oder wenn man

Jochen

es falsch gemacht hätte, wäre es schon aufgefallen.

Jochen

Aber ganz viel von dem, wo man sich keine Gedanken

Jochen

gemacht hat, das wird dann jetzt wahrscheinlich irgendwann

Jochen

auffallen, dass das nicht ganz richtig war.

Jochen

Das ist auch in der Standardbibliothek.

Jochen

Da gibt es einfach ganz viele solche Stellen.

Carl Friedrich

Wir hatten heute so ein Bug-Report.

Carl Friedrich

Es gibt das Line-Cache-Modul.

Carl Friedrich

Das kennt keiner, weil man das quasi selber nie benutzt.

Carl Friedrich

ist quasi dafür da, dass wenn ich Tracebacks

Carl Friedrich

kriege, dass die Source-Code-Zeilen

Carl Friedrich

halt quasi aus den Python-Dateien

Carl Friedrich

geladen werden zum Anzeigen. Und das wird

Carl Friedrich

gecached, damit ich nicht jedes Mal die Dateien eröffnen muss.

Carl Friedrich

Und wenn ich jetzt aber

Carl Friedrich

quasi Python-Code zu Laufzeigen erzeuge, mit

Carl Friedrich

exec oder so, dann kann ich quasi auch

Carl Friedrich

da dann in den Line-Cache

Carl Friedrich

so Sachen reinschreiben. Und die

Carl Friedrich

will ich aber vielleicht auch wieder löschen, damit

Carl Friedrich

eben der Cache nicht mehr und mehr Speicher

Carl Friedrich

verwendet. Und dann hatten wir einen Bug von

Carl Friedrich

SymPy oder so, die schreiben da eben so

Carl Friedrich

Sachen in den Line-Cache rein und löschen die dann auch wieder.

Carl Friedrich

und dann stellt sich halt raus, dass der Line-Cache

Carl Friedrich

nicht Thread-Safe ist. Also wenn ich

Carl Friedrich

das quasi von mehreren Threads mache,

Carl Friedrich

dann kriege ich halt irgendwelche komischen Exceptions

Carl Friedrich

von irgendwelchen internen Line-Cache

Carl Friedrich

Funktionen, von denen ich noch nie gehört habe

Carl Friedrich

und ja,

Carl Friedrich

also wenn, klar

Carl Friedrich

das ist jetzt alles schon extra ultra

Carl Friedrich

speziell, aber so Stellen wird es

Carl Friedrich

halt in der Standardbibliothek auch noch an

Carl Friedrich

anderen Plätzen geben, dass man halt dann

Carl Friedrich

feststellt, oh okay, es gibt hier Python-Code,

Carl Friedrich

da hat halt noch nie jemand drüber nachgedacht,

Carl Friedrich

was passiert eigentlich, wenn ich das auf

Carl Friedrich

vier Threads gleichzeitig ausführen.

Carl Friedrich

Ja, und eigentlich sollte man sich ja auch keine Gedanken,

Carl Friedrich

beziehungsweise es ist ja der

Carl Friedrich

Ansatz, dass man sich keine Gedanken drüber machen soll.

Johannes

Viele andere Sprachen lösen das Problem halt

Johannes

auf eine andere Art und Weise, indem sie sagen,

Johannes

da musst du jetzt halt selber explizit drüber nachdenken.

Johannes

Also

Johannes

man wird da... Das ist ja der Ansatz, dass man es in Python

Carl Friedrich

nicht machen muss. Man wird da in Python schon drüber nachdenken

Carl Friedrich

müssen. Also wenn du halt sowas hast, wie du hast

Carl Friedrich

irgendein globales Dictionary und das wird

Carl Friedrich

jetzt von zwei Threads mutiert und ich habe aber in beiden

Carl Friedrich

eine Iteration darüber,

Carl Friedrich

dann sind halt wahrscheinlich die Invarianten

Carl Friedrich

der Schleife kaputt, egal ob die Datenstruktur

Carl Friedrich

jetzt, also klar, die Datenstruktur

Carl Friedrich

soll nicht kaputt gehen, aber ich kann

Carl Friedrich

ja trotzdem dann plötzlich den Key

Carl Friedrich

verlieren, den ich erwarte, dass da noch

Carl Friedrich

eine Dictionary drin ist.

Carl Friedrich

Ja, auch diese ganzen

Johannes

Probleme, die bei Multithreaded Programming

Johannes

auftreten, also allein,

Johannes

wenn ich irgendeine Variable habe, die ich inkrementieren

Johannes

möchte, dann, da muss

Johannes

ich ja schon irgendwie einen

Johannes

Mechanismus haben, der

Johannes

Multithreading ermöglicht, aber

Johannes

das ist ja nochmal eine ganz andere Ebene.

Carl Friedrich

Ja, ja klar und das ist auch, also solche

Carl Friedrich

Bugs haben wir definitiv auch schon gesehen, also

Carl Friedrich

sowas wie, ja die sind ja auch leicht,

Carl Friedrich

also ich meine, die hat man ja sofort,

Carl Friedrich

ja, also sowas wie self.counter

Carl Friedrich

plus gleich 1, das ist halt nicht

Carl Friedrich

Atomic in

Carl Friedrich

der Free-Threading-Version, ja, also wenn ich

Carl Friedrich

da mehrere Threads habe, die das machen,

Carl Friedrich

dann, ja,

Carl Friedrich

dann könnten halt komische Sachen passieren.

Carl Friedrich

Aber da gab es auch früher schon so,

Johannes

Gab es auch früher schon so Stolperfallen, wo manche Sachen in Python Atomic aussahen und es dann aber irgendwie auch nicht.

Carl Friedrich

Genau, also viele von diesen Bugs, die sind quasi bisher auch schon, das sind jetzt quasi keine Bugs, die nur in Free Threading wirklich vorhanden sind. Das sind quasi latente Bugs, die es schon immer gibt, die auch quasi in der ganz normalen GIL-Version von Python Bugs sind und Crashes verursachen können.

Carl Friedrich

Nur bisher waren die quasi einfach viel unwahrscheinlicher, dass man die wirklich dann auch trifft, diese Bugs. Aber dadurch, dass jetzt eben mehr Leute versuchen werden, mit Multithreading in der Free-Threading-Version Programme dann schneller laufen zu lassen, wird die Wahrscheinlichkeit, dass man diese Bugs halt dann auch quasi in echt sieht, die geht halt hoch.

Carl Friedrich

Das heißt, also ja, ich meine das ernst. Wir werden jetzt wahrscheinlich zehn Jahre lang Bugs in allen Bibliotheken finden, die irgendwas mit Threading zu tun haben.

Johannes

Ja und es gibt ja auch keine so richtigen atomaren Operationen in Python oder keine, denen das ansieht, dass sie atomar sind. Das macht das Reasoning so ein bisschen schwierig.

Carl Friedrich

Absolut. Und das ist ja auch eine der großen Schwierigkeiten des Free-Threading-Projekts, dass sie sich quasi bei allen eingebauten Containern, also wie Listen und Dictionaries und so weiter, jetzt überlegen müssen, welche der Methoden wollen wir eigentlich als atomar verstanden haben und welche halt dann auch nicht.

Carl Friedrich

Das erkennt man nicht.

Carl Friedrich

Ich glaube, das wird dann dokumentiert.

Johannes

Ja gut, klar, das muss man nachlesen, aber ja.

Carl Friedrich

Aber die Entwickler, die quasi Free Threading implementieren,

Carl Friedrich

die müssen sich eben bei jeder Methode Gedanken darüber machen.

Carl Friedrich

Also List Dependent ist halt Atomic,

Carl Friedrich

aber List Extent bin ich mir schon mal nicht mehr so sicher.

Carl Friedrich

Wenn das, was ich dann als Argument von Extent reinreiche,

Carl Friedrich

wenn das selber ein Iterator ist

Carl Friedrich

und da halt dann irgendwie mit einem Generator

Carl Friedrich

Python-Code ausgeführt wird,

Carl Friedrich

dann kann das halt auch eine Weile dauern, bis ich da durch.

Carl Friedrich

bin. Und in der Zwischenzeit können

Carl Friedrich

natürlich andere Threads dann laufen und

Carl Friedrich

irgendwelchen Quatsch produzieren.

Carl Friedrich

Ja, und jetzt machen wir uns

Johannes

auf einmal Gedanken über Transaktionen und über

Johannes

Transaktionsmanagement und das ist dann schon auf

Johannes

Sprachebene was sehr Spezifisches.

Carl Friedrich

Um die Frage zu beantworten, was für

Carl Friedrich

einen atomaren Counter ich benutzen kann, da gibt's

Carl Friedrich

irgendwie

Carl Friedrich

itertools.counter oder so, heißt es glaube ich.

Carl Friedrich

Und das gilt wirklich als,

Carl Friedrich

also das ist die

Carl Friedrich

Thread-Safe-Variante, um einen

Carl Friedrich

atomaren Counter entfalten zu haben.

Carl Friedrich

Also hätte ich jetzt nicht

Carl Friedrich

gewusst. Ich auch nicht, aber

Carl Friedrich

wir hatten halt Bug-Reports, die gesagt haben,

Carl Friedrich

self.x gleich 1 geht halt nicht.

Carl Friedrich

Ja, genau.

Johannes

Ich erinnere mich noch, das habe ich vor Jahren

Johannes

mal diese Meinung

Johannes

vertreten, dass das Global Interpreter

Johannes

Log mich davor schützt, dass ich

Johannes

x plus gleich 1 machen kann, so viel ich will.

Johannes

Und dann haben wir

Johannes

im Chaosdorf

Johannes

an einem Abend das einfach mal ausprobiert

Johannes

und es stellte sich als falsch

Johannes

raus, die Annahme, weil man eben sehr schnell

Johannes

falsche Zahlen rauskriegen kannst.

Johannes

Darf ich kurz fragen?

Johannes

Ja.

Johannes

Das ist selbstverständlich.

Johannes

Was wissen wir hier?

Carl Friedrich

Also das komplette, wie heißt das, Insider Baseball,

Carl Friedrich

also das hat sich geändert in den letzten Python-Versionen,

Carl Friedrich

also in den letzten C-Python-Versionen.

Carl Friedrich

Du hast absolut recht, dass quasi, also ursprünglich war die Regel,

Carl Friedrich

ein Bytecode ist atomar und aber theoretisch kann ich

Carl Friedrich

nach jedem Bytecode eben einen Thread-Switch haben

Carl Friedrich

und sowas wie

Carl Friedrich

das erwähnte Beispiel

Carl Friedrich

X plus gleich 1, das sind eben mehrere

Carl Friedrich

Bytecodes, das heißt, da kann ich dazwischen

Carl Friedrich

ein Threadswitch haben und entsprechend

Carl Friedrich

ist das nicht atomar. In einer

Carl Friedrich

der letzten Versionen,

Carl Friedrich

ich weiß nicht, 3.12 vielleicht oder so,

Carl Friedrich

haben sie quasi

Carl Friedrich

in CPython die Bytecodes,

Carl Friedrich

wo man Threadswitches

Carl Friedrich

machen kann, also in der

Carl Friedrich

regulären GIL-Version,

Carl Friedrich

stark reduziert.

Carl Friedrich

Und es gibt jetzt eben nur noch ganz, ganz wenige

Carl Friedrich

Bytecodes, wo wirklich dann

Carl Friedrich

Switches stattfinden können.

Carl Friedrich

Das sorgt dafür, dass die

Carl Friedrich

quasi beobachtbare...

Carl Friedrich

Atomarität

Carl Friedrich

zunimmt. Das heißt, plötzlich

Carl Friedrich

in 3.12 war dieses Counter-Beispiel

Carl Friedrich

atomar. Und das ist natürlich

Carl Friedrich

total schlecht, weil

Carl Friedrich

wenn man die Community darauf vorbereiten

Carl Friedrich

will, dass jetzt irgendwann mal der Guild entfernt wird

Carl Friedrich

und man quasi mit

Carl Friedrich

Thread-Switches an viel mehr

Carl Friedrich

Stellen rechnen muss,

Carl Friedrich

ist es halt schlecht, wenn man in der Version davor

Carl Friedrich

dafür sorgt,

Carl Friedrich

dass viel weniger Thread-Switches

Carl Friedrich

an viel vorhersagbareren Stellen, nämlich nur

Carl Friedrich

am Ende von der Schleife oder sowas, stattfinden

Carl Friedrich

kann. Also

Carl Friedrich

das finde ich, also ich meine

Carl Friedrich

klar, dieses Reduzieren der

Carl Friedrich

Thread-Switches, das erhöht halt wieder die

Carl Friedrich

Single-Threading-Performance, das war der Grund, warum sie das

Carl Friedrich

gemacht haben, aber ich finde es

Carl Friedrich

halt unstrategisch.

Carl Friedrich

Also ich glaube, wenn du in 3.12 das mit

Carl Friedrich

dem Counter nochmal ausprobieren würdest, dann würdest du,

Carl Friedrich

das wäre es quasi nicht mehr beobachtbar.

Carl Friedrich

Dann mache ich das jetzt mal nicht, zur Sicherheit.

Carl Friedrich

Mach lieber gleich in der

Carl Friedrich

No-Gill-Version.

Carl Friedrich

Ja gut, aber

Carl Friedrich

damit muss es ja gehen.

Carl Friedrich

damit müsstest du es kaputt kriegen, würde ich

Carl Friedrich

hoffen. Ja, gut, kaputt kriegen.

Carl Friedrich

Ja, also.

Johannes

Ich habe jetzt leider keine Node-Gate-Version hier

Johannes

kompiliert, deshalb muss ich leider.

Carl Friedrich

Aber ich glaube, da gibt es auch zum Beispiel so, also es gibt

Carl Friedrich

Packages davon. Ja, ja, also bei

Jochen

UV habe ich jetzt gesehen, gibt es das auf jeden Fall.

Jochen

Ja, bei UV, bei Python

Jochen

inside. Genau. Und in

Jochen

bei Panf.

Carl Friedrich

In Panf weiß ich nicht, aber in Ubuntu,

Carl Friedrich

in dem Dead Snake

Carl Friedrich

PPA gibt es auch.

Jochen

Ja, aber ich meine, also

Jochen

ehrlich gesagt, ich weiß nicht, habt ihr

Jochen

jetzt alle schon einen Anwendungsfall,

Jochen

wo ihr unbedingt das mal ausprobieren

Jochen

wollt, ob dann nicht alles viel schneller wird?

Jochen

Weil ehrlich gesagt, ich habe das

Jochen

dann nicht so

Jochen

wahnsinnig viele Dinge.

Carl Friedrich

Es liegt aber halt vor allem auch daran, dass wir

Carl Friedrich

daran gewöhnt sind, es nicht zu brauchen.

Carl Friedrich

Gut, das kann natürlich sein.

Carl Friedrich

Ich glaube schon, dass es dann

Carl Friedrich

einiges gibt, wo das halt schon

Carl Friedrich

irgendwie auch, klar, man muss dann

Carl Friedrich

sich irgendwie umgewöhnen und vielleicht

Carl Friedrich

gibt es auch ein paar schöne Bibliotheken, die das halt alles

Carl Friedrich

ein bisschen weniger gefährlich machen,

Carl Friedrich

dass man so ein paar schöne Abstraktionen auf jeden Fall

Carl Friedrich

jetzt hat.

Carl Friedrich

Aber ich denke schon, dass wir

Carl Friedrich

an einen Punkt kommen können, wo man dann eben sagen kann,

Carl Friedrich

ja,

Carl Friedrich

also früher hätten wir vielleicht Multiprocessing

Carl Friedrich

genommen und es wäre nervig und

Carl Friedrich

also frickelig gewesen,

Carl Friedrich

das dann gut hinzukriegen und jetzt nehmen wir halt

Carl Friedrich

und es funktioniert gut.

Carl Friedrich

Ja, das

Carl Friedrich

ist halt auch, mit Threads

Carl Friedrich

programmieren ist halt

Johannes

auch was Gefährliches. Da gibt es ja, also ich

Johannes

meine, selbst wenn diese Operationen alle

Johannes

atomar sind und selbst wenn das so ist, dann gibt es ja

Johannes

immer noch diese ganzen Probleme

Johannes

und Deadlocks und

Johannes

Race Conditions und lauter anderes. Und das

Johannes

ist einfach eine schwierige

Johannes

Sache. Ich habe kurz, ich habe eben nachgeguckt,

Johannes

es gibt in PyEnv gibt es eine

Johannes

3.13.0 Version und es gibt eine

Johannes

3.13.0T Version.

Johannes

Und das werden die beiden

Johannes

und der Schädlichen sein.

Johannes

Gut, dann muss ich jetzt Boomer installieren.

Johannes

Genau, und dann muss man ein altes Skript

Johannes

vom Chaosdorf finden.

Johannes

Es war

Johannes

nicht so ein beeindruckendes

Johannes

Testhahn. Es war einfach nur

Johannes

zwei Threads, die eine Variable gleichzeitig

Johannes

erhöht haben. Also das kann man relativ

Johannes

leicht wieder rekonstruieren.

Johannes

Ja, ich sehe das auch so.

Johannes

Ich bin,

Johannes

ich habe so sehr gemischte Gefühle,

Carl Friedrich

was das Free-Threading angeht. Einerseits ist es halt

Carl Friedrich

cool, weil endlich diese endlose Diskussion

Carl Friedrich

aufhören auf der einen Seite und weil halt auch

Carl Friedrich

wirklich jemand mal Geld in die Hand genommen hat und das

Carl Friedrich

richtig gut macht. Also

Carl Friedrich

richtig gut, klar, da kann man dann auch Details

Carl Friedrich

kritisieren, aber die Tatsache, dass jetzt eben

Carl Friedrich

irgendwie einige Leute

Carl Friedrich

von Meta dafür bezahlt werden, das

Carl Friedrich

halt wirklich zu machen und auch

Carl Friedrich

quasi den Aufwand

Carl Friedrich

betreiben, das in C-Python reinzukriegen, was ja

Carl Friedrich

auch wirklich immer viele Diskussionen

Carl Friedrich

und viel Überzeugungsarbeit und viel

Carl Friedrich

Debugging und sehr, sehr viel Aufwand

Carl Friedrich

sind

Carl Friedrich

dafür nötig und ich finde es erstmal gut,

Carl Friedrich

dass das halt jetzt passiert und

Carl Friedrich

dass quasi auch die

Carl Friedrich

Community mitgenommen wird und irgendwie

Carl Friedrich

verschiedene, also es gibt ja

Carl Friedrich

jetzt wirklich auch schon einige an Bibliotheken,

Carl Friedrich

die jetzt mitziehen und gucken, dass sie halt auch

Carl Friedrich

FreeThreading-Versionen dann

Carl Friedrich

Binary auf PyPI releasen

Carl Friedrich

und so weiter. Und das

Carl Friedrich

ist schon wirklich

Carl Friedrich

gut. Klar, auf der anderen Seite sehe ich

Carl Friedrich

das, ich denke

Carl Friedrich

wirklich, das wird

Carl Friedrich

eine Riesenumstellung und das wird schon auch

Carl Friedrich

was die Bugs angeht und was die

Carl Friedrich

Eingewöhnungszeit angeht und

Carl Friedrich

sowohl in den Bibliotheken als auch in der

Carl Friedrich

Sprache selbst.

Carl Friedrich

Ich habe mal so einen, das ist schon ewig her,

Carl Friedrich

aber ich habe mal einen Vortrag gehört von einem

Carl Friedrich

der

Carl Friedrich

Sun JVM JIT-Entwickler,

Carl Friedrich

der auch in einem ganzen Laufzeitsystem

Carl Friedrich

und dem

Carl Friedrich

Multithreaded Garbage Collector

Carl Friedrich

und so gearbeitet hat und der meinte so,

Carl Friedrich

im Garbage Collector findet man halt

Carl Friedrich

zehn Jahre lang Multithreading-Bugs

Carl Friedrich

und die werden halt immer schwieriger

Carl Friedrich

zu finden und

Carl Friedrich

ich weiß halt nicht so genau, ob

Carl Friedrich

wir darauf so richtig gefasst sind.

Carl Friedrich

Also anders.

Carl Friedrich

Ja.

Jochen

Naja gut, hat halt ein bisschen

Jochen

Zeit noch populärer zu werden, dann steigt

Jochen

die Wahrscheinlichkeit, dass man die Bugs findet, das ist doch gut.

Jochen

Dann kann man auch schwierige Bugs finden.

Jochen

Ist jetzt schon auf dem Tyobi-Index

Jochen

ganz oben.

Jochen

Also ich sehe es so ein bisschen,

Jochen

hat ein bisschen eine andere Perspektive. Ich glaube,

Jochen

die Möglichkeit, Multithreading

Jochen

zu machen, eröffnet eine ganz

Johannes

neue Klasse an Programmen, die man

Johannes

mit Python bisher nicht schreiben konnte.

Johannes

Spiele wolltest du bauen?

Johannes

Ja, Spiele sind

Johannes

eine, ja, aber da hast du dann immer noch

Johannes

die Performance-Differenz,

Johannes

aber gerade so

Johannes

verteilte Anwendungen. Das, was Meta macht,

Johannes

das, was halt die großen

Johannes

Anbieter

Johannes

machen, wenn man sich mal diese

Johannes

Erlang-Sachen anguckt aus den 80ern,

Johannes

die einfach viele Dinge gleichzeitig über einen Computer laufen lassen müssen,

Johannes

weil es nicht anders geht, da sieht man diese Klasse von Anwendungen.

Johannes

Das ist die eine Seite.

Johannes

Die andere Seite ist halt, dass die wenigsten von uns

Johannes

diese Klasse von Anwendungen schreiben.

Johannes

So ein bisschen aus Henne-und-Ei-Problem heraus.

Johannes

Weil wenn wir diese Klasse von Anwendungen schreiben müssten,

Johannes

dann müssten wir zwangsweise bisher eine andere Sprache als Python verwendet haben,

Johannes

weil das in Python eben nicht ging.

Johannes

Und deshalb sind wir Python-Entwickler

Johannes

nicht gewöhnt, diese Sorte Programme zu schreiben

Johannes

und auch nicht gewöhnt, diese Sorte Probleme zu lösen.

Johannes

Und das bedingt sich so ein bisschen selber.

Johannes

Das ist so ein Catch-22.

Johannes

Du kannst es erst lösen, wenn du es gelöst hast.

Johannes

Und um es zu lösen, musst du es erst gelöst haben.

Jochen

Also ich glaube wirklich, dass das nicht so super häufig ist.

Jochen

Also ein Fall, den ich halt,

Jochen

ich habe dann irgendwann mal in den Pepp auch geguckt,

Jochen

wo begründet wird, warum will man das eigentlich haben.

Jochen

Und da war zum Beispiel ein Beispiel, was ich dann auch einleuchtend fand, also es waren ein paar, aber eins ist mir jetzt noch in Erinnerung, die anderen nicht mehr. Da war es halt so, dass da irgendwie auch in Data-Science-Umfelder Firmen gesagt haben, also wir haben ein Problem und zwar haben wir hier irgendwie dicke Maschinen mit irgendwie jeder Menge GPUs drin und jetzt wollen wir die GPUs mit Bildern füttern oder sonst irgendwas.

Jochen

Und klar, irgendwie I.O. ist nicht so das Problem, da haben wir kein Problem mit dem GIL, aber wir müssen die jetzt auch noch so ein bisschen transformieren, müssen da irgendwie so ein bisschen das irgendwie mal so drehen oder manchmal in Badges organisieren und keine Ahnung und das machen wir halt in Python und wir müssen das schnell genug machen können, um halt die ganzen GPUs ständig mit Daten versorgen zu können.

Jochen

Die Dinger sind sauteuer, wenn wir da nur die Hälfte der GPUs verwenden können, dann lohnt sich das alles nicht mehr. Und jetzt haben wir ein Problem mit dem GIL, weil wir kriegen die GPUs nicht schnell genug mit den Daten gefüttert. Und eigentlich haben wir fast keine Alternative, als eine andere Programmiersprache zu nehmen, weil, was wollen wir machen?

Jochen

Wir können es auch nicht auf Prozesse aufteilen

Jochen

oder das geht auch alles nicht, weil

Jochen

da haben wir das gleiche Problem, dass halt der Overhead

Jochen

uns irgendwie

Jochen

das zu verteilen halt

Jochen

so viel Performance wegfrisst, dass wir

Jochen

dann die GPUs wieder nicht gefüttert kriegen.

Jochen

Also, tja, was sollen wir tun?

Jochen

Und da dachte ich, okay, das ist wirklich ein Anwendungsfall.

Jochen

Ja, da braucht man

Jochen

das wahrscheinlich. Aber

Jochen

ansonsten...

Johannes

Ja, genau, aber das ist eben diese Klasse

Johannes

von Problemen, die ich meinte

Johannes

vorhin. Und früher waren es halt Telefonverteiler,

Johannes

oder Netzwerkinterfaces

Johannes

oder keine Ahnung.

Jochen

Ja, aber da würde ich sagen, damit bist du mit Async

Jochen

schon, ich weiß auch gar nicht, ob Erlang

Jochen

irgendwie das auch kann.

Jochen

Ich bin mir gar nicht so sicher. Also ich glaube, die haben dann

Jochen

ja, also wenn du halt irgendwie so

Jochen

deine OTP...

Jochen

Ja, genau, die fahren auch

Jochen

eine Reihe von Prozessen hoch und haben dann halt

Jochen

eine schlaue Art irgendwie, die miteinander kommunizieren

Jochen

können. Und intern machen die halt

Jochen

einfach, das kannst du mit Falken ganz

Jochen

genauso machen. Startest du auch mehrere Prozesse

Jochen

und machst in jedem einzelnen Prozess

Jochen

dann irgendwie

Jochen

korroutieren.

Jochen

Das ist nur nicht so

Jochen

üblich, aber könnte man wahrscheinlich tun.

Jochen

Also ich meine, ja, diese...

Jochen

Async ist ja jetzt auch nicht gerade eine

Jochen

uralte Entwicklung.

Jochen

Diese Probleme gibt es ja auch schon lange.

Jochen

Und Async ist ja auch noch eine Version,

Jochen

das zu lösen. Auch mit Vor- und Nachteilen,

Jochen

muss man auch sagen.

Jochen

Ja, aber das ist auch...

Johannes

Aber das ist das, was ich meine. Es gibt eben...

Johannes

Das ist die Sicht, die ich

Johannes

habe. Vielleicht ist die auch falsch, ja, oder vielleicht

Johannes

ist die einfach nicht so weit verbreitet, aber

Johannes

meiner Meinung nach öffnet es eine Klasse von

Johannes

Programmen, die

Johannes

vorher nicht praktisch schreibbar waren.

Johannes

Und es ist ja jetzt auch so, dass wir

Johannes

schon

Carl Friedrich

eigentlich letztlich in einer sehr pragmatischen

Carl Friedrich

Situation sind. Also wir haben jetzt, es ist

Carl Friedrich

standardmäßig nicht an und wir gucken,

Carl Friedrich

wir haben jetzt Zeit als Community rauszufinden,

Carl Friedrich

gibt es Anwendungsfälle dafür,

Carl Friedrich

finden wir Anwendungsfälle dafür, wird es stabil genug,

Carl Friedrich

ist die Single-Threading-Performance

Carl Friedrich

akzeptabel schlechter

Carl Friedrich

und

Carl Friedrich

ziehen die ganzen Bibliotheken mit

Carl Friedrich

und im Moment ist das Risiko halt

Carl Friedrich

nicht so hoch. Also das

Carl Friedrich

quasi der absolute Worst Case, der passieren könnte,

Carl Friedrich

ist halt, wir finden in zwei Jahren raus, niemand benutzt

Carl Friedrich

das, das stürzt die ganze Zeit ab und

Carl Friedrich

Sam Groves hat keine Lust mehr

Carl Friedrich

und dann kann man es halt auch

Carl Friedrich

einfach wieder weglassen.

Carl Friedrich

Also was ich,

Carl Friedrich

würde ich nicht von ausgehen, aber also

Carl Friedrich

die Möglichkeit besteht halt sozusagen.

Carl Friedrich

Ja und wahrscheinlich haben wir, also

Jochen

ich meine, das hat mich jetzt auch quasi

Jochen

so eine andere Geschichte, diese

Jochen

Agent-Geschichte, es hat eine gewisse

Jochen

Ähnlichkeit in der Hinsicht, als

Jochen

dass auch das halt ein tiefgreifender Eingriff

Jochen

war quasi und sich erst so

Jochen

über die Zeit entfaltet

Jochen

hat, was das alles für Probleme bringt und wo es

Jochen

überall reingreift und so. Und das ist

Jochen

bis heute ist das noch nicht so,

Jochen

da ist immer noch Potenzial, also es ist schon

Jochen

viel, viel besser geworden, aber es ist immer noch so,

Jochen

dass da noch, das ist noch nicht ganz komplett

Jochen

fertig alles. Und das hat auch

Jochen

vor zehn Jahren oder so angefangen.

Jochen

Und ja,

Jochen

das hat

Jochen

ganz schön lange, ist schon ganz schön lange

Jochen

auf dem Weg. Und das wird wahrscheinlich

Jochen

da auch so sein, ja.

Carl Friedrich

Klar, auf jeden Fall. Es ist auf jeden Fall ein langfristiges Projekt.

Carl Friedrich

Das ist jetzt nichts, was wir jetzt

Carl Friedrich

in einer Version mal irgendwie so ein bisschen reinbasteln

Carl Friedrich

und dann ist das Problem gelöst.

Carl Friedrich

Ja.

Carl Friedrich

Ja, und selbst wenn das alles auf technischer Ebene

Carl Friedrich

einwandfrei funktioniert, dann ist halt

Carl Friedrich

Multithreaded Programming immer noch

Carl Friedrich

einfach auch eine schwierige Sache.

Carl Friedrich

Also die

Johannes

Dining Philosophers, die kann man sich

Johannes

gerne mal ansehen und

Johannes

versuchen, da eine Lösung zu schreiben. Das ist nicht so

Johannes

einfach.

Johannes

Klar. Und also ob es dann

Johannes

klappt. Mal schauen, ob sich Dominik fragt, was das bedeutet.

Dominik

Ja, ich warte nur darauf, dass du es sehr clear

Dominik

hast.

Dominik

Die Dining

Johannes

Philosophers sind ein Gedankenexperiment,

Johannes

wo du fünf

Johannes

Menschen an einem Tisch sitzen hast

Johannes

und die wollen Spaghetti essen und zum Spaghetti

Johannes

essen braucht man zwei Gabeln.

Johannes

Spaghetti is Dining.

Dominik

Ja, okay. Ja, zwei Gabeln.

Dominik

Very fine dining.

Dominik

Und auch geteilte Gabeln

Dominik

ist auch absolut, es gibt es nur

Johannes

in den nobelsten Restaurants, weil

Johannes

jeder von denen hat nur eine Gabel.

Johannes

Also bei jedem Teller liegt

Johannes

eine, zwischen zwei Tellern liegt immer eine Gabel.

Johannes

Also ein Philosoph hat eine Gabel rechts von links

Johannes

und eine links von sich, aber

Johannes

auf diese Gabel haben immer zwei Menschen Zugriff.

Johannes

Und

Johannes

jetzt wollen die alle Spaghetti essen und

Johannes

brauchen dafür zwei Gabeln.

Johannes

Offensichtlich können die

Johannes

nicht alle gleichzeitig Spaghetti essen.

Johannes

Weil es gibt nur fünf Gabeln, wenn jeder zwei Gabeln braucht, bräuchten sie zehn Gabeln.

Johannes

Das ist also so ein Ressourcenproblem.

Johannes

Das viel schlimmere Problem ist aber, dass man da ganz einfach diese ganzen Probleme visualisieren kann, die auftreten können.

Johannes

Selbst wenn dieses System auf einer technischen Ebene einwandfrei funktioniert.

Dominik

Also du meinst zum Beispiel, die haben alle eine große Schüssel Spaghetti und die haben gleichzeitig zwei Enden einer langen Spaghetti im Mund, weil die...

Johannes

Das ist das Disney, die Disney-Variante, ne, die meine ich jetzt hier an der Stelle nicht, aber ja. Zum Beispiel, wenn man ganz naiv sagt, wenn ein Philosoph Spaghetti essen möchte, dann greift er zuerst mit seiner rechten Hand nach einer Gabel und dann mit der linken Hand nach einer Gabel und wenn da eine Gabel nicht liegt, dann wartet er halt in dem Zustand, in dem er gerade ist, bis die Gabeln verfügt.

Dominik

Also sitzen da irgendwelche Leute, die haben alle eine Gabel in der Hand und warten darauf, dass sie in die zweite kommen.

Johannes

Genau, also im schlimmsten Fall greift jeder nach der rechten Gabel und wartet dann auf die linke Gabel, die aber durch den Philosoph zu seiner Linken schon belegt ist. Und die warten dann alle aufeinander und müssen für immer an diesem Tisch sitzen und verhungern, vor dem vollen Teller.

Johannes

Deadlock quasi.

Johannes

Und das ist ja eine extrem simple Situation, das ist ja eine extrem vereinfachte Sichtweise.

Dominik

Du meinst, wir müssen miteinander reden und sagen, gib mir mal eine Gabel, bitte.

Johannes

Ja, aber tatsächlich, Threads, die kommunizieren, sind ja auch was extrem Schwieriges, insbesondere wenn die gerade auf einen Lock warten, weil üblicherweise, wenn so ein Thread auf einen Lock wartet, kann er ja derweil nichts anderes machen.

Dominik

Das ist dann blöd. Hat den Mund schon voll.

Johannes

Genau, das ist blöd. Und jetzt muss man eben anfangen, wie kriegt man das in den Griff, wie kann man das im Allgemeinen lösen, dass die keine Deadlocks machen.

Johannes

Mehr Karten verteilen?

Johannes

Ja, das wäre eine Möglichkeit, aber normalerweise ist das schwierig. Also zum Beispiel in dem Modell vom Jochen einfach mehr GPUs einbauen, ist prinzipiell eine Lösung. Ist nicht ganz billig. Und es sind halt goldene Gabeln, mehr Gabeln geht nicht.

Johannes

Ja, es ist einfach ein Gedankenmodell, um nachzuweisen, dass auf dieser ganz simplen Ebene schon Probleme auftreten, die ungeheuer schwierig zu lösen sind und ungeheuer schwierig in ihrer Allgemeinheit zu lösen sind. Und wenn du sagst, okay, dann habe ich eine Lösung gefunden für fünf, was ist, wenn du da sechs Philosophen sitzen hast oder tausend oder nur zwei? Geht deine Lösung dann immer noch?

Carl Friedrich

Also schon allein die Tatsache, dass quasi

Carl Friedrich

einer der schwierigsten Probleme bei verteilten

Carl Friedrich

Systemen ein Counter ist,

Carl Friedrich

das ist ja eigentlich auch schon

Carl Friedrich

relativ lustig so.

Carl Friedrich

Eine Zahl hochzählen.

Carl Friedrich

Genau, eine Zahl hochzählen, aber so global

Carl Friedrich

konsistent und so, das ist wirklich

Carl Friedrich

auch, schon das ist nicht so einfach.

Dominik

Ja, kennt ihr das, wenn irgendwie an so einem Festival-Eingang

Dominik

irgendwer stehen muss mit so einem Klicker,

Dominik

wenn man draufdrückt, muss jemand reinrennen oder wenn man

Dominik

an der anderen Hand jemand rausrennt,

Dominik

also ich bin ja auch so sicher, der verdrückt sich die ganze Zeit

Dominik

Irgendwann, man weiß gar nicht so genau, wie viele Leute

Dominik

sind eigentlich auf dem Gelände, sondern es ist wahrscheinlich

Carl Friedrich

ein ähnliches Problem. Wenn es so 18 Eingänge sind,

Carl Friedrich

dann finden die dann raus, jetzt sind

Carl Friedrich

gerade minus 10 Leute bei uns auf dem Festival.

Carl Friedrich

Das ist doch die klassische

Carl Friedrich

mathematische Mengenlehre, wenn

Carl Friedrich

drei Leute reingehen und fünf rausgehen,

Carl Friedrich

müssen zwei wieder reingehen, damit es leer ist.

Dominik

Und der Kirchturm ist minus 30 Meter hoch.

Dominik

Ja, okay,

Johannes

also Threading ist

Carl Friedrich

eine Riesensache. Man kann es ja mal positiv ausdrücken.

Carl Friedrich

Die Hoffnung ist, dass es jetzt eben ganz, ganz tolle

Carl Friedrich

Abstraktionen geben wird, die dann auf

Carl Friedrich

der quasi Low-Level-Basis

Carl Friedrich

von Threads

Carl Friedrich

und Logs und was weiß ich, was es dann

Carl Friedrich

eben an Infrastruktur gibt oder

Carl Friedrich

geben wird, die das

Carl Friedrich

unwahrscheinlicher machen, dass wir Deadlogs produzieren.

Carl Friedrich

Das ist die positive Sicht. Das wäre

Carl Friedrich

sehr schön.

Johannes

Und das kriegen wir bestimmt hin, weil die

Johannes

Python-Community ist großartig und die

Johannes

zeigt immer wieder, was sie für geniale Lösungen

Johannes

findet. War das jetzt sarkastisch

Johannes

oder nicht?

Johannes

Die Zeit wird es zeigen.

Johannes

Das möchte ich in Folge

Johannes

600 besprechen.

Johannes

Es ist schon so, also

Johannes

ich bin immer wieder überrascht. Ich meine, wir haben ja hier

Johannes

in dieser Runde immer wieder den Pick, wo

Johannes

wir auf Sachen zeigen, die

Johannes

in der Python-Welt passieren oder auch außerhalb,

Johannes

die einfach geniale Dinge sind, die

Johannes

keiner wusste. Ich mache auch

Johannes

gelegentlich Python-Schulungen für

Johannes

Anfänger. Und eine

Johannes

Sache, die wir da machen, ist einfach mal durch

Johannes

die Standardbibliothek scrollen.

Johannes

Und gucken, was es da so alles gibt.

Johannes

Und da findet man immer Sachen, die spannend sind und neu und interessant.

Johannes

Und ich finde, das gehört schon auch irgendwie so ein bisschen

Johannes

zur Python-Welt dazu, dass es immer mehr Dinge gibt

Johannes

und immer viele schöne neue Sachen und neue Bibliotheken,

Johannes

die Dinge tun, von denen man noch nicht mal wusste,

Johannes

dass man sie gebraucht hat bisher.

Dominik

Du wolltest gerade picken, hast du damit gesagt schon?

Dominik

Noch nicht.

Johannes

Vor allem, ich habe diese Woche oder dieses Mal

Johannes

gar keinen Python-Pick dabei, aber das macht ja nichts.

Johannes

Kein Python.

Johannes

Es ist einfach nur ein Hinweis darauf,

Johannes

dass es viele tolle Dinge gibt, die man nicht kennt.

Carl Friedrich

Ja, und wenn man jetzt von der Schnabelpolitik weggeht

Carl Friedrich

und sich mal die Top 100 bei PI anschaut

Carl Friedrich

oder so, dann wird es dann auch mal irgendwie

Carl Friedrich

also so die Bandbreite, was

Carl Friedrich

für verschiedene Themen es so gibt, ist

Carl Friedrich

schon immer wieder sehr beeindruckend.

Carl Friedrich

Ja, aber

Carl Friedrich

das ist versehentlich

Johannes

total gute Überleitung, weil in der

Johannes

3.13 wurden ja auch Sachen entfernt.

Johannes

Und die

Johannes

Liste ist gar nicht so klein.

Carl Friedrich

Das ist übrigens auch da wieder so ein bisschen

Carl Friedrich

Geschichte. Das ist

Carl Friedrich

ein gefühlt jahrzehntelanges

Carl Friedrich

Projekt, so ein paar von diesen Sachen.

Carl Friedrich

Also das wurde mal

Carl Friedrich

auf einem C-Python

Carl Friedrich

Core-Developer-Treffen

Carl Friedrich

in einem Vortrag empfohlen, der

Carl Friedrich

damals mit sehr gemischten

Carl Friedrich

Reaktionen aufgenommen wurde.

Carl Friedrich

Und

Carl Friedrich

es hat ewig gedauert, bis das jetzt wirklich

Carl Friedrich

passiert ist, dass der Bibliotheken jetzt

Carl Friedrich

entfernt wurden.

Carl Friedrich

Die Motivation ist, dass es halt quasi so ein bisschen

Carl Friedrich

Code in der Standardbibliothek

Carl Friedrich

gab, der einfach

Carl Friedrich

sehr veraltet ist

Carl Friedrich

und nicht mehr so richtig

Carl Friedrich

für aktuelle Probleme zu benutzen

Carl Friedrich

ist. Und die wurden dann eben

Carl Friedrich

zuerst deprecated

Carl Friedrich

und jetzt seit ein paar Versionen und jetzt eben

Carl Friedrich

wirklich wurden ein paar entfernt.

Carl Friedrich

Ja, wir können die Liste einfach mal,

Carl Friedrich

ich habe die Liste zufällig vor mir.

Carl Friedrich

Rein zufällig.

Carl Friedrich

Diese Anstrengung

Carl Friedrich

heißt Removing Dead Batteries.

Carl Friedrich

und die entfernt folgende Module

Carl Friedrich

AIFC, Audio-Op,

Johannes

Chunk, CGI, CGI-TP,

Johannes

Crypt, Image-Header,

Johannes

Mail-Cap, MSI-Lib, NIS,

Johannes

NETP-Lib, OSS-Audio-Dev,

Johannes

Pipes, Sound-Header,

Johannes

SPWD, SunAU,

Johannes

Telnet-Lib, UU, XDR-Lib

Johannes

und Libs 2-3.

Johannes

Falls es jetzt konstruktiv gefallen

Dominik

sei, weil euer Paket auf einmal weg ist,

Dominik

dann solltet ihr aufpassen mit dem Update.

Johannes

Genau, also wenn da jetzt was dabei war, was ihr gerne

Carl Friedrich

haben wir. Ich glaube, die landen da auf PyPI.

Carl Friedrich

Ja, ja, die gibt es doch.

Carl Friedrich

Was CPython ja nur erreichen

Carl Friedrich

will, ist, dass sie die nicht mehr maintainen.

Carl Friedrich

Nicht, dass die jetzt verboten

Carl Friedrich

sind und auf gar keinen Fall mehr von irgendjemand

Carl Friedrich

verboten.

Johannes

Ja klar, es geht nur darum, dass man die nicht die ganze Zeit

Johannes

mitschleifen muss, weil das ist ja auch Aufwand,

Johannes

die in der neuen Version mitzunehmen.

Johannes

Aber also bei einem

Johannes

Großteil dieser Bibliotheken weiß ich nicht, was die tun.

Johannes

Ja, man kann so ein bisschen raten,

Carl Friedrich

aber bei ein paar kann man nicht mal raten.

Carl Friedrich

Ja, bei manchen, ja,

Johannes

Was, keine Ahnung, NNTP-Lib

Johannes

macht, okay gut, das ist NNTP-Lib.

Carl Friedrich

CGI macht, das weiß ich auch noch, weil wir alt sind.

Carl Friedrich

Ja, gut, da sind wir.

Carl Friedrich

Aber wüsstest du jetzt den Unterschied zwischen

Carl Friedrich

CGI und CGI-TP?

Carl Friedrich

Ich glaube, das eine ist der Trace-Pack.

Carl Friedrich

Ja, aber

Carl Friedrich

Turbo.

Carl Friedrich

SunAU ist so ein altes Audio-Format, oder?

Carl Friedrich

Ja, ich glaube auch. Oh, MSI-Lib

Carl Friedrich

für Microsoft-Installer-Dateien,

Carl Friedrich

auch großartig.

Dominik

Kennt ihr die meist untergeladene Datei

Dominik

auf PyPI?

Dominik

Irgendwas mit

Dominik

Setup-Tools oder ich weiß nicht.

Dominik

Okay, keine Ahnung.

Dominik

Also auf jeden Fall das Richtige,

Dominik

diese Sachen.

Dominik

Es gibt so eine Liste, die sagt Botro 3.

Dominik

Ah, oh, das liegt, ach ja,

Jochen

das liegt in den Updaten irgendwie

Jochen

alle zwei Stunden und

Jochen

da das halt irgendwie eines der Hauptdinger

Jochen

ist, dass du halt brauchst,

Jochen

wenn du irgendwas mit

Jochen

irgendwie AWS oder so machst.

Jochen

Die drittbestes Boto-Core?

Jochen

Ja, ja, das ist alles so.

Jochen

Und Platz 2?

Jochen

Ja, aber ist das nicht der Grund, warum Pipe.ai keine Statistiken mehr anzeigt?

Jochen

Naja.

Jochen

Also da könnte man jetzt denken, das wäre irgendwie wichtig,

Jochen

aber das ist halt überhaupt gar nichts.

Carl Friedrich

Warum zeigen die keine Statistiken mehr an?

Carl Friedrich

Weil die nicht trennen können,

Carl Friedrich

ob das jetzt ein Mirror ist oder ein automatisches

Carl Friedrich

Update oder jemand, der die Bibliothek tatsächlich

Carl Friedrich

in einem Projekt installieren möchte und deshalb

Carl Friedrich

sind diese Zahlen völlig verdient.

Carl Friedrich

Also du willst sagen, weil Counter halt zu schwierig sind.

Carl Friedrich

Und nicht nur in der Benutzung,

Johannes

sondern auch in der Interpretation.

Johannes

Ja, ich meine,

Dominik

die Zahl der Downloader ist auch irgendwie so ein bisschen

Dominik

weird.

Dominik

1,5 Milliarden

Jochen

Die Zahl, die da rauskommt, ist halt, wie oft

Jochen

das geupdatet wird, ist auf jeden Fall ein Faktor,

Jochen

mit dem da multipliziert wird.

Jochen

Ja, ich meine, aber das ist

Jochen

ja jetzt nicht irgendwie eine gute Sache, wenn da irgendwie

Jochen

alle paar Minuten Pakete

Jochen

irgendwie die Version hochzählt.

Jochen

Aber wenn das dann irgendwie in den

Jochen

CIs, quasi in so

Jochen

Continuous Integration Pipelines

Jochen

verwendet wird, dann wird das halt gnadenlos

Jochen

neu runtergeladen, wenn sich da irgendwas ändert.

Jochen

Also, ja, naja.

Jochen

Ja, wahrscheinlich braucht man irgendein anderes

Jochen

Metric KPI

Jochen

für irgendwie, ist das jetzt

Jochen

irgendwie interessant oder nicht? Aber ich weiß auch nicht, welche.

Jochen

Github-Sterne.

Jochen

Auch schwierig.

Jochen

Metric

Jochen

KPIs.

Jochen

Ja.

Jochen

Es wurde schon mal in einem Podcast erwähnt.

Jochen

Vielleicht sollten wir da sowas auch

Dominik

so eine Quartettserie

Dominik

von machen.

Dominik

Von den PIPI-Bibliotheken.

Dominik

Ja, genau. Hast du ein

Dominik

Quartett mit vier, die besten PIPI-Bibliotheken

Dominik

oder irgendwas mit den KPIs, kannst du

Dominik

die ganzen Module da reinbauen, dann kannst du dich

Dominik

gegeneinander, wer denn kennt, könnt ihr das?

Dominik

Also meins hat

Dominik

1,5 Milliarden Downloads.

Dominik

Aha, 798

Dominik

sich Megabyte. Mehr Kilobyte größer, genau.

Dominik

Und Anzahl der Releases

Dominik

wäre doch auch ein gutes.

Dominik

Offene Issues.

Dominik

Ist es besser, wenn es höher ist?

Dominik

Tja.

Dominik

Genau, aber

Carl Friedrich

um auf die Dead Batteries zurückzukommen,

Carl Friedrich

ich verstehe es auch, dass es gut ist,

Carl Friedrich

wenn die entfernt werden.

Carl Friedrich

Ja, absolut.

Carl Friedrich

Aber es wird da sicherlich die Leute geben,

Carl Friedrich

die sagen, nein,

Carl Friedrich

wie soll ich sonst je meine

Carl Friedrich

wie soll ich das Detail nicht verwenden?

Carl Friedrich

Ja, aber die hätten ja jetzt auch schon

Jochen

eine ganze Zeit lang Zeit irgendwie da was

Jochen

und ich glaube auch nicht,

Jochen

da ist auch nichts zu uns passiert.

Jochen

Ja, ich weiß nicht,

Jochen

haben wir vielleicht nur so kleinere Dinge

Jochen

oder ich weiß es nicht genau,

Jochen

gab es noch irgendwas Interessantes?

Jochen

Typing, ja.

Dominik

Ein Typing-Simple-Namespace, wolltest du sagen?

Dominik

Das kannte ich noch gar nicht,

Dominik

ich weiß gar nicht, welche Version das war.

Dominik

aber... Ja, du kannst

Jochen

es auch nicht. Okay. Ja, ich kann es auch

Dominik

nicht. Simple Namespace

Dominik

ist ein Dikt, dass man wie Attribute

Dominik

dann die Keys benutzen kann.

Dominik

So ein bisschen so ein Name-Tuppe.

Dominik

Und da

Dominik

hat CF gesagt, oh, das ist aber ganz

Dominik

schwierig, weil da ständig irgendwas kaputt geht

Dominik

und hat dann auch Enum in den Raum

Dominik

geworfen. Das würde ich gerne noch mal kurz

Dominik

hören und verstehen, warum das so blöd ist.

Carl Friedrich

Ich habe doch schon gesagt, dass ich das zensieren will.

Carl Friedrich

Nee, wir haben

Carl Friedrich

so ein bisschen darüber geredet, welche

Carl Friedrich

Standard-Bibliotheks-Module

Carl Friedrich

uns als Piper-Entwicklern

Carl Friedrich

irgendwie besonders oft Probleme bereiten

Carl Friedrich

und Inam ist da immer mal

Carl Friedrich

wieder so ein

Carl Friedrich

wie heißt es? Eine eierliegende

Carl Friedrich

Wollmilchsau. Ein Problembär.

Carl Friedrich

Also Inam

Carl Friedrich

benutzt einfach ganz, ganz viele Tricks des

Carl Friedrich

Python-Datenmodells und Metaklassen und

Carl Friedrich

irgendwie

Carl Friedrich

schafft es immer wieder Randfälle

Carl Friedrich

zu erwischen,

Carl Friedrich

die wir dann doch nicht so ganz korrekt implementiert

Carl Friedrich

haben und da müssen wir erstmal,

Carl Friedrich

wenn wir, was weiß ich, zu einer

Carl Friedrich

neuen CPython-Version die Standardbibliothek

Carl Friedrich

dann übernehmen, müssen wir

Carl Friedrich

erstmal irgendwelche Python

Carl Friedrich

Datenmodell-Core-Features fixen,

Carl Friedrich

bevor ihr ihn dann halt auch nur importiert oder so.

Carl Friedrich

Genau, und NameTuple

Carl Friedrich

ist da auch ein Problem, nicht so richtig, weil das

Carl Friedrich

irgendwie

Carl Friedrich

einen Bugs hat, sondern weil das oft Performance-Bugs

Dominik

hat. Ja, mit der Tuple und langsam, das war

Dominik

mir auch neu. Ja, NameTuple benutzt

Carl Friedrich

halt quasi, wenn man so einen neuen

Carl Friedrich

NameTuple-Typ anlegt, dann

Carl Friedrich

da wird halt auch mit exec dann irgendwie

Carl Friedrich

mit Strings irgendwelche Python-Code generiert

Carl Friedrich

und das mag der JIT halt nicht.

Carl Friedrich

Weil der JIT,

Carl Friedrich

der geht halt davon aus, dass ich die gleichen Funktionen

Carl Friedrich

oft aufrufe und nicht ganz, ganz viele neue Funktionen

Carl Friedrich

ständig mache, die dann eben

Carl Friedrich

neu zum Machine-Code übersetzt werden müssen.

Carl Friedrich

Und das sorgt eben dafür, dass

Carl Friedrich

bei Name-Tuple die Performance

Carl Friedrich

oft wirklich sehr, sehr

Carl Friedrich

schlecht war in PyPy. Und inzwischen ist das gefixt,

Carl Friedrich

aber so über so ein paar Versionen

Carl Friedrich

hatten wir mit Name-Tuple immer mal wieder Probleme.

Carl Friedrich

Mit Data-Classes am Anfang übrigens auch,

Carl Friedrich

ist inzwischen auch, glaube ich, ganz gut repariert.

Carl Friedrich

Aber das sind auf jeden Fall so ein paar, also

Carl Friedrich

es gibt Bibliotheken, die wir einfach eins zu eins

Carl Friedrich

übernehmen können, gerade wenn die in Python geschrieben sind,

Carl Friedrich

ist überhaupt kein Problem. Und es gibt

Carl Friedrich

welche, wo wir halt dann eben sehr, sehr viel

Carl Friedrich

Piper-spezifische Patches haben und

Carl Friedrich

NameTuple ist definitiv

Carl Friedrich

eins von denen, wo es eher mehr

Carl Friedrich

als weniger Patches gibt.

Carl Friedrich

Das habe ich jetzt geschafft, ohne

Carl Friedrich

jemanden zu beleidigen.

Carl Friedrich

Oh.

Jochen

genau, ja, Typing

Jochen

waren auch noch so ein paar Dinge.

Jochen

Ich bin ja nicht so

Jochen

der Typing-User.

Carl Friedrich

Die Features sind schon viel zu advanced

Carl Friedrich

für mich.

Carl Friedrich

Ja, ups.

Carl Friedrich

Ja, aber

Jochen

ich weiß nicht.

Jochen

Da war jetzt auch Read-Only.

Jochen

Ja, okay.

Jochen

Hast du das gerade vor dir?

Jochen

Ja, die Beschreibung ist

Johannes

sehr kurz, aber es geht wohl

Johannes

darum, dass man Locals bearbeiten

Johannes

kann. Und das war

Johannes

bisher nicht so genau definiert,

Johannes

was da passiert.

Johannes

Und jetzt kann man das machen.

Johannes

Das ist wohl für Debugger wichtig.

Johannes

Hier steht, es ist für Debugger wichtig.

Carl Friedrich

Ich glaube, der Trick ist, also das Wichtige daran ist

Carl Friedrich

wirklich, dass jetzt einfach mal genau aufgeschrieben

Carl Friedrich

wurde, was genau passiert,

Carl Friedrich

wenn man Locals aufruft. Was können sie erwarten?

Carl Friedrich

Was können sie erwarten? Und

Carl Friedrich

manchmal ist es eben so, dass das

Carl Friedrich

Dictionary was Locals, also bei Globals ist es ja so,

Carl Friedrich

das Dictionary, wenn ich da

Carl Friedrich

Keys reinschreibe, dann

Carl Friedrich

das ist wirklich das richtige Global Dictionary.

Carl Friedrich

Und wenn ich danach das entsprechende

Carl Friedrich

Global nachschaue, dann sehe ich auch die Änderung.

Carl Friedrich

Und bei Locals hängt eben...

Carl Friedrich

Und das macht sehr schöne Tricks.

Carl Friedrich

Ja, das macht sehr schöne Tricks möglich. Bei Locals

Carl Friedrich

ist das nicht so. Bei Locals war es eben manchmal so,

Carl Friedrich

dass wenn ich Locals verändere,

Carl Friedrich

dass sich dann die, sich die Locals

Carl Friedrich

wirklich ändern und manchmal eben halt auch nicht.

Carl Friedrich

Und genau in welchen Fällen

Carl Friedrich

welche Variante dann

Carl Friedrich

galt, das war

Carl Friedrich

so ein bisschen, immer ein bisschen schwierig vorherzusehen

Carl Friedrich

und verschiedene Python-Versionen haben das auch irgendwie,

Carl Friedrich

nee, verschiedene Python-Implementierungen haben das

Carl Friedrich

auch verschieden dann angegangen.

Carl Friedrich

Also quasi

Carl Friedrich

zwischen Funktionen, Global Scopes, Generatoren,

Carl Friedrich

Core-Routinen, Comprehensions,

Carl Friedrich

Class-Scope, also es gibt da

Carl Friedrich

schon so einiges. Achso,

Carl Friedrich

Code, der von exec oder eva ausgeführt wird,

Carl Friedrich

da gab es eben schon so einiges an Fällen,

Carl Friedrich

wo es halt

Carl Friedrich

dann so immer so leicht unterschiedliches

Carl Friedrich

Verhalten gab. Das wurde jetzt

Carl Friedrich

eben fest definiert und ich glaube,

Carl Friedrich

Es ist so, dass Locals weniger oft, also dass man Mutationen bei Locals weniger oft zu Veränderungen in den echten Locals führen.

Carl Friedrich

Aber auf der anderen Seite ist es eben so, dass in den Debuggern, wenn man da sich so ein Frame-Objekt geben lässt und da das Attribut F-Locals mutiert, dass das eben zu vorhersagbaren Veränderungen an den echten Werten der Locals führt.

Carl Friedrich

Und das im Debugger ist eben wichtig, wenn ich im Debugger dann sagen möchte, ich führe jetzt die Funktion aus und die lokale Variable A hat den Wert 17. Ich will jetzt aber einfach mal im Debugger, um rauszufinden, was da genau passiert, das auf 19 setzen. Und wenn das dann nicht geht, weil eben das Verändern der Locals im Debugger nicht so richtig implementiert ist oder nicht immer geht oder nicht in Generatoren geht, ist das halt so ein bisschen frustrierend. Und da ist es eben gut, wenn man jetzt ein klar definiertes Verhalten hat, auf das man sich verlassen kann.

Johannes

Ja, und die vielen Debugger-Autoren unter unseren Zuhörern haben sich gerade eben sehr gefreut.

Carl Friedrich

Naja, also die Debugger-Autoren sind die einen, aber die Leute, die Debugger dann benutzen, denen gehören wir ja dann doch meistens.

Carl Friedrich

Leider auch, doch tatsächlich.

Carl Friedrich

Print-Debugging. Wir alle, die noch nicht sofort beim ersten Mal perfekten Code schreiben können.

Carl Friedrich

Print-Debugging, mehr braucht kein Mensch.

Jochen

Kennt ihr diese, das kann ich auch noch nicht, aber ich fand diese Analogie sehr schön.

Jochen

Ich glaube auch aus der letzten Copyright-Episode, da gab es wohl irgendeinen Vortrag vor langer Zeit, wo jemand gesagt hat, sei kein Bond-Villain beim Debuggen zum Beispiel.

Jochen

Also Bond-Villain, die machen aber alle irgendwie blöde Fehler, dass sie zum Beispiel irgendwie ständig erklären, was ihr Plan ist oder dass sie halt nicht irgendwie mit der großen Weltraumlaser-Kanone schießen, sondern mit einer kleinen Pistole irgendwie sich eine Schießerei mit Bond liefern.

Jochen

und das ist halt eine dumme Idee, weil da ist er halt einfach

Jochen

besser drin und man hätte

Jochen

lieber den Weltraumlaser nehmen sollen.

Jochen

Und die Idee ist sozusagen, wenn du debugst,

Jochen

nimm den Weltraumlaser direkt. Fang nicht

Jochen

irgendwie an mit Printf mit der blöden kleinen

Jochen

Pistole, sondern nimm das

Jochen

mächtigste Tool, was du irgendwie hast.

Jochen

Weil das ist doch Zeitverschwendung, wenn du irgendwie zuerst

Jochen

mit Printf anfängst, nimmst du das nächste, das geht auch nicht,

Jochen

dann nimmst du das nächste. Fang lieber gleich mit dem

Jochen

großen Ding an. Den großen Hammer nehmen und

Jochen

draufhauen.

Jochen

Erster Schritt, kannst nicht dein

Jochen

Produkt schneiden mit dem Weltraumlaser.

Jochen

Ja, aber die Idee hatte was.

Carl Friedrich

Aber das ist einfach sehr individuell.

Carl Friedrich

Ich kenne auch Leute, die leben nur im Debugger.

Carl Friedrich

Da ist halt einfach der erste Schritt,

Carl Friedrich

ich mache eine Funktion, die ist leer,

Carl Friedrich

und wenn die Argumente reingereicht sind,

Carl Friedrich

dann mache ich erst mal einen Debugger an.

Carl Friedrich

Ich gucke halt, was für Argumente sind das jetzt hier

Carl Friedrich

und wie müsste denn der Code aussehen?

Carl Friedrich

Dann schreibe ich zwei Zeilen mehr und mache wieder einen Debugger rein.

Carl Friedrich

Also in manchen Sprachen ist das ja auch noch viel mehr so, dass man das dann auch, dass die IDE das auch unterstützt und man dann quasi die Funktion restarten kann an der Stelle, wo man halt gerade war. Dann schreibt man ein bisschen mehr Code, restartet die wieder. Also die Smalltalk-Leute machen das besonders gern, die es noch gibt.

Carl Friedrich

ja, also ich kenne

Carl Friedrich

auf jeden Fall auch in Python Leute, die halt sich das so

Carl Friedrich

angewöhnt haben, dass sie halt

Carl Friedrich

Tests schreiben, die Bagger anmachen und dann

Carl Friedrich

kann man halt erstmal so gucken, was macht man denn eigentlich

Carl Friedrich

für Objekte, was haben die für Methoden und wie,

Carl Friedrich

ja, was macht man denn da jetzt?

Carl Friedrich

NB-Dev so ein bisschen.

Carl Friedrich

Ich habe auch versucht mal

Jochen

einen zu überzeugen von

Jochen

Jupyter Notebooks und so, aber ich bin begeistert

Jochen

davon, dass er dann so, ja, nee, benutze ich nie, finde ich

Jochen

blöd und dann so, ja, dann habe ich gesehen, wie der

Jochen

entwickelt und der tatsächlich hat

Jochen

quasi das, was ich in Jupyter Notebooks mache, macht der

Jochen

im Debugger. Ja. Das kann man

Jochen

tun, das geht schon.

Jochen

Aber es ist halt, okay, ja.

Jochen

Wenn man jetzt noch einen Debugger

Johannes

hätte, der vorwärts und rückwärts steppen kann

Johannes

und wo man zwischendurch den Code verarbeiten

Johannes

kann, dann passt das schon.

Johannes

Ja. Aber ich glaube,

Carl Friedrich

PDB ist eine der Sachen, wo ich das Gefühl

Carl Friedrich

habe, dass das auch so ein bisschen

Carl Friedrich

revitalisiert ist. Also,

Carl Friedrich

dass es da jetzt Coders gibt, die sich dafür

Carl Friedrich

interessieren und eben hoffen, da

Carl Friedrich

in den nächsten Versionen auch ein paar

Carl Friedrich

neue Features reinzukriegen. Ich glaube, auch in

Carl Friedrich

3.13 ist schon die erste Version.

Carl Friedrich

Zum Beispiel, dass wenn man so einen Breakpoint

Carl Friedrich

macht, dass dann

Carl Friedrich

dass man dann

Carl Friedrich

nicht erst in der nächsten Zeile dann

Carl Friedrich

wirklich anhält im Debugger, sondern

Carl Friedrich

schon in der Zeile selber, wo der Breakpoint ist.

Carl Friedrich

Ah ja, genau, genau.

Jochen

Da war auch irgendwie so eine Seltsamkeit, dass

Jochen

wenn man das vor einem Return gemacht hat, dass man

Jochen

dann halt irgendwie... Im Caller

Carl Friedrich

erst den Breakpoint gekriegt hat.

Jochen

Ja, also das sind schon

Jochen

einige Dinge hier.

Jochen

Um jetzt meinen Einwurf noch kurz zu retten,

Jochen

das war eine Präsentation von einem Spieleentwickler,

Jochen

die sich selber so ein System gebaut hat.

Jochen

Jochen, du hattest die, glaube ich, auf dem Tomorrow Corporation.

Jochen

Das war eine super Video.

Jochen

Die haben sich genau so einen Debugger gebaut,

Johannes

der vorwärts und rückwärts steppen kann

Johannes

und wo ich zwischendurch Code verändern kann

Johannes

und dann trotzdem die Auswirkungen alle sehe.

Johannes

Das war schon sehr beeindruckend,

Johannes

weil das halt tatsächlich so ein Debugging ermöglicht,

Johannes

am offenen Herzen, ohne Angst haben zu müssen,

Johannes

dass der Patient jetzt abstürzt.

Johannes

das ist schon sehr beeindruckend.

Jochen

Ja, und es war auch noch irgendwie da, dass es ein Spiel ist

Jochen

und man hat halt unten quasi beim

Jochen

D-Bagger so einen Schieber

Jochen

und das Spiel geht halt mit und man

Jochen

schiebt den so da und das Spiel läuft rückwärts

Jochen

und man sagt

Jochen

da so ganz trocken so zu, ja,

Jochen

das sind jetzt nicht irgendwie Screenshots oder so, nee, das ist

Jochen

das echte Spiel, was wirklich irgendwie neu

Jochen

gerendert wird.

Jochen

Dann schiebe ich hier mal die Funktion ein kleines bisschen um und lasse das mal

Jochen

wieder laufen von hier aus und jetzt ist auch

Jochen

dieser Branch drin.

Jochen

mal bitte diesen Vortrag.

Jochen

Ja, kann ich auch in den Show Notes mal verlinken.

Jochen

Ja, den könnt ihr auch in die Show Notes rein.

Carl Friedrich

Also ich hatte, ich glaube

Carl Friedrich

die Free-Threading-Leute, die

Carl Friedrich

müssen solche Tools auch benutzen, weil es

Carl Friedrich

ansonsten einfach echt zu schwierig ist. Und da gibt's halt

Carl Friedrich

auch für C, so Back-in-Time-Debugger,

Carl Friedrich

der, wie heißt der nochmal?

Carl Friedrich

Anfang des Jahres

Carl Friedrich

war ich zum ersten Mal in der Situation, dass ich mich

Carl Friedrich

genötigt gesehen habe, auch so einen zu benutzen.

Carl Friedrich

Weil wir so einen nur sehr selten

Carl Friedrich

stattfindenden

Carl Friedrich

Garbage-Corrector-Bug hatten und

Carl Friedrich

Und mit so einem Back-in-Time-Debugger kann man halt dann solche Probleme auch richtig gut lösen.

Carl Friedrich

Also das ist quasi so ein Tracing-Debugger, der macht so eine Aufzeichnung der gesamten Prozessausführung.

Carl Friedrich

Das kann man einfach hundertmal machen, bis der Crash stattfindet.

Carl Friedrich

Und dann kann man sich die Ausführungen beliebig oft wieder anschauen.

Carl Friedrich

Und das Interface ist quasi so wie so ein normaler Debugger.

Carl Friedrich

Ich kann halt Next machen und Sachen printen.

Carl Friedrich

Aber der Prozess wird nicht wirklich neu ausgeführt, sondern das ist quasi in Anführungszeichen nur ein Replay.

Carl Friedrich

von dem, was eben bei der

Carl Friedrich

crashenden Ausführung wirklich passiert ist.

Carl Friedrich

Und da kann ich

Carl Friedrich

da kann ich dann wirklich auch

Carl Friedrich

ein Backward Next machen und dann bin ich wieder eine Zeile

Carl Friedrich

davor. Oder ein

Carl Friedrich

Backward Finish und dann bin ich

Carl Friedrich

eben am Anfang der Funktion, die ich gerade ausführe.

Carl Friedrich

Oder halt auch so Sachen

Carl Friedrich

wie, ich mache ein Hardware Watchpoint,

Carl Friedrich

also

Carl Friedrich

das war wirklich Memory Corruption, die ich da

Carl Friedrich

debuggt habe. Und

Carl Friedrich

wenn du halt einen kaputten Speicher hast, dann kannst

Carl Friedrich

du dir so ein Watchpoint

Carl Friedrich

setzen, wo du sagst, wer hat

Carl Friedrich

diesen, also wenn dieser Speicher

Carl Friedrich

verändert wird, dann halt

Carl Friedrich

an. Und dann

Carl Friedrich

kann man quasi vom Crash

Carl Friedrich

sagen, man macht so einen Watchpoint

Carl Friedrich

für den kaputten Speicher und dann lässt man rückwärts laufen.

Carl Friedrich

Weil dann findet man

Carl Friedrich

quasi, wenn man rückwärts läuft, findet man den Code,

Carl Friedrich

der den Speicher wirklich kaputt geschrieben hat.

Carl Friedrich

Und

Carl Friedrich

das war wirklich richtig gut.

Carl Friedrich

Aber das war wirklich auch

Carl Friedrich

ziemlich magisch. Es ist sehr magisch. Es funktioniert übrigens

Carl Friedrich

auch nicht, also technisch ist das nicht so

Carl Friedrich

implementiert, dass es wirklich rückwärts läuft.

Carl Friedrich

Weil es ist ja Maschinen-Code, es geht für beliebigen Code.

Carl Friedrich

Stattdessen macht er nur Snapshots.

Carl Friedrich

Der geht dann zum letzten

Carl Friedrich

Snapshot und läuft von da vorwärts.

Carl Friedrich

Aber es

Carl Friedrich

fühlt sich halt trotzdem so an.

Carl Friedrich

Ja, gut genug.

Carl Friedrich

Gut genug.

Johannes

Okay, okay, ich habe hier noch den wichtigsten,

Johannes

ich habe hier noch den wichtigsten,

Johannes

die wichtigste Änderung in Python 3.13.

Johannes

Bei Dockstrings werden jetzt die führenden Leerzeichen entfernt.

Johannes

Oh ja, das ist ja auch was.

Dominik

Das hatten wir uns schon angeguckt im Rappel tatsächlich.

Dominik

Warum? Wofür ist das da?

Dominik

Wie viel Prozent des Codes ist weniger?

Dominik

Oder der Byte?

Dominik

Fünf Prozent.

Dominik

Fünf Prozent weniger.

Dominik

Aber einfach, weil es korrekt ist, oder?

Dominik

Man braucht niemals den Dockstring mit der Einrückung.

Dominik

Naja, 5% finde ich

Carl Friedrich

ganz schön krass. Also 5% sind Leerzeichen

Carl Friedrich

von eingerückten Dockstrings in

Carl Friedrich

unseren PYC-Dateien. Das ist irgendwie

Carl Friedrich

würde man jetzt

Carl Friedrich

erstmal so nicht erwarten.

Carl Friedrich

Green Development danach.

Carl Friedrich

Das liegt halt daran, dass wir alle so viele

Carl Friedrich

gute und ausführliche Dockstrings

Carl Friedrich

schreiben und ganz viel...

Carl Friedrich

Vor allen Dingen aus Leerzeichen bestehen.

Carl Friedrich

Ja, ich weiß nicht.

Carl Friedrich

Jochen schreibt keine Dockstrings, dem passiert sowas nicht.

Carl Friedrich

Doch, doch.

Carl Friedrich

Naja gut, wenn ich einen Klassen habe,

Carl Friedrich

Methoden-Dockstrings, dann sind die ja schon immer

Carl Friedrich

8 Bytes eingerückt

Carl Friedrich

pro Zeile Dockstring.

Carl Friedrich

Ja, richtig.

Carl Friedrich

Und das müssten ja eigentlich 10% sein,

Carl Friedrich

weil wir gehen ja nur bis 80 Zeichen pro Zeile.

Carl Friedrich

Ist das nicht 79?

Carl Friedrich

Ja, streng genommen

Carl Friedrich

ist es 79.

Carl Friedrich

Ja, oder

Carl Friedrich

79.

Johannes

Was habt ihr denn für moderne Displays?

Johannes

80x25, oder?

Johannes

Wenn du

Carl Friedrich

Python-Modus 4 auf deinem T64 schreibst.

Carl Friedrich

Es gibt Leute,

Carl Friedrich

die müssen auf ihrem Handy entwickeln.

Carl Friedrich

Ich habe PyPy auf meinem Handy.

Carl Friedrich

Ach, okay. Wie geht das denn?

Carl Friedrich

PyPy ist

Carl Friedrich

tatsächlich ein Paket auf

Carl Friedrich

Thermux.

Carl Friedrich

PyPy hat eine ARM-Version und dann kann man

Carl Friedrich

das einfach

Carl Friedrich

laufen lassen. Manchmal ist es auch nett,

Carl Friedrich

dann kann ich in der Bahn irgendwie,

Carl Friedrich

das ist halt so ein bisschen nervig zu tippen, aber

Carl Friedrich

man kann auch den JIT laufen lassen, man kann sich dann auch

Carl Friedrich

auf dem Handy anzeigen

Carl Friedrich

lassen, welchen Maschinencode

Carl Friedrich

der PyPyJIT jetzt gerade auf

Carl Friedrich

für den Python-Code, den man auf dem Handy

Carl Friedrich

laufen ließ,

Carl Friedrich

erzeugt wurde.

Carl Friedrich

Wenn man die richtigen Umgebungsvariablen weiß.

Dominik

Aber Thermux kann das leider noch nicht, dass man mit dem Daumen

Dominik

hoch und runter machen kann mit dem interaktiven

Dominik

neuen. Nein, nein, aber das ist Scrolling

Dominik

und ich meine jetzt durch die einzelnen Zeilen durch

Dominik

vom Editor, vom

Dominik

History Edit.

Carl Friedrich

Ich glaube, achso, du meinst so

Carl Friedrich

in der Konsole, ne, glaube ich nicht.

Carl Friedrich

Ja, schade.

Carl Friedrich

Habe ich, also jedenfalls

Carl Friedrich

zu dem Thermux habe ich auch eine,

Carl Friedrich

weiß nicht, wie lustig die für andere ist,

Carl Friedrich

ich fand die lustig, ist mir was auf einer

Carl Friedrich

Konferenz im Sommer passiert, ich war auf so einer

Carl Friedrich

akademischen Programmiersprachenkonferenz

Carl Friedrich

mit, also

Carl Friedrich

Forschern und Forscherinnen, die sich mit

Carl Friedrich

Compilern und Optimierung

Carl Friedrich

und Programmiersprachen und so auseinandersetzen

Carl Friedrich

und da war ich dann mit einem relativ

Carl Friedrich

bekannten C-Compiler

Carl Friedrich

Prof, oder John Reggeier

Carl Friedrich

heißt der, auf so einem Boot

Carl Friedrich

in Kopenhagen Bier trinken, also

Carl Friedrich

das Boot lag am Hafen,

Carl Friedrich

man konnte auf Deck Bier trinken und

Carl Friedrich

hab ihm dann auf dem Handy so eine Optimierung

Carl Friedrich

gezeigt, die wir in PyPy machen

Carl Friedrich

und er hat also mit PyPy noch nie irgendwas zu tun

Carl Friedrich

gehabt und schaut sich das an, so in ganz

Carl Friedrich

ganz kleinem Font und meinte so,

Carl Friedrich

warum ist denn da diese Extraoperation, die braucht er doch gar nicht.

Carl Friedrich

Und das war absolut

Carl Friedrich

richtig und

Carl Friedrich

Und der Grund war, dass die Divisionen in C und in Python

Carl Friedrich

halt sich unterschiedlich verhalten, wenn die Zahlen negativ sind.

Carl Friedrich

Und dafür braucht man halt in Python so ein extra XOR.

Carl Friedrich

Aber die Tatsache, dass er das quasi so mit dem 8-Punkt-Font

Carl Friedrich

über einem Bier, so auf dem Handy, mal eben so gesehen hat,

Carl Friedrich

quasi in einem ASCII-Format, was er noch nie gesehen hatte,

Carl Friedrich

das fand ich dann doch relativ krass.

Carl Friedrich

Tja, so Leute gibt es. Ich würde sogar fast sagen,

Carl Friedrich

das ist fast der Schluss von Thema 13.

Jochen

Ja, ich glaube, wir sind mit dem Thema eigentlich mehr oder

Jochen

weniger durch. Dann

Jochen

können wir eigentlich noch mal zu einem

Jochen

welchen Teil

Jochen

wechseln. Wir konnten

Jochen

zum Beispiel

Jochen

ein bisschen

Jochen

Meta-Geschichten

Jochen

machen. Meta-Geschichten?

Jochen

Ja, zum Beispiel hatten

Jochen

wir Anfragen nach

Jochen

Ach, das ist also ein Satz Meta-Geschichten.

Jochen

Ja, also

Jochen

wie sieht das eigentlich aus?

Jochen

Wollt ihr nicht mal ein Hörertreffen machen?

Jochen

Ja, wollen wir

Jochen

das? Und genau, das

Jochen

hängt, würde ich meinen, davon ab,

Jochen

ob es Hörer gibt, die

Jochen

das auch gerne machen wollen würden,

Jochen

weil ansonsten

Jochen

sitzen wir da alleine rum irgendwo.

Jochen

Das wäre ja auch irgendwie, also ich würde einfach mal

Jochen

eine Idee, jetzt können wir das natürlich auch machen,

Jochen

aber

Jochen

sagen wir mal so, man kann

Jochen

einfach eine Mail an

Jochen

hallo.vereinenpodcast.de schreiben zum Beispiel

Jochen

und wenn da jetzt fünf Mails kommen,

Jochen

dass man sich irgendwo

Jochen

Köln, Düsseldorfer Raum oder so

Jochen

treffen wollen würde, dann

Jochen

machen wir das einfach mal.

Jochen

Und genau,

Jochen

das ist eine Geschichte.

Jochen

Dann gab es eine Nachfrage nach...

Jochen

Ich würde das gerne noch

Jochen

erweitern, also falls da fünf Mails

Jochen

kommen, die sich im Stuttgarter Raum

Jochen

treffen wollen.

Jochen

Oh je, vielleicht müssen wir uns in der Mitte treffen,

Jochen

irgendwo in Frankfurt oder so.

Jochen

Ja, in Frankfurt?

Jochen

Nee, das ist

Jochen

bimodal, oder? Das ist Düsseldorf oder

Jochen

Stuttgart und dann kriegt man das hin.

Jochen

Alles klar.

Jochen

Da, wo sich mehr melden, da müssen

Jochen

wir dann hin. Da ist zuerst.

Jochen

Aha.

Jochen

Da ist zuerst.

Jochen

Ja. Okay, mal schauen.

Jochen

Ich bin mal gespannt, ob sich da jemand meldet.

Jochen

Das könnten wir machen.

Jochen

Genau. Ja, dann hat sich...

Dominik

Sollen wir T-Shirts machen, Jörg?

Dominik

T-Shirts.

Dominik

Ja,

Jochen

ja, können wir

Jochen

auch machen.

Jochen

Hat sich da gerade jemand freiwillig

Jochen

gemeldet?

Jochen

Müssen wir mal schauen.

Jochen

Ja, genau.

Jochen

Eine andere Anfrage war

Jochen

von jemandem, der irgendwie alte Episoden

Jochen

durchhört, dass wir wohl irgendwann mal gesagt haben,

Jochen

oh, wir machen mal einen Discord-Server oder so.

Jochen

Und dann kam

Jochen

die Frage, haben wir das denn mal gemacht dann?

Jochen

Ja. Und die Antwort ist ja.

Jochen

Aber wir haben nie drüber geredet

Jochen

und vielleicht machen wir das jetzt

Jochen

auch mal und packen einen Link zu dem

Jochen

Discord-Server einfach irgendwie auch in die

Jochen

Shownotes oder so. Und

Jochen

da kann man auch einfach dann mal draufgucken,

Jochen

weil tatsächlich haben wir das und

Jochen

ja,

Jochen

wir haben das aber nie kommuniziert, dass wir das haben.

Jochen

Daher

Jochen

ist da auch wenig los. Genau.

Jochen

Und...

Dominik

Wie ist es eigentlich mit den tollen

Dominik

Transkripten von unserem

Jochen

Podcast, lieber Jürgen? Ja, da habe ich jetzt

Jochen

am Wochenende, da gab es den PyDDF

Jochen

Herbstsprint und da habe ich

Jochen

angefangen, mich mal damit

Jochen

zu beschäftigen, weil ich dachte

Jochen

so, also ich meine, klar, dass man da

Jochen

kann man nicht, also in zwei Tagen

Jochen

kriege ich das nicht hin, aber

Jochen

ich habe zumindest angefangen und man kann

Jochen

jetzt auch, wenn man im Webplayer auf

Jochen

da ist so ein zusätzlicher

Jochen

Button bei den Episoden, wo es Transkripte

Jochen

gibt. Also falls ihr Taubseiten

Dominik

es trotzdem hören wollt, könnt ihr uns jetzt auch

Dominik

also lesen. Ja, genau.

Jochen

Das sieht aus wie so ein Dokument-Icon.

Jochen

Wenn man da drauf drückt, dann erscheint da irgendwie so ein Transkript-Tab drunter.

Jochen

Und das läuft auch mit, wenn man dann mit dem Player das abspielt.

Jochen

Und das geht schon.

Jochen

Aber das ist nur ein Teil von den Sachen, die man implementieren muss,

Jochen

wenn man Transkripte haben will.

Jochen

Da kommen noch diverse andere Geschichten dazu, mit denen ich noch nicht fertig bin.

Jochen

Aber das geht auf jeden Fall.

Jochen

Dabei ist mir dann auch eine Geschichte aufgefallen, die halt blöd ist.

Jochen

Ich dachte, das ist voll super, wir haben ja auch die Spuren noch.

Jochen

Das heißt, die Sprechererkennung

Jochen

brauchen wir gar nicht in einem Machine Learning Modell

Jochen

machen, sondern das weiß man ja schon.

Jochen

Ich haue einfach die

Jochen

Spuren getrennt durch Whisper durch

Jochen

oder so und dann kann ich

Jochen

auch sagen, wer das gesagt hat.

Jochen

Und dann habe ich festgestellt,

Jochen

die rohen Spuren

Jochen

vor Auphonic sind halt

Jochen

von den Zeiten her anders, als das, was

Jochen

nachher rausfällt, weil halt manchmal

Jochen

Stille rausgeschnitten wird oder manchmal

Jochen

wird das halt so ein bisschen

Jochen

transformiert und dann passen die ganzen Zeitstempel

Dominik

nicht mehr und dann geht das nicht. Und Jochen hat nicht aufgehoben

Jochen

die einzelnen Spuren. Ja, man kriegt von

Jochen

Auphonic auch die einzelnen Spuren zurück.

Jochen

Nach dem Mastering

Jochen

sozusagen, aber die habe ich nicht aufgehoben

Jochen

und die werden nach irgendwie

Jochen

zwei Wochen oder 20 Tagen irgendwie gelöscht.

Jochen

Das heißt, ich muss entweder alles nochmal durch

Jochen

Auphonic schieben

Jochen

oder irgendwie

Jochen

es gibt für die alten Folgen dann halt jetzt

Jochen

nur die Transkripte ohne Namen

Jochen

dran. Vielleicht ist das auch schon

Jochen

okay. Genau, und dann für die zukünftige mache ich

Jochen

das dann halt so, dass man dann auch die Namen an den

Jochen

Sprechern hat.

Jochen

Ja, aber Transkripte, da tut sich

Jochen

was, das kommt jetzt.

Dominik

Wir hatten das ja irgendwann schon mal so ein bisschen probiert, das war so relativ

Dominik

fürchterlich, aber so ist eigentlich relativ cool.

Dominik

Ja.

Dominik

Genau.

Dominik

Ja, wir wollten auch picken, oder?

Dominik

Picken wir nicht immer? Genau, picks, genau.

Dominik

Genau, genau.

Dominik

Ich muss ja wieder irgendwas für dich Triviales picken,

Dominik

dann fange ich mal damit an, weil ich ja immer irgendwas anderes

Dominik

denke und

Dominik

wieder, hat nichts mit unserer Folge zu tun, aber

Dominik

ich habe

Dominik

ab und zu mal Geld bezahlt tatsächlich irgendwie für

Dominik

ordentliche Freistellung von Bildern.

Dominik

Keine Ahnung mehr, warum, aber das war schon

Dominik

ein bisschen länger her. Es gibt ein tolles Paket,

Dominik

das ich entdeckt habe, das heißt RemBG

Dominik

oder sowas. Das macht einfach den

Dominik

Background weg als Kommando-Teilen-Tool von irgendwelchen

Dominik

Bildern, wenn man das will.

Dominik

Super praktisch.

Dominik

Falls man sowas braucht.

Dominik

Das war's.

Dominik

Jetzt dürft ihr vernünftige Sachen bekommen.

Dominik

Ich mach mal weiter mit den unvernünftigen Sachen,

Dominik

die auch überhaupt nichts mit der Episode zu tun

Dominik

haben, aber mit der Zeit, in der wir leben.

Johannes

Und zwar ist kürzlich die neueste, größte Primzahl gefunden worden.

Johannes

Ah, ja.

Johannes

Das ist eine Mersenne-Primzahl, die heißt M136279841.

Johannes

Also 2 hoch 136.279.841 minus 1 ist eine Primzahl.

Johannes

Waren sehr viele GPUs beteiligt an der Überprüfung

Johannes

Und das ist die erste seit 28 Jahren, die erste große Primzahl nach 28 Jahren. Diese Primzahl hat 41.024.320 Stellen. Und das allein ist schon eine schöne Sache.

Johannes

Aber das Schöne, was ich gefunden habe, was heute mein Pick ist, ist eine Initiative, die versucht, diese Zahl zu sagen, bevor die nächste größte Primzahl gefunden wird.

Johannes

Und zwar als verteilter Prozess.

Johannes

Da gibt es eine Webseite, die heißt saytheprime.com.

Johannes

Da kann man sich 419 Stellen geben lassen.

Johannes

Die nimmt man dann als Video auf, lädt das Ganze auf YouTube hoch,

Johannes

schickt den Link ein und die machen dann eine ganz, ganz, ganz, ganz, ganz große Playlist draus,

Johannes

die hoffentlich diese Primzahl insgesamt sagt.

Johannes

Und das Ziel dieser Initiative ist es, diese Primzahl einmal zu sagen,

Johannes

bevor die nächste größere Primzahl gefunden wird.

Johannes

Wahrscheinlich kann man sich einfach mit selber multiplizieren

Dominik

und dann nochmal wieder eins abziehen, dann hat man das schon.

Dominik

Ja, diese Zahlen zu rechnen ist nicht so schwierig,

Dominik

aber das Beweisen, dass es eine Primzahl ist.

Carl Friedrich

Was ist die Schätzung, wie lange diese Playlist,

Carl Friedrich

wie viele Jahre die spielen wird?

Carl Friedrich

Wie lange braucht man eine Zeit?

Carl Friedrich

Sie sagen vor, dass man

Carl Friedrich

mit 120 BPM

Johannes

spricht. Das heißt, es wären

Johannes

zwei Ziffern pro Sekunde.

Johannes

Das heißt, es wären

Johannes

ungefähr 20 Millionen Sekunden.

Johannes

Das ist gar nicht so viel.

Johannes

20 Millionen Sekunden.

Johannes

Eine Million Sekunden ist

Jochen

ungefähr eine Woche oder so.

Jochen

Jetzt müssen wir es mal

Jochen

ausrechnen.

Jochen

Das ist ein halbes Jahr oder so.

Jochen

Warte mal, das sind

Jochen

41 Millionen Sekunden

Jochen

durch.

Jochen

243 Tage.

Jochen

Dreiviertel Jahr.

Jochen

Darum geht es ja gar nicht.

Jochen

Es geht gar nicht darum, dass es jemand sich dann anhört,

Johannes

sondern es geht darum, dass es einmal gesagt

Johannes

würde. Wir können ja jedes Mal

Dominik

in einer Episode, so in einer kleinen Episode von dieser

Dominik

Primzah mit sind.

Dominik

Einfach im Hintergrund laufen.

Dominik

Die

Dominik

jeder, wer

Johannes

möchte, kann daran teilnehmen. Es gibt ein sehr

Johannes

schönes Video von Matt Parker, wo er die Zahl

Johannes

einmal anzeigt

Johannes

in seinem Video. Also er

Johannes

hat dann, in jedem

Johannes

Frame zeigt er glaube ich tausend Ziffern an und

Johannes

das geht dann eben über

Johannes

so und so viele Sekunden oder

Johannes

vielleicht zeigt er zehntausend Ziffern in jedem Frame. Auf jeden Fall

Johannes

irgendwie dreieinhalb Minuten lang zeigt er diese

Johannes

Zahl an und spricht über die Zahl.

Johannes

Und das ist quasi das Audio-Äquivalent

Johannes

und jeder kann damit mithelfen

Johannes

und ich finde, jeder von uns

Johannes

sollte das tun?

Johannes

Das ist mein Pick für diese Woche.

Johannes

Saytheprime.com. Ich habe tatsächlich auch über die

Carl Friedrich

Priebsal nachgedacht, weil es ist nämlich

Carl Friedrich

relativ, ich finde es relativ lustig,

Carl Friedrich

dass man die in Python problemlos

Carl Friedrich

ausrechnen kann. Das ist überhaupt kein Problem.

Carl Friedrich

Einfach mal zwei hoch

Carl Friedrich

136 Millionen zu rechnen,

Carl Friedrich

das dauert quasi keine

Carl Friedrich

bemerkbare Zeit. Das sind so 16 Megabyte

Carl Friedrich

Zahl ungefähr.

Carl Friedrich

Vielleicht ein bisschen ineffizienter dargestellt, aber

Carl Friedrich

die zu printen ist

Carl Friedrich

komplett unmöglich, weil

Carl Friedrich

im 2er-System ist das halt eine sehr einfache

Carl Friedrich

Zahl, das sind lauter Einsen.

Carl Friedrich

Aber

Carl Friedrich

im 10er-System,

Carl Friedrich

um zu wandeln, das ist halt

Carl Friedrich

nicht linear zu machen, sondern das ist irgendwie

Carl Friedrich

N log N oder so.

Carl Friedrich

Und ja,

Carl Friedrich

es ist ja eh inzwischen standardmäßig

Carl Friedrich

so, dass man große Zahlen nicht mehr

Carl Friedrich

printen kann,

Carl Friedrich

standardmäßig gibt es dieses Limit.

Carl Friedrich

Das war auch irgendwie ein Security Problem.

Carl Friedrich

Aber selbst wenn man das Feature ausschaltet,

Carl Friedrich

dann dauert es halt einfach zu lang.

Carl Friedrich

Ja.

Carl Friedrich

Zum Glück

Johannes

kann man die Zahl runterladen.

Johannes

Auf messen.org gibt es

Johannes

eine ZIP-Datei, 18 Megabyte.

Johannes

Falls man die

Johannes

braucht für irgendwas.

Johannes

An den Leuten statt X

Johannes

schicken, statt den X-Sourcen.

Johannes

So.

Johannes

Ja.

Johannes

Gut, das ist mein völlig

Johannes

unkorrelierter Pick,

Johannes

aber es passt irgendwie in unsere

Johannes

Zeit rein. Und das ist alles relativ neu. Also es ist

Johannes

vom 21. Oktober,

Johannes

als die Bestätigung kam.

Johannes

Jochen, was denkst du denn? Oder CF?

Johannes

Ich meine, keine Ahnung.

Jochen

Ich würde ja ungern die Reihenfolge

Jochen

an völlig

Jochen

absolut nichts mit dem Thema zu tun haben,

Jochen

denn Pics

Jochen

unterbrechen. Ich habe auch einen, der

Jochen

gar nichts mit dem eigentlichen Thema

Jochen

dieser Episode zu tun hat oder auch nicht mit Python oder sonst

Jochen

irgendwas. Und zwar

Jochen

ich war jetzt letztens auf so einer Podcaster-Konferenz

Jochen

auf der Subscribe11

Jochen

in Berlin.

Jochen

Dieses Crap 10 ist

Dominik

übrigens schon vier Jahre her oder so.

Dominik

Fünf, die waren 2019.

Jochen

Da waren wir auch.

Jochen

Da gehen wir zunächst auch.

Jochen

Nix war jetzt gerade fünf Jahre später.

Jochen

Zwischendurch waren da so leichte

Jochen

Pandemie-Schwankungen

Jochen

am Start.

Jochen

Es war auch kleiner.

Jochen

Es waren deutlich weniger Leute da als

Jochen

vor fünf Jahren.

Jochen

Und das lag vor allen Dingen

Jochen

daran, dass inzwischen

Jochen

so Infrastruktur auch

Jochen

weggebrochen ist, die vorher ganz gut

Jochen

funktioniert hatte, nämlich Social Media.

Jochen

Also das war so ein Ding, alle, die man

Jochen

traf, sagten, naja, also klar,

Jochen

früher konnte man sowas, aber heute geht das ja nicht mehr, weil

Jochen

Social Media ist ja tot, daher kann man das nicht

Jochen

mehr machen. Also man kann zum Beispiel für so eine Konferenz

Jochen

auch nicht mehr gut Werbung machen, weil man kann den Leuten nicht mehr

Jochen

davon erzählen, weil, ja,

Jochen

wo will man es den Leuten

Jochen

denn noch erzählen? Es gibt ja irgendwie nichts mehr.

Jochen

Und dann war halt

Jochen

so die Frage, okay, was kann man denn jetzt tun,

Jochen

wenn es das nicht mehr gibt? Und da war eine

Jochen

der Antworten halt, ah, naja,

Jochen

wir haben ja doch irgendwie ein Medium,

Jochen

wir baden da gerade unsere Hände

Jochen

sozusagen drin. Warum

Jochen

sagen wir nicht irgendwie in unseren

Jochen

Podcasts quasi, dass es solche

Jochen

Sachen gibt? Und

Jochen

dann war auch die Idee, dass man da so ein bisschen

Jochen

Werbematerial oder so schon mal fertig macht,

Jochen

dass man das eigentlich direkt verwenden kann. Das ist dann noch nicht passiert,

Jochen

aber ich dachte, das kann ich jetzt

Jochen

mal nutzen, um das zu sagen, dass es sowas gibt. Und wenn man

Jochen

irgendwie da Interesse dran hat, kann man da auch hingehen.

Jochen

Auch als Hörer, da waren zum Beispiel

Jochen

Du meinst die nächste in fünf Jahren?

Jochen

Nee, die nächste ist schon in einem halben Jahr.

Jochen

Die Frequenz so ein bisschen erhöhen

Jochen

und die nächste ist daher schon

Jochen

im Frühjahr nächsten Jahres und

Jochen

es gab am Anfang so eine Vorstellungsrunde, wo

Jochen

alle gesagt haben, was sie so tun und da waren

Jochen

tatsächlich ein paar Leute dabei.

Jochen

Eine

Jochen

Person hier auch aus Düsseldorf, die sie

Jochen

bezeichnet sich als Extremhörerin

Jochen

und es waren

Jochen

auch viele Hörer da. Es war sehr schön.

Jochen

Schöne Veranstaltung. Weißt du, wo die nächste ist?

Jochen

Auch Berlin.

Jochen

Gleiche Location, also Weißensee.

Jochen

Und in Mai...

Carl Friedrich

Wie viele Stunden ist man extrem höher?

Carl Friedrich

Pro Tag?

Jochen

Ja, viele, viele pro Tag.

Jochen

20 oder so?

Jochen

Und sie meinte, ich war

Jochen

auf einem Hörertreffen

Jochen

am Samstagabend von einem anderen Podcast

Jochen

und

Jochen

da ist halt so, ja, also

Jochen

es ist immer schwer zu sagen,

Jochen

wie viele Stunden Podcast ich denn jetzt so höre,

Jochen

weil ich höre immer auf irgendwie

Jochen

so zweieinhalbfacher Geschwindigkeit,

Jochen

worauf alle am Tisch so

Jochen

ja, da muss man sich langsam rantasten.

Jochen

Da fängt man nicht mit an.

Jochen

Man fängt zuerst an mit so 1,2 und dann 1,5

Jochen

und dann geht das immer langsamer.

Jochen

Schnell als 1,5 ist das schon.

Jochen

Ja, aber inzwischen kann ich das halt auch gar nicht mehr

Jochen

auf einfache Geschwindigkeit hören,

Jochen

weil dann denke ich mir so was.

Jochen

Ja, bei den meisten kostet das für mich auch nichts.

Carl Friedrich

Ich finde es ja total lustig.

Carl Friedrich

Also man gewöhnt sich ja da wirklich total dran.

Carl Friedrich

höre, also ich bin nicht so extrem, ich höre vielleicht

Carl Friedrich

1,2 oder 1,5 oder so

Carl Friedrich

und an das Sprechen gewöhnt man sich total.

Carl Friedrich

Aber wenn man so eine Zeit

Carl Friedrich

lang irgendwas mit normaler Geschwindigkeit

Carl Friedrich

und dann erhöht gehört hat, die Jingle klingt immer

Carl Friedrich

falsch. Also selbst Jahre,

Carl Friedrich

ich höre jetzt, was weiß ich,

Carl Friedrich

wie heißt der Microsoft

Carl Friedrich

C-Sharp-Typ?

Carl Friedrich

Hansel Minutes?

Carl Friedrich

Höre ich

Carl Friedrich

seit Jahren 20%

Carl Friedrich

schneller, die Jingle klingt immer noch falsch.

Carl Friedrich

Ja, es gibt so gute

Dominik

Dingles, die hören sich auf unterschiedlichen Geschwindigkeiten ähnlich

Dominik

interessant an.

Dominik

Ich habe einen Python-Pick.

Dominik

Es gibt eine super

Carl Friedrich

kleine Studie von Erit Katril, das ist eine

Carl Friedrich

C-Python-Core-Entwicklerin,

Carl Friedrich

die eine Studie darüber gemacht hat,

Carl Friedrich

wie viel

Carl Friedrich

PyPI-Pakete Return,

Carl Friedrich

Break oder Continue-Anweisungen in

Carl Friedrich

Finally-Blöcken machen. Weil es gab

Carl Friedrich

nämlich so eine kleine Diskussion darüber, dass man,

Carl Friedrich

ob man vielleicht, also Except-Doppelpunkt,

Carl Friedrich

also ohne Angabe einer Exception-Typ abschaffen sollte.

Carl Friedrich

Irgendwann in einer der nächsten Versionen,

Carl Friedrich

da gab es total viel Gegenmeinung

Carl Friedrich

und dann haben sie das Vorhaben auch wieder aufgegeben.

Carl Friedrich

Aber eine der Ergebnisse von der Diskussion war eben,

Carl Friedrich

einfach mal zu gucken, wie sieht das denn mit Finally aus?

Carl Friedrich

Und Return, Break und Continuum in Finally

Carl Friedrich

haben ja so ein bisschen so komische Effekte.

Carl Friedrich

Wenn man Return macht, dann wird die Exception geschluckt.

Carl Friedrich

Also wenn ich quasi Try-Finally habe

Carl Friedrich

und der Code

Carl Friedrich

wirft eine Exception und in dem Finally-Block

Carl Friedrich

mache ich dann Return. Dann return

Carl Friedrich

ich halt einfach von der Funktion und die Exception

Carl Friedrich

verschwindet. Und deswegen

Carl Friedrich

hat Irit eben gesagt, sie schaut mal

Carl Friedrich

wie das in,

Carl Friedrich

hier steht irgendwo, wie viele Pakete sie sich angeschaut hat,

Carl Friedrich

die 8000 beliebtesten

Carl Friedrich

PyPI-Pakete

Carl Friedrich

analysiert, eben ein Skript geschrieben,

Carl Friedrich

was die abstrakten

Carl Friedrich

Syntaxbäume durchgeht und schaut, ob eben

Carl Friedrich

das Finally-Block hier mit

Carl Friedrich

break, continue und return

Carl Friedrich

drin vorkommen und dann von Hand analysiert,

Carl Friedrich

wie viele von denen quasi wirklich so sein sollen

Carl Friedrich

und wie viele von denen Bugs sind.

Carl Friedrich

Also es waren 120 Millionen Zeilen Python

Carl Friedrich

und darin waren 200 Fälle von Kontrollflussinstruktionen

Carl Friedrich

in Feinlieblöcken, davon waren 46 korrekt,

Carl Friedrich

aber diese 46 waren lauter Tests in irgendwelchen Lintern,

Carl Friedrich

die eben sicherstellen wollten, dass der

Carl Friedrich

Linter sagt, bitte verwende kein Return in

Carl Friedrich

Finally. Acht Fälle

Carl Friedrich

waren wirklich korrekt, also wirklich, wo

Carl Friedrich

das quasi gewollt ist, dass die Exception

Carl Friedrich

dann geschluckt wird. Und

Carl Friedrich

149 waren dann eben

Carl Friedrich

Bugs, die

Carl Friedrich

Katarina dann auch immer bei den entsprechenden

Carl Friedrich

GitHub-Repositories gemeldet hat

Carl Friedrich

und die meisten dieser Bugs werden jetzt gefixt.

Carl Friedrich

Also so sieht schon so ein bisschen

Carl Friedrich

aus, als wäre das jetzt nicht so das wichtige Feature und

Carl Friedrich

auch ein Feature, was vielleicht

Carl Friedrich

eher zu

Carl Friedrich

ja, zu

Carl Friedrich

Missanwendungen als zu korrekten

Carl Friedrich

Anwendungen führt. Sehr schön.

Carl Friedrich

Ja. Und wenn ihr wollt, habe ich noch

Carl Friedrich

einen mega nerdy Pick. Oh ja.

Carl Friedrich

Es gibt ein Paper,

Carl Friedrich

was ein C-Compiler für eine

Carl Friedrich

sehr kleine Teilmenge von C

Carl Friedrich

nach Shell

Carl Friedrich

übersetzt.

Carl Friedrich

Das ist

Carl Friedrich

vollständig genug, dass der C-Compiler

Carl Friedrich

sich dann, wenn er sich selbst

Carl Friedrich

nach Shell übersetzen kann, und dann

Carl Friedrich

kann ich quasi, wenn ich nur irgendeine

Carl Friedrich

beliebige Unix-Shell habe, kann ich einen

Carl Friedrich

sehr kleinen C-Compiler

Carl Friedrich

bootstrappen.

Carl Friedrich

Und

Carl Friedrich

also die haben auch Gründe,

Carl Friedrich

das sind irgendwelche Forscher, die gute Gründe

Carl Friedrich

dafür haben, warum sie das machen.

Carl Friedrich

Die haben Gründe.

Carl Friedrich

Die haben so Trusting-Trust-Gründe, also damit

Carl Friedrich

kann man halt sicherstellen, dass man keine langlebigen

Carl Friedrich

Backdoors im Compiler hat, aber

Carl Friedrich

die Gründe sind mir egal. Warum ich das toll finde,

Carl Friedrich

ist, es gibt ja immer

Carl Friedrich

diese Argumente, C ist eine schnelle Sprache, weil

Carl Friedrich

die ist compiled und Python ist eine langsame Sprache,

Carl Friedrich

die ist interpretiert und

Carl Friedrich

von solchen Argumenten halte ich gar nichts, weil

Carl Friedrich

das ist halt eine Eigenschaft der Implementierung,

Carl Friedrich

ob was compiled oder

Carl Friedrich

interpretiert ist. Ich kann halt kompilierte

Carl Friedrich

Python-Implementierung haben und interpretierte und

Carl Friedrich

das sagt jetzt, also das ist keine inhärente

Carl Friedrich

Eigenschaft der Sprache und das ist einfach so

Carl Friedrich

ein schönes

Carl Friedrich

Gegenbeispiel, dass ich quasi eine

Carl Friedrich

kompilierte Version von C habe, die halt

Carl Friedrich

trotzdem ultra langsam ist.

Carl Friedrich

Okay,

Carl Friedrich

sehr schön.

Carl Friedrich

Ja, sehr schön.

Carl Friedrich

Ja, ich würde sagen, das war ein passendes Schlusswort.

Carl Friedrich

Ja.

Dominik

Jetzt könnt ihr auch wieder runterdrehen, eure Geschwindigkeit beim Hören.

Dominik

Und

Dominik

wünschen euch einen wunderschönen Tag,

Dominik

wunderschöne Nacht, wunderschönen Morgen, wunderschönen

Dominik

Aufdehnen. Bleibt uns gewogen,

Dominik

hallo at peißenpodcast.de für alles Feedback und so weiter.

Dominik

Bis bald.

Dominik

Ja. Tschüss.

Dominik

Tschüss.