- Erleichtert den Aufbau nebenläufiger Software und ermöglicht Entwicklung ohne Sorgen über unvorhersehbare Performance, Laufzeitfehler, Data Races oder Typfehler
- Zu den Merkmalen gehören automatische Speicherverwaltung, Move Semantics, statische Typisierung, typsichere Nebenläufigkeit und effiziente Fehlerbehandlung
Deterministische automatische Speicherverwaltung
- Inko verwendet keine speicherverwaltende Garbage Collection, sondern setzt auf Speicherverwaltung auf Basis von Single Ownership und Move Semantics
- Besitzene Werte werden gelöscht, wenn sie den Gültigkeitsbereich verlassen, und können unveränderlich oder veränderlich ausgeliehen werden
- Durch die Verwendung von Single Ownership bietet Inko vorhersehbares Verhalten und Performance, ohne Zeit mit der Konfiguration der Garbage Collection zu verschwenden
Inko ist sicher
- Mit Inko muss man sich keine Sorgen über Fehler machen, die in anderen Sprachen häufig vorkommen, etwa NULL-Pointer, Use-after-free-Fehler, Laufzeitfehler oder Data Races
- Für optionale Daten steht der Typ
Option zur Verfügung; außerdem werden unveränderliche und veränderliche Referenzen unterstützt, sodass Änderungen bei Bedarf eingeschränkt werden können
Macht Nebenläufigkeit einfach
- Inko implementiert Nebenläufigkeit mit leichtgewichtigen Prozessen und verwendet ein von Erlang und Pony inspiriertes Nebenläufigkeitsmodell
- Prozesse sind voneinander isoliert und kommunizieren über Nachrichten; der Compiler gewährleistet die Korrektheit durch Typprüfung
- Bei der Datenübertragung zwischen Prozessen wird die Eindeutigkeit der Daten sichergestellt, wodurch Data Races unmöglich werden
Sorgt für korrekte Fehlerbehandlung
- Inko verwendet einen Ansatz zur Fehlerbehandlung, der von Joe Duffys Artikel "The Error Model" inspiriert ist
- Fehler werden als algebraischer Typ namens
Result dargestellt; try und throw sorgen für syntaktische Vereinfachung
- Für schwerwiegende Fehler, die nicht behandelt werden können oder nicht behandelt werden sollten, werden
panics unterstützt, die das Programm abbrechen
Effizient
- Inko will nicht mit Low-Level-Sprachen wie C oder Rust konkurrieren, sondern eine attraktive Alternative zu Sprachen wie Ruby, Erlang und Go bieten
- Es verwendet einen Native-Code-Compiler mit LLVM als Backend und bietet eine Balance zwischen schnellen Kompilierungszeiten und guter Laufzeit-Performance
- Der Native Code wird statisch mit einer kleinen Runtime-Bibliothek gelinkt, die in Rust geschrieben ist und Prozess-Scheduling, Non-Blocking I/O usw. verarbeitet
Pattern Matching
- Inko unterstützt Pattern Matching für verschiedene Typen wie Tupel und algebraische Datentypen
- Pattern Matching wird in Entscheidungsbäume kompiliert, wobei der Compiler versucht, die Größe möglichst klein zu halten
- Der Compiler stellt sicher, dass alle Muster abgedeckt sind
3 Kommentare
Mit Rust etwas gebaut, das Rust ähnlich ist ??
Dass die Paketverwaltung von GitHub abhängig ist, finde ich etwas problematisch. Ich fände es gut, wenn auch Umgebungen berücksichtigt würden, die keine Internetverbindung herstellen können …
Hacker-News-Kommentare
Das Nebenläufigkeitsmodell von Inko ist von Erlang und Pony inspiriert und verwendet leichtgewichtige Prozesse.
Um ein Inko-Paket hinzuzufügen, muss ein GitHub-Repository erstellt werden.
Es werden Links zu Diskussionen über Inko bereitgestellt:
Es wird die Frage nach Ähnlichkeiten mit Rust aufgeworfen:
Es werden Interesse an Inko und der Wunsch geäußert, es möge zu Golang werden:
Es wird als interessante Tatsache geteilt, dass der Name Inko auf Telugu "noch eins" bedeutet.
Es gibt eine Diskussion über syntaktische Unterschiede zu Rust:
Die Designentscheidungen von Inko werden positiv bewertet:
Es wird die Notwendigkeit vorgefertigter Binärdateien erwähnt:
Zusätzliche Links zu verwandten Diskussionen werden bereitgestellt.