Un Pong qui se réécrit, se recompile et se relance à chaque image. Voilà l’idée fixe derrière l’un des prix les plus barrés de l’International Obfuscated C Code Contest (IOCCC), ce concours qui célèbre depuis toujours le code C le plus illisible mais parfaitement fonctionnel. Le « Ping Pong Prize » de cette édition récompense un jeu de Pong qui génère, compile et exécute son propre code à chaque frame. La boucle de jeu classique peut aller se rhabiller.
Points clés
- Le jeu primé réécrit, compile et exécute son propre source C à chaque frame.
- Son auteur, Jonah Uellenberg, l’a produit via un langage maison nommé Insert, dédié au code auto-modifiant.
- L’IOCCC29 est la deuxième édition depuis la reprise du concours après quatre ans d’interruption (2020-2024).
Chaque image devient un nouveau programme
Le programme primé est signé Jonah Uellenberg. À chaque tour, il imprime une nouvelle version de son propre source C, avec l’état du jeu directement incrusté dans le code. Cette sortie est ensuite compilée puis exécutée. Le tour suivant repart de cette version fraîchement générée. D’après la description relayée par Tom’s Hardware, chaque frame enchaîne donc un cycle complet « écrire, compiler, lancer ».
Le mécanisme cousine avec le quine, ces programmes capables d’afficher leur propre source. Sauf qu’ici le code ne se contente pas de se cloner : il se modifie entre deux exécutions pour faire avancer la balle. Le résultat reste du C lisible, mais son moteur repose sur une génération continue de source plutôt que sur une banale boucle.
Le détail le plus savoureux : Uellenberg n’a pas écrit lui-même le C obfusqué soumis au jury. Il a utilisé un langage maison baptisé Insert, conçu pour produire du code auto-modifiant. C’est le compilateur de ce langage qui a craché le C alambiqué finalement distingué par l’IOCCC29.
Un concours qui a repris du service
L’IOCCC en est à sa 29e édition. C’est la deuxième depuis la reprise du concours après quatre ans de silence, de 2020 à 2024. L’édition 2025 avait été dévoilée lors d’un livestream YouTube le 6 juin avant la publication du code sur le dépôt du concours.
La compétition reste fidèle à sa devise : distinguer des programmes C volontairement opaques mais bel et bien fonctionnels. Le Ping Pong Prize ne récompense donc pas la sobriété d’exécution mais l’ingéniosité du procédé. Ce projet ne joue pas seulement à Pong : il transforme la compilation elle-même en pièce maîtresse du jeu.
L’essentiel du projet primé
- Lauréat : Jonah Uellenberg.
- Distinction : « Ping Pong Prize » de l’IOCCC29.
- Principe : le programme écrit du C neuf à chaque frame, le compile puis l’exécute.
- Langage d’origine : Insert, créé par Uellenberg pour générer du code auto-modifiant.
De l’art de faire travailler son compilateur soixante fois par seconde pour renvoyer une balle. L’informatique utile attendra.