Jarred Sumner, autor de Bun, ha abierto en el repositorio oven-sh/WebKit una pull request (n.º 249) que añade hilos de memoria compartida al motor JavaScriptCore, aunque todavía de forma experimental y sin terminar. La idea central es sencilla pero ambiciosa: que un subproceso pueda ejecutar una función que cierre sobre las variables del ámbito en el que se creó, compartiendo el mismo heap, los mismos objetos y la misma instancia del módulo que el hilo principal, sin clonación estructurada ni paso de mensajes. La API propuesta se reduce a new Thread(fn, ...args), con métodos join() y asyncJoin() para esperar el resultado, más primitivas de sincronización clásicas: Lock (no recursivo, con hold síncrono y asyncHold asíncrono), Condition (con wait/notify/notifyAll) y ThreadLocal.
El texto compara esta propuesta con el modelo actual de Web Workers, que obliga a serializar el código fuente como cadena y evaluarlo en un blob, lo que impide capturar closures reales, rompe errores tipados y exige un protocolo onmessage/postMessage. Con memoria compartida, en cambio, una excepción se relanza como el mismo objeto con su pila original, y patrones como el mapa paralelo, una caché compartida, la cancelación cooperativa con un simple booleano, el progreso vivo o un mailbox con condition variable se reducen a unas pocas líneas sin copias intermedias.
Según el autor, el código ya ejecuta JavaScript en paralelo por los cuatro niveles de JIT sin bloqueo global y supera la suite de pruebas de hilos, pero aún quedan tareas pendientes: limpieza con ThreadSanitizer, pruebas de fuzz, un benchmark fuera de presupuesto y una prueba de larga duración. El PR se publica para que el diseño y la implementación puedan revisarse y discutirse, y el propio Sumner admite que podría no llegar a fusionarse.
