タグ

rustに関するuxoruのブックマーク (43)

  • Effective Rust

    Rustはいま最も勢いのある言語の1つ。特に、そのパフォーマンスの高さ、安全性、並行性から、C/C++に代わる言語として、システムプログラミングや低レイヤの開発では高く評価されています。Googleのソフトウェアエンジニアとして、さまざまなGoogleサービスのRust実装を担当してきた著者が、Rustへの深い理解と豊富な経験から得られた実用的なノウハウを共有。所有、借用、生存期間、トレイトといったRust特有の概念を具体例を示して詳しく説明するとともに、Cargoによる依存ライブラリ管理やClippyなどのエコシステムの活用方法を詳述しています。Rustの入門書を読了した読者に、「Rustらしい」プログラミング方法を伝授する一冊です。 まえがき 1章 型 項目1:データ構造を表現するために型システムを用いよう 項目2:型システムを用いて共通の挙動を表現しよう 項目3:OptionとRes

    Effective Rust
  • Atom の作者達が作った Rust 製エディタ Zed (OSS) - Qiita

    1. 概要 2024年の1月24日にZedがOpen source化しました! ということで、Zedとは何か、実際に使ってみてどうだったかというのを簡単にご紹介できればと思います。 2. Zed とは何か? AtomとTree-sitterのクリエイターによる、Rust製のコードエディターで、OSS (オープンソースソフトウェア) であり、 Githubのリポジトリ こちらで公開されています。 公式サイトから一部抜粋すると下記のような特徴があるようです。 2.1 パフォーマンスを重視した設計 2.2 インテリジェンス系のサポート Github Copilotのサポート GPT-4 を使用して、自然言語のプロンプトを入力することで、コードを生成したりリファクタリング可能 2.3 言語対応 入力時にすべてのバッファの完全な構文ツリーを維持し、正確なコードハイライト、自動インデント、検索可能なア

    Atom の作者達が作った Rust 製エディタ Zed (OSS) - Qiita
  • Rust で SQLite を再実装した 2023 - kawasin73のブログ

    気合いで実装、どうもかわしんです。 この記事は Rust Advent Calendar 2023 の6日目 兼 情報検索・検索技術 Advent Calendar 2023 の 6 日目です。 RustSQLite をフルスクラッチで実装しています。 github.com なぜ SQLiteRust で再実装しようと思ったのかについては以前の記事で紹介しています。一言で言えば、誰も RustSQLite を書いている人がいなかったからやってみたのですが、そもそも SQLite が強すぎるということが再実装しているうちにわかってきて絶望しています。 kawasin73.hatenablog.com 4 ヶ月前にこの記事を書いたときは簡単な SELECT 文しか実行できなかったのですが、現時点では SELECT, INSERT, DELETE 文をサポートし、express

    Rust で SQLite を再実装した 2023 - kawasin73のブログ
    uxoru
    uxoru 2023/12/07
    すばらし‼️
  • Rustプログラムのデバッグ辛すぎ問題 - Qiita

    この記事は Rust Advent Calendar 2023 シリーズ2 の1日目の記事である。 Rustは良くも悪くもシステムプログラミング言語なので、何も工夫しなければデバッグの体験がC言語と同じレベルになってしまう。例えば「rust lldb」でググると上位に Debugging Rust programs with LLDB is a nightmare というスレッドが出てきてしまう。 使うべきツールを知っていれば幾分かマシな体験にできる。Rustコンパイラはデバッガとして LLDB, GDB, WinDbg/CDB をサポート していて、僕はWinDbGは10年くらい触ってないので、この記事ではLLDBとGDBについて書く。 LLDB Apple SiliconのMacだとGDBが使えないので、必然的にLLDBを使うことになる。 CodeLLDB GDBと同じく、LLDBにも

    Rustプログラムのデバッグ辛すぎ問題 - Qiita
  • Biome はじめました。

    モチベーション そもそも TypeScript や JSX に詳しくないのでどう書くのがいいのか悩みたくない ESLint や Prettier の設定を なんとなく 設定して使ってしまっている Formatter / Linter 関連のライブラリの内容を理解せずにアップデートしてしまっている 依存関係は減らしていきたい Rust で書かれた言語向けの高速なツールが好き Rye とか Ruff とか efmt とか Biome Biome は Rust で書かれた Formatter / Linter を含むツール。当におかしいくらい早い。 全然大きくないが、以下のソースコードに適用したときの速度。 $ pnpm run fmt > biome format --write ./src Formatted 114 file(s) in 11ms $ pnpm run lint > bi

    Biome はじめました。
  • Rustの学び方教えてくれ

    プログラミングRustは昔一回読んだ 自力で書けなすぎるから写経して学ぼうかと思ったが、中々染み付く感じがしない

    Rustの学び方教えてくれ
    uxoru
    uxoru 2023/10/12
    Rustに限らず、簡単な小さいツール作るのが良いと思う。何作るか思いつかなかったら、既存のCUIツールを模倣してみるとか。例えばcatとかcurlとか。
  • Complete Guide to Rust: Zero to One to Hacking!

    uxoru
    uxoru 2023/10/03
  • Rust で SQLite を再実装している - kawasin73のブログ

    セキュリティを盾に一点突破。どうもかわしんです。最近 RustSQLite を実装してます。 以前の記事で HTTP Parser を Rust で実装しようとしたものの、すでに実装されていたので断念しましたが、いい題材を見つけました。SQLite です。開発中のリポジトリはこれです。 github.com 今の時点では、Read Only で1つの WHERE 句を持った SELECT 文しか処理できないですが、以下の機能を実装しています。 sqlite3 で生成された database ファイルの読み取り (cursor.rs, btree.rs, record.rs) SQL 文の解析 (token.rs, parser.rs) テーブルとインデックスのメタデータのパース (schema.rs) 動的なファイルの読み込み (pager.rs) SQL クエリとスキーマ情報を元に

    Rust で SQLite を再実装している - kawasin73のブログ
  • 久しぶりのPython環境をRyeで整える

    はじめに よくAWS仕事をするので、開発環境をAWS Cloud9(以下Cloud9)で用意することがある。 IAM Roleが使えるのでAWS内の開発は便利なのだが、そのままPythonで開発しようとすると、2023/05/27時点でこう表示されるので、ちゃんと開発環境作らなくちゃね。という気持ちになる。 久々にLangChainやLlamaIndexやらで盛り上がってるし、Python環境でも作るか! と思い立った筆者。じゃあ何を準備すればいいんだっけ、と軽く調べただけでもpip, venv, pyenv, pipenv, poetryなどの選択肢がありすぎて、もうこの時点でげんなりする。Pythonのパッケージマネージャの周辺事情はずっと混沌としていたんだった…… ただ最近は比較的よさげなプロジェクトのRyeがあるので、今回はこれで環境を整えてみる。 Ryeとは 上で書いたような「

    久しぶりのPython環境をRyeで整える
    uxoru
    uxoru 2023/05/28
    Python環境構築、新たな混沌を生むか?それともこれで決着か?
  • Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる

    自分のブログを辿ってみたところ Rust を 2020 年には書いているようだが、初心者を名乗らせていただく。なぜならブログのネタにする以外で Rust 書いたことないし、これも調べながら書いているからだ。もっと練習したい、どこかに Rust を書ける機会ないかな〜チラッチラッ 👀 なぜありふれていそうな題材で書くか 題材はありふれているし解説もたくさんあるが、それらを読んで理解できるのか?という疑問がある。というのも、所有権、借用、ライフタイム自体についての説明は至る所で見るが、これらが無いと何が大変なのか、導入することで何が解決されるかがよく分からないと思うからだ。勿論、そのような点まで解説してくれているものもたくさんあるが、正直なところ Not for Me だった。何が Not for Me だったかというと、C++ の知識やコンピュータサイエンスの知識があることが前提になってい

    Rust の 所有権、借用、ライフタイムについて初心者目線で説明と整理を試みる
    uxoru
    uxoru 2023/05/19
  • sudoとsuがRustで書き直される。メモリ安全性向上へ

    sudoとsuがRustで書き直される。メモリ安全性向上へ
  • 満を持して始めるRust

    Developers Summit(デブサミ) 9-B-9 02/09 17:45 ~ 18:25 「満を持して始めるRust」kenkoooo RustC++の代替となることが期待されていることから、低レイヤ向け言語という印象を持っている方も多いかもしれません。しかし、Rust 1.0のリ…

    満を持して始めるRust
    uxoru
    uxoru 2023/02/10
  • 【Rust】日本語で読めるRust言語の商業本まとめ(2023年4月)【おすすめ】 - Rのつく財団入り口

    機運高まるRust言語に入門しよう Windows自体の開発に使われていることも判明、次期Android OSの開発言語にも採用、ついにLinuxでも採用される(かも)とのことで最近機運が高まっているMozilla発のRust言語。 このエントリでは商業を分野別に、その中では発行日が新しい順にまとめてみました。第2版があるの初版含め合計約25冊。そのうち2022年に出たのが計9冊、【追記】2023年に2冊と、数えてみると既にけっこうな冊数になっています。Go言語の日語のが確か合計15冊前後ぐらいだったので負けずに盛り上がっていますね。 機運高まるRust言語に入門しよう 補足的にRustの傾向 入門者向けの 動かして学ぶ!Rust入門 パーフェクトRust ゼロから学ぶRust システムプログラミングの基礎から線形型システムまで (KS情報科学専門書) 手を動かして考えればよく

    【Rust】日本語で読めるRust言語の商業本まとめ(2023年4月)【おすすめ】 - Rのつく財団入り口
  • TLSが難しい?RustとLinuxカーネルで実装しよう!

    TLS(Transport Layer Security)が難しすぎると、お嘆きのセキュリティファースト世代の皆様、RustLinuxカーネルを実装しながら学んでみましょう! カーネルモジュールの実装は難しい?それは誤解です。TLSをアプリケーションとして実装しようとすると、各種のライブラリを検索していたつもりが、SNSを眺めていて、一日が終わっていることありますよね。カーネルモジュールを実装するために使えるのはカーネルの機能だけです。検索する必要はなく、雑念が生じる余地はありません。その集中力があれば、カーネル開発は難しくありません。 TLSとLinuxカーネル皆様の中には、LinuxカーネルはTLSをサポートしているのでは?と思っている方がいるかもしれません。TLSは実際のデータの送受信の前に、ハンドシェイクと呼ばれる、暗号鍵の合意や相手の認証を実施します。ハンドシェイク後、Linu

    TLSが難しい?RustとLinuxカーネルで実装しよう!
    uxoru
    uxoru 2022/12/30
    私も実装して勉強しよ
  • ニッチなRustのNicheについて - Qiita

    u8 no: 1 opt: 2 opt2:2 core::num::nonzero::NonZeroU8 no: 1 opt: 1 opt2:2 alloc::string::String no: 24 opt: 24 opt2:32 Optionが増えているのにsizeが変わっていないことがある! これはRustのniche optimizationが働いているからである。 niche nicheとはもともと「隙間」という意味がある。 Rustはその「隙間」を検知してその間に情報を埋めることができる。 例えばNonZeroU8という型がある。 その名の通り、「ゼロにならないu8」な型である。 ゼロにならないのは(unsafeを使わない限り)保証されているので、この型には0という隙間がある。 つまりNoneという情報をその0に埋めてしまえばいいということだ。 メモリ上の表現として 0ならN

    ニッチなRustのNicheについて - Qiita
  • 高速なPythonの静的コード解析ツールを作った話

    TL;DR pylyzerというPython向けの静的コード解析ツールを開発した。 pylyzerは既存の静的解析ツール(e.g. pytype, pyright)よりも細かいコードの欠陥を指摘でき、エラー表示が丁寧であり、更に高速である。コードによっては100倍以上速く検査できた。 pylyzerはcargo(Rustのパッケージマネージャ)がインストールされている場合は以下のコマンドでインストール出来る。

    高速なPythonの静的コード解析ツールを作った話
  • YJITで使ったRustの省メモリ化テクニック - Qiita

    これは Rust Advent Calendar 2022 のカレンダー2の22日目の記事です。 YJITとは 私は今年の7月からShopifyという会社でRubyのJITコンパイラであるYJITを開発している。このJITは今年CからRustに書き直されたため、現職では業務としてフルタイムでRustを書いている。 実用段階になったYJIT おそらく世界最大規模でRubyを使っている弊社では、お客様のお店のサイトをレンダリングするアプリには社内最大のトラフィックが来ていて、実は最近そのアプリほぼ全台で最新のYJITが有効化されたことが昨日公開情報になった。あまりにも大量のトラフィックが来るので、YJITによって行なわれているRubyコード実行量はYJITが使われてないものよりも世界全体で見て多くなったのではないかとCEOが言っていた。 この規模のトラフィックを捌くためにこのアプリは比較的よく

    YJITで使ったRustの省メモリ化テクニック - Qiita
  • RustでOSを書いた

    はじめに RISC-V CPUFPGA 上に実装して、マイクロカーネル OS を Rust で書いて動かしてみました。 CPU について RISC-VとChiselで学ぶ はじめてのCPU自作 に沿って RISC-VCPU を作り、機能をエンハンスしました。 乗除算命令、RVC命令、ビット拡張命令の一部を追加 7段パイプライン化 DRAM コントローラ 4KB命令キャッシュ、8KBデータキャッシュ 2ビット分岐予測 周辺コントローラ実装(SDC、UART、タイマー、割込コントローラ) Arty A7-35T という FPGA ボード上で動作させています。 スーパーバイザーモードは実装していないので、仮想メモリは使えません。みんなで仲良くメモリを共有します。 CPU の実装はこちらに置いてあります。書籍のサポートリポジトリの fpga 実装版を fork して機能追加しています。

    RustでOSを書いた
    uxoru
    uxoru 2022/12/15
  • グーグル、Rust採用で「Android」のメモリーに関わる脆弱性が激減

    メモリー関連の不具合を減らすために、「Android」の新しいコードにRustを使用するというGoogleの判断は、成果を挙げているようだ。この数年で、Androidのメモリー安全性関連の脆弱性は半分以下になった。この成果が達成された時期は、GoogleがCやC++からメモリー安全性の高いプログラミング言語であるRustに切り替えた時期と一致する。 Androidに発見されたセキュリティホールの中で、最も件数が多かったカテゴリーがメモリー安全性関連の脆弱性でなかったのは2022年が初めであり、Googleは1年前に、「Android Open Source Project(AOSP)」で新しいコードのデフォルト言語をRustに切り替えている。 GoogleAndroidに使用しているほかのメモリー安全性を備えた言語には、JavaJava互換のKotlinがある。AOSPで主流の言語はま

    グーグル、Rust採用で「Android」のメモリーに関わる脆弱性が激減
  • Rust でバイナリを配布する

    これは天久保 Advent Calendar 2022 二日目の記事です。明日は休日なのでやすみです。 記事は全部 GNU/Linux においての話で、ELF 実行可能形式のファイルのことを指してバイナリと呼びます。 Rust で書いたプログラムをビルドして配布したいことがあるでしょう。サーバーアプリケーションなどとなればコンテナイメージを配布するのがまっとうに思えますが、コマンドラインアプリケーションとなると実行の手軽さや起動オーバーヘッドへの配慮からやはりバイナリを配布する必要が出てくると思います。一方で Rust でビルドしたバイナリは[1]システムの glibc に動的リンクされており、可搬性が低い可能性があります。つまり、ビルドした環境より glibc のバージョンが低い環境でそのバイナリは動かない可能性があるということです。実例を見てみましょう。下のプログラム[2]は Deb

    Rust でバイナリを配布する
    uxoru
    uxoru 2022/12/04
    “下のプログラム[2]は Debian 11 Bullseye (glibc 2.31) でビルドされており、Debian 10 Buster (glibc 2.28) で動作しません。”