Quiero ejecutar funciones en un módulo, este módulo tendrá dependencias resueltas en otros módulos. los módulos pueden cambiar (entorno de compilación dinámica) así que preferiría no vincular todas las dependencias en un solo módulo monolítico, es decir, si se puede evitarenlace dinámico con LLVM
Espero usar Linker::linkModules
pero esto siempre es destructivo para la fuente módulo. Eso está bien para un módulo que depende de uno solo, ya que si eso cambió, no es gran cosa, pero ¿no es excesivo reconstruir y volver a vincular los módulos N-1 que no cambiaron solo por una sola que cambió?
Me pregunto si existe una versión no destructiva de linkModules que pueda funcionar para la ejecución de JIT.
como en bibliotecas compartidas normales, si 'B'cambia,' A' todavía necesitaría volver a vincularse con el nuevo B. Mi punto es: si A está vinculado contra 'B0',' B1' ... 'BN 'y uno de ellos cambia, solo tendré que volver a vincular las referencias a esa, ya que el resto no cambió. El linkModules actual funciona como un enlazador estático (copiando todo en el módulo de destino) – lurscher
El kernel de Linux, con sus módulos, permite algo como esto (descargar un módulo, volver a cargar una nueva versión). Pero allí el proceso está bajo el control del kernel, y existen enclavamientos para garantizar que el código no se esté utilizando. – vonbrand