As I thought, remote method invocation seems to have been the major bottleneck in /serialize. Using a lighter-weight isolation protocol has improved performance: (time mono-sgen run/Niecza.exe -C CORE) master: user 0m30.898s before: user 1m26.453s now: user 0m29.246s The new procedure uses only Assembly-level isolation: runtime assemblies are renamed to have names starting with Run.; so CORE.dll is the compiler's CORE and Run.CORE.dll is the user's. This seemed preferable over the reverse to avoid name clashes with perversely named user modules.
…mplementation of an auto-generated set of trig functions.
be made more portable.
Perl5 interop support is built with "make perl5"
Instead of using a custom interface which is compiled once and shared between versions of Kernel.dll, a system which proved fragile and inflexible, we now coopt System.Collections.IDictionary. Also adds a C# code module to the compiler, finally allowing all aspects of the compiler/compilee interface to be controlled by current code.
This will 1. make builds a bit slower 2. make them use less memory 3. make -j work, most of the time