タグ

Rustに関するzyzyのブックマーク (164)

  • Rustでsafeな連結リストをつくる試み

    前回の記事を書いてから、考えてるだけじゃだめだなとすこし書いてみたところいろいろわかった。 Rcによるリスト Rcはリファレンスカウントで管理できる。RcはWeakをつくれるので、たとえばnext方向にRcをつなげておき(先頭ノードはリスト体が保持)、prev方向へはWeakを持たせればいいのではないか? と考えてみたのだった。 やってみたところこの方針では書けないということがわかった。Rcの参照先は基的には更新ができない。ノードを追加したらprevやnextを書き換えないといけないけど、書き換えができない。書き換えをするには mutable なリファレンスを一時的に獲得する必要があるが、weakも含めたリファレンスカウンタが1でないといけない(これは安全性のためだろう)。prevとnextで基的にノードにはstrongが1つとweakが1つ常にあるので、mutableなリファレンス

    Rustでsafeな連結リストをつくる試み
    zyzy
    zyzy 2023/03/10
    rustの連結リスト定期的に話題になるなコレ
  • Announcing Rust 1.68.0 | Rust Blog

    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

    Announcing Rust 1.68.0 | Rust Blog
    zyzy
    zyzy 2023/03/10
    pinマクロの方はあんまり使うところないかな?
  • Rust vs. Haskell

    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 vs. Haskell
    zyzy
    zyzy 2023/02/15
    高階型周りがもうちょっとガッツリ入ればなぁ(GATsで大分行ける感じには成った)というのと、演算子の定義をもうちょっと好きにさせてほしいのはずっと思ってるRust。ghcはエラーメッセージよくなったん?
  • Rust の嬉しさをより多くの日本語話者に知ってもらうためには、スタンフォードで強く敷かれている educational benefit の概念を Rust コミュニティが抱くことが大事なのではないか、という私見

    Rui Ueyama @rui314 スタンフォードの授業で「え、ここまでそれわかってなくて聞いてたの?」という質問をしてる生徒はかなりいたし、教える方は驚くこともなく普通にそういう基的な質問に答えていたので、ああいうのは見習いたい(どちら側も)。 Rui Ueyama @rui314 こういうの、難しい問題とかではなくて当に簡単なやつで、逆に具体的な例を思い出せないけど、例えば集合論で「∅と書いてあるのは数字の0ってこと?」みたいな。ここまで何十分も空集合がわからずに聞いてたのか〜みたいな。

    Rust の嬉しさをより多くの日本語話者に知ってもらうためには、スタンフォードで強く敷かれている educational benefit の概念を Rust コミュニティが抱くことが大事なのではないか、という私見
    zyzy
    zyzy 2023/02/13
    コンパイルエラーをはいてもらえるツールを使いこなせるというのは、時々コンパイルエラー吐いてもらうって事なんだから、そこに卑屈にならないでいいはずなんだよね。
  • 「Rust Atomics and Locks」を読んだ

    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」を読んだ
    zyzy
    zyzy 2023/02/12
    3→1→2→4だと0,20になるのであって、10,0になるのは1→3→4→2の場合じゃない? って考えてしまって上手く呑み込めない
  • Rust Atomics and Locksの紹介とAtomicを自分なりに整理する

    はじめに 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の並行処理よく分か

    Rust Atomics and Locksの紹介とAtomicを自分なりに整理する
    zyzy
    zyzy 2023/02/10
    非同期回りの奴。読まんといかんか/並行処理なら3→(1→2)→4の順で進む事もありそうだし、ないだろとは思わなかったかな
  • Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp

    門脇@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

    Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp
    zyzy
    zyzy 2023/02/10
    自腹でcsv読むツール作っちゃって、もうちょっと前に知りたかった奴。流石にExcelへの書き出しは無理か……。まぁそれは別の奴でやれって話だわな
  • 満を持して始めるRust

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

    満を持して始めるRust
    zyzy
    zyzy 2023/02/10
    シュッと出来る大事
  • Rustで作るテトリス風ゲーム入門

    書では落ち物パズルゲームとして有名なテトリス風ゲームの開発を通してRust言語を学ぶことを目的としています。 テトリスを知らない方でも問題なく読み進めることができます。 先ずは理解しやすいコードでシンプルな落ちものパズルゲームを実装し、後にリファクタリングや機能追加、自動化をしていく流れで構成されています。 テトリスにも様々な種類がありますが書ではCUIでワールドルールを参考にして完成を目指します。

    Rustで作るテトリス風ゲーム入門
    zyzy
    zyzy 2023/02/08
    面白かったけど私が知ってるニューラルネットワークと違うぞそれ……
  • TLSが難しい?RustとLinuxカーネルで実装しよう!

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

    TLSが難しい?RustとLinuxカーネルで実装しよう!
    zyzy
    zyzy 2023/01/10
    目的に対する手段がw
  • bevy/bevy_legion at 129a9747bba8484c614d95e0d0719f0c6bcc5c28 · bevyengine/bevy

    zyzy
    zyzy 2022/12/29
    最初はLegion使って途中からLegionを自腹で取り込んで、そこから自腹実装でECS入れてたのか。
  • Bevy 0.9

    Bevy 0.9 Posted on November 12, 2022 by Carter Anderson ( @cart @cart_cart cartdev ) Thanks to 159 contributors, 430 pull requests, community reviewers, and our generous sponsors, I'm happy to announce the Bevy 0.9 release on crates.io! For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. You can check out our Quick Start Guide to try it today. It's free a

    Bevy 0.9
    zyzy
    zyzy 2022/12/28
    結構書き換えないといけない変更が概ね出揃ったか? ただアニメーションのミキサー関係は後回し確定かな?
  • Rustで3Dサンドボックスゲームを作る #1 Bevy

    続編が書かれるかは未定です。今回は平面を表示しその上をカメラが移動するところまでです。 完成品 Wasm化してブラウザで動かすこともできます↓。 ただしSafariでは上手く動作しないようなので、最新版のGoogle ChromeやFirefoxでお試しください。操作はキーボードのみ(WASD/矢印)です。 ソースコードはGitHub上で公開しています。 はじめに: Bevy BevyはRustで書かれているゲームエンジンです。現在はまだ開発初期段階でAPIが不安定ですが、活発に開発が進められており今後が楽しみなプロジェクトでもあります。 ソースコードはオープンソース(MIT OR Apache 2.0)となっており、もちろんライセンス料なしで使えます。 現在サポートされているプラットフォームは、 Windows macOS Linux Web ですが、現在、 iOS Android のサ

    Rustで3Dサンドボックスゲームを作る #1 Bevy
    zyzy
    zyzy 2022/12/27
    ちょっと前のだが分かり易い奴
  • Welcome to Comprehensive Rust 🦀 - Comprehensive Rust 🦀

    Welcome to Comprehensive Rust 🦀 This is a free Rust course developed by the Android team at Google. The course covers the full spectrum of Rust, from basic syntax to advanced topics like generics and error handling. The latest version of the course can be found at https://google.github.io/comprehensive-rust/. If you are reading somewhere else, please check there for updates. The course is availab

    zyzy
    zyzy 2022/12/22
    非同期周りはばっさり切り捨ててるGoogleのざっくり入門。やっぱ非同期関係が絡むと大分ややこしくなるんだよな
  • Rustでコードを書くゲームエンジンのBevyを使ってインベーダーゲームを作る動画を紹介

    Rustはメモリーセーフを目指すシステムプログラミングとして知られているが、用途はそれだけに限らない。今回は、Rustゲームにも使えるプログラミング言語であることを、インベーダーゲームを作りながら解説する動画を紹介する。これはBevyというゲームエンジンを利用して開発するもので、RustのマスコットであるFerrisがシューターとして、ランダムに飛来してくるインベーダーをレーザーで攻撃して撃墜するというゲームだ。 動画は1時間20分程度という長さであるが、ゲーム開発の手法のひとつであるEntity Component System(ECS)によって徐々にゲームの要素を組み上げていくという内容になっている。ソースコードの構造はゲームの要素であるシューターをPlayer、インベーダーをEnemy、シューターが使うレーザー光線をLaserなどに分離して、それぞれ属性やロジックを組み上げていくと

    Rustでコードを書くゲームエンジンのBevyを使ってインベーダーゲームを作る動画を紹介
    zyzy
    zyzy 2022/12/16
    Bevyは1.0待ち状態。一番気に入ってはいる。なんだかんだでECSはしっくりくる
  • 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を書いた
    zyzy
    zyzy 2022/12/14
    完全に0からやる奴や……
  • 年末ですし、今年のRustの進捗の話をしましょう

    TechFeed Experts Night #9 で使用した発表資料です。2022年の Rust になされた変更やアップデートから、個人的に気になったものをピックアップした発表です。

    年末ですし、今年のRustの進捗の話をしましょう
    zyzy
    zyzy 2022/12/09
    完全再現はまだ厳しいとはいえMonadっぽいものを書けるようになったの楽しい。楽しいだけかもだが楽しい。
  • リモートマシンから手元に向かってコマンドを実行できるやつを作った - Write and Run

    KOBA789 です。寒い日が続きますね。こうもあまりに寒いとアイスをべたくなるものです。昨日の私はその衝動に抗えず、コンビニでソフトクリーム(チョコ味とのミックス)を買ってきてべました。余計に寒くなったのでもう二度とやりません。今はおでんがべたいです。よろしくお願いします。 リモートから手元に向かってコマンドを実行したい さて、寒いとアイスがべたくなるように、リモートマシンに SSH でログインしていると手元でコマンドを実行したくなるものです。せっかくリモート接続してるのにね。人って不思議です。 たとえば、SSH 先の Linux マシンで code って打ったら手元の MacBook Air で VS Code が起動してほしいわけです。VS Code の Integrated Terminal 内ならできますけど、そもそも VS Code のウィンドウが1枚も開いていないとき

    リモートマシンから手元に向かってコマンドを実行できるやつを作った - Write and Run
    zyzy
    zyzy 2022/12/06
    な……なんでだよ……>"たとえば、SSH 先の Linux マシンで code って打ったら手元の MacBook Air で VS Code が起動してほしいわけです"
  • Rust でバイナリを配布する

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

    Rust でバイナリを配布する
    zyzy
    zyzy 2022/12/05
    結構色々な方法あったんだな
  • Rust を ChatGPT だけで勉強する【実験記録】

    C++ 経験者が、ChatGPT との対話だけで Rust を学んでみる実験の記録です。 期待した回答が得られなかった際には、質問文を変えたり、回答を再生成したりしています。 AI の回答には不正確な情報が含まれている可能性もあります。不正確な技術情報が拡散しないよう、AI の回答は画像で掲載しています。

    Rust を ChatGPT だけで勉強する【実験記録】
    zyzy
    zyzy 2022/12/05
    質問が応用案件になってくるとややきついか。まぁでもweb上に学習用のテキストががっつりある奴なら大体はこれくらいいける奴かもしれん