Vimのコードベースを刷新することを目指すプロジェクト、Neovimの3回目の(そして遅れた)ニュースレターへようこそ。
次回のニュースレターは11月初旬に発行予定です。Neovimの愛好家を圧倒的な畏敬の念で過負荷にしないように、隔月に変更されました。
GitHubのIssueトラッカーには、現在1,000件以上のIssue/プルリクエストがあります。幸運な1000件目のプルリクエストは、8月直前にオープンされました。
7月のニュースレターで述べたように、ドキュメントはneovim.io/doc/に正常に移動されました。
開発者やコントリビューター向けのより具体的なレポートだけでなく、一般的なドキュメントへのリンクも含まれています。これらのレポートはすでに、開発者がコードベースに貢献し、改善するのに役立っています。
特に順序はありませんが、過去2ヶ月間のトップニュースは以下のとおりです。
system()
の実装この問題は、6月のニュースレターで、まだ実現していないこととして言及されていました。
@aktauが、一時ファイルにリダイレクトするのではなく、パイプとジョブシステムを使用するようにVimLのsystem()
関数の実装を完了しました。この変更により、大幅なスピードアップが実現し、一部のパーミッションの問題(まだサポートされていないWindowsに主に影響します)が回避されます。
system()
の古い実装の遅さは、呼び出されたプロセスの出力が大きい場合に特に顕著でした。例としては、system('cat largefile')
があります。
新しい
system()
コードに関するバグレポートが1件ありました。それは、Selectaプラグインとうまく連携しないというもので、こちらで説明されています。
@aktauは、多くのシステムで高解像度のクロックを提供するlibuvの機能を活用して、このプルリクエストでNeovimのプロファイリング機能を改善しました。
以前の実装ではgettimeofday()
を使用していました。この関数はWindowsではサポートされていなかったため(前のセクションで詳述したように)、NeovimをWindowsで実行する際の障壁となっていました。
Vimでのプロファイリングの詳細については、:help profiling
を実行してください。
プロジェクトの開始時に、MoonScriptとLuaの議論は広く議論されました。
ユニットテストの言語として、MoonScript(Luaにコンパイルされる言語)が選択されました。ユニットテストライブラリのBustedを更新した後、一部のユニットテストが失敗していました。
したがって、テストを単純化し、抽象化のレイヤーを削除するために、依存関係を削除することが決定されました。@tarrudaが関連する変更とプルリクエストを行いました。
Neovimがmsgpack-rpcの仕様に完全には準拠していないことに関する議論が起こりました。
ここ数週間で、@tarrudaが、仕様を完全にサポートするための実装を完了しました。
彼はまた、msgpackの使用を最新バージョン2.0にアップグレードする作業も行っており、これはすぐにマージされるはずです。
最初のニュースレターで、Pythonクライアントが最初に議論されました。それ以来、@tarrudaがさまざまな改善のためにリファクタリングしました。
@myitcvは、Pythonインテグレーションが機能する方法と同様の方法で、Goインテグレーションを追加する提案を行いました。この提案は、言語に依存しないことにも触れています。
ここでは詳細を説明するには膨大すぎるため、上記のリンクには、実装に関する詳細と議論も含まれています。
デッドコードまたはサポートされていないレガシーシステム向けのコードが、2つの異なるプルリクエスト(1、2)で削除されました。
まだコードが残っていたシステムには、SGI IRIS、BeOS、EBCDICが含まれていました。
Neovimで一時ファイルを作成する関数には、libuvにはない機能が必要でした。
Neovimのコントリビューターの1人である@Hiniduが、新しい関数uv_fs_mkdtemp
を追加するために、プルリクエストをlibuvに送信しました。この変更(現在はlibuv バージョン0.11.27の一部)は、一時的なファイル/ディレクトリの作成を提供するためにNeovimによって使用されており、変更はプラットフォーム間で機能します。
クロスプラットフォームコードがlibuvに提供されたため、すべてのlibuvベースのプロジェクトがこの変更の恩恵を受けることができます。
4月9日に、NeovimのBountysourceで最初のバウンティが作成されました。リクエストは、Christian BrabandtによってVimからNeovimに書かれた既存のパッチを移植することでした。このパッチは、行が折り返されたときにインデントを一致させるbreakindent
オプションを提供します。
@fmoralescは、バウンティを請求するためにプルリクエストを作成しました。少し議論が行われ、いくつかの修正が行われました。それ以来、それらはマスターブランチにマージされ、@fmoralescにバウンティが授与されました!
@war1025が、2つの既存ファイル:buffer.cとfileio.cのユニットテストを追加しました。リファクタリングされるにつれて、コードにユニットテストカバレッジを追加することは、Neovimの目標の一部です。
@tarrudaは、msgpack APIを通じてNeovimのコア機能の一部を公開するプルリクエストを行いました。
進化しているのでまだ不安定ですが、このコア機能には以下が含まれます。
@tarrudaが、Neovimをバックグラウンドで起動し、ヘッドレスインスタンスとして使用できるようにする--embedded-mode
フラグを追加しました。
技術的には、stdinとstdoutを使用してクライアントと通信するために、msgpack-rpcを使用しています。
Neovimは、Microsoft Visual C++とMinGWの両方を使用して、それぞれこのIssueとこちらでコンパイルに成功しました。
開発をサポートしたい場合は、こちらのビットコインで寄付してください:1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ
または、Neovim Bountysourceページでチームを支援してください。
経験豊富な開発者、または経験はないが学びたい場合は、GitHubリポジトリにアクセスし、README、CONTRIBUTINGガイド、そして最後にWikiをチェックして詳細を確認してください。
協力する機会はたくさんあり、やるべきことはたくさんあります。
この3回目のニュースレターに関するフィードバックや提案はありますか?Neovim Twitterを通じてお気軽にご連絡ください。
また、RSSフィードを購読して、Neovimの世界で何が起こっているかを常に把握してください。次回のニュースレターは、2ヶ月後の11月初旬にリリースされます。
それでは次回まで。:wq