I wrote a ray tracer in Brainfuck
En préparant une compétition et en relisant CMake, l'auteur a choisi d'implémenter un raytracer dans le langage minimaliste Brainfuck pour démontrer qu'un tel langage pouvait accomplir la tâche. Les valeurs numériques sont codées en point fixe signé Q16.16 réparties sur plusieurs cellules, et le code source C a été transformé en un IR de style SSA via un DSL simple séparant l'analyse et la génération de code. Les primitives BF implémentent move, copy, additions répétées pour la multiplication, division par méthode scolaire sur octets, comparaisons par décrément parallèle et négation par complément à deux, tandis que la racine carrée est obtenue par une isqrt entière pour préserver la précision. Chaque variable dispose d'emplacements temporaires adjacents pour limiter les déplacements du pointeur, les multiplications multi-cellules effectuent des convolutions positionnelles avec ajustement des décalages, et les signes sont traités séparément avant recomposition. Le programme BF final pèse 23 Mo et le rendu initial était extrêmement lent (environ un pixel par minute), mais des optimisations du JIT de l'interpréteur ont accéléré l'exécution au prix d'erreurs de précision donnant au résultat une apparence picturale proche d'un tableau de Van Gogh.