タグ

docとrustに関するmasterqのブックマーク (51)

  • はじめに - Rustで学ぶ非同期処理ランタイム

    このを手にとってくれたそこのあなた!はじめまして(あるいはお久しぶり!)書の著者、nasa と申します。 まず、このが生まれた背景をお話していきますね。書はボクの「非同期処理の仕組みをなるべく隅から隅まで理解したい」という思いから生まれました。主に JavaScript を使う場面で、async/awaitを用いた非同期処理、非同期プログラミングをしています。しかし、その具体的な仕組みを知らないままで使っています。たとえば「アプリケーションサーバーにリクエストを投げる」という処理があったとします。このタスクはいつ実行されるのでしょうか?そして、実行のタイミングを誰が決めているのでしょうか? プログラマーである私でしょうか? どのタスクをいつ実行するかを決めているのはランタイムと呼ばれるものになります。書ではこのランタイムの実際のコードを読んでいくことで非同期処理、非同期プログラミ

    masterq
    masterq 2024/01/21
    async-stdクレートのコードを読みながら非同期ランタイムについて理解を深める試み。未完なのが悲しい
  • Getting Started - Asynchronous Programming in Rust

    Getting Started Welcome to Asynchronous Programming in Rust! If you're looking to start writing asynchronous Rust code, you've come to the right place. Whether you're building a web server, a database, or an operating system, this book will show you how to use Rust's asynchronous programming tools to get the most out of your hardware. What This Book Covers This book aims to be a comprehensive, up-

  • Welcome to Comprehensive Rust 🦀 - Comprehensive Rust 🦀

  • Rust製テキストエディタhelixの特徴まとめ

    で紹介されていたRustテキストエディタhelixだが、丁度自分もデザインやコードを眺めていたので、調べている中で得た特徴や知見をまとめていく。 キーバインディングは主にkakouneを踏襲 KakouneはC++で書かれたテキストエディタで、vi系列の「モード切り替え」と「少ないキーストローク数」を維持しつつも、viよりも学習しやすいキーバインディングや機能を目指して開発されている。 例を上げると、viにおいては「カーソル位置からその単語の終わりまでの単語を削除」するストロークはdwなのに対し、Kakouneではwdとなる。 どういうことかというと、wには「単語の終わりまでを選択」というバインディングがなされている。また、選択された単語はUI上でもハイライトによってそれを確認できる状態になる。 で、その選択した範囲を dで削除するというストロークが wd 。 この他にも、「カーソル上の単

    Rust製テキストエディタhelixの特徴まとめ
  • Prustiを使ってRustでプログラム検証をしよう

    導入に際し、ドキュメントに書いてないこととか色々あってつらかったため、軽くメモ代わりに投稿しておきます。 また、Prusti を使う最も簡単な方法は VSCode の拡張である Prusti-Assistant を使うことですが、Vimの使用を見越しコマンドだけで使えるようにアレコレ設定しました。 Prusti の紹介 プログラミングにおいて、関数に対してプログラマが明示的に制約を課すことはよくあります。 例えば、次のような単純な関数 max を考えます。 fn max(x: i32, y: i32) -> i32 { let result = if x > y { x } else { y }; result } さて、この関数は次のような性質を持つことが期待されます。 resultはx以上かつy以上 resultはxまたはy そういった情報は多くの場合ライブラリのドキュメントなどに書い

    Prustiを使ってRustでプログラム検証をしよう
    masterq
    masterq 2022/10/28
    ちゃんと使いこんでハマりポイントを書いていてくれて助かる。"ヒープを使ったリストといったデータ構造にも、多少不安定ですが使えます" 不安だ。。。
  • なぜ、Rustなのか?

    rerun.ioより。 BY エミール・アーナーフェルト 私は20年以上プログラマとして働いてきましたが、Rustほど私を興奮させたものはありません。私のバックグラウンドは主にC++ですが、PythonやLuaでも仕事をしたことがあり、さらに多くの言語に手を出してきました。2014年頃からRustを書き始め、2018年からはフルタイムで Rustを書いています。余暇には、人気のあるRust GUIクレートeguiを開発しました。 今年の初めにRerunを共同設立したとき、言語の選択は明らかでした。 Rerunでは、コンピュータビジョンやロボティクスのための視覚化ツールを作っています。そのためには、高速で並列化が容易な言語が必要です。デスクトップで実行する場合、ネイティブの速度が必要ですが、Web上で視覚化したり、Jupyter NotebookやIDEでインライン表示したりすることも考えて

  • KMC Staff Blog:RustからRTOS APIを使う

    2021年06月14日 RustからRTOS APIを使う 最近Rustという新しいプログラミング言語が多くの分野で注目を浴びています。RustC++のような低レベルなコンパイル型言語であり高い効率で動作する一方、強力な型システムやメモリ安全性を保証するための仕組みを備えており、バグの少ないコードを書くことができます。記事では、TOPPERSカーネルや弊社のSOLID-OS上でRustで書かれたプログラムを動かし、カーネルAPIを使用する方法を紹介します。 ビルド環境を整える Rustコンパイラのインストールは簡単で、 https://rustup.rs/ からダウンロードしたインストーラを実行することでホームディレクトリにインストールできます。rustupはインストールされているコンパイラ、ドキュメント、および標準ライブラリのバージョンを管理するコマンドラインツールです。rustup

  • Rust for Linuxを手元で試す

    RustLinuxカーネルに組込みプロジェクトRust for Linuxが進行中です。 このプロジェクトLinuxカーネル全体をRustで置き換えるわけではなく、第二言語としてRustを採用してデバイスドライバなどのモジュールを書くことができるようにしようというものです。 RustはOSのような低レイヤーソフトウェアを実装する言語として、C言語に代わる選択肢として注目されてきたわけですが、Linuxのような広く使われているシステムに採用されるとなればかなり熱いですね。 実際にLinuxのメインラインに取り入れられるにはまだまだ課題は多いものの、Linus氏を含むLinuxの開発者からのフィードバックも比較的ポジティブでこれからが注目されています。 そんなRust for Linuxを手元でビルドして動かしてみました。 一応、基的な手順はレポジトリ内のドキュメントにまとまっているの

    Rust for Linuxを手元で試す
    masterq
    masterq 2022/06/30
    panicを引き起こしそうなAPIは`no_global_oom_handling`というcfgで除外されているようだ。そのため`Vec::push()`や`Box::new()`とかも呼び出せない。
  • The Rust Programming Language 日本語版 - The Rust Programming Language 日本語版

    The Rust Programming Language 日語版 著:Steve Klabnik、Carol Nichols、貢献:Rustコミュニティ このテキストのこの版ではRust 1.58(2022年1月13日リリース)かそれ以降が使われていることを前提にしています。 Rustをインストールしたりアップデートしたりするには第1章の「インストール」節を読んでください。 HTML版はhttps://doc.rust-lang.org/stable/book/で公開されています。 オフラインのときは、rustupでインストールしたRustを使ってrustup docs --bookで開けます。 訳注:日語のHTML版はhttps://doc.rust-jp.rs/book-ja/で公開されています。 rustupを使ってオフラインで読むことはできません。 また、コミュニティによるい

  • Rust - moon's STM32づくし

    2022.05.21 STM32 Rust ベアメタルにウォッチドッグタイマーを使ってみる 今回はウォッチドッグタイマーを使ってみます。 ベアメタルと言われているレジスタにアクセスする方法を使います。 開発環境は以下の通りです。 PC:Windows10 OS Board:STM32Nucleo-F401RE デバイス:STM32F401RE エディタ:VSCode 言語:Rust ボードの情報は こちら からご覧いただけます。 環境構築については こちら をご覧になってください。 ウォ […] 2022.04.30 STM32 Rust halでSPI (halを0.9から0.13にバージョンアップしてみた ) 以前halを使ってSPIを操作しました。 少し前にhal(stm32f4xx-hal)のバージョンが 0.13 に上がったので、今回は 0.13 で動作確認を行いました。 作業内

    Rust - moon's STM32づくし
  • Introduction - The Rust on ESP Book

    Introduction The goal of this book is to provide a comprehensive guide on using the Rust Programming Language with Espressif devices. Rust support for these devices is still a work in progress, and progress is being made rapidly. Because of this, parts of this documentation may be out of date or change dramatically between readings. For tools and libraries relating to Rust on ESP, please see the e

  • ぶらり組込みRustライブラリ探索の旅 BBQueue編 -スレッドセーフなSingle Producer Single Consumer Queue- - Nature Engineering Blog

    ファームウェアエンジニアの中林 (id:tomo-wait-for-it-yuki) です。あけましておめでとうございます。 今年の目標はNature Remoのファームウェア開発にRustを導入すること、です。そこで引くに引けない状況を作り出すためにRustに関するブログエントリを書き、既成事実を積み上げていきます。 ぶらり組込みRustライブラリ探索の旅、と題して組込みRustで使えるライブラリをゆるく紹介していくシリーズをやりたいと思います。第一弾はBBQueueです。 BBQueue エントリ内で紹介する使い方や内部実装は、v0.5.1をもとにしています。 github.com https://docs.rs/bbqueue/0.5.1/bbqueue/ 特徴 BBQueueはno_stdで使えるだけでなく、スレッドセーフで、排他制御なしに使える Single Producer

    ぶらり組込みRustライブラリ探索の旅 BBQueue編 -スレッドセーフなSingle Producer Single Consumer Queue- - Nature Engineering Blog
  • Rustのビルドを高速化する方法 | POSTD

    Rustコードのコンパイルが遅いことは誰でも知っています。しかし筆者は、世の中のほとんどのRustコードはコンパイルをもっと速くできると強く感じています。 例えば、つい最近の記事にこのように書かれていました。 一方、Rustでは、プロジェクトやCIサーバーの性能にもよりますが、 CIパイプラインの実行に15~45分かかります。 これは筆者には理解できません。GitHub Actions上にあるrust-analyzerのCIの所要時間は8分です。しかも、これは100万行の依存関係に加え、20万行の独自コードが記述されたとても大規模で複雑なプロジェクトでの話です。 確かに、Rustは根的な部分で非常にコンパイルが遅いのは間違いありません。Rustはジェネリクスのジレンマにおいて「遅いコンパイラ」を選び、全体的な設計思想としてコンパイル時間よりもランタイムを優先しています(この点に関する優れ

    Rustのビルドを高速化する方法 | POSTD
  • Rust初心者殺しの文法10選 - Qiita

    概要 この記事ではRust初心者が驚いたり混乱させられたりするようなRustの文法を10項目集めてみました。 これらの項目は知らないと理解できなかったりコンパイルエラーに悩まされたりする一見厄介なものたちなのですが、そのような直感的でない挙動を敢えてさせているところには重要な意味が込められていることが多いです。 そのため、これらの項目を通してRustが目指しているものや実現したい機能の一部を垣間見ることができると思います。 1. デフォルトの代入がムーブ Rustの最大の特徴が所有権の概念であることは有名ですが、それでもなお初心者殺しになるのがムーブです。 以下のコードがコンパイルエラーになるメジャーな言語は現状Rustくらいしか無いでしょう。 let mut a = vec![1, 2, 3]; let mut b = a; // ここでaの持つベクタの所有権がbにムーブされ、aは無効に

    Rust初心者殺しの文法10選 - Qiita
  • GitHub - yuk1ty/learning-systems-programming-in-rust: 「Rustでもわかるシステムプログラミング」

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - yuk1ty/learning-systems-programming-in-rust: 「Rustでもわかるシステムプログラミング」
    masterq
    masterq 2021/05/14
    "『Go ならわかるシステムプログラミング』(渋川よしき著)内に書かれている Go コードを Rust で書き直しているプロジェクト"
  • GitHub - rust-lang/async-book: Asynchronous Programming in Rust

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    GitHub - rust-lang/async-book: Asynchronous Programming in Rust
  • JavaScriptな人のためのRustのFuture入門 - Qiita

    RustでI/Oを扱うプログラムを書く機会がありました。非同期I/Oのほうがパフォーマンスがよくなるらしく、tokio というフレームワークがよく使われているとのこと。tokio では Future をベースとして非同期処理を書くようです。明るい Future を生み出していけばよいプログラムがかけそうですね 。しかし、 tokioやFutureがなんもわからんという問題がありました。そこで、JavaScriptのFuture、Promiseと対比させてRustのFutureについてまとめます。 JavaScriptのPromise 昔のJavaScript(Node.js)では、ファイル読み込みやネットワークアクセス等のI/O待ちが発生するときはコールバックという仕組みを用いていました。人々は辛くなり、ES2015ではPromiseが導入されました。さらにES2017ではasync/aw

    JavaScriptな人のためのRustのFuture入門 - Qiita
    masterq
    masterq 2021/04/27
    "Futureはポーリングモデルを採用しており、tokio等の非同期ランタイムがFutureの結果を取得しにいきます"
  • Rust Cookbook for Beginners - CADDi Tech Blog

    こんにちは😉 @ryokotmngです。 今日は社内ドキュメントの、Rust初心者向けのクックブックを公開しようと思います。 私自身コードを書くのに四苦八苦していた頃にとても助けられたので、Rustをはじめたばかりの方の参考になれば嬉しいです。 目次 [toc] はじめに この記事では、The Bookに記載されている知識を前提としています。 Rustを全く書いたことがない方は、先に読んでみることをお勧めします。 サンプルコードが結構長いこと、実行環境があった方が良い内容も多いことから、サンプルコードは大体Rust Playgroundのリンクとなっています。 ぜひご自身で修正して遊んでみてください。 単位つきの計算を型で厳格に縛る 例えば複数の長さの単位 (mm, cm, mなど) を扱う場合に、単位が合っていない長さ同士の計算をする場合、単位を揃える必要がありますね。 この時、最終的

    Rust Cookbook for Beginners - CADDi Tech Blog
  • 論文紹介: Theseus: an Experiment in Operating System Structure and State Management

    しかし、10分間のプレゼンで3の論文を紹介するとかいう、かなり無茶苦茶な発表だったので説明している箇所もかなり限定的で、解説全体として非常に雑なものになってしまいました。 そこでこの記事で、このLTで触れた論文の1つであるTheseusというOSについて説明したものをもう少し詳しくみていきたいと思います。 論文概要 タイトル: Theseus: an Experiment in Operating System Structure and State Management 著者: Kevin Boos, Namitha Liyanage, Ramla Ijaz, Lin Zhong 会議: 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI ‘20) USENIX系会議でOS関連のトップカン

    論文紹介: Theseus: an Experiment in Operating System Structure and State Management
  • Rustプログラミングのための環境構築

    Author: blackenedgold Published: 2020-12-04 Last Modified: 2021-06-30 GitHub Source: md 概要 EmacsでのRust言語をプログラミングする際の環境構築について示します。 このページは以下の記事をemacs-jpのために再編集し投稿したものです。 Rustの環境構築(Emacs) | κeenのHappy Hacκing Blog ツールのインストール Rustupによるrustツールチェーンのセットアップは済んでいるものとして、他のツールの準備方法を案内します。 フォーマッタ、リンタ 公式で配布されているrustfmt(フォーマッタ)とclippy(リンタ)が鉄板です。 インストールは…既に上記の方法でインストールされています。 確認してみましょう。

    Rustプログラミングのための環境構築