SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
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에서
추후에 다시 보실 수 있습니다.

Contenu connexe

Tendances

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 GPUJohn Colvin
 
DLL Design with Building Blocks
DLL Design with Building BlocksDLL Design with Building Blocks
DLL Design with Building BlocksMax Kleiner
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScriptDenis Voituron
 
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 2016PVS-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 20180607Kevin 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 cannotAndrey 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 developAndrey 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 ScriptFolio3 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 aopStefano 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 IntroductionDmitry 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 analyzerAndrey 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 GuideNascenia IT
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static AnalysisElena Laskavaia
 

Tendances (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
 

En vedette

Logical Programming With ruby-prolog
Logical Programming With ruby-prologLogical Programming With ruby-prolog
Logical Programming With ruby-prologPreston 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 DesignHubbard One
 
Cognitive information science
Cognitive information scienceCognitive information science
Cognitive information scienceS. Kate Devitt
 
Part 1 picturebox using vb.net
Part 1 picturebox using vb.netPart 1 picturebox using vb.net
Part 1 picturebox using vb.netGirija Muscut
 
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 HenrichsWolfgang Stock
 
Transforming the world with Information technology
Transforming the world with Information technologyTransforming the world with Information technology
Transforming the world with Information technologyGlenn 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.netGirija Muscut
 
Part 3 binding navigator vb.net
Part 3 binding navigator vb.netPart 3 binding navigator vb.net
Part 3 binding navigator vb.netGirija 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 valueGirija 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.netGirija 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 SeenMark Pesce
 
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
 

En vedette (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
 

Similaire à [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 2015Windows Developer
 
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
 
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.pptUdhayaKumar175069
 
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 Cummeafruz
 
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_functionsray143eddie
 
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.pptAlefya1
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and TechniquesBala Subra
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging TechniquesBala 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.pptJoshCasas1
 
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
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational WorkYung-Yu Chen
 
What’s new in .NET
What’s new in .NETWhat’s new in .NET
What’s new in .NETDoommaker
 

Similaire à [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 Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging 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
 

Plus de 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 2016Sang 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
 

Plus de 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 앱 서비스(이종인)
 

Dernier

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 

Dernier (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 

[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에서 추후에 다시 보실 수 있습니다.