After a lot of work on the metadata subsystem, I decided to release a new version of Campy. This release fixes a lot of issues with programs that use Net Core and Net Standard, how it reads assemblies, and how it finds and allocates objects used in kernels. The memory allocation subsystem was also improved, although it is still just a first-fit free block allocator. There are some corrections for various CIL instructions, like ldlen, ldnull, and newobj. Generics still do not work. After some thought, rewriting a generic instance like “List<int>” into a non-generic Mono.Cecil.TypeDefinition where the name is “List<int>”, and every damn CIL instruction that references a generic argument is rewritten, isn’t going to work when System.Reflection is added. FFT finally works again, although through that test case, I found out more than I bargained for. When building a Net Core app, it links with System.Numerics.dll in Net Core (C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Numerics.dll). That DLL does not contain CIL, which you can verify yourself using DotPeek. It turns out that System.Numerics.dll, as well as netstandard.dll, “forwards types” to System.Runtime.Numerics.dll–which actually contains the CIL for methods, e.g., “Complex operator +(Complex, Complex)”, which is what FFT uses. Unfortunately, I found this out just as I was about to release Campy. Further, I also found out that the runtime framework DotNetAnywhere does not read x64 Net Core assemblies on Ubuntu. It turns out that DNA, which was written quite long ago, does not read 0x8664 machine PE files. So, many last minute changes to get the Ubuntu platform working. It all means that there is still a lot to change in DNA to bring it up to snuff with respect to Mono, Net Core, Net Standard, and Net Framework.