digitalmars.D.ldc - LLVM BC as library
- Void-995 (10/10) Oct 08 2017 Some time ago I was able to compile simple library into BC (pure
Some time ago I was able to compile simple library into BC (pure C) and load it with my application and use across different operating systems with re-compilation having those external code running in a sandbox. How much difficult it would be to try with D? Means application is in C++ and I want to load BC made from D code? The idea itself comes from something like sandboxed Quake 3 QVM and used for game logic, it's pretty easy to replicate that behavior with C/C++ with LLVM BC. I wonder how much pain it would be to make that with D instead.
Oct 08 2017
On Sunday, 8 October 2017 at 10:30:22 UTC, Void-995 wrote:Some time ago I was able to compile simple library into BC (pure C) and load it with my application and use across different operating systems with re-compilation having those external code running in a sandbox. How much difficult it would be to try with D? Means application is in C++ and I want to load BC made from D code? The idea itself comes from something like sandboxed Quake 3 QVM and used for game logic, it's pretty easy to replicate that behavior with C/C++ with LLVM BC. I wonder how much pain it would be to make that with D instead.Compiling to LLVM bitcode with LDC is as simple as adding `-output-bc` to the command line. If you depend on the runtime library (druntime) and standard library (Phobos), you should be able to compile them to bitcode libraries by compiling LDC yourself using CMake option BUILD_BC_LIBS=ON.
Oct 08 2017
On Sunday, 8 October 2017 at 11:57:01 UTC, kinke wrote:On Sunday, 8 October 2017 at 10:30:22 UTC, Void-995 wrote:I think second part was most important information, thank you. Can I build Phobos partly (or just runtime)? I would like to expose my own API for file system, for example, meaning restricting usage of built-in IO, same goes for allocations.Some time ago I was able to compile simple library into BC (pure C) and load it with my application and use across different operating systems with re-compilation having those external code running in a sandbox. How much difficult it would be to try with D? Means application is in C++ and I want to load BC made from D code? The idea itself comes from something like sandboxed Quake 3 QVM and used for game logic, it's pretty easy to replicate that behavior with C/C++ with LLVM BC. I wonder how much pain it would be to make that with D instead.Compiling to LLVM bitcode with LDC is as simple as adding `-output-bc` to the command line. If you depend on the runtime library (druntime) and standard library (Phobos), you should be able to compile them to bitcode libraries by compiling LDC yourself using CMake option BUILD_BC_LIBS=ON.
Oct 08 2017
On Sunday, 8 October 2017 at 11:57:01 UTC, kinke wrote:On Sunday, 8 October 2017 at 10:30:22 UTC, Void-995 wrote:But I need GC anyway as I would like to use D classes.[...]Compiling to LLVM bitcode with LDC is as simple as adding `-output-bc` to the command line. If you depend on the runtime library (druntime) and standard library (Phobos), you should be able to compile them to bitcode libraries by compiling LDC yourself using CMake option BUILD_BC_LIBS=ON.
Oct 08 2017