Digests » 177
this week's favorite
Often times the only thing we Unity users think about are the C# scripts we write for our game, but we don’t realize that the “impressive” systems we make from those C# scripts are nothing compared to the complexity of just the platform we’re using. After all, the Unity engine comprises of about 2 billion lines of code, most of which is C++. And that C++ language is built on top of C, which in turn was built on top of other things.
C# 7 finally introduced a long-awaited feature called "pattern matching". If you're familiar with functional languages like F# you may be slightly disappointed with this feature in its current state, but even today it can simplify your code in a variety of different scenarios. Every new feature is fraught with danger for a developer working on a performance critical application. New levels of abstractions are good but in order to use them effectively, you should know what is happening under the hood. Today we're going to explore pattern matching and look under the covers to understand how it is implemented.
I’d like to tell you about some of the recent changes we’ve made as part of our ongoing work to extend the optimization capabilities of RyuJIT, the MSIL-to-native code generator used by .NET Core and .NET Framework. I hope it will make for an interesting read, and offer some insight into the sorts of optimization opportunities we have our eyes on.
Today, we are announcing the release of the .NET Framework 4.7.1. It’s included in the Windows 10 Fall Creators Update. .NET Framework 4.7.1 is also available on Windows 7+ and Windows Server 2008 R2+. We’ve added support for targeting the .NET Framework 4.7.1 in Visual Studio 2017 15.5.
Over the years I've been fortunate enough to work on several different projects. F# is ongoing, has several different aspects (FP, OO, async, units-of-measure etc.) and quite high-visibility, but perhaps the one that was most timely, most foundational, and most wide-reaching was .NET and C# Generics