- Permet de créer facilement des logiciels concurrents, sans avoir à se soucier des performances imprévisibles, des erreurs d’exécution, des courses de données ou des erreurs de type
- Caractéristiques : gestion automatique de la mémoire,
move semantics, typage statique, concurrence sûre au niveau des types et gestion efficace des erreurs
Gestion automatique déterministe de la mémoire
- Inko n’utilise pas de garbage collection, mais une gestion de la mémoire fondée sur la propriété unique et les
move semantics
- Les valeurs possédées sont supprimées lorsqu’elles sortent de leur portée, et peuvent être empruntées en mode immuable ou mutable
- L’utilisation de la propriété unique offre un comportement et des performances prévisibles, sans perdre de temps à régler le garbage collector
Inko est sûr
- Avec Inko, il n’y a pas à se soucier des erreurs fréquentes dans d’autres langages, comme les pointeurs NULL, les erreurs d’utilisation après libération, les erreurs d’exécution ou les courses de données
- Il fournit un type
Option pour les données optionnelles et prend en charge les références immuables et mutables afin de limiter les modifications selon les besoins
Rend la concurrence simple
- Inko met en œuvre la concurrence à l’aide de processus légers et adopte un modèle de concurrence inspiré d’Erlang et de Pony
- Les processus sont isolés les uns des autres et communiquent par messages, tandis que le compilateur garantit la justesse grâce à la vérification des types
- Lors du transfert de données entre processus, l’unicité des données est garantie, ce qui rend les courses de données impossibles
Une bonne gestion des erreurs
- Inko utilise une approche de gestion des erreurs inspirée de l’article de Joe Duffy, "The Error Model"
- Les erreurs sont représentées par un type algébrique appelé
Result, avec une simplification syntaxique via try et throw
- Pour les erreurs graves qui ne peuvent pas, ou ne doivent pas, être traitées, le langage prend en charge les
panics, qui interrompent le programme
Efficace
- Inko ne cherche pas à concurrencer des langages bas niveau comme C ou Rust, mais à proposer une alternative séduisante à des langages comme Ruby, Erlang et Go
- Il utilise un compilateur en code natif basé sur LLVM, offrant un équilibre entre temps de compilation rapides et bonnes performances à l’exécution
- Le code natif est lié statiquement à une petite bibliothèque runtime écrite en Rust, qui gère l’ordonnancement des processus, les E/S non bloquantes, etc.
Pattern matching
- Inko prend en charge le pattern matching sur divers types, notamment les tuples et les types de données algébriques
- Le pattern matching est compilé en arbre de décision, et le compilateur cherche à en maintenir la taille aussi réduite que possible
- Le compilateur garantit que tous les motifs sont couverts
3 commentaires
Ils ont créé, en Rust, quelque chose de similaire à Rust ??
Le fait que la gestion des paquets dépende de GitHub me gêne un peu. J’aimerais aussi qu’on prenne davantage en compte les environnements qui ne peuvent pas se connecter à Internet…
Avis sur Hacker News
Le modèle de concurrence d’Inko s’inspire d’Erlang et de Pony et utilise des processus légers.
Pour ajouter un package Inko, il faut créer un dépôt GitHub.
Liens vers des discussions liées à Inko :
Questionnement sur les similitudes avec Rust :
Intérêt pour Inko et souhait qu’il devienne un Golang :
Partage d’un fait amusant : le nom Inko signifie "encore un" en télougou.
Discussion sur les différences syntaxiques avec Rust :
Évaluation positive des choix de conception d’Inko :
Mention de la nécessité de binaires précompilés :
Ajout de liens supplémentaires vers des discussions connexes.