TechEt concrètement ?

Ruby 4.0.8 : la note de septembre dit novembre, le tampon dit le 22

Le 15 septembre, la note de Ruby 4.0.7 écrit que 4.0.8 sortira en novembre, plus tôt seulement si un changement touche vraiment les utilisateurs. Le 22 octobre, la note de 4.0.8 dit « routine update » et « bugfixes », sans calendrier. Le dépôt liste 28 billets Bug et une pull request, et il prévient que des commits peuvent manquer. Le compteur de téléchargement pointe déjà vers l'archive gz, dont le sha256 recopie celui de la note.

Le calendrier punaisé au mur a encore le mois de novembre écrit au crayon, sur la feuille de septembre. Le tampon du jour, lui, est au 22 octobre, et il dit que c'est une mise à jour de routine. L'étagère d'à côté, celle que le tampon te demande d'aller voir, aligne des billets de bogues, dont un plantage de compilation, et elle ajoute en bas que la liste peut en avoir oublié. Si tu ranges le crayon et le tampon dans la même case, tu ranges deux mois sous un seul mot.

Le 15 septembre 2026, k0kubun publie Ruby 4.0.7. Le corps : une mise à jour de routine, des correctifs, le détail sur les releases GitHub. Puis la section Release Schedule. L'intention : sortir la dernière version stable, pour l'instant Ruby 4.0, tous les deux mois après la plus récente. La phrase qui nous intéresse : Ruby 4.0.8 will be released in November. La phrase d'après ouvre une porte. Si un changement survient qui affecte vraiment les utilisateurs, une sortie peut avoir lieu plus tôt que prévu. « Significantly affects users. »

Le 14 juillet 2026, la note de Ruby 4.0.6 avait déjà ce calendrier, avec deux rendez-vous : 4.0.7 en septembre, et 4.0.8 en novembre. Sa phrase sur l'avance ajoute un bout que septembre ne réimprime pas : and the subsequent schedule may shift accordingly. Le 15 septembre est bien en septembre. Ça, la feuille de juillet le prévoyait. Le 22 octobre, non.

Le 22 octobre dit routine, et il n'a plus de calendrier

Le 22 octobre 2026, la note de Ruby 4.0.8, encore signée k0kubun, tient en peu de mots. Ruby 4.0.8 est sortie. This is a routine update that includes bugfixes. Le détail est sur les releases GitHub. Pas de section Release Schedule. Le mot November n'est pas dans cette note. La clause « significantly affects users » non plus. Je ne déclare pas que l'équipe a emprunté la porte de septembre. La note d'octobre ne le dit pas. Elle dit routine.

La liste des sorties date Ruby 4.0.8 du 2026-10-22, au-dessus de Ruby 4.1.0-preview1 au 2026-10-12 et de Ruby 4.0.7 au 2026-09-15. La phrase au-dessus du tableau : les dates montrées sont celles de publication des versions anglaises des billets, et elles peuvent différer des dates réelles de création des archives. Pour 4.0.8, le jour du tableau est le jour du billet anglais. C'est ce que la phrase dit qu'elle imprime. Elle ne dit pas que les heures coïncident.

L'archive ruby-4.0.8.tar.gz, lue par un en-tête, a Last-Modified: Thu, 22 Oct 2026 07:07:15 GMT et Content-Length: 23947459. La release GitHub a published_at 2026-10-22T07:08:14Z. La note, elle, est datée 22 Oct 2026, sans heure. Je ne prends pas Last-Modified pour la « creation date » dont parle le tableau. Le jour tombe ensemble. L'heure de la note n'est pas écrite.

Vingt-huit billets sur l'étagère, et une phrase qui dit que ce n'est pas tout

La note ne nomme aucun bogue. La release v4.0.8 sur GitHub, si. J'ai compté les lignes de la section What's Changed. 28 commencent par Bug #. Une vingt-neuvième ligne est une pull request, pas un numéro de bogue : le rejet d'identifiants de répétition débordés dans d'énormes expressions rationnelles, #16801. La note sous la liste : elle est générée automatiquement par tool/gen-github-release.rb. À cause de ça, certains commits peuvent manquer. 28 plus une, ce n'est pas un total fermé. C'est le nombre de lignes que j'ai sous les yeux, avec la réserve imprimée en dessous.

Le premier billet : #22311, le build plante sur macOS 26 avec le SDK macOS 27, parce que pipe2() et dup3() ne sont pas disponibles. Plus bas, #22327 : RubyVM::ZJIT.reset_stats! interrompt le processus par une panique Rust quand ZJIT n'est pas activé. #22426 : ZJIT échange des arguments nommés passés hors de l'ordre déclaré, vers une méthode qui a un bloc, et le titre demande un backport. #22406 : Process.fork peut laisser l'enfant incapable de résoudre des noms. #22445 : sur macOS, un enfant de Kernel#fork peut mourir sur pthread_rwlock_destroy, ressource occupée. #22340 : sur Win32, File.stat réussit sur une boucle de liens symboliques. Je ne recopie pas les 28 titres. La note d'octobre n'en recopie aucun. Elle dit « bugfixes », au pluriel, et elle t'envoie sur cette étagère.

Le mot « routine » est sur la note. Le mot « crash » est sur le premier billet. Je ne décide pas que le premier billet est le « changement qui affecte vraiment les utilisateurs » de la clause de septembre. Personne, sur la note du 22, ne fait ce lien.

Le compteur de téléchargement a le gz, pas les trois archives

La page de téléchargement dit que la version stable courante est 4.0.8. Le lien stable est ruby-4.0.8.tar.gz. Le sha256 imprimé en dessous : 0968e2ac4cbd6f1fd85d3092aed66cd3c2d8ba4a5e2493d6e6c6cb0c431897d2. C'est le sha256 du tar.gz sur la note du 22 octobre. La note donne aussi la taille, 23947459, qui est le Content-Length de l'en-tête. Elle donne un SHA1 et un SHA512. Elle donne un tar.xz, taille 18019152, et un zip, taille 29263079, avec d'autres empreintes. La page de téléchargement n'imprime ni la taille, ni le SHA1, ni le SHA512, ni le xz, ni le zip. Je n'ai pas recalculé l'empreinte chez moi. J'ai lu deux feuilles qui impriment la même chaîne pour le gz, et un en-tête dont la longueur recopie le SIZE.

La même page de téléchargement a une ligne de préversion, Ruby 4.1.0-preview1, avec le sha256 fb530bb88e90de3ae91c1310a27ae090e6bd989b8726de50ef12a890a85b88ef. C'est celui du tar.gz dans la note du 12 octobre 2026. L'en-tête de cette archive-là, lu le même jour, a Content-Length: 26550186 et Last-Modified: Mon, 12 Oct 2026 09:07:46 GMT. La note de préversion imprime SIZE: 26550186 pour le gz. Le compteur stable et le compteur de préversion ne disent pas le même numéro. Le sha256, pour chacun, recopie le gz de sa note, pas les deux autres archives.

✍️ À toi : la feuille que tu as ouverte, note de septembre, note du 22, page de téléchargement ou release GitHub, et le mois que tu y lis. Novembre est encore sur la feuille d'avant.

Le 14 juillet, Ruby écrit que 4.0.7 sort en septembre et 4.0.8 en novembre, et que le calendrier d'après peut glisser. Le 15 septembre, la note de 4.0.7 garde novembre pour 4.0.8, et elle garde la porte d'une sortie plus tôt si un changement touche vraiment les utilisateurs, sans réimprimer la phrase sur le glissement. Le 22 octobre, la note de 4.0.8 dit routine et correctifs, sans calendrier et sans cette porte. GitHub aligne 28 billets Bug et une pull request, et prévient que des commits peuvent manquer. Le téléchargement pointe vers le gz, dont le sha256 et la taille recoupent la note. Le crayon disait novembre. Le tampon est au 22.