Visual Studio 2022 推出 2025 年第一個版本、17.13 了~
官方的公告是《Visual Studio 2022 v17.13 is Now Available!》,不過內容只有重點、沒有細節,有想看詳細資料的話要自己去看 release note。
而在 C++ 的程式開發的部分,這次有兩個主要的變化:
- C++ 語言標準的部分加入 C++23 預覽
- 進階指令集加入 AVX 10.1
比較完整的說明可以參考《What’s New for C++ Developers in Visual Studio 2022 17.13》和《MSVC Compiler Updates in Visual Studio 2022 version 17.13》這兩篇。
接下來,就來稍微仔細一點介紹個人覺得有用的更新吧~
C++ 23
C++23 這個標準雖然理論上是 2023 的東西,但是實際上似乎是拖到去年底才真的定案;而幾大編譯器基本上也都還沒有能完全支援(參考)。
Visual C++ 之前其實就已經支援部分標準了,但是都還是放在「/std:c++latest
」裡面,沒有專用的設定。
而到了 17.13、微軟終於加入了「/std:c++23preview
」這個參數了!
不過比較可惜的,目前還是在預覽階段,要到完整支援可能還要一段時間了。
而除了之前已經有支援的 C++23 功能,這次也有多支援一些東西;包括了:
另外,現在也支援 CMake Presets v9,不過這部分 Heresy 就沒玩多少了。
至於其他的內容,主要應該是錯誤修正和改進了。
針對 x86 / x64 加入 AVX 10.1
在專案的「C/C++」下的「程式碼產生」裡的「啟用進階指令集」加入了 Intel 新的 AVX 10.1 指令集。
沒弄錯的話,Intel AVX10 系列的指令集是為了解決自家 12 代之後的 Core 處理因為採用 P/E Core 不同架構的大小核、結果把 AVX512 廢掉的問題而推出的新的指令集。
如果程式只打算給新的 Intel 處理器使用的話,那理論上把指令及改成 AVX10.1 應該會有一些效能上的增進?
但是由於 AMD 應該是都支援 AVX512 而不支援 AVX10,所以如果要考慮相容性的話,可能還是選 AVX2 這個老標準會比較保險吧…
另外,現在還多了一個「啟用向量長度」的參數,可以針對 AVX512 和 AVX10.1 設定向量長度(參考)。
GitHub / GitHub Copilot
Visual Studio 整合 GitHub 和 GitHub Copilot 已經很久了,在去年底也推出了可以體驗用的 GitHub Copilot 免費版;由於免費板給的可使用量很少、所以其實基本上都會用完,但是在之前的介面又看不出使用量,其實有點討厭?
這次更新後,GitHub Copilot 的選項裡面多了一個「Copilot 可用狀態」,算是終於有顯示一些使用的細節(個人覺得還是很不足就是)了:
另外,在 GitHub 登入的部分也有做了一些修改,包括可以登入多個 GitHub 帳號等等,但是這些 Heresy 就沒認真玩了。
而在 GitHub Copilot 的部分,這次也加入了跨檔案存取、function calling、整合進入平行堆疊等功能;不過個人應該是不會玩太多就是了。
程式碼搜尋的改進
在「程式碼搜尋」(Ctrl + T)的部分,這次加入了「最近使用的檔案」的功能;在沒有任何搜尋條件的狀況下,檔案列表會顯示出最近看過的檔案。
此外,在檔案搜尋的時候,除了在 17.12 的時候允許加入「:line
」的形式來指令要顯示的檔案的行數外,現在還可以用像是「file(line)
」的形式,或是加上列(column)的編號來移動游標。
編輯器的水平卷軸
現在在「工具」、「選項」、「文字編輯器」、「進階」裡面,有一個「編輯器水平滾動條位置」的選項,可以把水平卷軸獨立出來,不用跟編輯器下方的其他資訊搶位置了~
下面是本來的設計:可以捲動的區域相當地小:
在把設定改成「一律顯示在編輯器匣上方」後,就會變成在上面獨立一條,比較方便操作。
大概就這樣了?當然其他還有不少變化,不過由於 Heresy 這邊大概用不太到,所以就不提了,有興趣的話自己看吧~
以個人來說,這次最主要的變化應該還是加入 C++23 的預覽版吧?雖然功能還不完整,但是由於 Heresy 還滿想直接用 std::expected
或是 std::optional
在 C++23 加入的 monadic operation 這些東西的,所以也在考慮要不要先切過去來用了~