Bevy + WebGPU Posted on May 17, 2023 by Carter Anderson ( @cart @cart_cart cartdev ) I'm excited to announce that Bevy's main branch now supports WebGPU rendering on the web! This means you can play with it now by checking out our repo provided you have a supported web browser (WebGPU is still in the process of rolling out). You can also explore our live WebGPU examples. The upcoming Bevy 0.11 rel
お手伝いの @helloyuki_ です。今回はポエムです。 今回は、Rust を始めた当時、プログラミング言語は Java しかまともに触ったことがない新米若手 Java エンジニアだった私[*1]が「見たことがなく、使いどころがわからなく理解が難しい」と感じたポイントについて紹介します。対象とするソフトウェアのレイヤーが低いか高いかを問わず、とにかく Rust をやってみて理解するまでに時間がかかり、難しいと感じたポイントについて紹介します。 Rust の「メモリ安全」って、結局何 所有権とライフタイム 参照 スマートポインタ 代数的データ型 関数が第一級である モジュールシステム self 型クラスという側面でのトレイト まとめ 私が Rust をある程度使いこなせるようになるまでの話 「難しい」って何?、の話 Rust の「メモリ安全」って、結局何 そもそも論ですが、Rust が取
Rust を書きはじめて日が浅い私は「ここにセミコロン書いていいんだっけ?書かなくていいんだっけ?」と混乱することがよくあります。 ちょっと作為的ですが例ですが、たとえばこういうとき。 #[allow(dead_code)] fn main() { struct Foo {x: i64} // ◁─┬─ 0個でも1個でもいい struct Bar {x: i64}; // ◁─┘ struct Baz(i64); // ◁─┬─ 1個でも2個でもいい struct Qux(i64);; // ◁─┘ const A: i64 = 1; // ◁─┬─ 1個でも2個でもいい const B: i64 = 1;; // ◁─┘ let _x = 1; // ◁─┬─ 2個だと unnecessary trailing semicolon と怒られる // let _y = 1;; // ◁─┘
Rustでスライスを扱う場合前に進めることはできても、後ろに戻すことができない。 C言語のプログラムから移植するなどでそのような操作をしたい場合にどうしたらいいか調べてみた。 モチベーションC言語で組まれたプログラムをRustで実装する際に、配列の途中を指すようなポインタはスライスで扱うことになると思う。 スライスはC言語でいうところのポインタに加えて長さを保持しているもので(ファットポインタ)、それによって範囲外アクセスが起きないようチェックできる。 ポインタを前に進める場合に対応するには、スライスをさらにスライス取ればいい: でポインタを戻す場合にはどうしたらいいか。 スライスでは後ろに戻した場合の安全性を確認できないため、そのような操作ができない。 ということで、生ポインタの演算に手を出してみた。 生ポインタの操作生ポインタの取得生ポインタを取得するには、参照から as *const
概要: Rustの随所でself引数は特別扱いされている。それらの挙動について調べた。 self引数とメソッド Rustではnon-staticメソッドは self という特殊な名前の引数を持つ関数として定義されている。例えば、 struct A; // parse_self_arg impl A { fn f1(self: A) {} fn f2(self: &mut A) {} fn f3(self: &A) {} fn f4(self: Box<A>) {} // 生存期間を明示すると以下の通り // fn f2<'a>(self: &'a mut A) {} // fn f3<'a>(self: &'a A) {} } と書くと、 f1, f2, f3 はメソッドになる。 self はキーワードであり、この名前の引数は特定の条件下でのみ宣言できる。それは以下の場合である。 trai
※ 小説です ※ 読むとRustや所有権・参照とちょっとだけ仲良くなれるかもしれません ※ まとめやメッセージの類は最後のあとがきに書いてあります(読んで) プロローグ 放課後のチャイムを合図に親友のCSSちゃんが現れた。 CSS「TSちゃん放課後ヒマでしょ?駅前にできたECサイトのデザイン見ていかない?」 TypeScript「気になる!...けどごめんね、今日は美化委員会の仕事があるんだ。」 CSS「えー?今日委員会だったっけ?あの偉そうな堅物とすることなんてある?」 TS「偉そうなって...(苦笑)、うーん、まぁ、ちょっとね。埋め合わせに今度新しいライブラリ紹介するから!」 CSS「しょうがないなぁ」 魅力的な誘いを断ってしまった私は、足早に隣のクラスの彼女の元へと向かった。 TS「ふふふ...今日はとっておきのネタがあるからね...」 美化委員会の仕事があるというのは、半分本当で半
関連キーワード アプリケーション開発 | プログラマー | プログラミング 独立性の高い小規模サービス「マイクロサービス」の開発において、プログラミング言語「Rust」は一定の地位を築いている。Rustにはどのような強みがあるのか。 CやC++じゃなく「Rust」を選ぶ理由はこれだ 併せて読みたいお薦め記事 連載:GoとRustを比較する 第1回:CでもC++でもなくプログラミング言語「Go」を使いたくなる“あの良さ”とは? 第2回:「Go」に期待し過ぎたプログラマーが落胆する“完璧じゃない部分” GoとRustの魅力 プログラミング言語「Go」の魅力とは? 「Goで“脱COBOL”」の成功者が語る 「Rust」はなぜクラウドネイティブ開発者の間で大人気なのか? 「C」や「C++」といったプログラミング言語では、開発者は手動でメモリを管理する必要があるが、Rustはその必要はない。これはプ
Elixir and Rust is a good mix Author Name Jason Stiebs @peregrine @peregrine Image by Annie Ruygt This post is about using Rust with Elixir and how easily it can be done! If you want to deploy your Phoenix LiveView app right now, then check out how to get started. You could be up and running in minutes. Problem We need to perform a CPU intensive or system level programming task and there are just
Cloud Native Computing Foundation(CNCF)が公開しているYouTubeチャネルから、Kafkaに替わるストリーミングプロセッシングを行うオープンソースソフトウェアFluvioを解説する動画を紹介する。CNCFはクラウドネイティブなシステムを普及するためのマーケティング活動の一環としてクラウドネイティブなソフトウェアを解説する動画を公開しているが、これもそのひとつだ。Fluvioを開発しているのはInfinyOnという企業で、元NGINXのエンジニアが創業したベンチャーだ。Fluvio自体はオープンソースだが、CNCFのサンドボックスプロジェクトという訳でもない。CNCFにはTremorやStrimziというストリーミングのためのソフトウェアがすでにサンドボックスとして採用されているが、そういった枠には捕らわれずに紹介をするという発想だろう。 動画:Int
前回の記事を書いてから、考えてるだけじゃだめだなとすこし書いてみたところいろいろわかった。 Rcによるリスト Rcはリファレンスカウントで管理できる。RcはWeakをつくれるので、たとえばnext方向にRcをつなげておき(先頭ノードはリスト本体が保持)、prev方向へはWeakを持たせればいいのではないか? と考えてみたのだった。 やってみたところこの方針では書けないということがわかった。Rcの参照先は基本的には更新ができない。ノードを追加したらprevやnextを書き換えないといけないけど、書き換えができない。書き換えをするには mutable なリファレンスを一時的に獲得する必要があるが、weakも含めたリファレンスカウンタが1でないといけない(これは安全性のためだろう)。prevとnextで基本的にノードにはstrongが1つとweakが1つ常にあるので、mutableなリファレンス
The Rust team is happy to announce a new version of Rust, 1.68.0. Rust is a programming language empowering everyone to build reliable and efficient software. If you have a previous version of Rust installed via rustup, you can get 1.68.0 with: $ rustup update stable If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detailed release notes
Rust and Haskell don’t shy away from powerful features. As a result, both languages have steep learning curves when compared with other languages. Trying to learn Rust or Haskell can be frustrating, especially in the first couple of months. But if you already know Rust, you have a head start with Haskell; and vice versa. In this article, we want to show how knowledge of one of these languages can
「Rust Atomics and Locks」を読んだ #2023-02-05 発売前からすごく楽しみにしていた本で、発売日に買って年末から一生懸命読んでいた。 今なら以下から無料で読める。 https://marabos.nl/atomics/ 内容としては求めるものが分かりやすく書かれており、すでに2023 年に読んで良かった本の1つに入りそう。 目次書籍を通して得たかった知識 #例えば以下のようなコードを書いた際に、println!でどのような数値のペアが表示されるのか。結論から書くと0 0,10 20といった値がまずは思い浮かぶと思うが、0 20というペアで表示される可能性もあるとされており、その際以下のような疑問・不明点があった。 0 20と表示になるのはどのような条件で何が起こった場合なのか強いメモリモデルとされるx86でも0 20というペアは発生するのか本ケースにおいてx8
はじめに Rust Atomics and Locksという本が素晴らしかったので、この記事ではその本の紹介と、Atomicに関する私なりの理解を記述していこうと思います。 Rust Atomics and Locksについて この本はRustの並行処理関連の機能(Scoped Threads, Atomics, 内部可変性, 排他参照と共有参照, SendとSync, Lock, Thread Parking等)を紹介したあと、それらの機能を使ってSpin Lock, Channel, Arc, Mutex, Condition Variable, RWLockなどをstep by stepで作っていくという構成になっています。なのでこの本を読むとArcやMutexなどがRustでどうやって実装されているのかなんとなく分かるようになります。私はこの本を読むまではRustの並行処理よく分か
門脇@satoru_kadowakiです。今月のPython Monthly Topicsでは、Rust製の高速データフレームライブラリ Polars について紹介します。 Polarsとは Pythonでデータ分析に使用される主なライブラリに pandas があります。Polarsはpandasと同様にデータフレームというデータ構造オブジェクトを提供するサードパーティライブラリです。特にpandasを意識して作られており、メインページに「Lightning-fast DataFrame library for Rust and Python」とあるように、Rustによる高速処理を謳っています。 Polarsのリポジトリや関連ドキュメントは以下を参照してください。 Github: https://github.com/pola-rs/polars ユーザーガイド: https://pola
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く