When the first edition of this book was written, IL2CPP was being teased in a variety of blog posts, and Unity was still running a very old version of Mono. Well, the good news is that IL2CPP has finally landed, but the bad news is Unity is still running a very old version of Mono. This is an unfortunate consequence of how various elements of the Mono Framework are licensed, meaning that Unity Technologies has only been able to update Mono on an infrequent basis.
After many years, Unity is still only able to make use of the .NET 3.5 library functionality, which is about a decade old at this point. This limits what kinds of .NET library classes we can use, restricts certain C# language features, and limits performance since many enhancements would have been made to the library during this time. However, to the great relief of many Unity developers, an experimental upgrade to a more recent version of Mono has been in beta for a while and is now available...