Login  |  繁體中文
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
Previous Issue

Apple 並行處理框架 Grand Central Dispatch 開放源碼

Grand Central Dispatch (GCD) 可說是 Apple 最新作業系統 Snow Leopard 中最令人驚艷的特色之一,透過它,開發者可以更輕易地撰寫運用多核心電腦的軟體。如今,Apple 宣佈將 GCD 這套強大的並行處理框架 (concurrency framework) 原始碼釋出給開放源碼社群使用。

GCD 的用戶空間 (userspace) 程式庫元件,libdispatch,透過 Apache Software License 授權提供下載。此舉有助於在其他平台運用這項技術。Apple 在核心層級的 GCD 最佳化程式碼也已經作為 XNU 原始碼樹的一部份公開出來。

GCD 針對全系統提供了高效率的執行緒集區 (threadpool),部份的高階程式語言建構則可以為應用軟體開發者簡化並行處理。

對於 Snow Leopard 與 OS X 開發者,GCD 儘管是一大優點,卻無法運用在其他平台上。藉由 GCD API 的開放源碼,Apple 希望如 Linux 等其他作業系統可以採用這套技術,擴大該技術的普及率。

可以作為 GCD 借鏡的,是 Apple 的 Safari 瀏覽器底層技術 WebKit,後來被 Google 採納使用於 Chrome 瀏覽器。WebKit 的成功,讓 Apple 看見開放源碼帶來的好處,該公司可獲益於開放源碼社群不斷的程式碼改進。

儘管 GCD 如今公開釋出,在廣泛採用於其他平台前,仍然存在一些技術與授權上的障礙。例如,高階的 GCD API 使用了由 Apple 開發的 C 語言延伸,blocks。這套技術目前仍然未被上游的 GNU Compiler Collection (GCC) 主線所採納,意味著必須透過 Clang 與 LLVM 才能在 Linux 上使用。雖然似乎有辦法在沒有 blocks 支援上使用 GCD,但其實用程度不高。Apple 這次提供了 blocks 數種實作的原始碼,包括針對 LLVM Clang 編譯器與該公司的 GCC 分支。

Apple 的 blocks 基本上近似於 closures,是可以存取區域變數的匿名函式。這個概念被 Ruby 程式開發者所採納,也可見於若干函數型程式語言 (functional programming languages) 之中。這項語言功能在許多情況下有助簡化程式碼,不僅限於並行處理。

組成 GCD 的三大元件,如今公開給外界使用、改進,其中包括:用戶空間的 libdispatch,其中包含的 API 可以讓開發者呼叫,將程式碼 blocks 排程到佇列中。xnu 是執行 OS X 的核心,在 Apple 尚未購併 NeXT 前,最初是由 NEXTSTEP 所開發。xnu 的意思是 “X is Not Unix”。由於 xnu 包含了來自 FreeBSD 的程式碼,從一開始就是開放源碼。

最後則是 llvm,也就是設計用來最終取代 gcc 的 Low Level Virtual Machine 編譯器技術。儘管技術上並非 GCD 的必要元件,但 llvm 支援了關鍵的 blocks。

Apple 的 blocks 實作採用的是 MIT 授權,是一套與 GPL 相容的授權方案,意味在納入上游 GCC 時不會有授權上的障礙。不過,libdispatch 本身採用的是 Apache 授權,該授權與 GPLv2 授權不相容。Apache 授權與 GPL 的相容問題在 GPL 第三版已獲得解決。

如此一來,libdispatch 將無法被 GPLv2 的應用軟體使用。雖然許多 Linux 應用軟體採用 GPLv2 或之後的授權,代表可以使用第 2 或第 3 版的授權,仍有部份應用軟體僅採用 GPLv2 而無法與 Apache 授權的程式碼混合使用。這一點可能在 Linux 開發者之間構成對 GCD 的疑慮。


相關網址:
1.Apple 將 Grand Central Dispatch 開放源碼
2.Apple 公開 Grand Central; 阻礙 Linux 採用的挑戰




OSSF Newsletter : 第 135 期 FDL 與創用 CC 授權條款相容性問題初探:從維基百科談起

Category: FOSS News