Build 2019 上微软的开源动作有点不一样
微軟今年舉辦的 Build 開(kāi)發(fā)者大會(huì)可謂是搶足風(fēng)頭,大會(huì)第一天就放了不少大招:宣布新的命令行終端?Windows Terminal、Windows 10 的 Linux 子系統(tǒng)?WSL 2 將運(yùn)行真正的 Linux 內(nèi)核、跳過(guò) .NET 4 宣布 .NET 5 的計(jì)劃、宣布?Web 版本的 VS Code (Visual Studio Online)。
這種積極擁抱開(kāi)源的態(tài)度對(duì)微軟而言不是什么新鮮事,畢竟他們家的兩個(gè)重量級(jí)項(xiàng)目 —— Visual Studio Code 和?.NET Runtime 早已開(kāi)源,并按照規(guī)范的開(kāi)源、社區(qū)驅(qū)動(dòng)的方式來(lái)運(yùn)作。
但微軟這次在 Build 2019 上的開(kāi)源舉動(dòng)有點(diǎn)不一樣。
我們都知道,微軟在 Windows 10 一周年更新的版本中引入了名為?Windows Subsystem for Linux (WSL)?的 Linux 子系統(tǒng),不過(guò) WSL 只是 Linux 兼容層,而非真正的 Linux 內(nèi)核,它是由微軟自己開(kāi)發(fā)的內(nèi)核組件,提供了與 Linux 內(nèi)核相同的 API,本質(zhì)上是將 Linux API 翻譯到 Windows NT kernel API。
由于 WSL 使用的是自研的內(nèi)核組件,所以它天生就有不少缺陷,例如無(wú)法使用 Linux 驅(qū)動(dòng)(尤其是文件系統(tǒng)驅(qū)動(dòng)),這使得它的文件系統(tǒng)性能只有真正內(nèi)核的二十分之一。另外,WSL 提供的 API 集也比較陳舊,甚至部分 API 都沒(méi)有實(shí)現(xiàn),還有的 API 即便實(shí)現(xiàn)了也只是部分實(shí)現(xiàn)。
這里有人可能會(huì)問(wèn),反正 Linux 內(nèi)核是開(kāi)源的,既然微軟自己做得不好,為什么不直接把現(xiàn)成的拿過(guò)來(lái)用呢?微軟當(dāng)然不傻,之所以選擇自研正是為了避免使用 Linux 內(nèi)核的代碼,因?yàn)?Linux 內(nèi)核使用的 GPLv2 許可證具有“傳染性”,這可能會(huì)迫使微軟開(kāi)源 WSL,甚至 Windows 系統(tǒng)的部分代碼。雖然微軟愛(ài)開(kāi)源,但也怕愛(ài)過(guò)了頭。
所以剛被公布的 2 代 WSL 才會(huì)顯得有點(diǎn)不一樣。微軟表示 WSL 2 會(huì)在輕量級(jí)的虛擬機(jī)里運(yùn)行真正的 Linux 內(nèi)核。通過(guò)運(yùn)行完整的內(nèi)核,WSL 2 不僅大幅度提升了文件系統(tǒng)性能,也提供了完整的系統(tǒng)調(diào)用兼容性。
更重要的是,WSL 2 這次不再“畏懼” Linux 內(nèi)核所采用的 GPLv2 許可證,因?yàn)槲④浶妓鼘⒏鶕?jù)許可證要求完全開(kāi)源 WSL 2 的內(nèi)核補(bǔ)丁和修改。
基于 GPL 許可證的項(xiàng)目構(gòu)成了 Windows 系統(tǒng)的一部分,這意味著它骨子里已經(jīng)擁有開(kāi)源的“基因”,身上某處流淌的是開(kāi)源的“血液”。
除了運(yùn)行真正 Linux 內(nèi)核的 WSL 2,新發(fā)布的命令行終端 Windows Terminal 也是這次大會(huì)上的那個(gè)“不一樣”。
相信很多人都知道 Windows 的命令行工具(cmd.exe)依賴于一個(gè)名為 conhost.exe 的程序,它在系統(tǒng)中被稱為“控制臺(tái)窗口主機(jī)”,是命令行程序的宿主進(jìn)程。
conhost.exe 實(shí)現(xiàn)了 Windows 命令行工具的基礎(chǔ)架構(gòu),同時(shí)提供?Windows Console API、輸入引擎、渲染引擎和用戶配置信息,在系統(tǒng)中是一個(gè)十分重要且核心的程序。
作為 Windows Terminal 項(xiàng)目的一部分,微軟采用?MIT 許可證將 conhost.exe 一同開(kāi)源出去。這絕對(duì)稱得上是史無(wú)前例的操作,雖然微軟此前也曾將?Windows 系統(tǒng)里面的項(xiàng)目進(jìn)行開(kāi)源,但都是一些不太重要的工具,如計(jì)算器,或是其他已不再更新的程序。
這次將 conhost.exe 開(kāi)源,不但是微軟首次開(kāi)源核心的 Windows 系統(tǒng)代碼,更重要的是,如果 Windows Terminal 穩(wěn)定后并被集成到 Windows 系統(tǒng)中,那么它將是首個(gè)以開(kāi)源方式進(jìn)行開(kāi)發(fā)的 Windows 核心組件。
上面的兩個(gè)“不一樣”可以讓我們深刻感受到微軟的轉(zhuǎn)變,從它對(duì)待開(kāi)源的態(tài)度,對(duì)開(kāi)源的貢獻(xiàn),不難看出微軟把開(kāi)源看得十分重要?——?不再僅僅是將一個(gè)個(gè)獨(dú)立的項(xiàng)目開(kāi)源,而是將開(kāi)源融入到 Windows 系統(tǒng)乃至微軟的方方面面,并且能夠持續(xù)發(fā)展。
一直以來(lái),大家都不認(rèn)為、更不相信微軟會(huì)開(kāi)源 Windows 系統(tǒng),但按現(xiàn)在的趨勢(shì),有生之年見(jiàn)證微軟開(kāi)源 Windows 系統(tǒng)也不是沒(méi)可能的事,你覺(jué)得呢?
原文地址:https://news.cnblogs.com/n/625180/
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的Build 2019 上微软的开源动作有点不一样的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: aelf帮助C#工程师10分钟零门槛搭建
- 下一篇: 在kubernetes 集群内访问k8s