peta - Verificación rápida de una desagradable función extraña en Haskell(GHC)
peta haskell en español (1)
Me gustaría usar la prueba de la biblioteca quickcheck de Haskell con algún código C. La forma más fácil parece ser hacer una foreign import
y escribir una propiedad además de la función haskell resultante. El problema con esto es que si el código C causa una falla de segmentación o se las arregla para dañar la memoria, mis pruebas fallan sin resultado o hacen algo totalmente impredecible.
La segunda alternativa es crear envoltorios ejecutables simples sobre los bits C y ejecutarlos fuera del proceso de prueba a través de System.Process
. Huelga decir que hacer esto requiere una gran cantidad de valores de andamiaje y serialización, pero por otro lado, puede manejar segfaults.
¿Hay alguna manera de hacer que la estrategia de foreign import
tan segura como ejecutar un proceso externo?
Puede implementar el contenedor en su proceso actual, pero luego use System.Posix.Process.forkProcess
para ejecutar de forma segura en un proceso propio, implementando la comunicación necesaria utilizando Haskell.