First contact with open .NET

Completed on 13-Feb-2016 (47 days) -- Updated on 19-Nov-2016

Project 7 in full-screenProject 7 in PDF
Code overview >

This project is about improving part of the CoreCLR source code; that's why recompiling the whole code (or, at least, the mscorlib library) seems an a-priori basic requirement.

Compiling all the code in the CoreCLR repository is not completely straightforward (although step-by-step instructions are available); even after being generated, the new libraries (e.g., mscorlib.dll) cannot be used right away, a quite logical consequence of what is being affected (i.e., some of the basic libraries used by all the .NET applications running on that computer). CoreRun.exe is one of the outputs generated when building the whole CoreCLR repository and allows any .NET executable to rely on the newly-created libraries. This file is so peculiar that the whole Project 8 is precisely focused on analysing its security implications.

The most relevant-to-this-project feature of CoreRun.exe is to have a noticeable impact on the performance of the given .NET file: the same executable under exactly the same conditions can be orders of magnitude slower when run via CoreRun.exe. Just this fact might not be too relevant on account of the goals of the current project (i.e., relative measurements of performance, where 5 vs. 10 is identical to 50 vs. 100), but these variations are definitely not-consistent what does represent an immediate deal-breaker.

Standalone applications will be used in all the performance-comparison tests; they will be run directly (i.e., as conventional executables on Windows), rather than via CoreRun.exe. On the other hand, CoreRun.exe will be used in all the tests confirming the identity between old/new versions of the code (i.e., all the numeric-type parsing methods, like decimal.Parse, tested against a big set of inputs by relying on the old/new mscorlib.dll).