電子報 #1 - 新的希望

2014年6月

歡迎來到 Neovim 的第一份電子報,這是一個希望為我們都喜愛的文字編輯器帶來新開始的專案。

我們徵詢了意見,而大家的支持非常踴躍;社群想要一份電子報。

計畫是每月發布一份電子報,詳細說明專案的進展以及任何其他值得報導的消息。

未來的電子報將在每個月的第一個星期五發布。因此,下一份電子報預計在7月4日發布。

補追進度

讓我們回顧一下五月份之前幾個月的一些里程碑

一般新聞

開發新聞

綜觀全局

您可能想知道,「自從從 Vim 分叉以來,到底改變了多少?」好吧,讓我們看看一些 Git 統計資料。

考量到 2014 年 1 月 31 日發生的 Vim 的初始導入,總共有 77 位貢獻者提交了 1,010 次提交。

根據 git diff --stat,這導致:887 個檔案變更、575371 次插入(+)、500868 次刪除(-)。

使用更複雜的工具(例如 gitinspector),我們可以看到一些更有趣的統計數據。分析的完整報告可以在此 Gist 中檢視。

近期開發

現在我們已經詳細說明了五月份開始之前的一些里程碑,我們可以看看上個月發生了什麼事。

移除預設功能巨集

Neovim 開啟了一些在 Vim 中於編譯時為可選的功能。這導致了各種不再需要的 ifdef FEAT_* 巨集。這些巨集已被移除

移除內建加密

關於 Neovim 繼承的加密程式碼的討論浮出水面。決定應該移除加密程式碼,而不是提供可能不安全的實作。然後迅速處理了移除。

Nvim 命名空間

由於與 Neovim 的某些標頭發生名稱衝突,因此將原始碼移至 'nvim' 命名空間。同時也決定從那時起,nvim 將成為專案的內部/技術識別碼。

改進的記錄

Vim 確實有一些記錄功能,但已盡力建立更好的記錄公用程式。該公用程式使用巨集,並且可以記錄標準偵錯訊息、基本資訊、警告訊息或錯誤。記錄可以根據是否定義 NDEBUGDISABLE_LOG 來開啟或關閉。

移除 Vim 特定整數類型

在可以使用標準類型的地方,使用了 Vim 特定類型。有關這些類型的完整資訊可以在此指南中找到。

到目前為止,short_uint_ulong_i 類型已被移除long_u 的移除也正在進行中,並且計畫在不久的將來移除 char_ulong 類型。

記憶體不足錯誤

當沒有足夠的記憶體進行配置時,不是檢查 malloc 是否傳回 NULL,而是引入了一組函式來處理這些記憶體不足錯誤。

如果發生這種情況,這些函式會負責錯誤處理。移除檢查記憶體不足的問題已歷經多個議題(和幾個月),並已在此議題中列出。

記憶體錯誤的最後移除幾乎已完成。

重構檔案函式

名為 mch_stat() 的函式用於填入一個包含指定檔案名稱相關資訊的 struct。該結構包含關於檔案的 stat 資訊。

為了提高開發人員的清晰度,將此程式碼重構成在 os/fs.c 中定義的新函式。然後將對 mch_stat() 的現有呼叫切換過來

Coverity 支援

Coverity Scan 是一項服務,可對原始碼執行靜態分析,以尋找缺陷和漏洞。它可以查看執行中的多個路徑,並找出可能僅在特定條件下出現的問題。

除了與 TravisCI 一起使用的持續整合之外,Neovim 現在還有一個每週執行多次的 Coverity 檢查

API 事件

您現在可以偵聽和註冊各種 API 事件。這是在發出請求時使用 API 通道 ID 來完成的。

此外,還建立了一個Wiki 頁面,以詳細說明目前外掛程式架構的樣貌。如頂部警告所示,並非所有功能都已實作,但請查看以了解更多資訊。

未來發展

以下是正在進行中或在路線圖上的事項清單。

  1. 完成將作業系統層的其餘部分移植到 libuv。
  2. 繼續 @ZyX-I 進行 VimL -> Lua 轉譯器 的工作。
  3. 討論,使用 include-what-you-use 來清理標頭和 include。
  4. 在使用 system() 時,移除暫存檔案的使用,並改用管道
  5. 新增重繪事件的功能。
  6. 新增 OS X 的 Travis 建置

關於 VimL 至 Lua 轉譯器的注意事項

有人對於此功能背後的動機提出了一些質疑。理由是 VimL 語言的評估位於名為 eval.c 的檔案中。

該檔案目前有 19,164 行程式碼。透過建立轉譯器,可以移除此評估器的需求。相反地,Lua 程式碼可以依賴新開發且經過適當測試的 API。

第一個版本

郵件列表中被問及進度時,Thiago 詳細說明了第一個正式版本所需的項目清單

  • 完成重繪事件的實作 <- 現在正在做這個
  • 使用重繪事件來實作基於 busted/lua 的新整合測試基礎架構。
  • 編寫跨平台的 GUI 程式
  • 在 Python 用戶端之上為舊版 Python 外掛程式提供相容層(除了使用 7.4 中引入的 Python 功能的外掛程式之外)
  • 使其在 Windows 上編譯/執行(我認為這不會很困難,因為很多平台特定的東西已經在 libuv 上執行)

如果有志願者,我會在完成重繪事件的實作後委派編寫 GUI 程式,因為我不擅長設計 UI。

捐贈

如果您想幫助支援開發,您可以使用此處的比特幣捐款:1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ 或在 Neovim Bountysource 頁面上支持團隊。

貢獻

如果您是經驗豐富的開發人員,或是經驗不足但想要學習,請造訪 GitHub 儲存庫,並查看 READMECONTRIBUTING 指南,以及最後的 Wiki,以了解更多資訊。

有很多機會可以提供協助,並且有很多事情可以做。

總結

您對於這第一份電子報有任何意見或建議嗎?請隨時透過 Neovim Twitter 聯絡我們。

同時,請務必訂閱 RSS 訂閱,以便隨時掌握 Neovim 世界正在發生的事情。下一份電子報將在 7 月的第一個星期五發布。

下次見。:wq

新聞

新聞存檔中尋找更多更新。還有一個 RSS 訂閱

什麼是 Neovim?

Neovim 是一個基於 Vim 的文字編輯器,專為可擴充性可用性而設計,旨在鼓勵新的應用程式和貢獻

討論

造訪 #neovim:matrix.org 或 irc.libera.chat 上的 #neovim 與團隊聊天。