Nouvelles de mars

13 views
Skip to first unread message

Jean Privat

unread,
Apr 2, 2014, 2:59:00 PM4/2/14
to nit...@googlegroups.com

Nous avons le plaisir de vous présenter le sixième numéro de « Nitération », la lettre d’information du projet Nit.

Les statistiques pour le mois de mars donnent:

$ git diff --shortstat v0.6.4..v0.6.5
655 files changed, 163434 insertions(+), 3529 deletions(-)

Ont contribué (ou ont eu des patchs intégrés): Jean Privat, Alexis Laferrière, Lucas Bajolet, Alexandre Terrasa, Romain Chanoir et Johann Dubois.

Ce fut un mois assez productif au niveau du code (plus de lib) et des outils (bugfixes). C'est sans doute en partie à cause des nouveaux étudiants qui nous ont motivé à nettoyer et consolider l'existant afin de leur rendre la prise en main de Nit moins pénible.

En contre-coup, pas de réels progrès dans le domaine de la spécification et l'implémentation du langage lui-même. Par exemple, les nouveaux constructeurs n'ont pas avancé.

FFI, multi-plateforme et cie

La FFI est maintenant pleinement intégrée et fonctionne avec toutes les variantes de nitg. 1d563f7f327

Afin de couvrir plusieurs plateformes, certains modules peuvent cibler une plateforme spécifique, ce qui, lors de la compilation, activera une chaîne de compilation finale adaptée.

Android est la première cible, et pour peu que les SDK et NDK Android soient correctement installés, des programmes Nit peuvent désormais produire des .apk fonctionnels. a31da02b211ebbb4

Coté bibliothèque, mnit est maintenant intégré (ce n'est plus un projet à part) et les quelques jeux de examples/ fonctionnent autant avec linux qu'avec Android. 46180c88652 et e58ccbc2f7cef

Spec. du langage et outils

Chaines triplement quotées

Un peu de nettoyage et bugfix a été fait dans la syntaxe des chaines longues dans l'objectif de respecter le principe de moindre surprise. 228d0a89c14a

Chargeur de modules

Le chargeur de module s'en sort si on lui fournit un répertoire ou un nom de module standard. 806f5d7224c256b1cb

Un nouvel outil nitls permet de lister les projets et les modules tel que trouvable dans le système de fichier. Il permet aussi, via l'option -M d'afficher les dépendances des modules.

nitdbg*

Comme la FFI est de nouveau fonctionnelle, le débogueur réseau est à nouveau compilé. 037d099006754e

Il a été également renommé pour être facilement découvrable: nitdbg_server pour le serveur et nitdbg_client pour le client...

Vérification de visibilité

Les vérifications de visibilité sont maintenant vraiment faite par les outils (le vieux nitc les faisait, on avait oublié de le faire dans les nouveaux outisl).

Une méthode protected ne peut être appelée que sur self par les modules clients. 3868a51

Un service d'un certain niveau de visibilité ne peut plus utiliser un type de moindre visibilité dans sa signature. 4919d86 Exemple: pas de fonction publique qui retournent un type privé.

Bibliothèques

Doc et nettoyage

Plusieurs commits ont nettoyé et documenté la bibliothèque standard. Ça a ajouté également quelques tests unitaires.

La classe Sorter à été renommé en Comparator.

Text, String et Buffer

Les classes String (non-mutable) et Buffer (mutables) ont été détachées de la hiérarchie des collections pour être attachées à une nouvelle interface Text. 3757beb

De plus String et Buffer sont maintenant des classes abstraites ce qui permettra d'offrir des implémentations variées (comme les cordes).

Template et Streamable

Une nouvelle lib, template est une généralisation du vieux Writer de nitc (pour ceux qui s'en rappellent) et permet de fabriquer efficacement des sorties texte complexes. La principale nouveauté est l'ajout d'un mini-framework pour faire facilement des templates en pur Nit (d'où le nom). 1ff8ed79e4369a0

Ces templates se basent sur une interface Streamable qui a été généralisée à de nombreuses autres classes de document, ce qui simplifie et unifie leurs API. d5bb7d104a1c9bbf8e

pipeline

Le module expérimental pipeline est revenu s'attacher aux Itérateurs (plutôt qu'aux Collections). c9458ff

Cela simplifie la vie des programmeurs Nit débutants qui ne les voient plus dans les classes de base comme Array.

Une mini-couche de programmation fonctionnelle a été ajoutée à pipeline, avec une interface Function et deux services map et select. Encore une fois tout ça est très expérimental :)

Iterator

Un travail de spécification pour la validité des itérateurs est en cours. #352

Une implémentation est même proposée et pourrait être intégrée prochainement. #367

Développement des outils et trucs sous le capot

toolcontext

la classe ToolContext gère mieux les options de la ligne de commande en factorisant le travail qui était laissé à la charge des outils (et qui s'en sortaient mal). 7e47e5950b088

Les options --help, --version, les erreurs d'options ou l'absence d'arguments sont maintenant gérés par la classe.

Point d'entrée pour les développeurs débutants et preuves de concept

Le point d'entrée simplifiée, test_phase.nit, a été encore plus simplifiée. Ainsi, pour développer un POC rapide ou pour les développeurs qui débutent avec les outils, le squelette src/test test phase.nit peut service de base.

nitmetrics

L'infrastructure de nitmetrics a été refactorisée afin de devenir plus rationnelle et simple. 7db97c9380a30fdfb1bd

Ça n'a jamais été aussi facile de compter des machins par choses dans des programmes Nit et d'en afficher l'écart type.

MEntity et MDoc

Coté modèle, une super-classe abstraite MEntity a été ajouté à de nombreuses classes du modèle. 81c46ae

Comme première utilisation, la documentation est intégrée au modèle et décore les MEntities qui en ont.

Les outils (nitdoc, nitc, etc.) qui manipulent de la documentation et des entités s'en trouve (ou trouveront) simplifiés.

Graphe d'appel et RTA

L'API de RTA se contentait de retourner des ensembles vivants de types et de méthodes. Maintenant, les site d'appels vivants et les méthodes accessibles à chacun de ces site est disponible. 4177945

Plusieurs travaux sont en cours pour voir comment profiter de cette information (à quel coup et pour quel gain).

Phase

l'option --disable-phase permet de déactiver certaines phases de compilation (pour débogage ou autre). b28aef7

Avec l'argument list, elle liste les phases dans leur ordre (avec leur dépendances) ce qui peut aider le programmeur à comprendre ce qui se passe.

Reply all
Reply to author
Forward
0 new messages