FreeCAD, el programa de modelado paramétrico en 3D con más de 1,5 millones de líneas de C++ y 700.000 de Python, ya puede ejecutarse en una pestaña del navegador. El puerto a WebAssembly fue realizado en apenas cuatro días por Fable, una herramienta de IA aplicada a proyectos de software complejos, a partir de un hilo en Hacker News y siguiendo el patrón ya empleado con LibreCAD y OpenSCAD: compilar una aplicación Qt de escritorio a WebAssembly con soporte JSPI.
El peso inicial ronda los 96 MB comprimidos con Brotli y requiere navegadores basados en Chromium 137 o superior, ya que depende de WebAssembly JSPI, una función todavía no disponible en Firefox ni Safari. Al abrirse, carga un documento de demostración con una caja y un corte cilíndrico visible en un visor 3D.
El artículo describe la cadena técnica que lo hizo posible: un Qt 6.11.1 compilado desde cero para wasm con JSPI y excepciones nativas sobre Emscripten 4.0.12, junto con versiones estáticas de OpenCASCADE, CPython 3.14, PySide6, Coin3D, ICU, Boost, Xerces, VTK 9.3 y Salome SMESH. Todo se enlaza en un único módulo de 196 MB que incluye 17 bancos de trabajo, como PartDesign, Sketcher, FEM, BIM o CAM.
Uno de los retos principales fue adaptar el renderizado basado en OpenGL de función fija de Coin3D a WebGL2 mediante un emulador propio, así como resolver problemas de orden de inicialización estática en C++, la sustitución de QProcess y la migración de Asyncify a JSPI con excepciones nativas. El resultado es un CAD paramétrico completo que abre archivos .FCStd, recalcula y exporta a STEP directamente desde la nube, sin instalación.
