The next release of Campy, available in the next couple days, focuses on improving stability. In this release, I made over 20 Git commits, fixing problems with the WriteLine() code.
- Structs are passed by reference in methods, but weren’t always treated correctly as such, CIL ldarga.
- The CIL newarr still used Mono.TypeReference.GetElementType() which does not work–it is not the same as casting the type to Mono.ArrayType, then calling ElementType!
- Native code for runtime Array.Resize() was faulty–lingering DNA hangover.
- System.Byte not handled in Campy. Fixed.
- Struct deep copy fixed.
- Adding in implementations for System.Math.
- Fixing System_String_InternalIndexOfAny, and other functions in runtime–lingering DNA hangover.
- Fixing deep copy to CPU of arrays created on GPU.
- Adding lock-free managed object pointer table for runtime.
- Rolling forward with fixed Swigged.cuda and Swigged.llvm for Ubuntu, and upgrading LLVM to official version 7.0.0.
- General code clean up.
Moving forward, there is much work to do.
- I am considering how to best handle upgrading CUDA and LLVM with new releases, and handling older versions. SWIG is not robust enough.
- The builds still need to be automated. I’m not sure how to handle the GPU aspect of this. I’m hoping to get some free time donated by a large hosting company.
- The runtime must be rewritten so that it’s Net Standard 2+ conforming, and free of the native (C/C++) code. This is the big problem with moving forward with an AMDGPU target. Alternately, SPIR might work.
- There should be an AOT compiler tool for compiling any C# directly.
- Retarget the compiler to x86_64, for an alternative of Net Core!
Campy is moving forward. However, it is just one person–me–writing basically an entire CoreRT/Mono/… all by myself, whereas you have a whole army working on each of those Microsoft projects. I can only go so fast. But, trust me. I will get there!
–Ken Domino