タグ

Rustに関するpoad1010のブックマーク (1,429)

  • Rustプロジェクトのビルド高速化に関するベストプラクティス(ローカル環境編)

    Windows環境については試していませんが、同様の効果が期待できそうです。特にWindows Subsystem for Linux 2(WSL2)やDocker Desktopを使っている場合は、この記事のLinux向けの内容をそのまま適用できます。 まずは計測 ビルド時間の削減に入る前に、現在のビルドにかかっている時間を計測し、何に時間がかかっているのかを把握しましょう。そうすることで後の改善効果がはっきりしますし、もし、記事の例とは状況が異なる場合でも適切な対応を取れるかもしれません。 cargo buildやcargo testに--timingsオプションを追加することで、個々のクレートのビルドにかかった時間を計測し、視覚化できます。 フルビルドにかかる時間を計測する ここで言うフルビルドとは、cargo cleanを実行したあとの何もない状態からビルドし直すことです。これに

    Rustプロジェクトのビルド高速化に関するベストプラクティス(ローカル環境編)
    poad1010
    poad1010 2025/01/08
    この記事をおすすめしました
  • [Rust] 自作言語での TUI デバッガのススメ

    Rust で作るプログラミング言語シリーズです。 バイトコードコンパイラの難しさ 書籍での心残りの一つが、第6章のバイトコードの難易度です。書ではプログラミング言語を作るにあたってステップ・バイ・ステップで難易度を上げていくように構成を考えていますが、第6章のバイトコードの実装の時点で難易度が急激に上昇します。例えば、次のようなジャンプアドレスの計算を行う必要があるのですが、これはかなり込み入ったロジック計算が必要になります。 条件分岐では、下図のようにジャンプしますが、このアドレス計算が厄介です。 ループについても同じくジャンプ命令が必要ですが、こちらはループの先頭にアドレスを戻します。 この実装の難しさは、プログラムの意味を理解する(意味論)ロジックと、それをバイトコードへ変換するロジックを一つとしてデバッグしなくてはならないところにあります。どちらに問題があるかを切り分けるのは簡単

    [Rust] 自作言語での TUI デバッガのススメ
  • RustとSvelteで開発されたオープンソースのmacOS用システムモニタアプリ「NeoHtop」がリリース。

    RustSvelteで開発されたオープンソースのmacOS用システムモニタアプリ「NeoHtop」がリリースされています。詳細は以下から。 macOSのシステムで実行されているプロセスを確認する際、システムモニタアプリ以外にターミナルでhtop(top)コマンドを利用することがありますが、このhtopコマンドをRustSvelte、TauriでGUI実装したシステムモニタプリ「NeoHtop」が新たにリリースされています。 A beautiful, lightning-fast system monitor built with Rust and Svelte. Experience real-time performance monitoring like never before. Abdenasser/neohtop: 💪🏻 htop on steroids – GitHub

    RustとSvelteで開発されたオープンソースのmacOS用システムモニタアプリ「NeoHtop」がリリース。
  • Rustで実装するLinuxカーネル(アセンブリ言語編)

    「安全よりもスリルを!」 メモリ安全性のために、LinuxカーネルモジュールはRustで実装すべし、と世間に大声で訴えているけれど、当はちょっと物足りない…危険に惹かれてしまう、そういう秘めた自分の気持ち、大切にしたいですよね! 今回は、いかなる安全性も保証しないアセンブリ言語とRustを組み合わせて、Linuxカーネルの機能を実装してみました。 アセンブリ言語?「アセンブリ言語、何それ?」と思ったデジタルネイティブ世代の読者も大勢いることでしょう。CやRustのような高級プログラミング言語では、人間が理解しやすい型や構文などを使った記述形式をコンパイラを使って、CPUが実行できる形式へと翻訳します。一方、アセンブリ言語では、CPUが実行できる形式に限りなく近い記述形式を使います。自分の気持ちをインスタやLINEのメッセージで伝えるのは難しいですよね?アセンブリ言語はCPUへ直接気持ちを

    Rustで実装するLinuxカーネル(アセンブリ言語編)
    poad1010
    poad1010 2024/12/29
    この記事をおすすめしました
  • RealWorld 業務 Rust - Qiita

    RealWorld 業務 Rust 実際に Rust 1.0 の頃から業務で Rust を使ってコードを保守してきてハマった落とし穴についての 知見 恨み言です Rustが素晴らしい言語であるというあたりまえのことにはこの文書では触れません 気が向いたら追加します 開発環境編 ビルドマシンを買ってもらえ ノートパソコンのCPUとメモリでは限界がある CPU 二桁コアのマシンを何人かで共有して使え VSCode の Remote SSH でがんばれ vim でもいいぞ ストレージは可能な限りデカくしろ target はブラックホール 10GB 超はあたりまえ、中には 100GB 超も sccache、 cargo cache 、 cargo sweep などを駆使してがんばれ docker も使うので大容量ストレージだけが正義だ sccache 使用例

    RealWorld 業務 Rust - Qiita
  • React・Node.js・CloudflareWorkersでRustから作成したWASMを動かす - iimon TECH BLOG

    こんにちは!iimonでCTOをしているもりごです。 記事はiimon Advent Calendar 2024最終日の記事となります! 今年はふるさと納税で沖縄に沢山寄付をしたので、沖縄の名産品をべるのが毎日の楽しみとなっています。 今回、フロントエンド・サーバーサイド・エッジコンピューティングの3つの環境でWASMWebAssembly)を活用し、同じ処理を別の環境で動かす方法を試してみました。複数の環境で共通の処理を使う事ができれば、同じコードを複数の環境に記述する必要がなくなり、管理の煩雑さを軽減できると考えて試してみました。 例えばフォームのバリデーションのように、フロントエンドとサーバーサイドの両方で同じ処理が必要になるケースはよくあると思っています。弊社は不動産領域を扱っており、住所関連の処理で色々な場所で同じ処理が必要になることが多々ありました。これまでは、なるべく1

    React・Node.js・CloudflareWorkersでRustから作成したWASMを動かす - iimon TECH BLOG
    poad1010
    poad1010 2024/12/26
    この記事をおすすめしました
  • Rustでライフゲームを作ってみた | DevelopersIO

    ゲームソリューション部の えがわ です。 今回はRustをとりあえず触ってみる目的でライフゲームを作成してみました。 ライフゲームとは? グリッド状のマス目にセル(細胞)を配置し、いくつかの簡単なルールに従って世代を繰り返していきます。 セルは「生きている」か「死んでいる」かの2状態があり、周囲のセルに影響されながら新たな形を生み出します。 見るだけで楽しいアニメーションが作れたり、予測不能なパターンが生まれるので、プログラミング勉強での面白い題材となっています。 完成系 ライフゲームのルール ライフゲームはルールが決まっています。 誕生:死んでいるセルの周囲にちょうど3つの生きたセルがあれば、そのセルは次の世代で「生」へと変わります。 生存:生きているセルの周囲に2つまたは3つの生きたセルがあれば、そのセルは次の世代でも「生」のままです。 過疎:生きているセルの周囲に1つ以下の生きたセル

    Rustでライフゲームを作ってみた | DevelopersIO
    poad1010
    poad1010 2024/12/24
    この記事をおすすめしました
  • Rustで有名アルゴリズムに挑戦(24) Rustで効率的なFisher–Yatesシャッフルを実装してみよう

    Rustで有名アルゴリズムを実装して、Rustについての理解を深めることが目的の連載です。今回扱うのは、配列のシャッフルについてです。最初に何も考えずに実装してみて、次に効率的に配列の要素をシャッフルするFisher–Yatesシャッフルを実装してみましょう。 Fisher–Yatesシャッフルを実装してみよう コンピューターにとって適当にシャッフルは難しい コンピューターは、人間よりも計算も速く正確に動いてくれるものですが、意外なことが苦手だったりします。そんな苦手なことの一つが「適当にシャッフルする」という作業です。 そもそも計算によって乱数を生成するのは簡単なことではありません。それで、さまざまな乱数生成アルゴリズムが提案されています。また、現在時刻やマウスの移動など、さまざまな物理現象を利用して、乱数生成を行う手法もあります。「適当さ」をコンピューターで再現するのは難しいものなので

    Rustで有名アルゴリズムに挑戦(24) Rustで効率的なFisher–Yatesシャッフルを実装してみよう
    poad1010
    poad1010 2024/12/24
    この記事をおすすめしました
  • Rust使用者がHaskellを学んだ感想 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Rustは多くの言語に影響を受けており、C++のほか、OCamlやHaskellといった関数型言語の影響も受けています (参考: The Rust Reference - Influences)。 私はC++からRustに入りましたが、関数型言語を使った経験はありません。せっかくRustを学んだのだから、その影響元である関数型言語についても学んでみたいと思いました。 関数型言語を学ぶならHaskellだろうということで、以下の書籍を参考に触れてみました。その感想を記します。 参考書: プログラミングHaskell 第2版 (出版: ラム

    Rust使用者がHaskellを学んだ感想 - Qiita
    poad1010
    poad1010 2024/12/23
    この記事をおすすめしました
  • Rust初心者が適当に書いても動いてしまうコードの書き方とより良い書き方を考えてみる

    この記事は Rust Advent Calender 2024 の 11 日目の記事です。 こんにちは。NTT コミュニケーションズの @ucchy です。普段は SkyWay という WebRTC プラットフォームの開発や WebRTC リサーチャーをしています。 記事の背景 私は、2024 年に入ってから Media over QUIC Transport のプロトコル実装(moq-wasm)を Rust で書き始めました。PythonTypeScript の経験はあるものの、Rust は初めてだったため、多くの点で「良くない」コードを書いてしまいました。 1 年間 Rust を書いていて、少しずつ「より良い書き方」も分かってきたので、「とりあえず動いてしまう書き方」と自分が考える「より良い書き方」をまとめてみたいと思います。 「とりあえず動いてしまう書き方」と「より良い書き方」

    Rust初心者が適当に書いても動いてしまうコードの書き方とより良い書き方を考えてみる
    poad1010
    poad1010 2024/12/17
    この記事をおすすめしました
  • 【海外記事紹介】より高速なSQLiteを目指して — こうして、SQLiteのRust実装「Limbo」は生まれた

    【海外記事紹介】より高速なSQLiteを目指して — こうして、SQLiteのRust実装「Limbo」は生まれた
    poad1010
    poad1010 2024/12/17
    この記事をおすすめしました
  • Rust 再学習戦記 - じゃあ、おうちで学べる

    プログラミング言語の再入門とは、未知の大地への探求というよりも、私たちが知っているはずの領域を新たな視点で見つめ直す営みです。それは初めての出会いのような激しい高揚感とは異なり、むしろ静かな再発見の過程といえるでしょう。 この記事は3-shake Advent Calendar 2024 シリーズ2の12日目の記事です。 はじめに 2017年、私の心にRustという言語が静かに灯りを点しました。その光は、システムプログラミングの深い理解への憧れを呼び覚まし、私を導いていきました。情熱に突き動かされるように、DevOpsツールの創造から始まり、パケット解析の探究へ、そしてWebフレームワークの実装へと、私の歩みは広がっていきました。 高速な実行速度と安全性という輝きに心を奪われながらも、未熟なエコシステムという現実が私たちの前に立ちはだかりました。パッケージの追従に心を砕き、破壊的な変更に耐

    Rust 再学習戦記 - じゃあ、おうちで学べる
    poad1010
    poad1010 2024/12/17
    この記事をおすすめしました
  • TypeScriptのコードをRustで書き直した話

    モニクル Advent Calendar 2024の12日目の記事です. はじめに モニクルの開発組織では,TypeScriptをプロダクトを作るときの最初の選択肢として採用しており,Node.jsをランタイムとした一般的なJSの技術スタックでの開発を行っています. そんな中でNode.jsのパフォーマンスに課題を感じ始め,一部のコードをRustで書き直すという作業を行いました. Node.jsに感じた課題 あらゆるサービスが稼働しているだけでお金を生み出してくれると良いのですが,残念ながら全てのサービスがお金を生み出すわけではありません.サービスを稼働させるコストがかかっているのであれば,そのコストをできる限り削減したいと思うのは組織としては一般的なことだと思います. そんな中,サービスの一部がインスタンスのメモリーリミットに引っ掛かるようになりました. 通常ウェブアプリケーションのサー

    TypeScriptのコードをRustで書き直した話
  • SQLiteをRustで書き直した「Limbo」が海外で話題に — 完全な非同期I/Oのサポート、WASM対応、メモリ安全性の確保など、Rustのメリットを全面的に享受

    SQLiteをRustで書き直した「Limbo」が海外で話題に — 完全な非同期I/Oのサポート、WASM対応、メモリ安全性の確保など、Rustのメリットを全面的に享受
    poad1010
    poad1010 2024/12/13
    この記事をおすすめしました
  • Rust 1.83.0リリース — constが大幅強化、多くのAPIが安定化

    11月29日、Rust開発チームは、プログラミング言語Rustの新バージョン1.83.0を公開した。今回のリリースにより、新たな機能や改良が多数追加された。記事では、その主要な内容を以下にまとめる。1. 新たなconstの機能Rust 1.83.0では、コンパイル時に評価されるconstコンテキスト内で利用可能な機能が大幅に拡張された。以下はその具体例である。staticへの参照の許可 これまで、constコンテキスト内でstatic項目を参照することは許されなかったが、この制限が解除された。ただし、ミュータブルなstaticや内部可変なstaticの値を読み取ることは依然として禁止されている。 static S: i32 = 25; const C: &i32 = &S; 今回のリリースにより、新たな機能や改良が多数追加された。記事では、その主要な内容を以下にまとめる。 1. 新たな

    Rust 1.83.0リリース — constが大幅強化、多くのAPIが安定化
    poad1010
    poad1010 2024/12/01
    この記事をおすすめしました
  • 【海外記事紹介】Rust製のターミナルアプリ「Warp」が熱い — AIが入力支援、コマンドやワークフローをチームで共有

    11月24日、海外テクノロジーメディアThe NewStackに、「Warp Is a Power User’s Dream Terminal for Linux」と題した記事が公開された。この記事では、Rustで構築された高速で強力なLinux向けターミナルアプリ「Warp」の特徴と、その操作性、豊富な機能について詳細に解説されている。 以下にその内容を紹介する。 Warpの概要 Warpは、多彩な機能を持つターミナルアプリである。その特徴は、AIの活用やワークフローの共有など、従来のターミナルアプリには見られない革新的な機能だ。以下に主要な特徴を挙げる。 AIが作業をサポートする「Agent Mode」 この機能はAIを活用し、自然言語での指示を理解してユーザーを支援する。たとえば以下のような操作が可能だ。 「Ubuntuを更新したい」と入力すると、手順が表示され、必要なコマンドが自

  • ORMなんていらない?!生SQLクエリ開発を超絶楽にするVSCode拡張を作った [TS+Rust+WASM]

    TL;DR これができる機能です。 TypeScript with Prisma ⇩ Rust with SQLx ⇩ SQL ファイルだけでなく、他のファイルの生 SQL クエリ(Raw SQL Query)に対しても SQL の LSP が効きます。 現在は TypeScript 上 の Prisma と RustSQLx をデフォルトでサポートしています。Prisma のみ、SQL のシンタックスハイライトが効きます。 なお、タイトル詐欺です。 sqlsurge の設定 名前は sqlsurge[1] です。sqlsurge では SQL の Language Server に Golang 製 の sqls を使っているので、 Golang sqls が必須となります。sqls をインストールしている人は限られていると思うのでインストールガイドを用意しました。 TypeScr

    ORMなんていらない?!生SQLクエリ開発を超絶楽にするVSCode拡張を作った [TS+Rust+WASM]
    poad1010
    poad1010 2024/11/25
    この記事をおすすめしました
  • RustとC++はどう違う?

    C++Rustが誕生する以前から成熟した言語だった。Rustの誕生によって、C++から乗り換えるべきなのだろうか。必ずしもそうとは限らない。 新しいプロジェクトの言語を選択するに当たって、プログラマーは選択肢に事欠かない。C++Rustも、さまざまなプロジェクト(ブラウザベースのソフトウェアからビデオゲームまで)に適しており、それぞれにメリットがある。 C++Rustそれぞれの歴史と概要 C++は、効率と信頼性が高いプログラミング言語だ。その信頼性、パフォーマンス、スケーラビリティの高さから、開発者はC++を選ぶ。広範なライブラリサポートを有するC++標準テンプレートライブラリ(Standard Template Library、以下STL)によって多くの関数が提供される。システムプログラミング、ビデオゲーム開発、OSやWebブラウザ上で実行される最新アプリケーションでは、C++が使

    RustとC++はどう違う?
  • ふつうのウェブエンジニア向けRust入門書『RustによるWebアプリケーション開発 設計からリリース・運用まで』 - laiso

    RustによるWebアプリケーション開発 設計からリリース・運用まで (KS情報科学専門書) 作者:豊田 優貴,松 健太郎,吉川 哲史講談社Amazon 私たちがRustを学ぶ際の障壁 ウェブエンジニアにとってRustを学ぶ際の最大の障壁は、その適用分野がもともと高度である点です。 Rustは主にシステムプログラミングやC++の置き換え、ビルドツールの最適化といった専門的な領域で活用されています。 これらの分野に馴染みがないウェブ開発者にとって、Rustのエコシステムを学ぶことは簡単ではありません。 書はそのようなエンジニアが、既存の仕事の道具をRustに置き換える時のガイドとして最適です。 システムの一部をマイクロサービスに切り出すケースや新規プロジェクトのバックエンドでRustの採用を検討したりする場面で活用できます。 そのため、この書籍はウェブのバックエンドエンジニアRust

    ふつうのウェブエンジニア向けRust入門書『RustによるWebアプリケーション開発 設計からリリース・運用まで』 - laiso
    poad1010
    poad1010 2024/11/18
    この記事をおすすめしました
  • 早くて安全、以外のRustの好きなところ

    こんにちは。Rustを愛し、Rustに愛された男です。 BoostDraftでは、一部のシステムでRustで使用しています。そこそこQPSのあるAPIサーバーや、そこそこ量のあるデータの解析などです。 Wikipediaでは、Rustの説明として以下のような一文から始まっています。 Rust(ラスト)は、性能、メモリ安全性、安全な並行性を目指して設計された 引用元:Rust (プログラミング言語) また公式サイトでは、Rustを使う理由として「パフォーマンス」「信頼性」「生産性」が挙げられています。 早くて安全!にフォーカスされがちなRustですが、僕がRustを使う一番の理由は「生産性」です。 なので今回は、生産性に寄与しそうな、僕のお気に入りポイントをいくつか紹介したいと思います。 エコシステム Cargo CargoRustにおけるビルドシステム兼パッケージマネージャです。 ビルド

    早くて安全、以外のRustの好きなところ
    poad1010
    poad1010 2024/11/10
    この記事をおすすめしました