Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierNUMERIQUE

Le Deathray - Le shader WebGPU qui fait redémarrer votre Mac

Par : Korben ✨
11 septembre 2026 à 11:52

Auberon López vient de publier sur son blog un bouton qui freeze complètement les Mac à partir d'un simple clic dans un navigateur. Il a baptisé ça le Deathray (le rayon de la mort quoi...) et c'est un shader WebGPU diffusé via une page web des plus ordinaires, qu'il suffit d'ouvrir d'un simple clic sur un lien.

Ce qui arrive ensuite change d'une fois sur l'autre : Vous aurez le doit à la roue multicolore, ou la souris qui se fige, ou encore parfois des saletés magenta sur une partie de l'écran. Le reste de l'ordinateur, lui, va très bien et vous pouvez vous y connecter en SSH depuis une autre machine sans souci. C'est juste l'affichage qui ne répond plus, et il ne reviendra pas sauf si vous rebootez.

Le fait est que macOS surveille également son WindowServer, le processus qui dessine tout ce que vous voyez. S'il ne répond plus pendant deux minutes, le chien de garde déclenche un kernel panic et la machine redémarre ensuite toute seule. Mais vous pouvez aussi appuyer sur le bouton d'alimentation si vous êtes pressé, mais en croisant les doigts pour que votre navigateur ne rouvre pas l'onglet au redémarrage...

Le truc tient dans un seul fichier HTML, et histoire de vous expliquer un peu plus, un compute shader part dans une boucle écrite sans incrément, donc elle ne se termine jamais, et recopie indéfiniment le même vecteur en mémoire. À côté, le vertex shader qui dessine l'image lit alors cette même zone, et comme le premier ne lâche jamais la main, le second ne peut pas avancer d'un pouce.

Sauf que l'embouteillage ne reste pas cantonné au navigateur. Tous les processus qui veulent le GPU se retrouvent alors à patienter derrière, WindowServer compris, d'où l'écran figé. López dit avoir reproduit la chose dans Chrome, Firefox et Safari, sur des MacBook à puce M tournant sous macOS Tahoe. Après sur les autres systèmes testés, l'onglet rame un bon coup, puis tout rentre dans l'ordre dès qu'on ferme la page.

Mais alors pourquoi eux et pas les autres OS comme Windows ?

Hé bien parce que Windows embarque un mécanisme appelé TDR , qui repère qu'une carte graphique met plus longtemps que prévu à répondre et qui la réinitialise pour éviter que tout le système se bloque. Deux secondes par défaut, et le shader qui déconne se fait éjecter.

Alors que sur Apple Silicon, c'est un coprocesseur maison, l'ASC, qui pilote le GPU avec un firmware Apple et qui s'occupe de tout : énergie, ordonnancement des commandes, préemption des tâches. Asahi Lina , qui a retourné la puce M1 pour écrire un pilote Linux , a d'ailleurs relevé que si ce firmware plante, il n'y a qu'un moyen de s'en sortir. La seule solution c'est de redémarrer complètement la machine.

López a signalé le problème à Apple Security fin juillet. Apple a reproduit le bug, annoncé un correctif et donné un calendrier (confidentiel, donc on ne le connaîtra pas). Puis le 26 août, revirement complet d'Apple qui explique ne voir "aucune implication de sécurité dans ce rapport", lequel n'entraînera donc aucun changement dans ses produits. Le dossier est ensuite parti vers une autre équipe pour d'éventuelles "considérations d'amélioration".

En 2023 pourtant, Ron Masas d'Imperva avait déjà fait planter des Mac, des iPhone et des iPad avec un shader, en WebGL cette fois. Apple avait alors sorti le CVE-2023-40441 , noté 6,5 sur 10, et l'avait bouché en renforçant la validation des entrées pour mieux repérer les boucles folles.

Seulement voilà, sa boucle à lui était énorme mais finie, donc détectable, alors que celle du Deathray tourne pour toujours. Et une boucle infinie, la repérer à coup sûr, c'est le problème de l'arrêt ... donc personne ne sait faire.

López l'écrit d'ailleurs sur son site, les chercheurs en sécurité avec qui la question a été discutée donnent plutôt raison à Apple. Pour la firme, le résultat n'est qu'un plantage, un gel ou une perte de données récupérable, et ça ne constitue pas un réel problème de sécurité. Et sur le principe, ça se défend. Sauf que dans la vraie vie, si vous avez oublié de sauvegarder vos fichiers et que vous cliquez sur ce lien, vous l'avez dans l'os (et pas dans le "MacOS"... roh roh roh).

Donc non, il n'y a rien à installer pour empêcher ça et rien à attendre de Cupertino pour le moment. Voilà, sachez juste que n'importe quel couillon qui aura lu cet article pourra vous envoyer un petit lien par mail, façon rickroll des enfers, ce qui aura pour effet de freezer et faire redémarrer votre Mac.

Désolé !! 🤷‍♂️

Source : le billet d'Auberon López .

Pascal Editor - Le plan 3D se dessine pendant que Claude bosse

Par : Korben ✨
27 juillet 2026 à 18:58

J'ai jamais fait construire de maison mais je crois savoir que dessiner le plan de sa maison en 3D, ça passe encore par un logiciel assez lourd à installer + une licence, sans oublier l'interface façon Micro Applications de 2003 (qui s'en souvient ??). C'est pourquoi Aymeric Rabot et Wassim Samad ont pris le problème autrement avec Pascal Editor, un éditeur de bâtiments 3D qui tourne simplement dans un onglet de navigateur. Et en plus, c'est gratuit, open source (licence MIT) et surtout sans inscription.

Vous tracez les murs à la souris, puis viennent les zones, les dalles, les plafonds et les toits. Les portes et les fenêtres sont paramétriques, posez-les sur une cloison, la découpe se fait toute seule en géométrie booléenne via three-bvh-csg. Le mobilier s'accroche au sol, au mur ou au plafond selon l'objet ( allez regarder cet exemple ! )

Tout ça s'organise en Site, Bâtiment, Niveau, puis pièces. Le rendu passe par Three.js en WebGPU, la scène est sauvegardée en local dans IndexedDB, et l'historique remonte 50 étapes en arrière. Sauvegardez ou partagez un projet en ligne par contre, et il part sur leurs serveurs.

Le projet propose aussi @pascal-app/mcp sur npm, un serveur Model Context Protocol qui expose la scène 3D à un agent. Vous installez le package, et la commande pascal-mcp branche Claude Desktop, Claude Code, Cursor ou Codex directement sur votre plan (votre scène part alors chez le fournisseur du modèle, forcément).

Ça donne une trentaine d'outils utilisables en langage naturel : create_room pour sortir une pièce complète depuis un polygone, add_door et add_window sur un mur donné, furnish_room qui meuble selon le type de pièce, measure, check_collisions pour repérer les objets qui se chevauchent, et undo si l'agent part en vrille. Trois prompts sont livrés avec, dont from_brief qui transforme une phrase du genre "un 2 pièces dans 80 m²" en suite de modifications.

Deux outils lisent aussi des images, un pour les plans scannés, un pour les photos de pièce. Attention, ils n'embarquent aucun modèle de vision mais utilisent la capacité sampling du protocole, autrement dit c'est le modèle de votre client MCP qui regarde l'image.

Et puis il y a la synchro. Le serveur écrit dans une base SQLite locale, et la page de l'éditeur s'abonne au flux d'événements. Résultat, vous gardez l'onglet ouvert à côté de votre fenêtre de chat et vous voyez les murs apparaître au fur et à mesure que l'agent travaille. J'avais montré le même genre de bascule avec n8n qui laisse une IA piloter ses workflows , sauf qu'ici le retour est visuel et immédiat.

Côté interopérabilité, un convertisseur avale les fichiers IFC, le format d'échange du BIM, et l'export sort en GLB, STL ou OBJ. Cet export est d'ailleurs arrivé par des contributeurs extérieurs, pas par l'équipe, c'est pour vous montrer à quel point le projet est bien soutenu ! De quoi ensuite passer votre plan dans Blender, ou le texturer avant impression 3D . Un système de plugins permet aussi d'ajouter ses propres types d'objets, avec un exemple officiel qui plante des arbres et des fleurs.

Si vous voulez tester, l' éditeur s'ouvre direct dans le navigateur , et le code est sur GitHub. À vous de voir si vous dessinez tout vous-même ou si vous déléguez à l'IA.

Merci Letsar pour le lien !

Source

Universe Atlas - L'univers à l'échelle réelle dans votre navigateur

Par : Korben ✨
23 juillet 2026 à 08:11

Si vous prévoyez de vous rendre en Islande le 12 août prochain pour admirer l'éclipse totale, vous pouvez déjà vous projeter dans l'expérience grâce à Universe Atlas, un nouvel atlas mis en ligne par Chris Zaharia, qui permet de localiser chaque éclipse de 2026.

D'un simple clic, vous êtes transporté à Reykjavik à 17h45 UTC pour voir virtuellement le soleil, en forme de croissant, se lever à l'horizon sous un ciel aux teintes étranges, évoquant cette atmosphère de fin du monde très caractéristique des éclipses ! (Moi je suis team fin du monde 1999 à l'aéroport de Beauvais, tu connais !! loool)

Reykjavík, le 12 août 2026 vers 18h.

Cette application tourne dans le navigateur et pèse environ 85 ko compressés, ne possède ni moteur de jeu ni dépendance externe, mais repose exclusivement sur du WebGPU brut.

Vous y trouverez 8,4 millions d'étoiles réelles issues des catalogues Gaia DR3 et ATHYG, chacune avec sa distance mesurée et sa vitesse réelle. Si vous remontez le temps de 100 000 ans, vous verrez ainsi la Grande Ourse se désagréger sous vos yeux !

La carte intègre également jusqu'à 2,6 millions de galaxies issues du relevé SDSS, ainsi que les planètes sur leurs orbites képlériennes, l'ISS et 170 satellites positionnés selon leurs éléments orbitaux du jour. L'ensemble est présenté dans un zoom continu couvrant 43 ordres de grandeur, allant du cosmos au quark dans l'infiniment petit, sans aucune coupure de scène.

Impressionnant non ? Alors si je vous dis maintenant que tout a été codé avec Claude code et le modèle Fable 5 ??

Bah non, ne faites pas cette tête, c'est pas grave parce que c'est vraiment top ! Jusqu'à présent, seuls ceux qui savaient coder pouvaient matérialiser leurs idées... Mais avec l'arrivée de l'IA, n'importe qui avec une jolie idée et un peu de débrouillardise peut lui donner vie sans trop de souffrance avec la technique ! Et c'est ça que je trouve magique dans le vibe coding.

Après c'est sûr, faut vérifier et pas faire confiance aveuglément. C'est pourquoi les positions des planètes passent en intégration continue avec des tests qui comparent les datas de l'app avec celles de JPL Horizons, l'éphéméride de la NASA, et comme ça, dès qu'un corps céleste dérive de plus de 0,2 degré, hé bien le build pète. Les générateurs refusent ainsi d'écrire quoi que ce soit qui ne passe pas leurs contrôles physiques.

Ça permet d'avoir un truc sérieux qui marche bien grâce au vibe coding sans pour autant sacrifier la qualité.

Sagittarius A, la lumière courbée autour de son ombre. Le bandeau affiche ses sources : GRAVITY 2022, orbites des étoiles S d'après Gillessen et al. 2017.*

Tout est extrêmement précis et l'échelle réelle est conservée, puisque c'est vraiment le cœur du produit. Le développeur met donc un point d'honneur à ne jamais truquer une taille, une distance ou une vitesse pour faire joli.

Et vous pouvez vérifier qu'il s'y tient ! Appuyez sur X et tout se recolore selon la provenance avec couleurs naturelles pour ce qui est mesuré, ambre pour ce qui a la bonne taille mais un rendu stylisé, cyan pour ce qui est purement illustratif.

Par contre, je trouve dommage qu'on ne puisse pas régler la date et l'heure précisément, ou alors je n'ai pas trouvé comment. Et c'est assez difficile de se caler sur une date et une heure précises, sachant qu'on peut aller de 10 ans en 10 ans, et qu'ensuite le saut n'est pas de 100 ans en 100 ans, mais de 1000 ans en 1000 ans, donc c'est un peu dur de doser. J'y ai passé un petit peu de temps.

Pour que ça fonctionne, il vous faudra WebGPU c'est-à-dire Chrome / Edge ou Safari depuis la version 26. Après Firefox, c'est plus tordu car c'est activé sur Windows depuis la 141, sur les Mac Apple Silicon depuis la 145 mais y'a toujours rien côté Firefox pour les Mac Intel ni pour Linux. Sous Linux, prenez donc plutôt Chrome 144 ou plus récent.

Dans le même genre, je vous avais montré AstroClick pour le système solaire en voxels, et le vénérable Space Engine . Bref, c'est par ici , c'est gratuit, et le code est sur GitHub sous licence MIT.

Ah et pensez à appuyer sur T pour la visite guidée !

Source

Neural Drive - Le jeu de kart qui tourne sans moteur de jeu, dans votre navigateur

Par : Korben ✨
20 juillet 2026 à 15:41

Aujourd'hui je vais vous parler d'un jeu de karting façon Mario Kart qui fonctionne sans moteur 3D et sans même une seule ligne de code.

En réalité, il s'agit d'un modèle de 130 millions de paramètres qui est capable de deviner à quoi doit ressembler l'image suivante. Cela a été mis en ligne hier soir par Asankhaya Sharma, c'est le gars derrière OptiLLM . Ça s'appelle Neural Drive et ça imite Super Tux Kart , le Mario Kart libre dont je vous ai déjà parlé.

Neural Drive est donc un modèle qui regarde les sept dernières images ainsi que les touches que vous enfoncez sur votre clavier. Son job c'est simplement de peindre l'image suivante. Ainsi, si vous appuyez sur la flèche du haut, il dessinera une carte qui avance, si vous tournez à gauche, il dessinera un virage...etc.

Donc, il n'y a aucun code derrière, c'est juste une hallucination que vous pilotez en 384 x 192.

Les 262 Mo du fichier ONNX se téléchargent dans votre onglet et c'est votre carte graphique qui transpire ensuite, avec le WebGPU. Il y a donc zéro serveur derrière, exactement comme l'agent Gemma que je vous montrais en avril .

Je l'ai testé chez moi sur mon Mac Studio dans Firefox et je suis à 2,5 frames par seconde, ce qui représente 405 millisecondes de génération par image sur mon GPU Apple. Donc autant vous prévenir qu'à ce rythme-là c'est injouable. Vous appuyez sur une touche, le monde se redessine mollement, et vous conduisez comme dans un rêve où vos jambes ne répondent plus... Mais ça reste dingue quand même !

Sharma annonce que sur les MacBook M récents on peut obtenir environ 10 images par seconde, et sur des GPU ça devrait approcher le temps réel, 15 à 20 images par seconde. L'écart avec ma mesure vient sûrement du fait que je suis en train de compiler tout un tas de conneries au moment où j'écris cet article... donc testez plutôt que de me croire sur parole. Et si vous êtes sur mobile, les petits boutons sous l'écran servent de contrôles tactiles, si vous avez de la patience.

Aucune de ces images n'existe dans un fichier de jeu. Le chrono en haut à droite est illisible parce que le modèle le repeint à chaque frame.

Le plus marrant, c'est tout ce qu'il vous dessine en plus de la route. Il régénère aussi l'interface : le compteur de tours, la minimap en bas à gauche, les petites têtes de Tux empilées sur le côté, le chrono en haut à droite. Sauf qu'il ne sait pas ce qu'est un chrono. Du coup les chiffres bavent, se réécrivent tout seuls, vous annoncent un tour 1 sur 300 ! Ce modèle ne compte pas le temps écoulé, il peint simplement des pixels qui ressemblent à du temps. Et pendant ce temps-là le décor fond carrément en haut de l'image, avec des bouts de falaise qui coulent dans le ciel.

Côté cuisine, c'est un LatentDiT de 130,8 millions de paramètres (768 de dimension, 12 couches) posé sur un petit ConvVAE qui compresse l'image d'un facteur 8. Le gros du boulot d'optimisation c'est que le modèle d'origine avait besoin de 8 étapes de débruitage par image, et la version distillée n'en fait plus que 2. C'est ce qui vous fait passer de "démo qui rame" à "démo qui rame un peu moins". Vous démarrez à l'une des 18 positions pré-enregistrées dans un fichier de seeds, et si votre navigateur n'a pas WebGPU, ça bascule sur le CPU avec un message d'avertissement sans ambiguïté : "prêt (CPU, ce sera lent)".

Vous avez aussi les poids PyTorch, dont le checkpoint non distillé de 523 Mo, si l'envie vous prend de bidouiller l'entraînement. C'est la même famille d'idées que DIAMOND, l'IA qui rêve pour mieux jouer , ou que Mirage 2 , sauf qu'ici tout a été ramené à la taille d'une page web. Le kart ne pèse plus que 262 Mo et tient dans un onglet de navigateur !

Bref, c'est une démo, pas un jeu. Mais c'est la première fois que je fais tourner un monde entier chez moi sans envoyer un seul octet à un serveur.

Ça se teste ici , et les poids sont là .

❌
❌