¿Por qué tiene que usar un indicador de compilador y un indicador de tiempo de ejecución para obtener soporte multinúcleo en Haskell?

El wiki de Haskell muestra que necesita establecer un indicador de compilación y un indicador de tiempo de ejecución para obtener soporte multinúcleo. ¿Por qué no está utilizando la biblioteca lo suficiente como para obtener el comportamiento correcto en tiempo de compilación? ¿Por qué el ejecutable en tiempo de ejecución no puede detectar que fue compilado con subprocesos y usar todos los núcleos en el sistema a menos que se especifique lo contrario? Creo que activarlos por defecto sería mejor. Entonces podría haber banderas para desactivar o modificar estas características.

http://www.haskell.org/haskellwiki/GHC/Concurrency#Multicore_GHC dice:

Compile su programa utilizando el interruptor roscado.Ejecute el programa con + RTS -N2 para usar 2 hilos, por ejemplo. Debe usar un valor -N igual al número de núcleos de CPU en su máquina (sin incluir los núcleos Hyper-threading).


Parece algo oneroso tener banderas que uno debe establecer tanto en tiempo de compilación como de nuevo en tiempo de ejecución. ¿Son estas banderas vestigios del esfuerzo por agregar concurrencia a GHC?

Respuestas a la pregunta(3)

Su respuesta a la pregunta