微軟推出 Visual Studio 2010 Service Pack 1 的正式版囉!如果有在使用 Visual Studio 2010 的人,可以考慮更新了∼他的下載連結是:下載連結(此為線上安裝版)。而詳細的更新內容,則可以參考《Description of Visual Studio 2010 Service Pack 1 》,由於內容過多,Heresy 在這邊就不詳列了。
而由於 Heresy 本身主要是在用 Visual C ,所以自然就比較關心這方面的變化;這部分可以參考 Visual C Team Blog 的《Visual Studio 2010 Service Pack 1 General Availability》一文。裡面列出了:
C 新的功能
MFC-based 的 GPU 加速圖形與動畫(MFC-based GPU-accelerated graphics and animations)
Visual Studio 2010 SP1 為 MFC 加入了兩項新技術,一個是透過 Direct2D(介紹頁面)來替 2D 的圖形做硬體加速,另一個則是透過 Windows Animation Manager(介紹頁面)來處理動畫的部分。詳細的細節,可以參考《MFC Additions for Visual Studio 2010 SP1》一文。
支援 AMD 和 Intel 新的指令集(New AMD and Intel instruction set support)
錯誤修正
C 編輯器(Editor)
- Visual Studio 2010 crashes in a C/C project when hiding or showing all files of solution.
- Class member auto-completion forces wrong member (case-sensitive).
- Go to Declaration is slow in some cases.
- The C Editor may crash when you insert comments.
- A crash occurs while declaring C enumuneration.
- Issues occurred in native IntelliSense, such as with indexes and reporting.
- The NavigateTo method in C occasionally becomes unresponsive.
- Performance and stability improvements
- More efficient memory management
- Other IDE improvements to prevent user interface (UI) freezes and crashes
- Performance improvement for the F12 (Goto Definition) function key on large projects.
C 編譯器(Compiler)
- C compiler generates incorrect movups instructions instead of movss instructions.
- There is a specific problem with the /Og option in the 64-bit version of Visual Studio 2010 Beta 2 compiler.
- SSE2 instructions are generated when the /arch:SSE option is specified.
- There are specific problems in the x64 version of the C compiler (optimizer).
- Destructor calls are missing when optimization is enabled.
- The compiler crashes with the "decltype(*this)" type specifier.
- Optimizations and fixes in several code generation areas
- Managed Incremental Build parity with Visual Studio 2008. For more information, click the following article number to view the article in the Microsoft Knowledge Base: 982721 The Enable Managed Incremental Build property does not exist when you open the Project Properties pages for a Visual C 2010 project.
標準 C 函式庫(Standard C Library)
- The "vector::erase" constraint returns an incompatible iterator in the debug build.
- The behavior of the "tr1:regex" constraint differs in Visual Studio 2008 and in Visual Studio 2010 when some regular expressions are used.
- When you use the “std::vector<std::string>" statement, a memory leak occurs when you run your program.
C Runtime (CRT)
- MSPDB100.dll is dynamically loaded, but the DLL does not specify a fully qualified path in the CRT.
- When the the WEOF constant is passed to the "swprintf_s" function, the buffer does not receive a NULL termination.
Microsoft Foundation Classes (MFC) and Active Template Library (ATL)
- In the CDatabase/Crecordset MFC, the "DoFieldExchange" variable does not work correctly in Visual Studio 2010.
- Security, performance and other improvements in ATL/MFC.
C Debugging
其中在 Heresy 來看,比較重要的一個部分,應該是在於 Visual Studio 本身介面上的效率改進;以前 Heresy 在使用 Visual Studio 2005 的時候,「Goto Definition」這類的功能,速度都相當地快,但是在換到 Visual Studio 2010 後,這類功能的效率,卻大幅地降低,常常一要編輯器找到某段程式、或宣告,就得等上一段時間…而看來微軟也發現有這問題了,所以這次的更新裡,有不少是針對這一個方向的。而在更新到 SP1 後,Heresy 是覺得它的速度雖然還是沒有 Visual Studio 2005 來的快,但是應該是有比 Visual Studio 2010 安裝 SP1 前快上不少了。
另外,在 SP1 也有針對編譯器在 64 位元下最佳化的問題進行修正,而這或許也解決了編譯 64 位元版 Qt 不能開啟最佳化的問題(參考),不過由於要編譯完整個 Qt 要很久的時間,Heresy 還沒有確認過就是了。