今週のRust 533

2024-02-07

説明

本文は ChatGPT(gpt-4-1106-preview) によって翻訳されました。

こんにちは、そして「This Week in Rust」の新しい号へようこそ! Rustは、誰もが信頼性が高く効率的なソフトウェアを構築できるプログラミング言語です。 これは、その進歩とコミュニティの週次の要約です。 何かを取り上げてほしいですか?Twitterの@ThisWeekInRust、Mastodonの@ThisWeekinRustでタグ付けするか、プルリクエストを送ってください。 関わりたいですか?貢献を歓迎します

This Week in Rustは、GitHubでオープンに開発されており、アーカイブはthis-week-in-rust.orgで見ることができます。 今週の号に何か間違いを見つけたら、PRを提出してください。

Rust コミュニティからの更新情報

公式

財団

プロジェクト/ツーリングの更新

観察/考察

Rustチュートリアル

その他

今週のクレート

今週のクレートは、組み込みデバイスでCLIを簡単に作成できるライブラリ、embedded-cli-rsです。

この自己推薦をしてくれたSviatoslav Kokurinに感謝します!

次週の提案と投票をこちらで送信してください

参加の呼びかけ;プロジェクトとスピーカー募集

CFP - プロジェクト

オープンソースプロジェクトに貢献したいと思っていましたか? どこから始めればいいのか分からなかったですか? 毎週、Rust コミュニティのタスクをいくつかハイライトして、始めるためのピックアップを提供しています!

これらのタスクにはメンターが利用可能な場合もあります。詳細についてはタスクページを訪れてください。

Rust プロジェクトのオーナーで、貢献者を探している場合は、ここでタスクを提出してください。

CFP - スピーカー

何かクールなものを共有したい新しいスピーカーや経験豊富なスピーカーはいますか? このセクションでは、計画中のイベントをハイライトし、スピーカーとして参加するための提出を受け付けています。

  • RustNL 2024 CFP 締切 2024-02-19 | デルフト, オランダ | イベント日: 2024-05-07 から 2024-05-08
  • NDC Techtown CFP 締切 2024-04-14 | コングスベルグ, ノルウェー | イベント日: 2024-09-09 から 2024-09-12

イベントのオーガナイザーで、イベントのリーチを広げたい場合は、TWiR への PR を通じて提出サイトのリンクを提出してください。

Rustプロジェクトからのアップデート

先週、309のプルリクエストがマージされました。

  1. rustdoc: trait.impl, type.impl: シリアライゼーションの順番に依存しなくするためにimplをソートする

    • Rustドキュメンテーションツールであるrustdocが、トレイトや型の実装(impl)の表示を安定させるために、生成されるドキュメント内での表示順をソートする改善を行いました。
  2. clippy: redundant_locals: 値で取るクロージャのキャプチャを考慮に入れる

    • Rustの静的解析ツールClippyにおいて、ローカル変数が冗長かどうかを判定するlintに対して、値渡しでキャプチャされた変数も考慮するように改善されました。
  3. clippy: 新しいlint: manual_c_str_literals

    • C文字列リテラルを手動で作成する際の問題を検出する新しいlintがClippyに追加されました。
  4. clippy: lint_groups_priority lintを追加

    • lintグループの優先度を管理するための新しいlintがClippyに導入されました。
  5. clippy: 新しいlint: ref_as_ptr

    • 参照からポインタへの不適切な変換を指摘する新たなlintがClippyに加わりました。
  6. clippy: wildcard_importsのための設定を追加し、特定のインポートを無視する

    • ワイルドカードインポート(*を使ったインポート)のlintに対し、無視する特定のインポートを設定できるようにしました。
  7. clippy: ラベル付きのブロックを削除しないようにする

    • Clippyで、コード内で意図的に使用しているラベル付きブロックを削除しないように修正が行われました。
  8. clippy: unused_io_amount lintでのOk(lit), unrachable!やunwrapの..の誤検知を修正

    • 入出力関数で未使用の戻り値がある場合のlintで、特定の関数やマクロが原因での誤検知が修正されました。
  9. rust-analyzer: "インポートを正規化"のアシスト機能とuse文を正規化するためのユーティリティを追加

    • RustコードのIDEサポートツール、rust-analyzerに、「インポート文を正規化する」助けをしてくれる機能と、それを可能にするユーティリティが追加されました。
  10. rust-analyzer: テストで参照検索結果を除外する機能を有効にする

    • rust-analyzerで、コード内の参照検索を行う際にテスト結果を除外するオプションが有効になりました。

今後のイベント

2024年2月7日〜2024年3月6日の間のRustyイベント 🦀

バーチャル

アジア

ヨーロッパ

北アメリカ

オセアニア

Rustのイベントを開催している場合は、カレンダーに追加して、ここで言及されるようにしてください。イベントへのリンクを追加することを忘れないでください。 アクセスするには、Rust Community Teamにメールしてください。

Rustの仕事情報:

TWiR(This Week in Rust)は個々の求人投稿の掲載を停止しました。この変更については以下のリンクで詳細を読むことができます。

https://github.com/rust-lang/this-week-in-rust/issues/3412

最新の求人情報については、Redditのr/rustにあるWho's Hiringスレッドをご覧ください。

週間の名言

私の考えでは、ArcやMutex、変数/参照の可変性、そして最終的にasyncとawait構文がどのようにコンパイルされるのかを理解していなければ、非同期Rustを正しく流暢に使用することはできません。Rustは、物事がそれぞれの方法や理由でどのようにあるべきかを理解することを強制します。あなた自身が面倒なことをすることがあれば、それを行うための最小限の抽象化を提供します。

非同期/awaitの動作を理解することを強く強制された2つのプロジェクトに取り組む機会がありました。最初の1つは、完全に同期的であり、外部サービスと対話するためには同期トレイトのみが必要なライブラリを変換することです。これはすべて良さそうに思えますよね?しかし、ブラウザに移植しようとすると問題が発生します。ブラウザはシングルスレッドで、JavaScriptランタイムをまったくブロックすることはできません!それは、Rustユーザーにとって最も奇妙な環境です。既に他のプラットフォームに出荷されているライブラリ全体を書き換えることは単純に不可能です。

代わりに行ったことは、自分たちのジェネレーターを使用してネットワーク部分を非同期構文で書き換えることでした。考え方はシンプルです:ジェネレーターは呼び出されるとフューチャーを生産し、生成されたフューチャーは待機することができます。が!生成されたフューチャーにはジェネレーターへのarcポインタが含まれています。つまり、ジェネレーターに私たちが待っている値を渡すことができ、ジェネレーターへの参照を保持する呼び出し側は、その結果を機能にフィードバックして再開することができます。ブラウザでは、ネットワーク通信を導出するためにネイティブブラウザAPIを使用し、他のプラットフォームでは通常のブロッキングネットワークコールを使用します。外部インターフェースは他のプラットフォームに対して変更されません。

正直に言って、これを可能にする他の言語があるとは思えません。たぶんCやC++はできるかもしれませんが、開発速度や開発者の経験が同じではありません。

他の人もすでに言及しているかもしれませんが、Rustの現在の非同期モデルは最も合理的な選択です。それは開発者に苦痛を与えるかもしれませんが、一方で、組み込みやWebAssemblyにとってより良い非同期モデルはないのです。

/u/Top_Outlandishness78 on /r/rust

提案してくれたBrian Kungに感謝します!

次の週の名言を提出して投票してください!

This Week in Rust の編集者:nellshamrellllogiqcdmistmanericseppanenextrawurstandrewpollackU007Dkolharsamjoelmarceymariannegoldinbennyvasquez

メーリングリストのホスティングは The Rust Foundation によって提供されています

r/rustでディスカス