2013-03-03 27 views
5

我在看D的許可證,看到前端是開源的,但後端不是;後端是什麼?D語言是否有任何「專有」行李?

爲什麼GNU製作gdc?它與授權有關嗎?

+3

我投票結束這個問題作爲題外話題,因爲它涉及許可或法律問題,而不是編程或軟件開發。 [見這裏](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964)和[here](http://meta.stackexchange.com/questions/139804/can-許可問題永遠在主題上)以獲取詳細信息,以及[幫助]瞭解更多信息。 – JasonMArcher 2015-06-16 16:40:04

回答

11

有不同的目標編譯器。前端分析源代碼,而後端執行實際的編譯。前端是開源的,它可以用於多個編譯器。

DMD是D的閉源默認實現。它是功能完整的,但可能不是最好的編譯器性能。

GDC使用成熟的GNU compiler collection作爲後端。相同的後端廣泛用於C或C++編譯,並具有高級優化功能。

LDC針對LLVM平臺。這允許一些有趣的東西,如高速編譯,便攜式字節碼和jitting。

由於前端是在所有編譯器之間共享的,所以一個源文件將在每個編譯器上以相同的方式進行解析。將此與C或C++方言進行比較。

6

DMD只是D編譯器的參考實現,就像Glassfish是企業Java應用服務器的參考實現一樣。 DMD的後端根源於DigitalMars C/C++編譯器。有道理,因爲原創的D創建者是DigitalMars C/C++編譯器的作者,對嗎?沃爾特不能合法地完全開放源代碼,因爲它的一部分已經取得,而這是在賽門鐵克的手中後端...

其次,GNU 沒有使GDC - 它是由少數愛好者製作,並希望將很快被合併到GCC樹中。 GDC是GPL,因此很簡單。

也提到了LDC - 它使用LLVM作爲後端。

真正重要的是D前端是開源的。 DMD的後端不是無關緊要,因爲有很多選擇。無論如何,GCC和LLVM後端都優於DMD後端。

如果你正在編譯器/解釋器設計,我建議你看看SDC,MCI和DIL項目。我想你有關於http://wiki.dlang.org的更多信息。

+0

對於它的價值(幾個月後),還有一個D for .NET編譯器。 [鏈接](http://dnet.codeplex.com/) – nerdenator 2013-05-31 03:34:59

+0

我從未聽過有關D.NET多年的消息......很多人都說它是死的項目。可惜,這是一個有趣的項目,恕我直言。 – DejanLekic 2013-05-31 11:56:45

相關問題