タグ

rustに関するmotchangのブックマーク (241)

  • Rust製の分散オブジェクトストレージをOSSとして公開しました - dwango on GitHub

    はじめに ドワンゴではniconicoの配信系サービスのバックエンドで利用するために、Frugalosという名前の分散オブジェクトストレージを開発しているのですが、この度OSSとして公開することとなりましたので、この場を借りて軽く紹介させて貰います。 FrugalosはRustで実装されており、現時点では以下のリポジトリが公開されています: raftlog_protobuf: raftlogへのProtocol Buffersサポートの追加 “Frugalos"って何? “Frugal object storage"の略です。 “frugal"は日語では「倹約な」や「節約する」といった意味となり、「読み書き性能を犠牲にせずに、膨大な数のBLOB(Binary Large OBject)を、容量効率良く保持する」ことを目指して開発されているオブジェクトストレージです。 提供されている機能は

    Rust製の分散オブジェクトストレージをOSSとして公開しました - dwango on GitHub
  • RustでWeb APIを作る際のエラーハンドリング - CADDi Tech Blog

    TL;DR エラーハンドリングを行う目的 エラーハンドリングが適切に行われているとどう嬉しいか 1. エラーの発生原因が分かる 2. レスポンスステータスを型安全に出し分けることが可能になる どうエラーハンドリングを行うのか 実装方法 エラー型の定義で気を付けるべきポイント なぜanyhowを利用しないのか エラーハンドリングを行う上で持っている課題感 Drawer Growth グループ バックエンドエンジニアの中野です。今回は、私が所属するチームで gRPC API を開発する際に実践している Rust でのエラーハンドリングについて紹介していきます。 TL;DR エラーの発生原因がわかるようにエラー型を定義することが大切。 anyhow は使わずに自前のエラー型を定義して利用する。 エラーハンドリングを行う目的 そもそもなぜエラーハンドリングを行う必要があるのでしょうか。私が所属する

    RustでWeb APIを作る際のエラーハンドリング - CADDi Tech Blog
  • Open sourcing Pingora: our Rust framework for building programmable network services

    Open sourcing Pingora: our Rust framework for building programmable network services02/28/2024 Today, we are proud to open source Pingora, the Rust framework we have been using to build services that power a significant portion of the traffic on Cloudflare. Pingora is released under the Apache License version 2.0. As mentioned in our previous blog post, Pingora is a Rust async multithreaded framew

    Open sourcing Pingora: our Rust framework for building programmable network services
  • 使えるマークダウンライブラリを探した結果 RailsアプリケーションからRustを使うことになった話

  • RustからWebAssembly (wasm)を生成してJavaScriptとブリッジ通信してみる | DevelopersIO

    Rustはじめました Rustイイですよね。Cと同程度のパフォーマンスで動作して、メモリリークを防止し、マルチスレッドも安全に記述できます。GC(ガベージコレクション)処理よりも高速にメモリーを開放します。今まで、より高速に動くプログラミング言語を求めるとC/C++等が必要になり、安全面で気をつけないところが増えてしまって手が出しづらく、一方で、Javaなどの安全面が確保された言語や、JavaScriptPythonなどのスクリプトで記述できる言語は、nullやundefinedなどを気をつける必要があり、更に実行速度を上げるには課題がありました。(Javaは十分速いと思います) Rustは、C/C++と同程度のパフォーマンス(強い)を持ちつつ、型やメモリやスレッドに関する安全面を備えているため、今後、OSやミドルウェアの開発に使われることが増えるのではと思っています。一方で、JavaS

    RustからWebAssembly (wasm)を生成してJavaScriptとブリッジ通信してみる | DevelopersIO
  • Task Wakeups with Waker - Asynchronous Programming in Rust

  • 『詳解Rustアトミック操作とロック』(Rust Atomics and Locks) - Don't Repeat Yourself

    昨年買っていたんですが、年末年始の時間を使って少し読めました。 著者はRustコンパイラにコントリビューションをしたことがあれば誰でも知っているかもしれない、Mara Bos氏です。 ちなみにですが、原著は下記サイトで無料でも読むことができます。 marabos.nl 書籍は下記です。 詳解 Rustアトミック操作とロック ―並行処理実装のための低レイヤプログラミング 作者:Mara Bosオーム社Amazon なおこの記事内で「書」と明記する場合、それは『詳解Rustアトミック操作とロック』を指します。また、「筆者」は私自身のことであり、「著者」はMara Bos氏のことです。 内容のメモ 1章 2章 3章 4章、5章 6章 Miri Loom 7章 8章 9章 10章 感想 日語での別の資料 内容のメモ 読んだ内容のうち、印象に残ったり初見だったものをメモしておきます。 1章 1章

    『詳解Rustアトミック操作とロック』(Rust Atomics and Locks) - Don't Repeat Yourself
  • Rust.Tokyo 2023参加記

    こんにちは。Zennでは初めまして。cordx56です。 今回は、先日開催されたRust.Tokyo 2023の参加記を書きたいと思います。よろしくお願いします。 Rust.Tokyoとは? Rust.Tokyoとは、プログラミング言語であるRustのカンファレンスです(念の為)。そこまで多くの情報は載っていませんが、公式サイトもあります。 なぜ参加したの? 私は今回のRust.Tokyo 2023Rust.Tokyoの初参加でした。今回はRust.Tokyoのしばらくぶりのオフライン開催だったようです。 私自身、最近何かを作る際にはRustを用いることが多くなったこと、そして今のインターン先がRust.Tokyo 2023のスポンサー企業であったこともあり、現地で参加してきました。 オフライン会場は六木のメルカリさんのところで、とてもいい会場でした。また現地では知り合いに会うこともで

    Rust.Tokyo 2023参加記
  • 詳解 Rustアトミック操作とロック

    Rustでは並行性を持つプログラムを安全に記述することができます。書はその並行プログラムの基盤となる、アトミック操作とロックの仕組みについての理解を深め、より安全で効率の良いコードを書くための指南書です。難解だと思われがちなアトミック処理、ロック、メモリオーダリングのような低レイヤを詳細に理解し、アーキテクチャやOSによる相違を知ることで、安全で高性能な並行処理プログラムを実装できるようになります。Rustユーザはもちろん非ユーザにとっても低レイヤプログラミングの優れたリソースとなる一冊です。 序文 まえがき 1章 Rust並行性の基 1.1 Rustのスレッド 1.2 スコープ付きスレッド 1.3 所有権の共有と参照カウント 1.3.1 static 1.3.2 リーク 1.3.3 参照カウント 1.4 借用とデータ競合 1.5 内部可変性 1.5.1 Cell 1.5.2 RefC

    詳解 Rustアトミック操作とロック
  • RustでClean Architectureを実装してみる

    はじめに RustでWebアプリケーションのGraphQLバックエンドを実装してみました。その中で、できるだけClean Architectureに沿うように実装してみたので、得られた知見を公開してみたいと思います。 資料に基づきできるだけ正確な記述を目指していますが、誤りもあるかもしれません。また実装から少し時間を空けて執筆しているので、忘れている部分も多く不正確なことが書いてあるかもしれません。 Clean Architectureとは 以下のブログでRobert C. Martin(通称Uncle Bob)によって提唱されたアーキテクチャです。 その後人により書籍も出版されました。日語にも翻訳されています。 歴史について簡単に 多層アーキテクチャ (Multitier architecture) というものはかなり昔から考えられていたようです。初出についてはよくわからないのですが

    RustでClean Architectureを実装してみる
  • Ruff v0.1.0

    As a reminder: Ruff is an extremely fast Python linter, written in Rust. Ruff can be used to replace Flake8 (plus dozens of plugins), isort, pydocstyle, pyupgrade, and more, all while executing tens or hundreds of times faster than any individual tool. Ruff is used in production by tens of thousands of open source projects and major enterprises. In the last year, we've been working to expand Ruff'

    Ruff v0.1.0
  • VSCodeがWebAssemblyの実行時デバッグに対応。C/C++やRust、Zigなどのソースコードと関連付け、変数参照、ブレークポイントなど可能に

    VSCodeWebAssemblyの実行時デバッグに対応。C/C++RustZigなどのソースコードと関連付け、変数参照、ブレークポイントなど可能に マイクロソフトは、オープンソースで開発しているコードエディタ「Visual Studio Code」(以下、VSCode)の最新版となる2023年9月版(バージョン1.83)で、JavaScriptデバッガがWebAssemblyのデバッグにも対応したことを明らかにしました。 The JavaScript debugger can now debug code compiled into WebAssembly if it includes DWARF debug information. For example, C++ code compiled using Emscripten can be debugged: pic.twitt

    VSCodeがWebAssemblyの実行時デバッグに対応。C/C++やRust、Zigなどのソースコードと関連付け、変数参照、ブレークポイントなど可能に
  • Rustでシンプルなロードバランサーを作成してみた - Qiita

    はじめに この文章はGoでシンプルなL7ロードバランサーを作成するというKasun Vithanageさんの記事を参考にRustでL7ロードバランサーを書いてみたという記事です。ロードバランサーについて、ちゃんと勉強するならそっちを見た方が良いかもしれません。 またこの記事を書いている途中にactix-webのexampleのレポジトリがガッツリとactix-web 2.0-alpha.3に書き換えられました。actix-webの2系はfuturesの0.3系を使っております(actix-webの1系はfuturesの0.1でした)。多いに参考にさせてもらっております。途中までサンプルなしで2.0-alpha.1を強引に動かしていたので非常に助かりました。 成果物 https://github.com/rchaser53/rlb 実装する内容について NginxのようなL7ロードバランサー

    Rustでシンプルなロードバランサーを作成してみた - Qiita
  • Rust を始めるための資料集 - Don't Repeat Yourself

    かとじゅんさんのお誘いで、私塾匠真堂にて登壇させていただき、Rust に関する話をさせていただきました。ありがとうございました。 今回のセッションを通じて Rust を始めたくなった方向けに、Rust をはじめるための資料をいくつかリストアップしてます。よかったらどうぞ。 プログラミング言語の学習方法について Rust についてまず概観を掴む 文法を学ぶ 何かアプリケーションを実装してみる ちょっと突っ込んだ話を知りたい コミュニティの力を借りる 仲間を見つける 更新履歴 プログラミング言語の学習方法について みなさんは新しいプログラミング言語を学ぶ際、どのように学びますか? 私は、軽く制御構文やデータ型の作り方などを学んだ後は、すぐにアプリケーションを作ってみて、詰まったらリファレンスを参照するといった学び方をしていることが多いです。 逆に、リファレンスをまず眺めて、文法をしっかり把握し

    Rust を始めるための資料集 - Don't Repeat Yourself
  • Best Rust Web Frameworks to Use in 2023

    Best Rust Web Frameworks to Use in 2023 In the dynamic landscape of web development, Rust has emerged as a language of choice for building safe and performant applications. As Rust's popularity grows, so does the array of web frameworks designed to harness its strengths. This article compares some of the best Rust frameworks highlighting their respective advantages and drawbacks to help you make i

    Best Rust Web Frameworks to Use in 2023
  • Rust での tracing

    axum を始め、tower 系列でサーバーを作っているといくらでも例が出てきそうな話ではあるが、「ちょっと君、明日からRust でトレーシングしたまえ」って言われた時に欲しいまとまった情報は意外とない気がしたので書く。 基的に tower 系列や、tower に準ずる様な Service トレイトを持つ様なFWであれば同じ様な話であり、tracing crate 自体は Agnostic なものなので、ここでは axum を例にあげて書く。 axum と tracing subscriber まず、簡単に HTML を返すサーバーを作る。 use axum::{response::Html, Router}; use std::net::SocketAddr; #[tokio::main] async fn main() { let app = Router::new().route(

    Rust での tracing
  • The Rust Programming Language - The Rust Programming Language

    The Rust Programming Language by Steve Klabnik and Carol Nichols, with contributions from the Rust Community This version of the text assumes you’re using Rust 1.76.0 (released 2024-02-08) or later. See the “Installation” section of Chapter 1 to install or update Rust. The HTML format is available online at https://doc.rust-lang.org/stable/book/ and offline with installations of Rust made with rus

  • まえがき - The Rust Programming Language 日本語版

    まえがき すぐにはわかりにくいかもしれませんが、Rustプログラミング言語は、エンパワーメント(empowerment)を根原理としています: どんな種類のコードを現在書いているにせよ、Rustは幅広い領域で以前よりも遠くへ到達し、 自信を持ってプログラムを組む力を与え(empower)ます。 一例を挙げると、メモリ管理やデータ表現、並行性などの低レベルな詳細を扱う「システムレベル」のプログラミングがあります。 伝統的にこの分野は難解で、年月をかけてやっかいな落とし穴を回避する術を習得した選ばれし者にだけ可能と見なされています。 そのように鍛錬を積んだ者でさえ注意が必要で、さもないと書いたコードがクラッキングの糸口になったりクラッシュやデータ破損を引き起こしかねないのです。 この難しさを取り除くために、Rustは、古い落とし穴を排除し、その過程で使いやすく役に立つ洗練された一連のツールを

  • Understanding tracing's macros by rebuilding them from scratch

    Understanding tracing's macros by rebuilding them from scratch The log crate exposes a bunch of useful macros like trace! that can take in a message in the form of a format string, a-la std’s println!. The (currently WIP) kv module also lets you pass in key-value pairs to this macro to be able to do structured logging. tracing’s trace! macro takes this one step further by letting you provide all k

    Understanding tracing's macros by rebuilding them from scratch
  • セルフホスト=最高。「あとで読む」WEBアプリを自作する

    はじめに みなさん、「あとで読む」サービスは何を使ってますか? 技術系のブログやZennのような投稿サイト、もちろんそれ以外にも、インターネットには読み応えのある記事がたくさんあるので、「あとで読む」サービスを使っている方は多いと思います。 僕がもう何年も使っていたのはInstapaperです。WEBでもスマートフォンのアプリでも読める便利さ、ブラウザの拡張機能によりワンクリックでページを保存できる手軽さ、進捗状況を保存してくれるありがたさ、かゆいところに手のとどく素晴らしいサービスだと思います。 ただ、記事を分類するフォルダ機能はやや使い勝手が悪く、全文検索はプレミアム会員でないと使用できない。さらに全文検索は会員になった直後は動かず、数日してインデックスされるようで、先日どうしても読み返したかった記事を把握するのに時間がかかってしまいました。 そんなこんなでもうちょっとどうにかできない

    セルフホスト=最高。「あとで読む」WEBアプリを自作する