Native Development Experience in Windows Embedded Compact 2013

Native Development Experience in Windows Embedded Compact 2013

Rate This
  • Comments 10

In windows embedded compact 2013, we are updating the native developer experience to the latest and greatest experience available via Visual Studio 2012. With this update, we are essentially bringing 2012 native desktop experience to embedded developers. This post details some of the key updates to the experience.

Run time updates

We are porting Visual C++ 11 runtime to run on the Windows Embedded Compact operating system. The new runtime includes improved support for C++ 11 standard features such as new STL headers, rvalue references, auto, lambdas and range-based for-loop. These allows developers to write safer, faster code that is easier to maintain and is compliant with the C++ 11 standard. Additionally, we are bringing in C++ 11 standard’s concurrency features such as atomics, strong compare and exchange, to target multicore scenarios that are becoming prevalent in the embedded world.

Apart from the addition of C++ 11 standards, Visual C++ 11 desktop runtime has numerous bug fixes and optimizations. Some of the cool optimizations we are bringing forth in Windows Embedded Compact 2013 (from desktop) include all containers (vector, array, queues, maps etc), which now have smaller representations. Compared with VC 9, the memory usage is significantly reduced in VC 11. Decreased memory usage saves both space and time, something that is a premium especially in the embedded space. Another optimization worth mentioning is the porting of Auto-vectorizer. Just like on desktop Windows, the Auto-vectorizer will automatically analyze the loops in your code and where possible, emits Streaming SIMD Extensions resulting in faster execution. This optimization is designed to provide performance gains for the loops in your code when targeting newer processor or multicore processors. For more details, refer to this link.

Speaking of multicore processors, we are also updating libraries in this release. With hardware moving to multi-core and many-core architectures, even in embedded world, we are bringing parallel programming support via Concurrency Runtime. Introduced in Visual Studio 2010 and updated in 2012, we will be bringing in the powerful C++ parallelization libraries such as the Parallel Patterns Library, Task Parallelism, Concurrency-safe containers and Asynchronous Agents Library. Apart from these, we are also updating the MFC and ATL to the Visual Studio 2012 version, thereby bringing in the various bug fixes and optimizations already available in the desktop world.

It’s worth mentioning that one library we will not be porting is C++ AMP technology. Introduced in Visual Studio 2012, C++ AMP has a dependency on DirectX11 which is not support by Windows Embedded Compact 2013.

IDE updates

In this release, the updates are not limited to the runtime. The tools in the Visual Studio IDE have also been improved to help you be more productive when you code in C++. Some highlights include:

  • MSBuild Support. Visual C++ solutions and projects are now built using MSBuild, instead of VCBuild.exe. Due to this change, Visual C++ project files now use an XML file format and have the .vcxproj file name extension. For more information see MSBuild (Visual C++).
  • Visual Studio Templates support. The project and item templates for embedded scenarios have been updated to use the Visual Studio Templates technology.
  • Richer IntelliSense. We have vastly improved IntelliSense performance to be faster, more accurate and able to handle larger projects. We are bringing all those enhancements to the Compact world. Further, C++ IntelliSense Quick Info tooltips now show richer XML documentation comments style information.
  • C++ Code Constructs. Skeleton code is available for switch, if-else, for loop, and other basic code constructs, in the List Members drop-down list. Select a piece of code from the list to insert it into your code and then fill in the required logic. You can also create your own custom pieces of code for use in the editor.
  • List Members Enhancements. The List Members drop-down list appears automatically as you type code into the code editor. Results are filtered, so that only relevant members are displayed as you type.
  • Semantic Colorization. Types, enumerations, macros, and other C++ tokens now have colorization by default.
  • Reference Highlighting. Selecting a symbol now highlights all instances of the symbol in the current file. Press Ctrl+Shift+Up Arrow or Ctrl+Shift+Down Arrow to move among the highlighted references.

Static Code Analysis

This release also includes the updated Static analysis for C++. Updates provide richer error context information, more analysis rules, and better analysis results. In the new Code Analysis window, you can filter messages by keyword, project, and severity. When you select a message in the window, the line in the code where the message was triggered is highlighted in the code editor. For certain C++ warnings, the message lists source lines that show the execution path that leads to the warning; decision points and the reasons for taking that specific path are highlighted. For more information about how to improve the quality of your code, see Analyzing Application Quality by Using Code Analysis Tools.

To sum up, we are very eager to update the native development experience in Windows Embedded Compact 2013 release. We envision a world where native desktop developers and embedded developers can develop applications using the same set of capabilities and tools. This release is a fulfillment towards that vision.

  • Very nice.  Using the current VC9 compiler (which doesn't even have TR1, let alone any C++11) is quite painful in the embedded world.

    Is there any word when we will get a CTP for WEC2013?

  • This is great news! Especially for MFC developers! Will it then be possible to have the full desktop MFC experience usable in Windows Embedded Compact with only less modifications, or will you only update Windows Mobile MFC ? It would be great to simply have the same MFC on desktop and on the embedded devices using Windows Embedded Compact 2013. Please give a quick feedback about this. It's a killer feature for MFC developers seamlessly enabling easy application development on the desktop and on the arm embedded POS devices. Again great news! Greetings, Moritz

  • @Moritz,

    Thanks for your feedback. We are not planning to bring full desktop MFC experience in Windows Embedded Compact 2013. For example the MFC will not have the feature pack additions. Having said that, we are listening to your feedback and will definitely include it in our planning process. So keep them coming!

  • Where can I find more about Windows Embedded Compact 2013?

  • That are really good news. Are there any plans to support Windows Embedded Compact 7 with Visual Studio 2012? Since things move slowly in the embedded world, we still have CE 6 and are now moving to EC 7... C++11 would be very nice!

  • I second Rodger. Please do support application development (aka Smart Devices) for prior versions of WCE/WEC with VC2012 as upgrading deployed devices to new OS is rarely feasible. It does not need to be with new compiler either.

  • Will debugging managed applications (i.e.g NETCF 3.9) support mixed mode debugging? More generally, will debugging support on the embedded target match the desktop experience.  Could I use Windbg with the SOS extension to do my .NETCF debugging?

  • @roger and Michal,

    Unfortunately due to the extensive changes made to both Windows Embedded Compact 2013 and Visual Studio 2012 to align in this release, using Visual Studio 2012 with Windows Embedded Compact 7 (or earlier) will not be officially supported.

  • @wil,

    Currently we don't plan to support mixed-mode debugging in this release. Also, you cant use WinDbg + SOS (from desktop CLR) will not work with NETCF in this release.

  • @Teddy Cineas,

    We are working on providing more information about Windows Embedded Compact 2013. In the meantime you can refer to this blog (blogs.msdn.com/.../david-campbell.aspx) for some more details. Please feel free to ask us any questions you may have.

    Regards

Page 1 of 1 (10 items)