ニュースレター #1 - 新たな希望

2014年6月

Neovimの最初のニュースレターへようこそ。このプロジェクトは、私たち全員が愛するテキストエディターに新たな始まりをもたらすことを願っています。

私たちは尋ねました。そしてサポートは圧倒的でした。コミュニティはニュースレターを求めていました。

計画では、プロジェクトの進捗状況やその他ニュース価値のある情報を詳しく説明するために、毎月ニュースレターをリリースします。

今後のニュースレターは、毎月第一金曜日にリリースされる予定です。したがって、次回は7月4日に予定されています。

追いつく

5月以前の数ヶ月間のマイルストーンをいくつか見てみましょう。

一般ニュース

  • 3月20日: Neovim.org(現在はneovim.io)が再設計され、公開されました。
  • 3月23日: Bountysourceでの募金活動が終了し、約34,000ドルの支援を集めました。
  • 4月2日: Bountysourceが、募金活動を実施していない場合でもチームを支援する機能を追加しました。
  • 4月18日: 支援者向けのBACKERS.mdリストが追加されました。
  • 4月29日: 管理を担当するために、Justin KeyesがNeovimチームに追加されました。

開発ニュース

  • インポートされたソースコードがクリーンアップされました。
  • レガシーシステムのサポートが削除されました。
  • CMakeがNeovimのビルドに使用されるようになりました。
  • Cコードは現在、C99規格に従って記述されています。
  • 単体テストが、リファクタリングされたコードの一部に対して作成されました。現在、約120のテストがあります(さらに必要です)。
  • Vimに最初に提案されたジョブ制御コードが、Neovimで改善および実装されました。
  • OS固有のコードの大部分が、libuvを使用するように移植されました。
  • 新しいmsgpack APIを使用してリモートプロシージャコールを行うためのサポートが追加されました。
  • ノンブロッキング読み取り/書き込みの抽象化が導入されました。
  • 使用されている一部のフォーマット文字列は、オペレーティングシステム間で移植可能ではありませんでした。これは#296#490#574で対処されました。
  • 新しく公開されたAPIの開発が進められました。試してみるには、test Pythonクライアントをチェックしてください。

20,000フィートの上空から

「Vimからフォークされてからどれくらい変わったのか?」と疑問に思われるかもしれません。では、Gitの統計を見てみましょう。

2014年1月31日に発生したVimの初期インポートを考慮すると、77人の貢献者によって1,010件のコミットが行われています。

これにより、git diff --statによると、887個のファイルが変更され、575371個の挿入(+)、500868個の削除(-)が発生しました。

gitinspectorのようなより高度なツールを使用すると、さらに興味深い統計を見ることができます。分析の完全なレポートは、このGistで確認できます。

最近の開発

5月が始まる前のマイルストーンをいくつか詳しく説明したので、過去1ヶ月に何が起こったかを見てみましょう。

デフォルトの機能マクロの削除

Neovimは、コンパイル時にVimでオプションであった機能の一部をオンにしました。これにより、不要になったさまざまなifdef FEAT_*マクロが発生しました。これらのマクロは削除されました。

組み込み暗号化の削除

Neovimが継承した暗号化コードに関する議論が起こりました。安全でない実装を提供するよりも、暗号化コードを削除する必要があると判断されました。その後、削除は迅速に処理されました。

Nvim名前空間

Neovimの一部のヘッダーとの名前の衝突により、ソースコードは「nvim」名前空間に移動されました。また、nvimが、その時点からプロジェクトの内部/技術識別子になることが決定されました。

ログの改善

Vimにはいくつかのログがありましたが、より優れたロギングユーティリティを作成するための努力が行われました。ユーティリティはマクロを使用し、標準のデバッグメッセージ、基本的な情報、警告メッセージ、またはエラーをログに記録できます。ロギングは、NDEBUGまたはDISABLE_LOGが定義されているかどうかに応じてオンまたはオフにできます。

Vim固有の整数型の削除

標準型がより良い選択肢となる場所で使用されるVim固有の型があります。これらの型に関する完全な情報は、このガイドラインにあります。

これまでのところ、short_uint_u、およびlong_i型が削除されました。long_uの削除も現在進行中であり、char_uおよびlong型も近い将来に計画されています。

メモリ不足エラー

割り当てに十分なメモリがない場合にmallocNULLを返すかどうかを確認するのではなく、これらのメモリ不足エラーを処理するために関数群が導入されました。

これらの関数は、これが起こった場合にエラー処理を行います。メモリ不足のチェックの削除は、多くの問題(および数ヶ月)に及び、この問題に記載されています。

メモリエラーの最後の削除はほぼ完了しました。

ファイル関数のリファクタリング

mch_stat()という関数は、特定のファイル名に関する情報を含むstructを設定するために使用されました。structには、ファイルに関するstat情報が含まれていました。

開発者の理解を深めるために、このコードはos/fs.cで定義された新しい関数にリファクタリングされました。次に、mch_stat()への既存の呼び出しは切り替えられました。

Coverityのサポート

Coverity Scanは、ソースコードの静的分析を実行して、欠陥と脆弱性を探すサービスです。実行中の複数のパスを確認し、特定の条件下でのみ発生する可能性のある問題を見つけることができます。

Neovimには、TravisCIで使用される継続的インテグレーションに加えて、週に複数回実行されるCoverityチェックがあります。

APIイベント

リクエストを行うときにAPIチャネルIDを使用することで、さまざまなAPIイベントをリッスンおよび登録できるようになりました。

これに加えて、プラグインアーキテクチャの現在の外観を詳しく説明するために、Wikiページが作成されました。トップで警告されているように、すべての機能が実装されているわけではありませんが、詳細についてはこちらをご覧ください。

今後の展望

以下は、進行中またはロードマップにあるもののリストです。

  1. OSレイヤーの残りの部分をlibuvに移植を完了します。
  2. @ZyX-IによるVimL -> Luaトランスレータの作業を続けます。
  3. 議論されたように、ヘッダーとインクルードをクリーンアップするためにinclude-what-you-useを使用します。
  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ですでに実行されているため、これは難しいことではないと思います)

ボランティアがいれば、UIのデザインはあまり得意ではないため、再描画イベントの実装を完了した後、GUIプログラムの作成を委任するつもりです。

寄付

開発を支援したい場合は、こちらのBitcoinアドレスに寄付をお願いします: 1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ または、Neovim Bountysourceページでチームを支援してください。

貢献について

経験豊富な開発者の方も、経験は浅いが学びたいと思っている方も、GitHubリポジトリにアクセスして、READMECONTRIBUTINGガイド、そしてWikiを参照して詳細をご確認ください。

お手伝いできる機会はたくさんあり、やるべきことはたくさんあります。

まとめ

この最初のニュースレターに関して、フィードバックやご提案はありますか?Neovim Twitterを通じてお気軽にご連絡ください。

また、Neovimの世界で何が起こっているか最新情報を得るには、RSSフィードを購読してください。次回のニュースレターは7月の第1金曜日に発行予定です。

それではまた次回。:wq

ニュース

最新情報はニュースアーカイブでご確認ください。 RSSフィードもあります。

Neovimとは?

Neovimは、拡張性使いやすさのために設計されたVimベースのテキストエディタであり、新しいアプリケーションや貢献を促進します。

ディスカッション

チームとチャットするには、#neovim:matrix.orgまたはirc.libera.chatの#neovimにお越しください。