{"id":2873,"date":"2026-09-17T16:50:23","date_gmt":"2026-09-17T14:50:23","guid":{"rendered":"https:\/\/coding4phone.com\/?p=2873"},"modified":"2026-09-17T16:50:25","modified_gmt":"2026-09-17T14:50:25","slug":"mogwai-nano-0-5-des-taches-paralleles-un-lecteur-de-badge-rfid-et-un-vrai-studio-graphique","status":"publish","type":"post","link":"https:\/\/coding4phone.com\/?p=2873","title":{"rendered":"MOGWAI NANO 0.5 : des t\u00e2ches parall\u00e8les, un lecteur de badge RFID, et un vrai Studio graphique"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>MOGWAI NANO 0.5<\/strong> est disponible sur le <a href=\"https:\/\/github.com\/Sydney680928\/MogwaiNano\" target=\"_blank\" rel=\"noopener\">d\u00e9p\u00f4t GitHub<\/a> \u2014 la version la plus dense depuis le lancement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce qui change<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Le moteur sait enfin parall\u00e9liser.<\/strong> Un <code>task 'name' do { ... }<\/code> lance un bloc de code sur son propre thread natif, avec sa propre instance de moteur totalement isol\u00e9e \u2014 sa pile, ses variables, tout. Aucun \u00e9tat partag\u00e9 avec le programme principal : toute communication passe exclusivement par le m\u00e9canisme d&rsquo;\u00e9v\u00e9nements d\u00e9j\u00e0 existant (<code>TASK_DID_START<\/code>, <code>TASK_DID_END<\/code>, <code>TASK_DID_PUBLISH<\/code>&#8230;). Co\u00fbt mesur\u00e9 : environ 10 Ko par t\u00e2che, ce qui r\u00e9serve cette fonctionnalit\u00e9 aux cartes avec PSRAM \u2014 sur un ESP32 classique, deux ou trois t\u00e2ches suffiraient \u00e0 consommer l&rsquo;essentiel de la m\u00e9moire disponible. \u00c0 l&rsquo;arr\u00eat d&rsquo;un programme, chaque t\u00e2che encore active re\u00e7oit d&rsquo;abord une demande d&rsquo;arr\u00eat coop\u00e9rative, avec un d\u00e9lai de gr\u00e2ce de 10 secondes avant un arr\u00eat forc\u00e9 en dernier recours \u2014 pour ne jamais laisser une t\u00e2che tourner ind\u00e9finiment en arri\u00e8re-plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SPI fait son entr\u00e9e \u2014 et pas juste en th\u00e9orie.<\/strong> <code>spi.open<\/code>\/<code>spi.write<\/code>\/<code>spi.transfer<\/code>, sur le m\u00eame principe de canaux nomm\u00e9s que I2C, PWM et ADC. Plut\u00f4t que de s&rsquo;arr\u00eater \u00e0 un simple aller-retour de test, la validation s&rsquo;est faite avec un vrai pilote de lecteur RFID MFRC522, \u00e9crit enti\u00e8rement en MOGWAI NANO \u2014 initialisation du module, coprocesseur CRC interne, d\u00e9tection de pr\u00e9sence, lecture d&rsquo;UID et de SAK \u2014 sans une seule ligne de C# ajout\u00e9e au firmware. Un vrai badge, pos\u00e9 sur un vrai module, lu avec succ\u00e8s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Le Studio a maintenant un second visage.<\/strong> MOGWAI NANO Studio GUI, une application graphique construite avec Avalonia, rejoint officiellement le d\u00e9p\u00f4t public aux c\u00f4t\u00e9s du Studio console existant. \u00c9diteur int\u00e9gr\u00e9, ligne de commande fa\u00e7on REPL avec historique, vues s\u00e9par\u00e9es pour la console et le debug du device, gestion de fichiers avec fichiers r\u00e9cents, th\u00e8mes clair\/sombre \u2014 les deux Studios parlent le m\u00eame protocole r\u00e9seau, \u00e0 chacun de choisir celui qui lui convient.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" data-attachment-id=\"2875\" data-permalink=\"https:\/\/coding4phone.com\/?attachment_id=2875#main\" data-orig-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?fit=2386%2C1234&amp;ssl=1\" data-orig-size=\"2386,1234\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}\" data-image-title=\"studio-gui-screenshot\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?fit=1024%2C530&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=1024%2C530&#038;ssl=1\" alt=\"Capture d'\u00e9cran de Mogwai Nano Studio, affichant des informations sur la version, l'environnement de d\u00e9veloppement et des commandes en cours d'ex\u00e9cution dans des fen\u00eatres de terminal.\" class=\"wp-image-2875\" srcset=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=1024%2C530&amp;ssl=1 1024w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=300%2C155&amp;ssl=1 300w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=768%2C397&amp;ssl=1 768w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=1536%2C794&amp;ssl=1 1536w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/09\/studio-gui-screenshot.png?resize=2048%2C1059&amp;ssl=1 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">MOGWAI NANO STUDIO console (\u00e0 gauche) et GUI (\u00e0 droite)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Et le langage continue de m\u00fbrir.<\/strong> <code>TRAP<\/code>\/<code>GUARD<\/code> apportent une vraie gestion d&rsquo;erreur structur\u00e9e, <code>SWITCH<\/code> \u00e9vite les cascades de <code>if<\/code>\/<code>else if<\/code>, <code>eval<\/code> sait d\u00e9sormais interpoler des expressions RPN compl\u00e8tes dans une cha\u00eene de caract\u00e8res. S&rsquo;ajoutent aussi <code>stopwatch.*<\/code>, <code>DURING<\/code>, <code>purge<\/code>, <code>exists<\/code>, <code>-&gt;str<\/code>, et <code>mogwai.exit<\/code> pour sortir proprement d&rsquo;un programme sans lever d&rsquo;erreur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sous le capot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un vrai bug de fond, traqu\u00e9 sur plusieurs heures : apr\u00e8s une longue session de test avec des t\u00e2ches qui se lan\u00e7aient et s&rsquo;arr\u00eataient en continu, la m\u00e9moire du device se d\u00e9gradait progressivement \u2014 un m\u00e9got classique de fuite, sauf qu&rsquo;aucune trace ne s&rsquo;en trouvait dans le graphe de r\u00e9f\u00e9rences manag\u00e9es habituel. La cause, une fois d\u00e9busqu\u00e9e : chaque instance de moteur d\u00e9marre en interne son propre thread d&rsquo;\u00e9coute r\u00e9seau, y compris celles cr\u00e9\u00e9es pour une t\u00e2che \u2014 qui n&rsquo;en a pourtant jamais besoin, puisqu&rsquo;elle est d\u00e9j\u00e0 pilot\u00e9e par son propre thread d\u00e9di\u00e9. Ce thread superflu tournait ind\u00e9finiment, gardant toute l&rsquo;instance vivante en m\u00e9moire quoi qu&rsquo;on fasse c\u00f4t\u00e9 nettoyage manag\u00e9. Le genre de bug qu&rsquo;aucune analyse de r\u00e9f\u00e9rences classique ne r\u00e9v\u00e8le, puisque la racine du probl\u00e8me n&rsquo;\u00e9tait pas une r\u00e9f\u00e9rence d&rsquo;objet, mais un thread syst\u00e8me actif.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La suite<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une vraie notice d&rsquo;utilisation pour le Studio GUI est en pr\u00e9paration, pour accompagner cette nouvelle interface au-del\u00e0 de ce README.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout est dans le <a href=\"https:\/\/github.com\/Sydney680928\/MogwaiNano\/blob\/main\/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\">CHANGELOG<\/a> pour le d\u00e9tail complet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Merci \u00e0 tous ceux qui suivent le projet, et comme toujours, <a href=\"https:\/\/github.com\/Ellerbach\" target=\"_blank\" rel=\"noopener\">Laurent Ellerbach<\/a> pour son aide pr\u00e9cieuse. \ud83c\udf89<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MOGWAI NANO 0.5 est disponible sur le d\u00e9p\u00f4t GitHub \u2014 la version la plus dense depuis le lancement. Ce qui change Le moteur sait enfin parall\u00e9liser. Un task &lsquo;name&rsquo; do { &#8230; } lance un bloc de code sur son propre thread natif, avec sa propre instance de moteur totalement isol\u00e9e \u2014 sa pile, ses &#8230; <a title=\"MOGWAI NANO 0.5 : des t\u00e2ches parall\u00e8les, un lecteur de badge RFID, et un vrai Studio graphique\" class=\"read-more\" href=\"https:\/\/coding4phone.com\/?p=2873\" aria-label=\"En savoir plus sur MOGWAI NANO 0.5 : des t\u00e2ches parall\u00e8les, un lecteur de badge RFID, et un vrai Studio graphique\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":2803,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"D\u00e9couvrez les nouveaut\u00e9s de MOGWAI NANO 0.5 : parall\u00e9lisation, support SPI, et une nouvelle interface graphique pour le d\u00e9veloppement simplifi\u00e9.","jetpack_seo_html_title":"MOGWAI NANO 0.5 : Nouveaut\u00e9s et Am\u00e9liorations Importantes","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[185,177,48,50],"tags":[],"class_list":["post-2873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net-nanoframework","category-mogwai-nano","category-rpn","category-scripting"],"jetpack_publicize_connections":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfoe4s-Kl","jetpack-related-posts":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/08\/img01.png?fit=300%2C239&ssl=1","_links":{"self":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2873"}],"version-history":[{"count":4,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2873\/revisions"}],"predecessor-version":[{"id":2878,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2873\/revisions\/2878"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/media\/2803"}],"wp:attachment":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}