La version Nim 0.20 peut être considérée comme une candidate pour la première version stable 1.0, intégrant plusieurs modifications révolutionnaires en matière d'interopérabilité nécessaires pour former la première branche stable qui validera l'état du langage. La version 1.0 est présentée comme une version de support stable et à long terme qui garantira le maintien de la compatibilité ascendante dans la partie stabilisée du langage. Par ailleurs, le compilateur disposera également d'un mode expérimental dans lequel de nouvelles fonctionnalités susceptibles de rompre la compatibilité ascendante seront développées.
Parmi les changements proposés dans Nim 0.20 figurent :
- "Not" est désormais toujours un opérateur unaire, c'est-à-dire les expressions telles que « assert(not a) » ne sont désormais plus autorisées et seul « assert not a » est autorisé ;
- Activation de contrôles stricts pour la conversion des nombres entiers et des nombres réels au stade de la compilation, c'est-à-dire l'expression "const b = uint16(-1)" entraînera désormais une erreur, puisque -1 ne peut pas être converti en un type entier non signé ;
- Le déballage des tuples pour les constantes et les variables de boucle est fourni.
Par exemple, vous pouvez désormais utiliser des affectations telles que « const (d, e) = (7, « Eight ») » et « for (x, y) in f » ; - Initialisation par défaut fournie des hachages et des tables. Par exemple, après avoir déclaré « var s: HashSet[int] », vous pouvez immédiatement exécuter « s.incl(5) », ce qui entraînait auparavant une erreur ;
- Informations d'erreur améliorées pour les problèmes liés à l'opérateur « case » et à l'index de tableau hors limites ;
- La modification de la longueur de la table pendant l'itération est interdite.
Source: opennet.ru