Elixir v1.17 veröffentlicht: mengentheoretische Typen, Kalender-Duration und Unterstützung für Erlang/OTP 27
Schrittweise Warnungen für mengentheoretische Typen
- Elixir v1.17 führt mengentheoretische Typen ein, die Typen in Pattern inferieren und diese zur Typprüfung von Programmen verwenden.
- Dieses Typsystem ermöglicht es, Fehler und Bugs in Codebasen zu finden, ohne bestehende Software ändern zu müssen.
- Derzeit können Entwicklerinnen und Entwickler nur über Warnungen mit diesem Typsystem interagieren.
- Wichtige Warnungen:
- Pattern Matching auf nicht vorhandene Schlüssel
- Zugriff auf nicht vorhandene Schlüssel
- Funktionsaufruf an Stellen, die kein Modul sind
- Beim Aufruf anonymer Funktionen wird etwas aufgerufen, das keine Funktion ist
- Vergleich zwischen Structs
- Vergleich zwischen sich nicht überschneidenden Typen
- Ungültiges binäres Pattern Matching
- Versuch, einen nicht definierten Exception-Struct abzufangen
- Zugriff auf nicht definierte Felder in abgefangenen Exceptions
Unterstützung für Erlang/OTP
- Elixir v1.17 unterstützt Erlang/OTP 27 und beendet die Unterstützung für Erlang/OTP 24.
- Die Elixir-Entwickler empfehlen die Migration auf Erlang/OTP 26 oder höher.
- Wichtige Funktionen in Erlang/OTP 27:
- Hinzugefügtes
json-Modul
- Hinzugefügte Prozess-Labels (
proc_lib:set_label/1)
Neuer Duration-Datentyp und Funktionen zum Verschieben von Datumswerten
Weitere wichtige Änderungen
- Neue Funktionen
Keyword.intersect/2,3 hinzugefügt.
- Neuer Mix-Profiler
mix profile.tprof hinzugefügt.
- Guard
Kernel.is_non_struct_map/1 hinzugefügt.
- Der Logger von Elixir formatiert
gen_statem-Berichte und enthält Prozess-Labels aus Erlang/OTP 27.
Meinung von GN⁺
- Mengentheoretische Typen: Dieses Typsystem kann erheblich dazu beitragen, Stabilität und Zuverlässigkeit von Code zu erhöhen. Besonders bei großen Projekten ist das nützlich.
- Unterstützung für Erlang/OTP 27: Durch die Unterstützung der neuesten Version von Erlang/OTP bietet Elixir viele Vorteile bei Leistung und Funktionen.
- Duration-Datentyp: Die Datumsverschiebung unter Berücksichtigung von Zeitzonen und Kalendern ist in Anwendungen wie Terminplanung sehr nützlich.
- Grenzen des Typsystems: Derzeit ist keine Typanalyse über Funktionsgrenzen hinweg möglich; dieser Punkt sollte in künftigen Updates verbessert werden.
- Wettbewerbsprodukte: Im Vergleich zu anderen Sprachen mit statischen Typsystemen wie TypeScript bietet der Ansatz von Elixir Typsicherheit, ohne die Flexibilität einer dynamischen Sprache aufzugeben.
1 Kommentare
Hacker-News-Kommentare
Die Elixir- und Erlang-Teams leisten seit einigen Jahren hervorragende Arbeit. Auch die Beiträge von Bibliotheks- und Buchautorinnen und -autoren sind groß. Es ist spannend, die Commits an Elixir und OTP zu verfolgen. Vielen Dank an alle Beteiligten.
Bei einem Side-Project mit Elixir als Backend war die Erfahrung produktiv und angenehm. Die Produktivität von LiveView wird sehr geschätzt, aber bei instabilen Netzwerkverbindungen ist es nicht geeignet. Elixir lässt sich auch ohne LiveView mehr als unterhaltsam nutzen.
Ich entwickle ein Startup Full-Stack mit Elixir, und es ist die beste Technologie, die ich bisher verwendet habe. Ich erzähle meinen Freundinnen und Freunden ständig von den Vorzügen von Elixir. Hoffentlich funktionieren RabbitMQ und die Clients mit OTP 27.
Vielen Dank für die großartige Arbeit der Elixir- und Erlang-Entwicklerinnen und -Entwickler. Ich hoffe, dass die Ausrede „hat keine Typen“ für eine breite Akzeptanz von Elixir verschwindet. Ich wünsche euch weiterhin viel Erfolg.
Ich lese seit 10 Jahren über Elixir und liebe die Sprache. Wegen der niedrigeren Gehälter im Vergleich zu Mainstream-Sprachen habe ich Jobs rund um Elixir aber aufgegeben. Gehalt und ein cooles Produkt sind wichtiger als der Tech-Stack. Es macht trotzdem Spaß, Elixir aus der Ferne weiterzuverfolgen.
Das coole Feature dieser Version ist die Ergänzung von
get_in/1. Zum Beispiel gibt es beiget_in(struct.foo.bar)keinen Fehler, wennfoonilzurückgibt und trotzdem aufbarzugegriffen wird.Diese Version ist das letzte Puzzleteil, das ich mir gewünscht habe. Ich freue mich auf die nächsten Schritte. Ich finde, die Sprache ist jetzt zu 100 % vollständig ausgestattet.
Ich bin sehr gespannt auf das Typsystem. Ich erinnere mich, dass José es als ein „graduelles Typsystem“ beschrieben hat. Es soll schrittweise ergänzt werden. Ich frage mich, ob im nächsten Schritt neue Funktionen rund um das neue Typsystem kommen. Besonders freue ich mich auf neue Compiler-Optimierungen.
Ich bin von dieser Version total begeistert. Ich hoffe, dass mehr Ressourcen in das Elixir-IntelliJ-Plugin fließen. Die Nutzung von VSCode macht mir keinen Spaß.
Weiß jemand, was mit „mengentheoretischen Typen“ gemeint ist? Ich interessiere mich sehr für Programmiersprachen, habe diesen Begriff aber zum ersten Mal gehört.