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 >

As explained in the first section, CoreCLR is one of the three major open .NET repositories where this project is precisely focused. It contains the most basic parts of the .NET Framework:
  • The .NET Core runtime ("CoreCLR").
  • The base library ("mscorlib").
  • The garbage collector.
  • The JIT compiler.
  • Data types and low-level classes.
Most of the code in the CoreCLR repository is written in unmanaged/unsafe C# and in C++. My experience in both languages is quite limited (although I am very experienced in managed C#/.NET), but this fact will certainly not be a problem here because of the following two reasons:
  • I specialise in algorithm building and rely on a quite minimalistic approach (i.e., rarely use the most complex features of the given programming environment). The defining feature of unmanaged C# is precisely keeping everything very simple from the in-built-feature-utilisation point of view.
  • All my contributions to the open .NET project are expected to be focused on improving existing-and-already-quite-optimised codes, an aspect where my eventually-not-too-extensive experience in the given language is still less important.
    Note that I am also planning to work on new implementations, but most of this code is expected to be very similar to the existing one. For example: I will not be writing the code of the future decimal.TryParseExact method (which will be accounting for various currently-unsupported behaviours, like the ones described in my first two issues in the CoreCLR repository #2285 and #2290) completely from scratch, but will adapt the one of Decimal.TryParse (and its associated methods, like ParseNumber).
The current project deals with the optimisation of ParseNumber (i.e., part of the mscorlib library, inside the file Number.cs), which takes care of all the string-analysis actions of the .NET numeric types; this project is mostly focused on Parse/TryParse of decimal, but also accounts for int, long & double. Note that all these parsing methods are written in unmanaged/managed C# & C++, although ParseNumber (and, consequently, this project) is mostly written in unmanaged C#.