digitalmars.D.learn - dynamically compile and load glue logic
- yawniek (11/11) Mar 30 2018 in how far is it or would the following be possible:
- H. S. Teoh (16/23) Mar 30 2018 [...]
- rikki cattermole (3/20) Mar 30 2018 Still need to, front end is barely alpha.
in how far is it or would the following be possible: dynamically compile and execute some glue logic that is also written in D under linux? and what happens if that code uses phobos or other dub libs that are available in the host binary? especially the 2nd point is important as i would want to load 100's of those snippets. For the context: the idea is to create a streaming-ETL system where you can dynamically add/remove rules/modules. it would be great if logic could be written directly in D and operate on specific (library provided) objects.
Mar 30 2018
On Fri, Mar 30, 2018 at 02:24:45PM +0000, yawniek via Digitalmars-d-learn wrote:in how far is it or would the following be possible: dynamically compile and execute some glue logic that is also written in D under linux? and what happens if that code uses phobos or other dub libs that are available in the host binary?[...] I've written a program where user input drives the generation of a code snippet that then gets passed to an invocation of dmd, compiled, linked and the loaded as a shared library via dlopen(), et al. It works fairly well, and dmd generally is fast enough that the pause is not very noticeable. (This was before dmd-as-a-library was available; I imagine it would be even faster today now that you don't have to spawn a separate dmd process.) The generated snippet does import std.math, and it seems to work fine. But then the generated snippets tend to be fairly small, and only use a limited subset of the language, so there may be gotchas that I'm not aware of. T -- Don't throw out the baby with the bathwater. Use your hands...
Mar 30 2018
On 31/03/2018 3:38 AM, H. S. Teoh wrote:On Fri, Mar 30, 2018 at 02:24:45PM +0000, yawniek via Digitalmars-d-learn wrote:Still need to, front end is barely alpha. Can't be reset for example (last I checked, but doubt that has changed).in how far is it or would the following be possible: dynamically compile and execute some glue logic that is also written in D under linux? and what happens if that code uses phobos or other dub libs that are available in the host binary?[...] I've written a program where user input drives the generation of a code snippet that then gets passed to an invocation of dmd, compiled, linked and the loaded as a shared library via dlopen(), et al. It works fairly well, and dmd generally is fast enough that the pause is not very noticeable. (This was before dmd-as-a-library was available; I imagine it would be even faster today now that you don't have to spawn a separate dmd process.)
Mar 30 2018