最新的F 破壞了二進位制相容性

2021-09-17 05:49:58 字數 585 閱讀 1524

微軟在 vs 2010 beta 1中包含了f#,並發布了對應的用於vs2008的ctp更新。最新的二進位制版本1.9.6.16,和之前的版本1.9.6.2不相容,意味著所有之前的**都需要重新編譯。

\ 微軟不僅把f#新增到vs 2010 beta 1中以實現2023年許下在visual studio中包含f#的承諾,而且還為那些不想使用測試版只願意用同.net 2.0-3.5一道的穩定ide的人,也提供了乙個vs 2008的ctp更新版本。

\ don syme提供了乙個詳細的發布說明,提到了二進位制不相容的問題:

\

\

使用新版本編譯的f#二進位制檔案與之前版本上的二進位制檔案已經不相容,所以必須重新編譯。f#的二進位制相容性是visual studio 2010的rtm版本的乙個目標。

\

\

另外乙個顯著的破壞性改變是,預設使用輕量級語法(#light)。這讓**預設情況下空白有效(whitespace-significant)。所以,包含在msdn演練中的例子裡面的非法空白就需要刪除掉。

\檢視英文原文:latest f# breaks binary compatibility

就你不知道 二進位制相容性

簡單的理解,就是乙個exe檔案需要用到其他dll檔案,如果我們不重新編譯鏈結exe,替換乙個新的dll,而執行正常,則稱為二進位制相容良好。這種應用場景很多,例如,發布新的補丁程式,只給客戶公升級極少的dll檔案,而多數的exe,dll都不用更新了。不幸的是,不隨願的情況也很多。場景一 dll的原始...

二進位制相容問題

二進位制相容問題,主要是針對動態鏈結庫而言的。在windows上就是dll,在linux上就是so。如果主程式exe 當然也可以是客戶庫 不變,公升級了依賴庫so1到so2,而不需要重新編譯,那麼就是說so2是相容so1庫的。二進位制相容涉及到編譯問題,所以和硬體平台,軟體平台以及編譯器等都是密切相...

c 二進位制相容本質

總的一條就是讓client只依賴 名字 而不依賴任何 實現 實現 具體的就是2類 1 函式體,code 2 任何記憶體塊大小,layout細節 為什麼會有二進位制相容問題,就是因為一般的c 標頭檔案並不是單純的介面宣告,其中也還包括了 實現細節 因為成員變數就是一種記憶體layout,就屬於實現細節...