I have just managed to include a bit D code in a C# project compiled to Javascript. I am already looking at extending LDC runtime to open more possibilites, but something seems fishy.

All DRuntime code the compiler can invoke directly is in object.d, is that right?

When I try to copy a slice to another -no changing sizes, so can be done without GC- it compiles just fine using:

ldc2 -O1 -c dModule.d --output-bc -m32 -d-version="Emscripten_Backend"

...and when I proceed to compile the bytecode to Javascript:

emcc -O1 dModule.bc -g2 -s EXPORT_ALL=1 -s ASSERTIONS=1 -o dist/dModule.js

...it still works, but with a few warnings:

warning: Linking two modules of different target triples: C:\Users\Yleinen\.emscripten_cache\asmjs\dlmalloc_debug.bc' is 'asmjs-unknown-emscripten' whereas 'dModule.bc' is 'i686-pc-windows-msvc'

warning: Linking two modules of different data layouts: 'C:\Users\Yleinen\.emscripten_cache\asmjs\libc.bc' is 'e-p:32:32-i64:64-v128:32:128-n32-S128' whereas 'dModule.bc' is 'e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32'

warning: Linking two modules of different target triples: C:\Users\Yleinen\.emscripten_cache\asmjs\libc.bc' is 'asmjs-unknown-emscripten' whereas 'dModule.bc' is 'i686-pc-windows-msvc'

warning: incorrect target triple 'i686-pc-windows-msvc' (did you use emcc/em++ on all source files and not clang directly?)
warning: unresolved symbol: _d_array_slice_copy
warning: unresolved symbol: _d_arraybounds

The _d_array_slice_copy is now implemented in JavaScript by making it throw an exception about missing function. I would be happy to fix that function to exist, but there's something strange: object.d does not contain array_slice_copy, not even inside a version statement or static if. Where is it supposed to be found at, then?

Reply via email to