Nous avons le plaisir de vous présenter le dixième numéro de « Nitération », la lettre d’information du projet Nit.
Les statistiques combinées pour le mois de septembre donnent:
$ git diff --shortstat v0.6.8..v0.6.9
558 files changed, 81952 insertions(+), 30458 deletions(-)
$ git log --first-parent v0.6.8..v0.6.9 | grep 'Pull-Request: #' | wc -l
61
Ont contribué (ou ont eu des patchs intégrés): Jean Privat, Alexis Laferrière, Alexandre Terrasa, Lucas Bajolet, Julien Pagès, Jean-Christophe Beaupré.
Ce mois-ci d'autres barrières psychologiques sont tombées:
nitg est composé de plus de 100 modules (dont plusieurs inutilisés mais fournis par standard)C'est le nettoyage de la rentrée: vieux code éliminé, grammaire purgée, vieux commits intégrés.
Au niveau de la syntaxe, les formes strictes des méthodes ont été converties en les nouvelles à base d'annotation, plus souples.36fea21 et 110d11f
Les derniers attributs vieux styles ont été migrés et définitivement supprimés. 073d581 et 0cf0ff7
Au niveau de l'infrastructure du dépôt, plusieurs nettoyages aussi :
Enfin, le code du compilateur profite maintenant des projets et groupes, et sa documentation est améliorée. 9bc23b4, d3805c2 eta664a52
nitunit permet d'exécuter des tests autonomes à la JUnit. bbf1fba
Nouvel outil nitpretty: un pretty printer de code source Nit. 54f6767
Nouvel outil nitpick, un lintian rapide pour Nit. Utilisé dans le plugin vim. c833719
Nouvel outil nituml, pour extraire des diagrammes UML à partir de code Nit. 9cfab85
De nouveaux warnings ont été ajoutés et chacun possède maintenant un nom ce qui permet de les catégoriser automatiquement(onglet "types"). L'option -w (en minuscule) permet aussi de forcer leur activation et désactivation. 14710ce, 9391c4f et 97dbc21
L'option --compile-dir fonctionne maintenant avec des répertoires situés n'importe-où. La question du meilleur emplacement par défaut reste cependant ouverte. 97dbc21
L'annotation pkgconfig utilise par défaut le nom du module, si rien n'est spécifié. d6a58d7
Nouvelle annotation deprecated. Pour annoter les méthodes dépréciées, et donner un warning aux utilisateurs. 07aecab
Les classes externes sont enfin polymorphes. Les hiérarchies C++ pourront être mieux représentées en Nit. 86c2509
Nouvelle syntaxe pour typer les tableaux littéraux (pour quand le type automatique est insuffisant). f8d914f
Les noms des paramètres formels des classes deviennent invariants pour les classdefs de la classe. Ça simplifie le code, la doc et le modèle (on se demande encore pourquoi on avait pas fait ça avant). 06a62b6
La saga des constructeurs continue avec la suppression des anciennes heuristiques historiques associées aux constructeurs nommés. Aussi, une nouvelle annotation autoinit permet de marquer les setters manuels comme faisant partie de l'initialisation automatique. f0bf9b4, 5d77ad2 et 71dafe3
Un manuel de la FFI avec Java est en cours de rédaction. Il se joint au manuel de la FFI avec C et celui de Nit sur Android.
Nouvelle bibliothèques template::macro pour utiliser des templates simples provenant de fichiers externes. 09a5b75
Nouvelle bibliothèque crypto avec quelques algos de cryptographie. eaee09a
Nouvelle bibliothèque markdown d'analyse et traitement du format markdown. 95fb2eb et 3364c49
Nouveau module standard re pour les expressions régulières. 22588b0
Nouveau module standard error comme point de rationalisation de la gestion des erreurs (il reste du travail, mais il faut bien commencer quelque part). 3b952d2
Nouveaux services dans String pour la gestion des chemins de fichiers. e48cfb3
Méthodes de capitalisation sur les Strings. 45a2c10
Copy-on-write pour optimiser les FlatBuffer. 52c0673
Gestion du datastore généralisée (sauvegardes locales) dans App.nit. e736020
android::java_io est généralisé et renommé en java::io e8ea1e3
Le serveur de fichier de Nitcorn redirige les requêtes de dossiers mal-formées et évite les double-Tnits. Une interface web pour benitlux est également disponible. 11ce4ef, 546ccaa et 1486817
Nouvelles images pour shoot, tirées de PyCaptain. d697845
Pour les développeurs des outils Nit, plusieurs améliorations (en plus du nettoyage indiqué en première section).
Les moteurs ont un système de chaînage d'implémentation pour les méthodes. Par exemple, une méthode peut avoir un corps mais être taguée interne. Ainsi, si le moteur ne sait pas gérer la version interne, il peut se rattraper en utilisant le corps (qui correspond éventuellement à un mode dégradé). On trouve des choses analogues dans plusieurs versions de Smalltalk. L'approche fonctionne potientiellement aussi pour les méthodes externes, sauf qu'on ne sait pas trop quelle syntaxe utiliser (la grammaire reste à modifier donc). 19fb738
Le make docs génère la documentation pour tous les modules de la lib. a449263
Neo4j a une documentation plus complète et à jour. 102b2ff et b3cce22
modèle: introduction de MGroup::default_mmodule. d0b7d70
phases: n'analyse plus les modules de façon multiple. 653fdf9