SlideShare a Scribd company logo
Ayman Shoukry – Principal Group Program Manager – Visual C++, Microsoft
Ulzii Luvsanbat – Principal Software Engineering Manager – Visual C++, Microsoft
What’s New in Visual Studio 2015 and
Future Directions
A note on our mission
• Visual Studio will be the best IDE out there for EVERY C++ de
veloper.
• Not just Windows developers
• Especially for Open Source developers
• C++ is *the* language for cross platform development
• Which is why C++ development is actually growing share amongst p
ro devs
• We can make C++ development more productive
• Finish catching up on conformance, participate in standards b
odies to help make the language better. Stay caught up.
Saving the best for first
• Before (VS2013):
• After (VS2015):
Saving the worst for second
Pick ME!!!
Not new: Common Misconceptions
•You can still target XP in VS2015
•You can still do app-local deployme
nt
Demo: Language Agnostic IDE
Goodness
• Custom Window Layouts
• Touch screen enhancements
• Send-a-smile (or frown if you must)
• Find in file append
• Git and Github integration
Demo: C++ IDE Productivity
• Refactors (precision and accuracy)
• Create Definition <-> Declaration (multiple)
• Move function definition
• Implement Pure Virtual
• Rename
• Extract Method
• Convert to Raw String Literal
• Single File Intellisense
• Quick editing of a makefile project or file->new file and int main, etc
Refactoring for C++
• Extract Method (VS Extension)
Refactoring for C++
• Rename
Productivity (IDE)
Refactoring for C++
• Implement Pure Virtuals
Quickly implement pure virtual functions in inherited constructs
• Create Declaration/Definition
Quickly create a function’s declaration from its definition (and vice-versa)
• Move Definition Location
Move a function’s declaration inline and out-of-line
• Convert to Raw-String Literal
Convert strings littered with escape sequences into a much more easily readable form
Productivity (IDE)
std::string s = "nSome reasons this string is hard
to read:nt1. It would go off the screen in your
editornt2. It has sooooo many escape
sequences.nnThey should make a type for this called
"long" string, har har har.nnHave fun parsing
this! (maybe?)n";
std::string s = R"(
Some reasons this string is hard to read:
1. It would go off the screen in your editor
2. It has sooooo many escape sequences.
They should make a type for this called "long" string, har har har.
Have fun parsing this! (maybe?)
)";
Single-File Browsing and IntelliSense support
• Open any source file from disk, and enjoy basic browsing and IntelliSen
se features
(May require setting some defaults)
Productivity (IDE)
• Universal App
Easily create projects targeting Store and Phone simultaneously, with a unified IntelliSense exp
erience in the IDE
• Faster, Improved Database Population
Operations like Go To Definition are generally no longer blocked during solution scan, which in
turn completes much faster especially for large solutions
• Simplified QuickInfo for Template Deduction
Elimination of redundant/unhelpful information
• Auto-PCH (VS Extension)
Generate a pre-compiled header based on your project structure for faster compile time
Productivity (IDE)
• New and Improved Exceptions “Dialog”
Productivity (IDE)
• New and Improved Error List
Productivity (IDE)
GPU Usage (available in VS2013 Update 4)
• Launch from the Diagnostics hub
• Create real-time graphs for Frame Time, Frame Rate, and GPU Utilizatio
n
• Analyze detailed GPU usage by inspecting the GPU and CPU execution
time of each individual DirectX event
Productivity (Diagnostics)
Visual Studio Graphics Diagnostics
• Visual Studio Graphics Analyzer (VSGA)
A dedicated space for analyzing graphics frames
• Shader Edit & Apply
View impact of shader code changes without re-running the app
• Full support for DirectX12
Productivity (Diagnostics)
Native Memory Profiler
• Monitor live memory consumption and take heap snapshots during a d
ebugging session inside Visual Studio.
• View heap contents with C++ types, values, and call stack for each allocation (valu
es are shown only during a break point).
• Diff two snapshots to identify potential leaks.
• Navigate directly to source code from the allocations of interest.
• In-line data tips that show line by line memory performance and link to
source
• See how much memory is being consumed between break points.
• Easily navigate between source code and heap snapshots.
Productivity (Diagnostics)
Inspect instance values and their allocation call st
• Memory Performance Data
Tips
Take heap snapshots and view C++ object type
See how much memory is consumed between two breakpoin
Productivity (Diagnostics)
Native Memory Profiler
• Real-time heap analysis
IDE
• Refactoring for C++
• Rename
• Extract Method (VS Extension)
• Implement Pure Virtuals
• Create Declaration/Definition
• Move Function Definition
• Convert to Raw-String Literal
• Single-File Browsing and IntelliSense Support
• Universal App
• Faster, Improved Database Buildup
• Simplified QuickInfo for Template Deduction
• Auto-PCH (VS Extension)
Productivity
Build Improvements
• Faster linker when performing full linking
• Improvements in Compiler for template processing
and diagnostics
Diagnostics
• GPU Usage Tool (VS2013 Update 4)
• Visual Studio Graphics Analyzer
• Shader Edit & Apply
• Full support for DirectX12
• Native Memory Profiler
Simplified Template IntelliSense
• Visual Studio 2013:
• Visual Studio 2015:
New C++11 / C++14 features in
VS2015 + Update 1
• Generic lambdas (C++14)
• Init-captures (C++14)
• Auto and decltype(auto) return types
(C++14)
• Inheriting constructors
• Magic statics
• C++11 constexpr (bugfixes in Updat
e 1)
• Noexcept
• Sized-deallocation (C++14)
• Attributes
• Alignment
• User-defined literals
• char16_t and char32_t
• Unrestricted unions
• Ref-qualifiers
• Inline namespaces
• Universal character names in literals
• Unicode string literals
• Binary literals (C++14)
• Digit separators (C++14)
• Await (update 1) (C++17?)
• Expression SFINAE (Update 1)
// Generic Lambdas
auto const print = [](auto&& thing)
{
std::cout << thing << 'n';
};
print("Hello, world!");
print(123);
// Generalized Lambda Capture
std::unique_ptr<int> four = std::make_unique<int>(4);
auto const multiply = [multiplier = std::move(four)](int const multiplicand)
{
return *multiplier * multiplicand;
}
Lambda Enhancements
// Non-throwing functions may be declared noexcept
void f() noexcept;
void g();
// Can test whether a function is declared noexcept
bool const is_f_noexcept = noexcept(f());
bool const is_g_noexcept = noexcept(g());
//Can conditionally make a function noexcept
void h() noexcept(f);
template <typename F>
void call(F&& lambda) noexcept(lambda());
// If you violate a noexcept specification, std::terminate is called deterministically
noexcept
namespace foo
{
inline namespace bar
{
void print() { /* ... */ }
}
}
// Names in foo::bar are used without inline namespace name:
foo::print();
// Name is decorated with inline namespace name:
?print@bar@foo@@YAXXZ (void __cdecl foo::bar::print(void))
Inline Namespaces
void f()
{
// Every thread will get its own 'state' variable
thread_local int state = 0;
}
Thread-Local Storage (thread_local)
std::ofstream open_log_stream();
void write_to_log(std::string&& value)
{
std::ofstream log_stream = open_log_stream();
log_stream << value;
}
Thread-Safe Local Static Initialization
struct detector
{
void print() & { puts("non-const lvalue"); }
void print() const& { puts("const lvalue"); }
void print() && { puts("non-const rvalue"); }
void print() const&& { puts("const rvalue"); }
};
detector x;
x.print(); // non-const lvalue
const_cast<detector const&>(x).print(); // const lvalue
detector().print(); // non-const rvalue
const_cast<detector const&&>(detector()).print(); // const rvalue
Ref-Qualifiers
// Literals may now be specified in binary
uint16_t const hex_mask = 0xf0f0;
uint16_t const bin_mask = 0b1111000011110000;
// The ' may now be used as a digit separator
uint32_t const max_value = 4'294'967'295;
uint32_t const max_value = 0xff'ff'ff'ff;
uint16_t const bin_mask = 0b1111'0000'1111'0000;
uint16_t const bin_mask = 0b111'100'001'111'000'0;
uint16_t const bin_mask = 0b1'1'1'1'0'0'0'0'1'1'1'1'0'0'0'0;
Binary Literals and Digit Separators
int main()
{
std::cout << __func__ << 'n'; // main
std::cout << __FUNCTION__ << 'n'; // main
}
template <typename T>
void f(T const& s)
{
std::cout << __func__ << 'n'; // f
std::cout << __FUNCTION__ << 'n'; // f
}
__func__
// Can inspect alignment of things using alignof
size_t const alignment_of_uint16_t = alignof(uint16_t); // 4
size_t const alignment_of_m256 = alignof(__m256 ); // 32
// Can align objects to a specified alignment
alignas(alignof(32)) unsigned char buffer[32];
Alignment: alignof and alignas
char a = 'x';
char b = '☃'; // Wrong
char c = '🍸'; // Wrong
char16_t d = u'x';
char16_t e = u'☃';
char16_t f = u'🍸'; // Wrong
char32_t g = U'x';
char32_t h = U'☃';
char32_t i = U'🍸';
char a = 'u0078';
char b = 'u2603'; // Wrong
char c = 'U0001F378'; // Wrong
char16_t d = u'u0078';
char16_t e = u'u2603';
char16_t f = u'U0001F378'; // Wrong
char32_t g = U'U00000078';
char32_t h = U'U00002603';
char32_t i = U'U0001F378';
Unicode Character Literals
char const a[] = u8"Hello, u2603!";
char const b[] = u8"Hello, ☃!";
// sizeof(a) == sizeof(b) == 12
char16_t const c[] = u"Hello, u2603!";
char16_t const d[] = u"Hello, ☃!";
// sizeof(c) == sizeof(d) == 20
char32_t const e[] = U"Hello, u2603!";
char32_t const f[] = U"Hello, ☃!";
// sizeof(e) == sizeof(f) == 40
Unicode String Literals
std::string a = u8"Hello, u2603!";
std::string b = u8"Hello, ☃!";
std::u16string c = u"Hello, u2603!";
std::u16string d = u"Hello, ☃!";
std::u32string e = U"Hello, u2603!";
std::u32string f = U"Hello, ☃!";
Unicode std::string Specializations
// Return types can be automatically deduced:
auto get_value() { return 10; }
// ...This is especially useful for templates:
template <typename T, typename U>
auto multiply(T&& multiplier, U&& multiplicand)
{
return multiplier * multiplicand;
}
Return Type Deduction
// Your entire program in C++17:
auto auto(auto) { auto; }
A Brief Interlude: A Preview of C++ 17
struct my_type
{
std::unique_ptr<int> _x;
std::unique_ptr<int> _y;
};
my_type get_object()
{
my_type value;
value._x.reset(new int(1));
value._y.reset(new int(4));
return value; // C2280 Attempting to reference a deleted function
}
Implicitly-Defined Move Operations
(Before)
struct my_type
{
std::unique_ptr<int> _x;
std::unique_ptr<int> _y;
};
my_type get_object()
{
my_type value;
value._x.reset(new int(1));
value._y.reset(new int(4));
return value; // C2280 Attempting to reference a deleted function
}
Implicitly-Defined Move Operations
(Now)
long double operator""_€(long double const euros)
{
return euros * 1.11;
}
double cost_of_🍺_in_dollars = 3.50_€; // $3.885
User-Defined Literals
#define countof(x) (sizeof((x)) / sizeof((x[0])))
char input_buffer[100];
char output_buffer[countof(input_buffer)];
constexpr
template <typename T, size_t N>
size_t countof(T(&)[N])
{
return N;
}
char input_buffer[100];
char output_buffer[countof(input_buffer)]; // C2057: Expected constant expression
constexpr
template <typename T, size_t N>
constexpr size_t countof(T(&)[N])
{
return N;
}
char input_buffer[100];
char output_buffer[countof(input_buffer)]; // C2057: Expected constant expression
constexpr
constexpr size_t fibonacci(size_t const n)
{
return n == 0 ? 0
: n == 1 ? 1
: fibonacci(n - 1) + fibonacci(n - 2);
}
char buffer[fibonacci(10)]; // buffer has 55 elements
constexpr
auto multiples_of(unsigned n)
{
unsigned current = n;
for (;;)
{
yield current;
current += n;
}
}
int main()
{
for (unsigned i : multiples_of(3))
{
printf("%d ", i);
if (i > 100) { break; }
}
}
// 3 6 9 12 15 18 21 24 27 30 33 36 39 42 ...
Resumable Functions (await)
size_t fibonacci(size_t const n)
{
return n == 0 ? 0
: n == 1 ? 1
: fibonacci(n - 1) + fibonacci(n - 2);
}
char buffer[fibonacci(10)]; // buffer has 55 elements
Expression SFINAE
What’s still missing?
• Expression SFINAE to complete C++11
• Major refactor needed -> parse trees
• Significant progress in Update 1 – Partial Support
• Generalized Constexpr (C++14)
• LARGE
• NSDMIs for aggregates (C++14)
• small
• Variable templates (C++14)
• Available under an experimental switch in Update 1
• Two-phase lookup
• C99 Preprocessor
STL conformance for VS2015
• Everything but:
Status Std Paper Title
missing C++14 N3462
SFINAE-Friendly result_o
f
missing C++17 N4387
Improving pair And tupl
e
missing C++17 N4508 shared_mutex (Untimed)
Library updates
• Universal CRT
• From Windows 10 and up, CRT is an OS component
• Still supported down to XP
• No more breaking changes
• MFC updates:
• Dynamic Layout / Auto-resize for dialogs
• New libraries
• Parallel STL
• New version of Casablanca C++ REST SDK
• OSS and takes contributions
• WebSockets
• oAuth 1.0 and 2.0
• OSX/iOS support, Android, WP8.1, Windows 10 Universal
Introducing Clang / C2 Toolset
• Clang / C2 hooks up the Clang front-end to the MSVC backe
nd
• Why?
• use the same frontend to reduce overhead of bring cross-plat librari
es and code to Windows
• no compromises debugging
• link compatible with MSVC code (same libraries)
• Preview coming in Update
• No, we aren't going to stop investing in our existing front-en
d (c1/c1xx)
• we respect your investment in your existing code base
A quick note on C99 / C11
• We care about C.
• Our gap isn’t really that large in practice
• Tgmath.h
• Variable length arrays (optional in C11)
• Complex types
• Some other nits
• We’ll get this via Clang / C2
New for DirectX Devs
• DirectX12 support
• Shader Edit and
Apply
• Consecutive Capture
• Programmatic
Capture
• Dedicated UI for
Graphics Analysis
Productivity pt. 2: Build Throughput
credit: This is my
favorite xkcd.com strip
of all time
• Compiler
• Faster template processing
• PDB
• Reduced PDB generation time
• /Debug:fastlink
• Linker
• Incremental linking for static libraries
• Algorithmic improvements
• LTCG & PGO
• Fast LTCG
• PGO instrumented builds has lower overhead
• General algorithmic improvements
across tools
Build Throughput Improvements
958 595 57
71
(7%)
285
(48%)
39
(68%)
K INE C T SPO RT S RIV AL C H RO ME O GRE 3D
INCREMENTAL BUILD (SEC)
VS2013 VS2015
715 2417508
(71%)
1480
(61%)
O GRE 3D BING (ST AT IC LIB)
FULL BUILD (SEC)
VS2013 VS2015
• 75%
C++
• Messenger
• Facebook
• Pandora Radio
• Instagram
• Minecraft
• Snapchat
• Spotify Music
• Du Speed Booster
• Twitter
• The Game of Life
• Super Bright LED FlashLight
• Soda Saga
• Skype – Free
• Whatsapp Messenger
• Clean Master
• Netflix
• Kik
• Crossy Road
• Clash of Clans
• Amazon Shopping
• Candy Crush e IM and Video Calls
• 8 Ball Pool
• Glass Tower
• Subway Surfers
• Pinterest
• Cooking Fever
• Zedge Ringtones and Wallpaper
• Word Academy
• Poshmark - Buy and Sell
• Candy Crush Saga
• Dragon Blaze
• Marvel Future Fight
• Emoji Keyboard
• DU Battery saver
• SoundCloud - Music and Radio
• Monopoly
• Twitter
• CM Security Antivirus
• Slots - Journey of Magic
• Yahoo Mail - Free Email App
• iHeart Radio - Radio and Music
• Temple Run 2
• Boom Beach
• Despicable me
• ebay
• Wish - shopping made fun
• Trivia Check
• Juice Jam
• Game of War - Fire Age
• TouchPal Keyboard
• Geometry Dash Lite
• Flow Free
• Bird Climb
• Coin Dozer
• Uber
• Google Earth
• Flow Free
• Bird Climb
• Coin Dozer
• Uber
• Google Earth
• Archery Master 3d
• Go Keyboard - Emoji
• ooVoo video call
• Inbox by Gmail
• Samsung Smart Switch Mobile
• Tango - Free video call and chat
• Earn to Die 2
• Fruit Ninja Free
• Farm Heroes Saga
• Wallapop
• Capital One Wallet
• Truck Driver 3d: offroad
• Solitare
• Plants vs Zombies
• Hidden Object - Marrinotes
• Tinder
• DropBox
• Hulu
• Extreme Car driving simulator
• The Sims 3
• Word Search
• Hidden Object - Marrinotes
• Tinder
• Hulu
• Extreme Car driving simulator
• Need for Speed Most Wanted
• Angry Birds
• Shazam
• MyRadar Weather Radar
• Vine
• Line: Free calls and messages
• Waze Social GPS Maps
• Google Translate
• Don't tap the white tile
• Panda Pop
• EA Sports UFC
• Flipagram
• Hill Climb Racing
• Tasty Tale - The Cooking Game
• Yelp
• Offer Up - Buy, sell
• CM Launcher - Boost, Secure
• Temple Run
• Empire and Allies
• Google Docs
• Tetris
• Battery Doctor
• Beats Music
• Walmart
• Surgery Doctor
• EA FrostBite
C++ C++C++
• Code Reuse
• Performance
• Security
.appx .apk .ipa
C#, C++/Cx Java
Dex / ART
ObjC
Swift
Dynamic Link Lib
rary (.dll)
Static Library (.lib
)
Dynamic shared l
ibrary (.so)
Static library (.a)
Static library (.a)
Shared C++ backend is compiled as:
DropBox
Cross-platform C++ demo
Android Development Features
• Supported versions
• 4.4 “KitKat”, API Level 19
• 5.0 “Lollipop”, API Level 21
• Emulator features include
• OpenGL ES 2.0
• Multi-touch gestures
• Advanced camera simulation
• WiFi network simulation
• Debug directly from Visual St
udio
• Integrated LogCat viewer
• Natvis debugger visualizations
• Externally built native activity a
pps
• Can attach to running APKs
• “Stripped” debugging to reduc
e deployment size
• Deploy, Debug directly from V
Studio. Emulator or devices.
iOS Development Features
• Supports versions 6, 7, and 8 • Debug directly from Visual St
udio
• Need a Mac connected depl
oy and debug on devices onl
y (no emulator)
Universal Windows Platform
Development
• Develop one app for all Wi
ndows 10 devices
• Apps automatically switch be
tween desktop, phone, tablet
, Xbox and Surface Hub confi
gurations to fit screen size a
nd input types
• Unified app store
• Design your UI in XAML with
WYSIWYG editor
• You can use C++, C#, VB, or
HTML/JavaScript
• Easily port Android and iOS
apps
Vectorization of control flow
• Vectorization of loops with if-then-else
void blackscholes(float* input, int *signArray, int n) {
for (int i = 0; i < n; i++) {
float InputX = input[i];
int sign;
if (InputX < 0.0f) {
InputX = -InputX;
sign = 1;
} else {
sign = 0;
}
input[i] = InputX;
signArray[i] = sign;
}
}
mask = InputX < 0.0f ? 0xFFFFFFFF : 0;
InputX = (mask & -InputX) | (~mask & InputX);
sign = (mask & 1) | (~mask & 0);
Optimized to branch-less code
300%+ speedup in
blackscholes benchmark
Better stall-forward-avoidance
• Writes to large structures followed by reads from substructure
s can lead to hardware stalls.
• New optimizations targeted at std::complex<float> and std::c
omplex<double>
• Improved code generation of VUNPCKLPD/VUNPCKLPS instru
ctions
• 40% speedup in Eigen quaternion multiplication
code
• 35% speedup in Eigen FFT code
Bit-test merging
• Optimizations targeting cascading bit tests:
if ((((data->bitfield >> 3) & 1) != 0) ||
(((data->bitfield >> 6) & 1) != 0) ||
(((data->bitfield >> 9) & 1) != 0) ||
(((data->bitfield >> 4) & 1) != 0) ||
(((data->bitfield >> 8) & 1) != 0)) {
...
}
Source code:
if ((data->bitfield & 0x1258) != 0) {
...
}
Optimized as if:
• Matters in code dealing with bitfields
14% speedup in
quantum mechanics
benchmark
Loop-if unswitching
• Improved code generation for loop-invariant control flow
for (int i = 0; i < 100; i++)
if (some_invariant_condition)
...
Source code:
if (some_invariant_condition)
for (int i = 0; i < 100; i++)
...
Optimized as if:
Hits often, especially when considering
inlining
Other code generation
improvements
• #pragma loop(ivdep)
• Better vectorization of STL constructs (range based for-loops, std
::vector)
• Vectorization under /O1 (optimize for size)
• Better codegen of std::min/std::max (200% improvement in runti
me)
• Better instruction emission for bit-test (more BT, BTC, BTR, BTS)
• Plus much more…
What’s next: Compiler features (conform
ance) in Updates
• No need to wait for major VS updates
• Features include:
• Safer C++
• Modules
• Await completed in Update 1 (to current proposal)
• Clang/C2
• No breaking changes by default
What’s next: IDE productivity and build-l
ab scenario
• More Refactorings
• VC ++ Scalability and Perf
• Build-time improvements
• Standalone Build tools
What’s next: Early thoughts!!
• Come talk to us about your Linux / IoT dev!
• E.g. Remote Linux debugging
• Come talk to us about what you want from VS Code for C++!
Resources
• VCBlog – best way to follow us
• http://blogs.msdn.com/b/vcblog/
• Channel 9 – Going Native
• https://channel9.msdn.com/Shows/C9-GoingNative
감사합니다.
• MSDN Forum http://aka.ms/msdnforum
• TechNet Forum http://aka.ms/technetforum
• Ayman Shoukry: aymans@Microsoft.com
• Ulzii Luvsanbat: batul@Microsoft.com
http://aka.ms/td2015_again
TechDays Korea 2015에서 놓치신 세션은
Microsoft 기술 동영상 커뮤니티 Channel 9에서
추후에 다시 보실 수 있습니다.

More Related Content

What's hot

clWrap: Nonsense free control of your GPU
clWrap: Nonsense free control of your GPUclWrap: Nonsense free control of your GPU
clWrap: Nonsense free control of your GPU
John Colvin
 
LLDB Introduction
LLDB IntroductionLLDB Introduction
LLDB Introduction
Jaemok Jeong
 
DLL Design with Building Blocks
DLL Design with Building BlocksDLL Design with Building Blocks
DLL Design with Building Blocks
Max Kleiner
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
Denis Voituron
 
Dart
DartDart
Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016
PVS-Studio
 
C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607
Kevin Hazzard
 
What static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannotWhat static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannot
Andrey Karpov
 
What has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you developWhat has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you develop
Andrey Karpov
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
Ary Borenszweig
 
All You Need to Know About Type Script
All You Need to Know About Type ScriptAll You Need to Know About Type Script
All You Need to Know About Type Script
Folio3 Software
 
Manage software dependencies with ioc and aop
Manage software dependencies with ioc and aopManage software dependencies with ioc and aop
Manage software dependencies with ioc and aop
Stefano Leli
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)
Olve Maudal
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Dmitry Sheiko
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
Andrey Karpov
 
Abhishek lingineni
Abhishek lingineniAbhishek lingineni
Abhishek lingineniabhishekl404
 
TypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation GuideTypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation Guide
Nascenia IT
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static Analysis
Elena Laskavaia
 

What's hot (19)

clWrap: Nonsense free control of your GPU
clWrap: Nonsense free control of your GPUclWrap: Nonsense free control of your GPU
clWrap: Nonsense free control of your GPU
 
LLDB Introduction
LLDB IntroductionLLDB Introduction
LLDB Introduction
 
DLL Design with Building Blocks
DLL Design with Building BlocksDLL Design with Building Blocks
DLL Design with Building Blocks
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
Dart
DartDart
Dart
 
Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016Top 10 bugs in C++ open source projects, checked in 2016
Top 10 bugs in C++ open source projects, checked in 2016
 
C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607
 
What static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannotWhat static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannot
 
What has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you developWhat has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you develop
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
All You Need to Know About Type Script
All You Need to Know About Type ScriptAll You Need to Know About Type Script
All You Need to Know About Type Script
 
Csharp_Chap06
Csharp_Chap06Csharp_Chap06
Csharp_Chap06
 
Manage software dependencies with ioc and aop
Manage software dependencies with ioc and aopManage software dependencies with ioc and aop
Manage software dependencies with ioc and aop
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
 
Abhishek lingineni
Abhishek lingineniAbhishek lingineni
Abhishek lingineni
 
TypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation GuideTypeScript: Basic Features and Compilation Guide
TypeScript: Basic Features and Compilation Guide
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static Analysis
 

Viewers also liked

Logical Programming With ruby-prolog
Logical Programming With ruby-prologLogical Programming With ruby-prolog
Logical Programming With ruby-prolog
Preston Lee
 
Debugging in visual studio (basic level)
Debugging in visual studio (basic level)Debugging in visual studio (basic level)
Debugging in visual studio (basic level)
Larry Nung
 
Making Information Usable: The Art & Science of Information Design
Making Information Usable: The Art & Science of Information DesignMaking Information Usable: The Art & Science of Information Design
Making Information Usable: The Art & Science of Information Design
Hubbard One
 
Cognitive information science
Cognitive information scienceCognitive information science
Cognitive information science
S. Kate Devitt
 
Part 1 picturebox using vb.net
Part 1 picturebox using vb.netPart 1 picturebox using vb.net
Part 1 picturebox using vb.net
Girija Muscut
 
Information Overload and Information Science / Mieczysław Muraszkiewicz
Information Overload and Information Science / Mieczysław MuraszkiewiczInformation Overload and Information Science / Mieczysław Muraszkiewicz
Information Overload and Information Science / Mieczysław Muraszkiewicz
Zakład Systemów Informacyjnych, Instytut Informacji Naukowej i Studiów Bibliologicznych (UW)
 
Pioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
Pioneers of Information Science in Europe: The Oeuvre of Norbert HenrichsPioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
Pioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
Wolfgang Stock
 
Transforming the world with Information technology
Transforming the world with Information technologyTransforming the world with Information technology
Transforming the world with Information technology
Glenn Klith Andersen
 
Part 8 add,update,delete records using records operation buttons in vb.net
Part 8 add,update,delete records using records operation buttons in vb.netPart 8 add,update,delete records using records operation buttons in vb.net
Part 8 add,update,delete records using records operation buttons in vb.net
Girija Muscut
 
Part 3 binding navigator vb.net
Part 3 binding navigator vb.netPart 3 binding navigator vb.net
Part 3 binding navigator vb.net
Girija Muscut
 
What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++
Microsoft
 
Part 5 create sequence increment value using negative value
Part 5 create sequence increment value using negative valuePart 5 create sequence increment value using negative value
Part 5 create sequence increment value using negative value
Girija Muscut
 
Part2 database connection service based using vb.net
Part2 database connection service based using vb.netPart2 database connection service based using vb.net
Part2 database connection service based using vb.net
Girija Muscut
 
Vb.net session 15
Vb.net session 15Vb.net session 15
Vb.net session 15Niit Care
 
How Not To Be Seen
How Not To Be SeenHow Not To Be Seen
How Not To Be Seen
Mark Pesce
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
shannonsdavis
 
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-uPython Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-uNikola Plejic
 
Prolog -Cpt114 - Week3
Prolog -Cpt114 - Week3Prolog -Cpt114 - Week3
Prolog -Cpt114 - Week3a_akhavan
 
Cpp lab 13_pres
Cpp lab 13_presCpp lab 13_pres
Cpp lab 13_pres
Youth For Peace
 

Viewers also liked (20)

Logical Programming With ruby-prolog
Logical Programming With ruby-prologLogical Programming With ruby-prolog
Logical Programming With ruby-prolog
 
Debugging in visual studio (basic level)
Debugging in visual studio (basic level)Debugging in visual studio (basic level)
Debugging in visual studio (basic level)
 
Making Information Usable: The Art & Science of Information Design
Making Information Usable: The Art & Science of Information DesignMaking Information Usable: The Art & Science of Information Design
Making Information Usable: The Art & Science of Information Design
 
Cognitive information science
Cognitive information scienceCognitive information science
Cognitive information science
 
Part 1 picturebox using vb.net
Part 1 picturebox using vb.netPart 1 picturebox using vb.net
Part 1 picturebox using vb.net
 
Information Overload and Information Science / Mieczysław Muraszkiewicz
Information Overload and Information Science / Mieczysław MuraszkiewiczInformation Overload and Information Science / Mieczysław Muraszkiewicz
Information Overload and Information Science / Mieczysław Muraszkiewicz
 
Pioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
Pioneers of Information Science in Europe: The Oeuvre of Norbert HenrichsPioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
Pioneers of Information Science in Europe: The Oeuvre of Norbert Henrichs
 
Transforming the world with Information technology
Transforming the world with Information technologyTransforming the world with Information technology
Transforming the world with Information technology
 
Presentation1
Presentation1Presentation1
Presentation1
 
Part 8 add,update,delete records using records operation buttons in vb.net
Part 8 add,update,delete records using records operation buttons in vb.netPart 8 add,update,delete records using records operation buttons in vb.net
Part 8 add,update,delete records using records operation buttons in vb.net
 
Part 3 binding navigator vb.net
Part 3 binding navigator vb.netPart 3 binding navigator vb.net
Part 3 binding navigator vb.net
 
What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++What&rsquo;s new in Visual C++
What&rsquo;s new in Visual C++
 
Part 5 create sequence increment value using negative value
Part 5 create sequence increment value using negative valuePart 5 create sequence increment value using negative value
Part 5 create sequence increment value using negative value
 
Part2 database connection service based using vb.net
Part2 database connection service based using vb.netPart2 database connection service based using vb.net
Part2 database connection service based using vb.net
 
Vb.net session 15
Vb.net session 15Vb.net session 15
Vb.net session 15
 
How Not To Be Seen
How Not To Be SeenHow Not To Be Seen
How Not To Be Seen
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-uPython Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
 
Prolog -Cpt114 - Week3
Prolog -Cpt114 - Week3Prolog -Cpt114 - Week3
Prolog -Cpt114 - Week3
 
Cpp lab 13_pres
Cpp lab 13_presCpp lab 13_pres
Cpp lab 13_pres
 

Similar to [Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanbat and ayman shoukly)

Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Windows Developer
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
Tharindu Weerasinghe
 
Cross Platform App Development with C++
Cross Platform App Development with C++Cross Platform App Development with C++
Cross Platform App Development with C++
Joan Puig Sanz
 
Return of c++
Return of c++Return of c++
Return of c++
Yongwei Wu
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
UdhayaKumar175069
 
Survey of programming language getting started in C
Survey of programming language getting started in CSurvey of programming language getting started in C
Survey of programming language getting started in C
ummeafruz
 
270 1 c_intro_up_to_functions
270 1 c_intro_up_to_functions270 1 c_intro_up_to_functions
270 1 c_intro_up_to_functions
ray143eddie
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
Alefya1
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging Techniques
Bala Subra
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques
Bala Subra
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
JoshCasas1
 
C Language
C LanguageC Language
C Language
Syed Zaid Irshad
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
Ary Borenszweig
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
Crystal Language
 
MattsonTutorialSC14.pdf
MattsonTutorialSC14.pdfMattsonTutorialSC14.pdf
MattsonTutorialSC14.pdf
George Papaioannou
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
Yung-Yu Chen
 
What’s new in .NET
What’s new in .NETWhat’s new in .NET
What’s new in .NET
Doommaker
 

Similar to [Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanbat and ayman shoukly) (20)

Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Cross Platform App Development with C++
Cross Platform App Development with C++Cross Platform App Development with C++
Cross Platform App Development with C++
 
Return of c++
Return of c++Return of c++
Return of c++
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
 
Survey of programming language getting started in C
Survey of programming language getting started in CSurvey of programming language getting started in C
Survey of programming language getting started in C
 
270 1 c_intro_up_to_functions
270 1 c_intro_up_to_functions270 1 c_intro_up_to_functions
270 1 c_intro_up_to_functions
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
 
Intro to .NET and Core C#
Intro to .NET and Core C#Intro to .NET and Core C#
Intro to .NET and Core C#
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging Techniques
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
 
College1
College1College1
College1
 
C Language
C LanguageC Language
C Language
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
MattsonTutorialSC14.pdf
MattsonTutorialSC14.pdfMattsonTutorialSC14.pdf
MattsonTutorialSC14.pdf
 
C tutorials
C tutorialsC tutorials
C tutorials
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
 
What’s new in .NET
What’s new in .NETWhat’s new in .NET
What’s new in .NET
 

More from Sang Don Kim

[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
Sang Don Kim
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)
Sang Don Kim
 
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
Sang Don Kim
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II   보안 및 관리(권순만)[Td 2015]windows 10 엔터프라이즈 시나리오 part II   보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
Sang Don Kim
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I   배포 및 이미징(박성기)[Td 2015]windows 10 엔터프라이즈 시나리오 part I   배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
Sang Don Kim
 
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
Sang Don Kim
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
Sang Don Kim
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
Sang Don Kim
 
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
Sang Don Kim
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
Sang Don Kim
 
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
Sang Don Kim
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
Sang Don Kim
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
Sang Don Kim
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
Sang Don Kim
 

More from Sang Don Kim (20)

[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
[Td 2015] 국내에서 처음으로 선보이는 microsoft 차세대 서버 운영 체제 windows server 2016
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
 
[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)[TD 2015] Microsoft Azure IaaS v2(최정현)
[TD 2015] Microsoft Azure IaaS v2(최정현)
 
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
[TD2015] 이 시대에 소규모 게임 개발팀이 마소와 함께 살아가는 방법(송용성)
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II   보안 및 관리(권순만)[Td 2015]windows 10 엔터프라이즈 시나리오 part II   보안 및 관리(권순만)
[Td 2015]windows 10 엔터프라이즈 시나리오 part II 보안 및 관리(권순만)
 
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I   배포 및 이미징(박성기)[Td 2015]windows 10 엔터프라이즈 시나리오 part I   배포 및 이미징(박성기)
[Td 2015]windows 10 엔터프라이즈 시나리오 part I 배포 및 이미징(박성기)
 
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
[Td 2015]함께하면 더 좋은 windows 10과 인텔 스카이레이크, 아키텍쳐와 인텔 그래픽스 최적화 살펴보기(하태동)
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
 
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
[Td 2015]조막만한 화면에서 대박만한 화면까지. 고생 끝 적응(adaptive ui) 시작(권영철)
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
 
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
[Td 2015]맨땅에 헤딩하고 터득한 스토어 공략법(돈벌기)(육주용)
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
 
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
[Td 2015]디버깅, 어디까지 해봤니 당신이 아마도 몰랐을 디버깅 꿀팁 공개(김희준)
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
 

Recently uploaded

Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 

Recently uploaded (20)

Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 

[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanbat and ayman shoukly)

  • 1. Ayman Shoukry – Principal Group Program Manager – Visual C++, Microsoft Ulzii Luvsanbat – Principal Software Engineering Manager – Visual C++, Microsoft What’s New in Visual Studio 2015 and Future Directions
  • 2. A note on our mission • Visual Studio will be the best IDE out there for EVERY C++ de veloper. • Not just Windows developers • Especially for Open Source developers • C++ is *the* language for cross platform development • Which is why C++ development is actually growing share amongst p ro devs • We can make C++ development more productive • Finish catching up on conformance, participate in standards b odies to help make the language better. Stay caught up.
  • 3. Saving the best for first • Before (VS2013): • After (VS2015):
  • 4. Saving the worst for second Pick ME!!!
  • 5. Not new: Common Misconceptions •You can still target XP in VS2015 •You can still do app-local deployme nt
  • 6. Demo: Language Agnostic IDE Goodness • Custom Window Layouts • Touch screen enhancements • Send-a-smile (or frown if you must) • Find in file append • Git and Github integration
  • 7. Demo: C++ IDE Productivity • Refactors (precision and accuracy) • Create Definition <-> Declaration (multiple) • Move function definition • Implement Pure Virtual • Rename • Extract Method • Convert to Raw String Literal • Single File Intellisense • Quick editing of a makefile project or file->new file and int main, etc
  • 8. Refactoring for C++ • Extract Method (VS Extension) Refactoring for C++ • Rename Productivity (IDE)
  • 9. Refactoring for C++ • Implement Pure Virtuals Quickly implement pure virtual functions in inherited constructs • Create Declaration/Definition Quickly create a function’s declaration from its definition (and vice-versa) • Move Definition Location Move a function’s declaration inline and out-of-line • Convert to Raw-String Literal Convert strings littered with escape sequences into a much more easily readable form Productivity (IDE) std::string s = "nSome reasons this string is hard to read:nt1. It would go off the screen in your editornt2. It has sooooo many escape sequences.nnThey should make a type for this called "long" string, har har har.nnHave fun parsing this! (maybe?)n"; std::string s = R"( Some reasons this string is hard to read: 1. It would go off the screen in your editor 2. It has sooooo many escape sequences. They should make a type for this called "long" string, har har har. Have fun parsing this! (maybe?) )";
  • 10. Single-File Browsing and IntelliSense support • Open any source file from disk, and enjoy basic browsing and IntelliSen se features (May require setting some defaults) Productivity (IDE)
  • 11. • Universal App Easily create projects targeting Store and Phone simultaneously, with a unified IntelliSense exp erience in the IDE • Faster, Improved Database Population Operations like Go To Definition are generally no longer blocked during solution scan, which in turn completes much faster especially for large solutions • Simplified QuickInfo for Template Deduction Elimination of redundant/unhelpful information • Auto-PCH (VS Extension) Generate a pre-compiled header based on your project structure for faster compile time Productivity (IDE)
  • 12. • New and Improved Exceptions “Dialog” Productivity (IDE)
  • 13. • New and Improved Error List Productivity (IDE)
  • 14. GPU Usage (available in VS2013 Update 4) • Launch from the Diagnostics hub • Create real-time graphs for Frame Time, Frame Rate, and GPU Utilizatio n • Analyze detailed GPU usage by inspecting the GPU and CPU execution time of each individual DirectX event Productivity (Diagnostics)
  • 15. Visual Studio Graphics Diagnostics • Visual Studio Graphics Analyzer (VSGA) A dedicated space for analyzing graphics frames • Shader Edit & Apply View impact of shader code changes without re-running the app • Full support for DirectX12 Productivity (Diagnostics)
  • 16. Native Memory Profiler • Monitor live memory consumption and take heap snapshots during a d ebugging session inside Visual Studio. • View heap contents with C++ types, values, and call stack for each allocation (valu es are shown only during a break point). • Diff two snapshots to identify potential leaks. • Navigate directly to source code from the allocations of interest. • In-line data tips that show line by line memory performance and link to source • See how much memory is being consumed between break points. • Easily navigate between source code and heap snapshots. Productivity (Diagnostics)
  • 17. Inspect instance values and their allocation call st • Memory Performance Data Tips Take heap snapshots and view C++ object type See how much memory is consumed between two breakpoin Productivity (Diagnostics) Native Memory Profiler • Real-time heap analysis
  • 18. IDE • Refactoring for C++ • Rename • Extract Method (VS Extension) • Implement Pure Virtuals • Create Declaration/Definition • Move Function Definition • Convert to Raw-String Literal • Single-File Browsing and IntelliSense Support • Universal App • Faster, Improved Database Buildup • Simplified QuickInfo for Template Deduction • Auto-PCH (VS Extension) Productivity Build Improvements • Faster linker when performing full linking • Improvements in Compiler for template processing and diagnostics Diagnostics • GPU Usage Tool (VS2013 Update 4) • Visual Studio Graphics Analyzer • Shader Edit & Apply • Full support for DirectX12 • Native Memory Profiler
  • 19. Simplified Template IntelliSense • Visual Studio 2013: • Visual Studio 2015:
  • 20. New C++11 / C++14 features in VS2015 + Update 1 • Generic lambdas (C++14) • Init-captures (C++14) • Auto and decltype(auto) return types (C++14) • Inheriting constructors • Magic statics • C++11 constexpr (bugfixes in Updat e 1) • Noexcept • Sized-deallocation (C++14) • Attributes • Alignment • User-defined literals • char16_t and char32_t • Unrestricted unions • Ref-qualifiers • Inline namespaces • Universal character names in literals • Unicode string literals • Binary literals (C++14) • Digit separators (C++14) • Await (update 1) (C++17?) • Expression SFINAE (Update 1)
  • 21. // Generic Lambdas auto const print = [](auto&& thing) { std::cout << thing << 'n'; }; print("Hello, world!"); print(123); // Generalized Lambda Capture std::unique_ptr<int> four = std::make_unique<int>(4); auto const multiply = [multiplier = std::move(four)](int const multiplicand) { return *multiplier * multiplicand; } Lambda Enhancements
  • 22. // Non-throwing functions may be declared noexcept void f() noexcept; void g(); // Can test whether a function is declared noexcept bool const is_f_noexcept = noexcept(f()); bool const is_g_noexcept = noexcept(g()); //Can conditionally make a function noexcept void h() noexcept(f); template <typename F> void call(F&& lambda) noexcept(lambda()); // If you violate a noexcept specification, std::terminate is called deterministically noexcept
  • 23. namespace foo { inline namespace bar { void print() { /* ... */ } } } // Names in foo::bar are used without inline namespace name: foo::print(); // Name is decorated with inline namespace name: ?print@bar@foo@@YAXXZ (void __cdecl foo::bar::print(void)) Inline Namespaces
  • 24. void f() { // Every thread will get its own 'state' variable thread_local int state = 0; } Thread-Local Storage (thread_local)
  • 25. std::ofstream open_log_stream(); void write_to_log(std::string&& value) { std::ofstream log_stream = open_log_stream(); log_stream << value; } Thread-Safe Local Static Initialization
  • 26. struct detector { void print() & { puts("non-const lvalue"); } void print() const& { puts("const lvalue"); } void print() && { puts("non-const rvalue"); } void print() const&& { puts("const rvalue"); } }; detector x; x.print(); // non-const lvalue const_cast<detector const&>(x).print(); // const lvalue detector().print(); // non-const rvalue const_cast<detector const&&>(detector()).print(); // const rvalue Ref-Qualifiers
  • 27. // Literals may now be specified in binary uint16_t const hex_mask = 0xf0f0; uint16_t const bin_mask = 0b1111000011110000; // The ' may now be used as a digit separator uint32_t const max_value = 4'294'967'295; uint32_t const max_value = 0xff'ff'ff'ff; uint16_t const bin_mask = 0b1111'0000'1111'0000; uint16_t const bin_mask = 0b111'100'001'111'000'0; uint16_t const bin_mask = 0b1'1'1'1'0'0'0'0'1'1'1'1'0'0'0'0; Binary Literals and Digit Separators
  • 28. int main() { std::cout << __func__ << 'n'; // main std::cout << __FUNCTION__ << 'n'; // main } template <typename T> void f(T const& s) { std::cout << __func__ << 'n'; // f std::cout << __FUNCTION__ << 'n'; // f } __func__
  • 29. // Can inspect alignment of things using alignof size_t const alignment_of_uint16_t = alignof(uint16_t); // 4 size_t const alignment_of_m256 = alignof(__m256 ); // 32 // Can align objects to a specified alignment alignas(alignof(32)) unsigned char buffer[32]; Alignment: alignof and alignas
  • 30. char a = 'x'; char b = '☃'; // Wrong char c = '🍸'; // Wrong char16_t d = u'x'; char16_t e = u'☃'; char16_t f = u'🍸'; // Wrong char32_t g = U'x'; char32_t h = U'☃'; char32_t i = U'🍸'; char a = 'u0078'; char b = 'u2603'; // Wrong char c = 'U0001F378'; // Wrong char16_t d = u'u0078'; char16_t e = u'u2603'; char16_t f = u'U0001F378'; // Wrong char32_t g = U'U00000078'; char32_t h = U'U00002603'; char32_t i = U'U0001F378'; Unicode Character Literals
  • 31. char const a[] = u8"Hello, u2603!"; char const b[] = u8"Hello, ☃!"; // sizeof(a) == sizeof(b) == 12 char16_t const c[] = u"Hello, u2603!"; char16_t const d[] = u"Hello, ☃!"; // sizeof(c) == sizeof(d) == 20 char32_t const e[] = U"Hello, u2603!"; char32_t const f[] = U"Hello, ☃!"; // sizeof(e) == sizeof(f) == 40 Unicode String Literals
  • 32. std::string a = u8"Hello, u2603!"; std::string b = u8"Hello, ☃!"; std::u16string c = u"Hello, u2603!"; std::u16string d = u"Hello, ☃!"; std::u32string e = U"Hello, u2603!"; std::u32string f = U"Hello, ☃!"; Unicode std::string Specializations
  • 33. // Return types can be automatically deduced: auto get_value() { return 10; } // ...This is especially useful for templates: template <typename T, typename U> auto multiply(T&& multiplier, U&& multiplicand) { return multiplier * multiplicand; } Return Type Deduction
  • 34. // Your entire program in C++17: auto auto(auto) { auto; } A Brief Interlude: A Preview of C++ 17
  • 35. struct my_type { std::unique_ptr<int> _x; std::unique_ptr<int> _y; }; my_type get_object() { my_type value; value._x.reset(new int(1)); value._y.reset(new int(4)); return value; // C2280 Attempting to reference a deleted function } Implicitly-Defined Move Operations (Before)
  • 36. struct my_type { std::unique_ptr<int> _x; std::unique_ptr<int> _y; }; my_type get_object() { my_type value; value._x.reset(new int(1)); value._y.reset(new int(4)); return value; // C2280 Attempting to reference a deleted function } Implicitly-Defined Move Operations (Now)
  • 37. long double operator""_€(long double const euros) { return euros * 1.11; } double cost_of_🍺_in_dollars = 3.50_€; // $3.885 User-Defined Literals
  • 38. #define countof(x) (sizeof((x)) / sizeof((x[0]))) char input_buffer[100]; char output_buffer[countof(input_buffer)]; constexpr
  • 39. template <typename T, size_t N> size_t countof(T(&)[N]) { return N; } char input_buffer[100]; char output_buffer[countof(input_buffer)]; // C2057: Expected constant expression constexpr
  • 40. template <typename T, size_t N> constexpr size_t countof(T(&)[N]) { return N; } char input_buffer[100]; char output_buffer[countof(input_buffer)]; // C2057: Expected constant expression constexpr
  • 41. constexpr size_t fibonacci(size_t const n) { return n == 0 ? 0 : n == 1 ? 1 : fibonacci(n - 1) + fibonacci(n - 2); } char buffer[fibonacci(10)]; // buffer has 55 elements constexpr
  • 42. auto multiples_of(unsigned n) { unsigned current = n; for (;;) { yield current; current += n; } } int main() { for (unsigned i : multiples_of(3)) { printf("%d ", i); if (i > 100) { break; } } } // 3 6 9 12 15 18 21 24 27 30 33 36 39 42 ... Resumable Functions (await)
  • 43. size_t fibonacci(size_t const n) { return n == 0 ? 0 : n == 1 ? 1 : fibonacci(n - 1) + fibonacci(n - 2); } char buffer[fibonacci(10)]; // buffer has 55 elements Expression SFINAE
  • 44. What’s still missing? • Expression SFINAE to complete C++11 • Major refactor needed -> parse trees • Significant progress in Update 1 – Partial Support • Generalized Constexpr (C++14) • LARGE • NSDMIs for aggregates (C++14) • small • Variable templates (C++14) • Available under an experimental switch in Update 1 • Two-phase lookup • C99 Preprocessor
  • 45. STL conformance for VS2015 • Everything but: Status Std Paper Title missing C++14 N3462 SFINAE-Friendly result_o f missing C++17 N4387 Improving pair And tupl e missing C++17 N4508 shared_mutex (Untimed)
  • 46. Library updates • Universal CRT • From Windows 10 and up, CRT is an OS component • Still supported down to XP • No more breaking changes • MFC updates: • Dynamic Layout / Auto-resize for dialogs • New libraries • Parallel STL • New version of Casablanca C++ REST SDK • OSS and takes contributions • WebSockets • oAuth 1.0 and 2.0 • OSX/iOS support, Android, WP8.1, Windows 10 Universal
  • 47. Introducing Clang / C2 Toolset • Clang / C2 hooks up the Clang front-end to the MSVC backe nd • Why? • use the same frontend to reduce overhead of bring cross-plat librari es and code to Windows • no compromises debugging • link compatible with MSVC code (same libraries) • Preview coming in Update • No, we aren't going to stop investing in our existing front-en d (c1/c1xx) • we respect your investment in your existing code base
  • 48. A quick note on C99 / C11 • We care about C. • Our gap isn’t really that large in practice • Tgmath.h • Variable length arrays (optional in C11) • Complex types • Some other nits • We’ll get this via Clang / C2
  • 49. New for DirectX Devs • DirectX12 support • Shader Edit and Apply • Consecutive Capture • Programmatic Capture • Dedicated UI for Graphics Analysis
  • 50. Productivity pt. 2: Build Throughput credit: This is my favorite xkcd.com strip of all time
  • 51. • Compiler • Faster template processing • PDB • Reduced PDB generation time • /Debug:fastlink • Linker • Incremental linking for static libraries • Algorithmic improvements • LTCG & PGO • Fast LTCG • PGO instrumented builds has lower overhead • General algorithmic improvements across tools Build Throughput Improvements 958 595 57 71 (7%) 285 (48%) 39 (68%) K INE C T SPO RT S RIV AL C H RO ME O GRE 3D INCREMENTAL BUILD (SEC) VS2013 VS2015 715 2417508 (71%) 1480 (61%) O GRE 3D BING (ST AT IC LIB) FULL BUILD (SEC) VS2013 VS2015
  • 52.
  • 53.
  • 55. C++ • Messenger • Facebook • Pandora Radio • Instagram • Minecraft • Snapchat • Spotify Music • Du Speed Booster • Twitter • The Game of Life • Super Bright LED FlashLight • Soda Saga • Skype – Free • Whatsapp Messenger • Clean Master • Netflix • Kik • Crossy Road • Clash of Clans • Amazon Shopping • Candy Crush e IM and Video Calls • 8 Ball Pool • Glass Tower • Subway Surfers • Pinterest • Cooking Fever • Zedge Ringtones and Wallpaper • Word Academy • Poshmark - Buy and Sell • Candy Crush Saga • Dragon Blaze • Marvel Future Fight • Emoji Keyboard • DU Battery saver • SoundCloud - Music and Radio • Monopoly • Twitter • CM Security Antivirus • Slots - Journey of Magic • Yahoo Mail - Free Email App • iHeart Radio - Radio and Music • Temple Run 2 • Boom Beach • Despicable me • ebay • Wish - shopping made fun • Trivia Check • Juice Jam • Game of War - Fire Age • TouchPal Keyboard • Geometry Dash Lite • Flow Free • Bird Climb • Coin Dozer • Uber • Google Earth • Flow Free • Bird Climb • Coin Dozer • Uber • Google Earth • Archery Master 3d • Go Keyboard - Emoji • ooVoo video call • Inbox by Gmail • Samsung Smart Switch Mobile • Tango - Free video call and chat • Earn to Die 2 • Fruit Ninja Free • Farm Heroes Saga • Wallapop • Capital One Wallet • Truck Driver 3d: offroad • Solitare • Plants vs Zombies • Hidden Object - Marrinotes • Tinder • DropBox • Hulu • Extreme Car driving simulator • The Sims 3 • Word Search • Hidden Object - Marrinotes • Tinder • Hulu • Extreme Car driving simulator • Need for Speed Most Wanted • Angry Birds • Shazam • MyRadar Weather Radar • Vine • Line: Free calls and messages • Waze Social GPS Maps • Google Translate • Don't tap the white tile • Panda Pop • EA Sports UFC • Flipagram • Hill Climb Racing • Tasty Tale - The Cooking Game • Yelp • Offer Up - Buy, sell • CM Launcher - Boost, Secure • Temple Run • Empire and Allies • Google Docs • Tetris • Battery Doctor • Beats Music • Walmart • Surgery Doctor • EA FrostBite
  • 56. C++ C++C++ • Code Reuse • Performance • Security
  • 57. .appx .apk .ipa C#, C++/Cx Java Dex / ART ObjC Swift Dynamic Link Lib rary (.dll) Static Library (.lib ) Dynamic shared l ibrary (.so) Static library (.a) Static library (.a) Shared C++ backend is compiled as: DropBox
  • 59. Android Development Features • Supported versions • 4.4 “KitKat”, API Level 19 • 5.0 “Lollipop”, API Level 21 • Emulator features include • OpenGL ES 2.0 • Multi-touch gestures • Advanced camera simulation • WiFi network simulation • Debug directly from Visual St udio • Integrated LogCat viewer • Natvis debugger visualizations • Externally built native activity a pps • Can attach to running APKs • “Stripped” debugging to reduc e deployment size • Deploy, Debug directly from V Studio. Emulator or devices.
  • 60. iOS Development Features • Supports versions 6, 7, and 8 • Debug directly from Visual St udio • Need a Mac connected depl oy and debug on devices onl y (no emulator)
  • 61. Universal Windows Platform Development • Develop one app for all Wi ndows 10 devices • Apps automatically switch be tween desktop, phone, tablet , Xbox and Surface Hub confi gurations to fit screen size a nd input types • Unified app store • Design your UI in XAML with WYSIWYG editor • You can use C++, C#, VB, or HTML/JavaScript • Easily port Android and iOS apps
  • 62. Vectorization of control flow • Vectorization of loops with if-then-else void blackscholes(float* input, int *signArray, int n) { for (int i = 0; i < n; i++) { float InputX = input[i]; int sign; if (InputX < 0.0f) { InputX = -InputX; sign = 1; } else { sign = 0; } input[i] = InputX; signArray[i] = sign; } } mask = InputX < 0.0f ? 0xFFFFFFFF : 0; InputX = (mask & -InputX) | (~mask & InputX); sign = (mask & 1) | (~mask & 0); Optimized to branch-less code 300%+ speedup in blackscholes benchmark
  • 63. Better stall-forward-avoidance • Writes to large structures followed by reads from substructure s can lead to hardware stalls. • New optimizations targeted at std::complex<float> and std::c omplex<double> • Improved code generation of VUNPCKLPD/VUNPCKLPS instru ctions • 40% speedup in Eigen quaternion multiplication code • 35% speedup in Eigen FFT code
  • 64. Bit-test merging • Optimizations targeting cascading bit tests: if ((((data->bitfield >> 3) & 1) != 0) || (((data->bitfield >> 6) & 1) != 0) || (((data->bitfield >> 9) & 1) != 0) || (((data->bitfield >> 4) & 1) != 0) || (((data->bitfield >> 8) & 1) != 0)) { ... } Source code: if ((data->bitfield & 0x1258) != 0) { ... } Optimized as if: • Matters in code dealing with bitfields 14% speedup in quantum mechanics benchmark
  • 65. Loop-if unswitching • Improved code generation for loop-invariant control flow for (int i = 0; i < 100; i++) if (some_invariant_condition) ... Source code: if (some_invariant_condition) for (int i = 0; i < 100; i++) ... Optimized as if: Hits often, especially when considering inlining
  • 66. Other code generation improvements • #pragma loop(ivdep) • Better vectorization of STL constructs (range based for-loops, std ::vector) • Vectorization under /O1 (optimize for size) • Better codegen of std::min/std::max (200% improvement in runti me) • Better instruction emission for bit-test (more BT, BTC, BTR, BTS) • Plus much more…
  • 67. What’s next: Compiler features (conform ance) in Updates • No need to wait for major VS updates • Features include: • Safer C++ • Modules • Await completed in Update 1 (to current proposal) • Clang/C2 • No breaking changes by default
  • 68. What’s next: IDE productivity and build-l ab scenario • More Refactorings • VC ++ Scalability and Perf • Build-time improvements • Standalone Build tools
  • 69. What’s next: Early thoughts!! • Come talk to us about your Linux / IoT dev! • E.g. Remote Linux debugging • Come talk to us about what you want from VS Code for C++!
  • 70. Resources • VCBlog – best way to follow us • http://blogs.msdn.com/b/vcblog/ • Channel 9 – Going Native • https://channel9.msdn.com/Shows/C9-GoingNative
  • 71. 감사합니다. • MSDN Forum http://aka.ms/msdnforum • TechNet Forum http://aka.ms/technetforum • Ayman Shoukry: aymans@Microsoft.com • Ulzii Luvsanbat: batul@Microsoft.com
  • 72. http://aka.ms/td2015_again TechDays Korea 2015에서 놓치신 세션은 Microsoft 기술 동영상 커뮤니티 Channel 9에서 추후에 다시 보실 수 있습니다.