MOGWAI NANO 0.5 : des tâches parallèles, un lecteur de badge RFID, et un vrai Studio graphique

MOGWAI NANO 0.5 est disponible sur le dépôt GitHub — la version la plus dense depuis le lancement.

Ce qui change

Le moteur sait enfin paralléliser. Un task 'name' do { ... } lance un bloc de code sur son propre thread natif, avec sa propre instance de moteur totalement isolée — sa pile, ses variables, tout. Aucun état partagé avec le programme principal : toute communication passe exclusivement par le mécanisme d’événements déjà existant (TASK_DID_START, TASK_DID_END, TASK_DID_PUBLISH…). Coût mesuré : environ 10 Ko par tâche, ce qui réserve cette fonctionnalité aux cartes avec PSRAM — sur un ESP32 classique, deux ou trois tâches suffiraient à consommer l’essentiel de la mémoire disponible. À l’arrêt d’un programme, chaque tâche encore active reçoit d’abord une demande d’arrêt coopérative, avec un délai de grâce de 10 secondes avant un arrêt forcé en dernier recours — pour ne jamais laisser une tâche tourner indéfiniment en arrière-plan.

SPI fait son entrée — et pas juste en théorie. spi.open/spi.write/spi.transfer, sur le même principe de canaux nommés que I2C, PWM et ADC. Plutôt que de s’arrêter à un simple aller-retour de test, la validation s’est faite avec un vrai pilote de lecteur RFID MFRC522, écrit entièrement en MOGWAI NANO — initialisation du module, coprocesseur CRC interne, détection de présence, lecture d’UID et de SAK — sans une seule ligne de C# ajoutée au firmware. Un vrai badge, posé sur un vrai module, lu avec succès.

Le Studio a maintenant un second visage. MOGWAI NANO Studio GUI, une application graphique construite avec Avalonia, rejoint officiellement le dépôt public aux côtés du Studio console existant. Éditeur intégré, ligne de commande façon REPL avec historique, vues séparées pour la console et le debug du device, gestion de fichiers avec fichiers récents, thèmes clair/sombre — les deux Studios parlent le même protocole réseau, à chacun de choisir celui qui lui convient.

Capture d'écran de Mogwai Nano Studio, affichant des informations sur la version, l'environnement de développement et des commandes en cours d'exécution dans des fenêtres de terminal.
MOGWAI NANO STUDIO console (à gauche) et GUI (à droite)

Et le langage continue de mûrir. TRAP/GUARD apportent une vraie gestion d’erreur structurée, SWITCH évite les cascades de if/else if, eval sait désormais interpoler des expressions RPN complètes dans une chaîne de caractères. S’ajoutent aussi stopwatch.*, DURING, purge, exists, ->str, et mogwai.exit pour sortir proprement d’un programme sans lever d’erreur.

Sous le capot

Un vrai bug de fond, traqué sur plusieurs heures : après une longue session de test avec des tâches qui se lançaient et s’arrêtaient en continu, la mémoire du device se dégradait progressivement — un mégot classique de fuite, sauf qu’aucune trace ne s’en trouvait dans le graphe de références managées habituel. La cause, une fois débusquée : chaque instance de moteur démarre en interne son propre thread d’écoute réseau, y compris celles créées pour une tâche — qui n’en a pourtant jamais besoin, puisqu’elle est déjà pilotée par son propre thread dédié. Ce thread superflu tournait indéfiniment, gardant toute l’instance vivante en mémoire quoi qu’on fasse côté nettoyage managé. Le genre de bug qu’aucune analyse de références classique ne révèle, puisque la racine du problème n’était pas une référence d’objet, mais un thread système actif.

La suite

Une vraie notice d’utilisation pour le Studio GUI est en préparation, pour accompagner cette nouvelle interface au-delà de ce README.

Tout est dans le CHANGELOG pour le détail complet.

Merci à tous ceux qui suivent le projet, et comme toujours, Laurent Ellerbach pour son aide précieuse. 🎉

Laisser un commentaire

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture

En savoir plus sur CODING 4 PHONE

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture