The Next Generation of .NET for Building Applications

[email protected]
Openness
.NET in devices and services
Cloud Services
.NET support for
Azure Mobile Services
Web apps
ASP.NET updates
Azure and Windows Server
Windows Convergence
Universal Windows apps
Cross-devices
Native compilation
.NET Native
Xamarin partnership
Windows Desktop
Windows Store
Core .NET
Runtime
Next gen JIT (“RyuJIT”)
SIMD
Compilers
.NET Compiler Platform (“Roslyn”)
Languages innovation
iOS and Android
.NET 4.5.1 is now installed on 500+ million PCs!



Wordament on .NET Native:
Scenario

Improvement (%)
Cold Startup
39.32%
Warm Startup
31.21%
Memory Usage
12.68%
Available for x64, ARM (x86 is coming)
V1 is targeted at Store apps
1. Enable
2. Debug/test app
public void NbodyCPUKernel_Vect(Particle[] A, ref Particle B, long numBodies) {
Float_4 acc; acc.x = 0; acc.y = 0; acc.z = 0; acc.w = 0;
// This loop is hot
for (long j = 0; j < numBodies; j++) {
Float_4 r;
for (long j = 0; j < numBodies; j++)
{
Float_4 r;
r.x = A[j].pos.x - B.pos.x;
r.y = A[j].pos.y - B.pos.y;
r.z = A[j].pos.z - B.pos.z;
r.x = A[j].pos.x - B.pos.x;
r.y = A[j].pos.y - B.pos.y;
r.z = A[j].pos.z - B.pos.z;
float distSqr = r.x * r.x + r.y * r.y + r.z * r.z;
distSqr += softeningSquared;
float invDist = 1.0f / (float)Math1.Sqrt(distSqr);
float invDistCube = invDist * invDist * invDist;
float distSqr = r.x * r.x + r.y * r.y + r.z * r.z;
distSqr += softeningSquared;
float s = fParticleMass * invDistCube;
float invDist = 1.0f / (float)Math1.Sqrt(distSqr);
float invDistCube = invDist * invDist * invDist;
acc.x += r.x * s;
acc.y += r.y * s;
acc.z += r.z * s;
}
B.vel.x += acc.x * deltaTime;
B.vel.y += acc.y * deltaTime;
B.vel.z += acc.z * deltaTime;
float s = fParticleMass * invDistCube;
acc.x += r.x * s;
acc.y += r.y * s;
acc.z += r.z * s;
B.vel.x *= dampening;
B.vel.y *= dampening;
B.vel.z *= dampening;
B.pos.x += B.vel.x * deltaTime;
B.pos.y += B.vel.y * deltaTime;
B.pos.z += B.vel.z * deltaTime;
}
}
http://msdn.com/dotnetn
ative
.NET Native FAQ
.NET Native Deep Dive
talk
.NET Native Forum
[email protected]
MSIL bytecode
Machine code
Brand new
just-in-time (JIT)
compiler for
.NET
Significant
application
startup
improvement
—how fast the compiler generates code.
—how fast the generated code executes.
—how the generated code differs across architectures.
—how throughput & CQ vary with different inputs to the compiler.
Learn more about
RyuJIT
Download RyuJIT
RyuJIT CTP1: The next-generation
JIT compiler for .NET
http://aka.ms/RyuJIT
RyuJIT CTP2: Getting Ready for
Prime-time
Help us make
RyuJIT better
[email protected]








Scalar
SIMD (SSE2)
Support SSE2, AVX and
other vector instructions
in .NET.
For SSE2, an app can scale
up 4X on a processor
supporting SSE.
For AVX, an app can scale
up 8X on a processor
supporting AVX.
Developer preview
available as part of
RyuJIT CTP3.
Length is fixed, but
hardware dependent
public struct Vector<T> where T : struct
{
public Vector(T value);
public Vector(T[] values);
public Vector(T[] values, int index);
public static int Length { get; }
public T this[int index] { get; }
// With SIMD, these element wise operations are done in parallel:
public static Vector<T> operator +(Vector<T> left, Vector<T> right);
public static Vector<T> operator *(Vector<T> left, Vector<T> right);
// ...
}
float[] values = GetValues();
float increment = GetIncrement();
float[] result = new float[values.Length]
// Perform addition as manual loop:
for (int i = 0; i < values.Length; i++) {
values[i] += increment;
}
Vector<float> values = GetValues();
Vector<float> increment = GetIncrement();
// Perform addition as vector operation:
Vector<float> result = values + increment;
Unvectorized code
adds one value
at a time.
Using Vector<T>
you can add multiple
values simultaneously.






 http://blogs.msdn.com/b/dotnet/
Communication
Source code
Cross-platform
A great way
to add core
functionality
to your app
We maintain a
curated list of
supported
packages
Owner
Packages
Downloads
Microsoft
926
58M
Position Package
Downloads
.NET API for Hadoop WebClient
Composition (MEF2)
.NET Compiler Platform ("Roslyn")
.NET Map Reduce API for Hadoop
.NET Micro Framework
ASP.NET SignalR
Linq to Hive
http://www.dotnetfoundation.org
Windows Phone Toolkit
Entity Framework
ASP.NET Web Pages
ASP.NET MVC
ASP.NET Web API
MEF (Managed Extensibility Framework)
Rx (Reactive Extensions)
Xamarin.Mobile
Mimekit
Mailkit
Web Protection Library
WnsRecipe
Couchbase for .NET
System.Drawing
Xamarin.Auth
OWIN Authentication Middleware
Windows Azure .NET SDK
Miguel de Icaza (Xamarin)
Nigel Sampson (Compiled Experience)
Laurent Bugnion (IdentityMine)
Anthony van der Hoorn (Glimpse)
Paul Betts (GitHub)
Niels Hartvig (Umbraco)
.NET Native
• ARM & X64
available today
(Developer
Preview)
• X86 coming
• Autovectorization
coming
• Exploring
additional
scenarios based
on customer
feedback
Next gen. JIT
• X64 available
today (DP)
• Support for
additional
architectures
coming
SIMD
• Support for
SSE2 available
today (DP)
• AVX support
coming
Crossplatform
•
•
Partnership
with Xamarin
X-plat
portable class
libraries
.NET
ecosystem
• .NET
Foundation
• One Class
Library
• NuGet as the
delivery
mechanism
Call To Action: Please try out the Developer Preview and give us feedback.
Blog
E-mail
dotnet
@dotnet
MSDN Forums
UserVoice
http://aka.ms/RyuJITinfo
http://aka.ms/RyuJIT
http://aka.ms/SIMDInfo
http://aka.ms/SIMD
http://aka.ms/NETCompiler
Platform
http://roslyn.codeplex.com
http://aka.ms/NetCo
mpilerPlatformDownl
oad
http://aka.ms/azuremobiles
ervicesnet
http://aka.ms/VS2013
Update2
http://aka.ms/VS2013Upda
te2Info
http://aka.ms/VS2013
Update2
http://aka.ms/universalproj
ects
http://aka.ms/VS2013
Update2
http://aka.ms/dotnetnative
http://aka.ms/dotnet
nativedownload
http://xamarin.com
http://xamarin.com
http://www.dotnetfoundati
on.org
The Present and Future of .NET in a World of
Devices and Services
The Next Generation of
.NET for Building Device
Applications
What's New for
ASP.NET and Web in
Visual Studio 2013
Update 2 and Beyond
Strategies for Developing
Cross-Device Applications
with Visual Studio 2013
The Future of C#
(“Roslyn”)
Go Mobile with C#
and Xamarin