[Nitération 12] Nouvelles de novembre

14 views
Skip to first unread message

Jean Privat

unread,
Dec 2, 2014, 10:08:17 AM12/2/14
to nit...@googlegroups.com

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é.

Utilisabilité

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.

Principe de moindre surprise

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

Documentation

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à. 62ada105351fd2a136f107019a21a48befb et a882d56

Enfin, le répertoire doc/ documente où trouver la documentation. 355d8e8

Robustesse

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. 8f2289488199104204c4a 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

Compatibilité

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

FFI et plateformes

De nombreux vieux bogues relatifs à la FFI Java et C++ ainsi qu'à des problèmes avec certains moteurs ont été enfin corrigés.a3c73f3533fdba49afd62

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

Json, Neo4J et cie.

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/json20e4a3a

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.

Bibliothèque

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 fencesf147aef 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.

Contrib

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 maybe6976f4b

Quelques améliorations de nitester pour fonctionner mieux sur le cluster et avoir des tests plus reproductibles. Bientôt une mise en production? ea2f26f

Nettoyage

En plus de l'effort de documentation, plusieurs petits nettoyages ont eu lieu:

  • Réduction de l'utilisation de --global dans les différents Makefiles. 1aeca2c
  • Nettoyage et factorisation des tests. eaf4215
  • Des espace générés en moins par jwrapper. 52f365a
  • git ignore les fichiers nitunit.xml. cd9786a
  • Les numéros de lignes ne sont plus décalés de un dans des messages d'erreurs liés à la FFI avec C. cabc696

Divers

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

Reply all
Reply to author
Forward
0 new messages