持續發展中的 D 語言

1245233223|%Y-%m-%d|agohover

距離 D 1.0 正式發表已經過了兩年半,儘管 D 的使用者依然是小眾,但其設計者 Walter Bright 以及整個社群並沒有閒著,而是持續不斷地對新版本的規格:D 2.0 進行改良。而最近 Modern C++ Design 的作者 Andrei Alexandrescu 就針對 D 語言發表了一篇文章:The Case for D,提到許多他們在 D 語言中新加入的功能。D 已經逐漸脫離「比較好用的 C++」,而開始走出自己的方向。

除了非常微妙的 const/invariant 語法外,最近 D 2.0 又發佈了一項重大改變:全域變數預設會儲存在 TLS(Thread Local Storage)中,由各執行緒獨有,除非明確宣告為 shared 才會讓所有執行緒共享。除了減少因 race condition 產生的錯誤外,這樣的設計事實上也有助於效能提升。在多核心的電腦上,TLS 中的資料可以放在核心內的 L1 cache 中而不用擔心其它的核心對它寫入資料,大幅降低了維持 cache coherency 的成本。

另一方面,兩套標準函式庫 Phobos/Tango 之爭也有一線曙光。一開始接觸 D 的使用者往往對於標準函式庫感到困惑:官方的標準函式庫 Phobos 雖然簡單易用卻功能陽春,社群主導的 Tango 雖然功能強大,卻和 Phobos 水火不容,無法並存。這個問題在 D 2.020 中終於有了解決方案:Walter 把 Phobos 中核心的 druntime 抽出,讓 Phobos 與 Tango 共存不再是問題。另一方面,由於 Andrei 的大力支援,在 D 2.0 中的 Phobos 也非昔日的吳下阿蒙,range 的概念讓它比 STL iterator 更安全。

518qy3emLQL._SL500_AA240_.jpg

Andrei 也透露出他正在著手撰寫 The D Programming Language,也許 D 2.0 邁入 stable 的日子也不是遙遙無期了。


Comments

Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License