Rust

R から winit を使いたい、あるいは winit を main thread 以外で使うには

あとで書き直すかも。いったん「これでいけそう」という方針が決まってきたので、自分の中での整理も兼ねて書きます。

ALTREP 徹底入門

R には、バージョン 3.5(2018年リリース)で導入された ALTREP という仕組みがあります。ALTREP は alternative representation の略で、たぶん「通常とは異なるメモリ上の表現」みたいな意味です。要は「普通のベクトルのように扱えるけど中身は実は別物」…

RustからRのC APIを使う時、エラーをちゃんとハンドリングしたい

RのC APIを使う時、当然ですが任意の操作は失敗する可能性があります。 このために、RのコードでいうtryCatch()にあたるものがいくつか提供されています。 https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Condition-handling-and-cleanup-co…

RでC APIを使う時、SEXPをGCから守る3つの方法

extendrの実装おかしくない?、というのを最近調べていて、理解が深まったのでメモっておきます。

メモ:2023年4月時点で rp-hal と rtic を使おうとして遭遇した問題

前回、大変そう、みたいなことを書いたけど、実際大変だったので遭遇した問題をメモっておく。 たぶん1年後くらいに見るとだいたい解決されてそうな気はする。

メモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でタイマーを使いたい

ある関数を定期的に実行したいとき、公式のSDKだと add_repeating_timer_ms() add_repeating_timer_us() という関数が用意されていて、callback関数を渡すとそれを定期的に実行してくれるらしい。 実際のコードはこのへんとか、RP2040のデータシートの「4.6.…

メモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でPIOでシフトレジスタIC(74HC595)を使う

すでに詳しくブログを書かれている方がいるので、書くほどでもないと思いつつメモ。

メモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でPIOを使ってPWMする

PIOでPWMを実現するのは、公式のexamplesにコードがある。 rp-halでもpio-rs経由でPIOが使えて、このコードをRustに書き直したバージョンが以下のコードらしい。 これを理解するのにちょっと手間取ったのでメモ。

メモ:rp-hal(RustでRaspberry Pi Picoをプログラミングするやつ)でPWMを使う

rp-hal というのはこれ

「RとRustの現状確認 2023」というタイトルでTokyo.R#103で発表してきました。

少し前ですが、第103回R勉強会@東京で発表してきました。スライドはQuarto Pub(便利)で公開しています。

2023年、Rustグラフィックス界隈(というかwgpu界隈)への期待

1年後どうなってるのかわからないけど、この気持ちを覚えているうちにメモっておきたいので書きます。 (注:私はRustを使うのが年間数日くらいのエアプ勢なので、たぶんいろいろ適当なことを書いていると思います。話半分で読んでいただければ...)

メモ:#[extendr] の実装を追ってみる

こういう関数があるとする。

フォントをアウトライン化するRパッケージstring2pathをCRANリリースしました

そういえば日本語ブログにぜんぜん書いてないことに気付いたので、いちおう。 string2pathというRパッケージをCRANリリースしました。 特筆すべき点として、このパッケージはRustを使っています。 これはextendrというフレームワークによって実現されていま…

「RパッケージでRustを使うには: extendr入門」というタイトルでTokyo.Rで発表してきました。

発表してきました。 https://tokyor92-slides-rust-and-r.vercel.app/ こっちでも見れます:

メモ:wgpuでDoFを実装した時に参考にしたリンク集

(完全に自分用メモ)

メモ:wgpu-rs で bloom を実装する

これを wgpu-rs でやってみたときのメモ。例によって GitHub の master 版なのでコードはたぶんすぐに動かなくなる。

メモ:wgpu-rs と lyon を使って描画する

以前にこんなのを書いたけど、 けっきょく、nannou の挙動がわからないので勉強がてら素の wgpu と lyon を使ってみるか〜となってしまったのでそのメモ(vulkan のドライバまわり?の謎のエラーの切り分けのために、詳しめのエラーを出してくれる開発版 wgp…

メモ:nannou で素の lyon と wgpu-rs を使って描画する

nannou は Rust 製のクリエイティブコーディングフレームワークです。lyon は 2D グラフィックスのための tessellationのライブラリ、wgpu-rs は WebGPU を使うためのライブラリです。この 2 つは nannou の中でも使われているもので、黙っていれば nannou …

nalgebra の Point や Vector を nannou の Point や Vector に変換する

nannou は cgmath というライブラリを使っていますが、 nalgebra の方が人気でドキュメントが多いのでそっちから入門するのが楽そうです。しかし、 nalgebra と cgmath は当然使ってる型が違うのでなんらかの変換が必要になります。どちらも内部的には array…

メモ: nannou と行列計算

「Rust 行列計算」とかでググると、主に nalgebra と ndarray という Crate が引っかかる。どうやらこれが二大巨塔っぽい。 しかし、nannou が使っている Crate はこれではなく、 cgmath というやつらしい。

Processingとnannouの違いについてのメモ(2)

Rectを頂点から定義する 前回書いたように、Rectは中心の座標と高さ、幅で定義できます。とはいえ、頂点の座標でやる方法もなんかあるのかな?と思っていたら、 let r = Rect::from_corners(pt1, pt2); という感じで2つの頂点からつくることもできました。 …

Processingとnannouの違いについてのメモ(1)

タイトルに(1)とつけたものの次回があるかわからないけどとりあえずメモ。 (私はProcessingもnannoutも、軽くいじったことがある、くらいのレベルです。ここに書かれていることはあまりアテにしないでください)

Rustでforループの代わりにmapを使おうといろいろ試行錯誤した時のメモ

うさぎさんに少しでも追いつきたくて、コードを読んでるけどぜんぜん分からないのでメモ。

メモ:Rustの人工知能フレームワークleafを触ってみる

追記:leaf、まだ志半ばなのか、動きそうな実装がない。とうさぎさんから教えてもらったので記事の後半書き換えました...。適当なこと書いてすみません。 @sinhrksさん(a.k.a.うさぎさん)がこんなつぶやきをしていました。 2名のスタートアップで選定言語…

「RからRustの関数をつかう → はやい」と言おうとしたらめっちゃ時間がかかった話

こんな話がある。 qiita.com qiita.com で、これRからもできるのでは?と思ってやってみようとしたらいろいろハマってつらかった話をします。