Nous avons le plaisir de vous présenter le douzième numéro de « Nitération », la lettre d’information du projet Nit.
Les statistiques combinées pour le mois de novembre donnent:
$ git diff --shortstat v0.6.10..v0.6.11
594 files changed, 34410 insertions(+), 5338 deletions(-)
$ git log --first-parent v0.6.10..v0.6.11 | grep 'Pull-Request: #' | wc -l
61
Ont contribué (ou ont eu des patchs intégrés): Jean Privat, Jean-Christophe Beaupré, Alexis Laferrière, Alexandre Terrasa, Lucas Bajolet, Julien Pagès, Alexandre Blondin Massé.
Chaque détail compte! Ce mois-ci on a enlevé de nombreux irritants et imperfections qui rendait le langage et les outils moins agréables à utiliser par rapport à ce qu'ils pourraient offrir.
Le principe de moindre surprise (POLA) préconise que le comportement d'un système soit le plus possible celui attendu de ses utilisateurs.
Il est surprenant que le programme print 10.rand affiche le même nombre à chaque exécution. C'est pourquoi le générateur pseudo-aléatoire est initialisé au début des programme. d72a7e5
Il est surprenant que les classe String, Int ou Bool puissent disparaître. C'est pourquoi standard n'est plus invisible lorsque importé indirectement de façon privé. a2abb3a
Il est surprenant que les options des programmes interprétés ne se retrouvent pas tous dans la liste des arguments du programme. Maintenant, les options de l'interpréteur doivent apparaître sur la ligne de commande avant le programme, et les options qui suivent sont passées telles quelles au programme interprété. 72e90fe
Il était parfois frustrant de ne pouvoir répliquer «RTFM» aux utilisateur des outils Nit. Maintenant, c'est possible car les outils possèdent enfin des pages de manuel dignes de ce nom et utilisables avec la commande man. Ces pages sont également synchronisés avec ladocumentation des outils sur le site web. 5088762 et 55a59ff
Au niveau des bibliothèques, un gros effort a été mis pour réduire le nombre de warnings, or l'absence de documentation sur les méthodes publiques est le warning missing-doc. Ce qui fait que la documentation des bibliothèques s'en est trouvé bonifié. Plusieurs petites méthodes pratiques ont été également ajoutées de ci, de là. 62ada10, 5351fd2, a136f10, 7019a21, a48befb et a882d56
Enfin, le répertoire doc/ documente où trouver la documentation. 355d8e8
Les conflits d'identifiants internes et le laisser-aller sur les fichiers générés ont été réduits grandement.
Le compilateur est capable de compiler (enfin) des modules homonymes dans des projets distincts. dcb18ad
Il est même capable de manipuler des noms de modules et de fichiers à la limite du légal. 882fcae
$ nitg -- --a-bad\ module\ name.nit
$ ./--a-bad\ module\ name
De même l'autodoc est plus robuste en générant les documentation car il échappe correctement les symbole et évite les conflits d'identifiants. 8f22894, 8819910, 4204c4a et 951cd27
La gestion des blocs de code dans les commentaires (docunits) a été améliorée et rendue plus conforme au format markdown. Les blocs de code sont maintenant systématiquement vérifiés. Ou peut toutefois taguer de façon spéciale les blocs qui ne sont pas du Nit ou que l'on ne veux pas vérifier. 0dd740f et 5074f0b
Utilisation de pkgconfig dans les makefiles générés pour améliorer la portabilité et les messages d'erreur. b890aa9
Amélioration de la portabilité pour MacOSX. 2e6feca et d3edb07
Amélioration de la portabilité de certaines lib pour ScientificLinux (distribution utilisé par le cluster Turing). c6b8c4d et 181fa23
De nombreux vieux bogues relatifs à la FFI Java et C++ ainsi qu'à des problèmes avec certains moteurs ont été enfin corrigés.a3c73f3, 533fdba, 49afd62
Des services pratiques ont été aussi ajoutés pour les utilisateurs de la FFI Java. cdd5377
Android gagne de nouvelles bibliothèques avec l'ajout de contrôles graphiques standard (GUI), de notifications et de tartines grilléestoasts. Comme preuve de concept, la calculatrice servant d'exemple pour GTK a été portée pour android (code métier partagé, UI spécialisée). 511504d
La bibliothèque de lecture du JSON a été rendue plus robuste et l'API secondaire qui vivait et était utilisée dans lib/neo4j a été fusionnée avec celle de lib/json. 20e4a3a
La bibliothèque neo4j, justement, propose une preuve de concept permettant de sérialiser des noeuds dans du JSON, ce qui permettra de réaliser des tests comportementaux plus unitaires. 544a8db
Des tests de montée en charge avec de gros modèles ont montré un besoin d'optimisation de la sérialisation du modèle Nit à partir d'une BDD neo4j. Le chargement multiple de noeuds est évité et le chargement des noeuds est plus paresseux. Dans le même ordre d'idée la sérialisation est rendue plus robuste grâce à un meilleur échappement. 3858d80 et 9ab8c85.
Un nouvel outil, neo_doxygen permet de sérialiser un modèle XML généré dans doxygen en un graphe neo4j compatible avec le meta-modèle de Nit. 2e6da36 et dc25050.
Comme d'habitude, ce mois-ci apporte plusieurs améliorations dans les bibliothèques.
Nouvelle méthode POSet::write_dot robuste utilisable pour déboguer certains poset avec graphviz. 0aaa070
Le retour de la vengeance des cordes, et cette fois, pour-être pour de bon. Des expérimentations rigoureuses sont encore nécessaires, mais les mesures préliminaires montre qu'un gain est possible. aea15a1
Des combinaisons, permutations et produits cartésiens généralisés sont désormais disponibles dans les collections. Ces classes permettent de manipuler efficacement (en terme de mémoire) des vues sur des collections avec des combinatoires variées et un certain contrôle de la part de l'utilisateur. Il n'y a pas vraiment d'utilisateurs pour l'instant, c'était juste un exercice intellectuel. b379562
Petite amélioration des DisjointSet pour compter le nombre de sous-ensembles dans la partition. d69e0a4
Nouvelle méthodes has_exactly pour comparer les éléments de deux collections. Pratique pour les tests unitaires! d9b19c9
Suppression des classes ArrayCapable et StringCapable inutiles et remplacés par les fabriques de NativeArray et NativeString. Cela permet aussi au classes HashCollection d'exhiber un type paramétrique de moins. 9bb1267
Les flottants gagnent un méthode is_approx de comparaison et une méthode round d'arrondi. 8bd3911 et 9397b03.
Le parseur markdown a été amélioré. Il accepte de nouvelles extensions comme les fences. f147aef et d70def6.
De nombreuses corrections de bogues et quelques améliorations autour des bibliothèques associées à android, a mnit ou aux threads.91bcf4f et 550eb90.
Un nouveau projet nitiwiki voit le jour. Il s'agit d'un compilateur de sitweb qui génère des pages HTML à partir de fichiers markdown. 3d7e24e
Opportunity compte les votes et propose une valeur optionnelle maybe. 6976f4b
Quelques améliorations de nitester pour fonctionner mieux sur le cluster et avoir des tests plus reproductibles. Bientôt une mise en production? ea2f26f
En plus de l'effort de documentation, plusieurs petits nettoyages ont eu lieu:
La VM continue son bonhomme de chemin en implémentant l'appel de méthodes et l'accès aux attributs de façon native en C. 1d0794eet 29827ae
Nouveau type virtuel SELF automatiquement redéfini dans les classes. 6681978
Bug corrigé sur les fabriques new dans les sous-classes. af5907e