Visual Studio 2013 RC Now Available

Visual Studio 2013 RC Now Available

Rate This
  • Comments 33

A few minutes ago, Soma announced the Release Candidate of Visual Studio 2013, .NET Framework 4.5.1 and Team Foundation Server 2013. Also announced was the Virtual Launch date – November 13th, 2013:

The RC release is the next big step toward the release of Visual Studio 2013. Today I am also excited to announce that Visual Studio 2013 will RTM at Windows 8.1 GA and the Visual Studio 2013 Virtual Launch will be held on November 13th, 2013! Available online around the world, more details can be found on the virtual launch event on the events page.

If you missed the preview, here are some of the cool things in this release for C++ developers:

  • Support for the C++11 =default, =delete, NSDMI and alias templates
  • Supports ISO C11 language features including _Bool, compound literals, designated initializers, and mixing declarations with code.
  • C++ AMP Texture support is enhanced.
  • Auto-Vectorizer now recognizes and optimizes more C++ patterns to make your code run faster.
  • New Profile Guided Optimization for Windows Store app development.
  • Support for native/JavaScript interop debugging, Windows Runtime exception diagnosis, and async code debugging (both Windows Runtime and PPL).
  • Graphics and GPU Debugging Improvements.
  • Defaulted functions.
  • Enhanced code formatting.

For a complete list of what is in Visual Studio 2013 RC for C++ developers, visit the MSDN library (or watch this video). For a peek into the future of C++, see Herb Sutter's BUILD talk. He and others also spoke at Going Native 2013 – swing by the site later this week and catch the video!

Your feedback is important. Download Visual Studio 2013 RC, kick the tires for a bit, then send us your thoughts through the usual channels.

Feedback can also be sent from within Visual Studio using the menu in the top-right corner of the IDE (send a smile, send a frown, or report a bug).

Thanks!

 

  • PS: And this construct cause the compiler to crash ;)

    struct B {

    std::vector<int> vec{ };

    };

    fatal error C1001: An internal error has occurred in the compiler.

    1>  (compiler file 'msc1.cpp', line 1325)

  • Flo P, initializer list works just fine for me, except the compiler crash part.

  • .. and still waiting upgrade and pricing announcement. Some info would be nice.

  • #include <iostream>

    #include <vector>

    using namespace std;

    struct B {

     std::vector<int> vec{1,2,3,4 };

    };

    int main()

    {

       B b;

      for(auto i : b.vec)

       cout << i << endl;

      return 0;

    }

    Nope can't get this to work. Different machine, fresh install, fresh project, still throws the same compiler error. Pretty sure it's a bug because it does compile on GCC.

  • Flo P, my bad, your version doesn't indeed compile. "std::vector<int> vec{1,2};" does tho :) Might not work as it should.

  • @Matt: It's under the "post-RTM CTP" block (with the "some subset" caveat).

    @Olaf: Mine, too. I just don't know how much of a choice we ultimately have, particularly when bug fixes in compilers and C and C++ libraries mostly seem to get delegated to "new product only".

  • I installed this on two machines and on both the "Add new file" to project menu doesn't allow me to add any .cpp files to the project... This is on the express for desktop version. it seems to be broken, reinstalling the previous version fixes it...

  • Matt: Adding to what Michael said, noexcept is 4th column (leftmost == 1), 3rd row (topmost white == 1).

    As I mentioned, the library already provides std::move_if_noexcept(). Using it internally is in our list of things to do, but you should not expect to see this in the "Post-RTM CTP".

    Flo P: Thanks for the compiler bug reports. I've filed DevDiv#778544 "NSDMIs don't work with initializer_lists" and 778555 "NSDMI ICE with empty braces, a default ctor, and an initializer_list ctor: pCurrentFunction != nullptr, funcs.c 7896" in our internal database.

  • related issue:

    struct A

    {

    int a;

    };

    struct B

    {

    A aa = {1}; // compile error

    int c[] = {1, 2, 3}; // compile error

    };

  • How to create Windows Forms Application in VS C++ 2013 RC?

    In VS C++ 2010, the template is easy to find: New Project -> Visual C++ -> CLR -> Windows Forms Application.

    In VS C++ 2013 RC, New Project -> Visual C++ -> CLR doesn't have Windows Forms Application template.

    The following link doesn't help because it's for C#, only.

    msdn.microsoft.com/.../dd492132(v=vs.120).aspx

    Is this a bug (or a design flaw) in VS 2013 Release Candidate?

    Since this is only an "RC", it's a "candidate" for release, and maybe the final release will correct this defect?

    Is there a way to manually create a Windows Forms Application?

  • ARM build of remote tools is missing.

  • One thing that has bothered me is the intellisense false-positives when using C++11 syntax.

    Is there are any plans on fixing this for the RTM? I realize this would required a lot of work,

    but if it were possible to selectively disable error reporting, that would be nice.

  • I tried to submit a bug to the Connect team but apparently I can't ?????

    So, why dont C99 compund literals work as they need to???????

    Here is a simple example that doesn't work:

    int i[3] = ( int [3] )  { 10, 20, 30 };

    Apparently arrays of integers don't fit with compound literals because it says:

                error C2075: 'i' : array initialization needs curly braces

    Fix it because I cannot post to Connect, people need WORKING compiler, is that so tough to understand?

  • Thank you for adding the amd64_x86 cross compiler. I can now turn on LTCG on x86 builds. Also spurious mspdbsrv.exe errors should be gone!

  • @fplgenius

    I'm sorry you had a problem reporting an issue through connect.

    The issue you reported, however, is illegal according to the standard.

    int i[3] = ( int [3] )  { 10, 20, 30 };

    The reason your example does not compile can be found in 6.7.8 of the spec.  Specifically look at 12-16.  Note (an array is of aggregate type).

    Clause 13 allows structs/unions to be initialized with a single expression of compatible type, but this is not specified for arrays.  Clauses 14 and 15 contain some special rules for arrays of character type and string literals.

    Clause 16 is this:

    16) Otherwise, the initializer for an object that has aggregate or union type shall be a brace- enclosed list of initializers for the elements or named members.

    This may be easier to see with the following example, which is not allowed either.  A compound literal creates an unnamed variable, which is semantically the same as the following.

    int arr1[3] = {1,2,3};

    int arr2[3] = arr1;

Page 2 of 3 (33 items) 123