中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

d的102版更改-創(chuàng)新互聯(lián)

原文

創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專注成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站營銷推廣,申請域名,網(wǎng)絡(luò)空間,成都網(wǎng)站托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)公司。更改編譯器

1,已棄用遺漏沖突的extern (D) @system函數(shù)定義
同一模塊中多個函數(shù)的定義,在DMD 2.095.0后已算錯誤.
但是,盡管有同樣混雜,兩個實現(xiàn)顯式的和推導(dǎo)@系統(tǒng)屬性有區(qū)別時,編譯器不發(fā)出錯誤.

void foo() {}
void foo() @system {} //無錯誤

現(xiàn)在已修復(fù).如果有沖突@系統(tǒng)實現(xiàn),現(xiàn)在發(fā)出棄用警告.
DMD2.112開始,與其他模塊內(nèi)函數(shù)類型沖突一樣,產(chǎn)生多個定義錯誤.
2,在重載集棄用調(diào)用__traits(getAttributes)
在此版本之前,__traits(getAttributes)可在單個函數(shù)和重載集上同時調(diào)用.但是后者,編譯器為第一個詞法定義的函數(shù)收集.此行為易錯.考慮:

module test;
@("gigi")
void fun() {}
@("mimi")
void fun(int) {}
void main()
{static foreach(attr; __traits(getAttributes, fun))
    pragma(msg, attr);

盡管未指示實際查詢重載,上面代碼打印"gigi".總是選擇第一個重載.
從本版開始,棄用__traits(getAttributes)的該用法.如果要處理指定重載,可結(jié)合使用__traits(getOverloads)__traits(getAttributes):

@("gigi")
void fun() {}
@("mimi")
void fun(int) {}
void main()
{static foreach (t; __traits(getOverloads, test, "fun"))
static foreach(attr; __traits(getAttributes, t))
pragma(msg, attr);
//打印
gigi
mimi

3,棄用無效非空增量語句
該最后for語句不應(yīng)產(chǎn)生值.現(xiàn)在檢測并顯示棄用消息.以下for語句都會觸發(fā)棄用:

// 無副作用的計算"j"
int j;
for (;; j) {...}
// 不必要的解引用
for (ubyte* sp;; *sp++) {...}
// 第一個句子是塊語句
// 最后句子是函數(shù)字面,而不是塊語句
for({j = 2; int d = 3;} j + d< 7; {j++; d++;}) {...}

注意:調(diào)用返回的函數(shù),即使函數(shù)閑著,也不棄用.這是模板代碼.
4,現(xiàn)在可在棧上分配賦值給數(shù)組變量的數(shù)組字面.
以前,它們總是與垃集一起分配,因此在@nogc中或更好C代碼不可用.導(dǎo)致頻繁使用以下方法:

void main() @nogc
{int[3] buffer = [10, 20, 30];
    int[] arr = buffer[];
}

現(xiàn)在可用一行來寫:

void main() @nogc
{scope int[] arr = [10, 20, 30];
}

具有以下限制:
1,必須顯式注解變量域,而不僅是推導(dǎo)
2,必須傳遞-preview=dip1000,以避免在舊代碼中引入內(nèi)存破壞.
3,注意,在@系統(tǒng)@信任代碼中,編譯器不會驗證變量是否逃逸.
4,數(shù)組字面必須初化變量.隨后數(shù)組字面賦值仍然使用GC.
5,數(shù)組元素不能有析構(gòu)器
其中一些限制可能會在未來取消.

5,靜斷現(xiàn)在支持多個消息參數(shù)
條件計算結(jié)果為時,后續(xù)式轉(zhuǎn)換然后連接.生成的串診斷錯誤一起打印出來.

enum e = 3;
static assert(false, "a = ", e);

打印:

`file.d(2)`:錯誤:靜斷:`a=3`

6,添加-preview=systemVariables
自接受DIP1035系統(tǒng)變量以來,@safe代碼無法再訪問標(biāo)記為@system的變量.為了避免代碼中斷,編譯器從發(fā)出棄用警告開始.預(yù)覽開關(guān)會轉(zhuǎn)換為錯誤,且在未來版本默認(rèn)啟用.

@system int* p;
struct S
{@system int i;
}
void main() @safe
{int x = *p; // 有開關(guān),算失敗,否則,發(fā)出棄用
    S s;
    s.i = 0; // 同上.
}

注意,目前僅限顯式標(biāo)記為@system的變量,尚未實現(xiàn)基于變量初化器的推導(dǎo)@system.

運(yùn)行時更改

生成Throwable.TraceInfo,默認(rèn)值現(xiàn)在是@nogc的.工作方式:
運(yùn)行時現(xiàn)在有2個跟蹤相關(guān)函數(shù),一個分配,另一個釋放跟蹤信息.兩者都通過相同的Runtime.traceHandler函數(shù)來設(shè)置的.設(shè)置釋放函數(shù)的第二個參數(shù)是可選的(因此不會影響現(xiàn)有代碼).
Throwable時,如果尚未設(shè)置跟蹤信息,運(yùn)行時用指定函數(shù)來分配跟蹤信息.如果釋放函數(shù)為非空,則復(fù)制函數(shù)指針到可拋(Throwable)對象中,并復(fù)制到infoDeallocator新成員中.
析構(gòu)可拋(Throwable)時,如果設(shè)置了infoDeallocator成員,則會在info成員上調(diào)用它.
默認(rèn)分配器和釋放器現(xiàn)在使用Cmalloc并自由分配和釋放TraceInfo.現(xiàn)在除了TraceInfo對象自身的分配,幾乎都已是nogc了.
好處:
現(xiàn)在可在GC收集例程運(yùn)行時生成棧跟蹤.
InvalidMemoryOperationError現(xiàn)在有棧跟蹤.
鮮為人知的是,即使在@nogc函數(shù)中,拋Throwable也是在使用GC,但現(xiàn)在(默認(rèn))不再是這樣.
已修復(fù)一些GC掛起.
可能缺點(diǎn)是,在最終析構(gòu)Throwable時釋放TraceInfo,從而導(dǎo)致潛在指針懸掛.如果從Throwable外復(fù)制info,請確保不要讓它超出可拋(Throwable)的生命期,或確保設(shè)置infoDeallocator成員為null.

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文題目:d的102版更改-創(chuàng)新互聯(lián)
鏈接分享:http://www.rwnh.cn/article38/dghesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站制作、品牌網(wǎng)站建設(shè)用戶體驗、自適應(yīng)網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
台前县| 册亨县| 仁寿县| 日照市| 全椒县| 烟台市| 海原县| 呼图壁县| 正安县| 盱眙县| 高要市| 龙游县| 泸定县| 黔南| 中西区| 稻城县| 娄烦县| 山东省| 武陟县| 平定县| 焦作市| 招远市| 岑溪市| 日照市| 建平县| 绍兴县| 武川县| 海阳市| 通州市| 鹤岗市| 大关县| 山阴县| 镇雄县| 开阳县| 合作市| 凤冈县| 邵武市| 白城市| 金坛市| 昭觉县| 衡东县|