Currently, there are some limitation of KoiVM. The major ones are:
- Only works with FullTrust permissions.
- It could not process generic types, and only has limited support on generic methods. Note that generic instantiation works.
- Runtimes other than .NET Framework & CoreCLR, and other OS than Windows is not supported.
CIL Opcodes
KoiVM supports most of the CIL opcodes, except the following:
Unsupported Opcodes
- calli
- jmp
These unsafe invocation opcodes are not planned to be supported.
- cpobj
- cpblk
- initblk
These rare memory related opcodes are not planned to be supported.
- refanyval
- mkrefany
- refanytype
These rare typed references opcodes are not planned to be supported.
- arglist
This rare argument list opcode is not planned to be supported.
- unaligned.
- volatile.
- tail.
These prefix opcodes is not planned to be supported.
Opcodes with Limited Support
- localloc
Due to inherit limitation of VM, localloc allocates on heap instead of stack.
- conv.ovf.[num]
- conv.ovf.[num].un
- add.ovf[.un]
- mul.ovf[.un]
- sub.ovf[.un]
Overflow arithmetic is seldom used, therefore the implementation for it is not well-tested. Use with caution.