First Blood: L'IA a enfin percé ProgramBench 🩸

J'écrivais récemment que les agents IA vantés s'étaient écrasés sur le benchmark ProgramBench, où il fallait recréer un binaire à partir de zéro avec seulement des droits d'exécution. À l'époque, tout le monde affichait un fier 0%.

Eh bien, la porte s'est entrouverte. Les gars ont publié une mise à jour : la nouvelle GPT-5.5 (xhigh) a résolu la première tâche — elle a complètement rétro-conçu et écrit un clone fonctionnel de l'utilitaire cmatrix.

Mais le plus intéressant dans ce rapport n'est pas le fait de la résolution elle-même, mais la façon dont différents modèles ont abordé la tâche. C'est littéralement un aperçu de la façon dont différentes catégories de développeurs pensent.

🤡 Claude Opus 4.7
Il a décidé d'écrire en C. Il a découvert qu'il n'y avait pas de fichiers d'en-tête ncurses.h dans le Docker. Que fait Claude ? Il n'abandonne pas. Il parse les binaires système via ldconfig et nm -D, écrit à la main curses_decls.h avec plus de 100 lignes de typedefs et lie tout cela au runtime. Une ingénierie système absolument géniale.

Et puis il échoue sur 19 tests. Pourquoi ?
Il vérifiait la validité de la couleur saisie avec strcmp au lieu de strcasecmp. La saisie de GREEN ou Red cassait la logique. Le modèle a utilisé 178 appels API (10,74 $), a mis en place une configuration extrêmement complexe via l'éditeur de liens dynamique, mais a échoué sur une comparaison de chaînes sans conversion en casse uniforme.

🧠 GPT 5.5
L'agent vérifie le Docker, essaie de compiler un fichier C de test et voit qu'il n'y a pas d'en-têtes pour ncurses.
Sa logique ? "Au diable, je vais écrire en Python".

Fait amusant : les auteurs du benchmark ont dû supprimer un test pour valider la victoire de Python.
Dans le binaire C original, si on entrait un nombre gigantesque, le programme plantait avec un dépassement d'entier. La variable débordait, le délai devenait minuscule, et la matrice filait à pleine vitesse. Les auteurs du benchmark considéraient cela comme une "fonctionnalité".
📱 La version Python de GPT-5.5 a honnêtement parsé le nombre (merci à l'arithmétique longue de Python, qui ignore les limites) et est allée honnêtement dans time.sleep(1e22). La plateforme a logiquement renvoyé OverflowError: timestamp out of range.
Le bug du atoi() en C était présenté comme un comportement système, mais Python a remis les choses à leur place.

Combien de temps donnons-nous pour prendre ce benchmark ?