タグ

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

  • 月刊「Rustは低レイヤーで使ってもunsafeだらけになるから意味がない」廃刊のお知らせ

    組込みRustや自作OSなどにおいて、従来言語より高い安全性があるとされているRustは注目される一方、Rustでも低レイヤー分野で頻発するメモリアクセスやインラインアセンブラなどでunsafeブロックが存在が多くなりがちです。 このunsafeブロックが多くなるので、結局Rustでこのような低レイヤー分野を触っても意味がないのでは?安全ではないのでは?という疑問が投げかけられることがしばしばあります。 筆者はTwitterや過去のブログで、組込みRustにおいてのunsafeとの付き合い方について触れていきましたが、内容としては分散していたので今一度この疑問に対するアンサーをまとめることにし、この論争に終止符を打とうと思います。 Rustにおけるunsafeとは そもそもunsafeとは何かというのはThe Rust Programming Languageのドキュメントにも詳しく書かれ

    月刊「Rustは低レイヤーで使ってもunsafeだらけになるから意味がない」廃刊のお知らせ
    zyzy
    zyzy 2025/01/07
    この話何周目だ、ってくらい最初期から延々されてる気が……
  • 実行しなくても危険なコピペ

    この記事はとあるサークルのOB/OGが行っているN代アドベントカレンダー2024の24日目です。 はじめに インターネットで拾った野良コードをよく考えずに実行してはいけないという話は皆さん耳タコだと思います。今日びそんな野蛮なことをする人はいないでしょうが、世の中には実行しなくてもエディタに貼り付けただけで悪さをしだすコードもあります。 題 以下のコードをVSCodeなりRustRoverなり、お好きなエディタに貼り付けてみてください。 ......いや、やっぱり貼り付けないでください。 #![allow(dead_code)] fn main() { println!("Hello, world!"); } type T1<T> = (T, T, T, T); type T2<T> = T1<T1<T1<T1<T>>>>; type T3<T> = T2<T2<T2<T2<T>>>>;

    実行しなくても危険なコピペ
    zyzy
    zyzy 2024/12/25
    逆に言うと、型でもdead_codeをallow指定しないと飛ばされるんだな。
  • Haskeller の異常な愛情:または、生粋の Haskeller は転職して Rust を一ヶ月半書いて何を思うようになったか

    Haskeller の異常な愛情:または、生粋の Haskeller は転職して Rust を一ヶ月半書いて何を思うようになったか この記事は Jij Advent Calendar 2024、Haskell Advent Calendar 2024、およびRust Advent Calendar 2024シリーズ2 の18日目の記事です。 各カレンダーの前後の記事は以下の通りです: Haskell Advent Calendar 2024 前の記事: 次の記事:gotoki_no_joe さんの「集めるDPについて」 Rust Advent Calendar 2024 シリーズ2 前の記事:yasuo-ozu さんの「物のSpecializationをStable Rustで!」 次の記事:hyumanase さんの「Rust.Tokyo 2024 に初参加した」 Jij Advent

    Haskeller の異常な愛情:または、生粋の Haskeller は転職して Rust を一ヶ月半書いて何を思うようになったか
    zyzy
    zyzy 2024/12/19
    cabal今まともなんだ、っていうのとRust用Hoogleは確かにあったら便利そうではある。Monad欲しいのはずっと言ってるけどまぁ難しいんだろうな、と。
  • RustでWeb開発コソコソ噂話

    下記に登壇した際の資料です。 https://findy.connpass.com/event/331621/ スライドはメモ書き程度のものとなっており、実際には講演の中で口頭で数多くの補足が入っています。講演の内容をまとめた記事も近日公開される予定なので、あわせてご覧ください。

    RustでWeb開発コソコソ噂話
    zyzy
    zyzy 2024/11/06
    芋づる式に全部変えないといけなくなるあるあるやっぱRustで皆体験してたのか。この辺が統一性の保証でもあるけども、というのは確かに。
  • Rust's Most Subtle Syntax | zk

    Psst. Hey kid. You wanna write confusing Rust? I’ve got just the thing. Bring us let and constQuick rundown on let and const in Rust: letYou use let to declare a new variable. Wow. let x = 5; This is in the form let PAT = EXPR;, which makes it a bit more powerful than first seems. // +---- this is a pattern. Same as the things you use in matches. // | // vvvvv let (a, b) = (5, 10); You can combine

    zyzy
    zyzy 2024/11/06
    あー……パターンマッチの変数束縛にうっすら感じる大丈夫なんかコレ感の正体が見えた感。駄目なケース
  • 開発用適当ツールは Rust で作るのもオススメ

    開発用適当ツールは Go で作るのがオススメ!? 先日、開発用適当ツールはGoで作るのがオススメ という記事を拝見しました。 まだ読んでないよという方はぜひ読んでみてください! とても良い記事でした😌✨ Go 言語も CLI ツールの実装に向いているということも分かりました。 そして、Go 言語の魅力も伝わってきました...!! まとめると以下のような点がメリットとして挙げられていると思います。 go run で簡単に実行できる シングルバイナリにクロスコンパイルできる go.mod / go.sum が依存性管理を楽にしてくれる 動作速度も申し分なし たしかに開発用適当ツールの作成というユースケースは Go は魅力的な選択肢だと思います! 開発用適当ツールは Rust で作るのもオススメ 前置き 最初に大事なことを言っておきます。 タイトルにもあるように、Rust も であって GO

    開発用適当ツールは Rust で作るのもオススメ
    zyzy
    zyzy 2024/10/18
    python自分用のツールしか使わないなら環境で困らないんだけども、特定環境を想定した他人の奴も併用して使おうとすると途端に環境管理しないといけなくなるので、そこがないのはコンパイル言語の強みよな。
  • Nushellでの正規表現使用方法

    はじめに Nushellでの正規表現使用方法について説明します。 Nushellの正規表現ですが、Nushell公式マニュアルには以下のみの記述になっています。 Regular expressions in Nushell's commands are handled by the rust-lang/regex crate. If you want to know more, check the crate documentation: "regex". とさらっとしかかいていない状況です。regex crateはGoogleの高速なRE2にインスパイアされた正規表現のライブラリ(Crate)ですね。2017年の記事ですが、A comparison of regex enginesによれば、なかなか優秀なようです。 特徴的なものとして、(1)named capture groups,(2

    Nushellでの正規表現使用方法
    zyzy
    zyzy 2024/10/03
    regexの使い方まとめにもなるなこれ
  • マルチプラットフォームなNu Shellを使ったら、あらゆるデータを一行で扱えて時間効率が上がった

    3秒まとめ マルチプラットフォームで同じコマンドを利用して手元で動かしたい処理をサクッと実行できる GitHub Actionsでも簡単に利用可能 JSON, YAML, SQLite, CSV, EXCELなどのファイルをデフォルトでパースしてデータフレームのように扱える httpリクエストも投げられるので、curl入ってない!みたいなことでイラッとすることが減る こんな方向きの記事ではない zsh, bashなどをマスターしている人にとってはあまり導入する意味がない サーバールームでLinuxの標準シェル以外使えない環境で作業するような人には向かない MacWindows、コンテナの中を触るときにコマンドが微妙に違う 例えば、Mac,Linux系であればlsでファイル一覧を確認してcpコマンドでファイルをコピーするといった芸当が、Windowsでは普通にはできません。 これは、Win

    マルチプラットフォームなNu Shellを使ったら、あらゆるデータを一行で扱えて時間効率が上がった
    zyzy
    zyzy 2024/09/30
    ちょっと気になるので
  • Rustで勘違いしていたこと3選 🏄🌴 【100 Exercises To Learn Rust 🦀 完走記事 🏃】 - Qiita

    100 Exercises To Learn Rust を題材に Qiita Engineer Festa 2024 投稿マラソン に参加していました! 7月17日に仮置きを残しながら投稿したのち、 ようやく全記事完成しました! ので、その記念として、色々話したいと思います!(え、7/17ってもう3週間前...?!) 目次 全記事一覧 100 Exercises To Learn Rustを完走した感想 100 Exercisesの魅力 1. そこそこの長さ 2. 無理のない学習順序 3. 各エクササイズ間に関連がある 4. 効率よく"ミソ"を摂取できる Rustで今まで勘違いしていたこと3選 1. Copy は Clone::clone を...呼び出さなかった! 2. 不変参照は...実は不変ではなかった! 3. 値がスレッドを跨ぐには 'static は...不要だった! 所感 ※

    Rustで勘違いしていたこと3選 🏄🌴 【100 Exercises To Learn Rust 🦀 完走記事 🏃】 - Qiita
    zyzy
    zyzy 2024/08/27
    自分も知らんかったことばかりだ
  • Rust 1.80を早めに深掘り - あずんひの日

    日7/26(金)にリリースされたRust 1.80の変更点を詳しく紹介します。 もしこの記事が参考になれば記事末尾から活動を支援頂けると嬉しいです。 7月25日は蒸気機関車が初めて走った日 ピックアップ 遅延初期化されるグローバル変数を書けるようになった Optionの値を条件を満たしたときだけ取り出せるようになった スライスをパニックなしに分割できるようになった 配列を含むスライスを一次元化できるようになった パターンとして終端の含まれない範囲を使えるようになった useなしにsize_of等が使えるようになった 安定化されたAPIのドキュメント LazyCell サンプル LazyLock サンプル Duration::div_duration_f32 サンプル Duration::div_duration_f64 サンプル Option::take_if サンプル Seek::se

    Rust 1.80を早めに深掘り - あずんひの日
    zyzy
    zyzy 2024/07/30
    take_if便利そう
  • Rust 2024 Editionがやってくる! - paild tech blog

    お手伝いの@helloyukiです。今日はRust 2024エディションの話についてまとめておきたいと思います。ちなみに注意点ですが、Rust 2024エディションはまだリリースされていません。したがって、この記事の情報(2024年4月ごろ執筆開始)はリリース時点で変更されている可能性があります。 エディションとは Rustには「エディション」(あえて日語にするなら「版」?)という概念があります。エディションは、後方互換性を保ちながらも、新しいキーワードの追加をはじめとする言語全体に影響を与えるような変更を加えるものです。3年に一度エディションは改定されることになっており、前回は2021年に改定がありました。これまでのエディションとしては、2015、2018、2021の3つが現状あります。 エディションの仕組みは2018年に導入されたものでした。2018年当時、Rustは非同期関連の言語

    Rust 2024 Editionがやってくる! - paild tech blog
    zyzy
    zyzy 2024/07/01
    Impl Traitのリターンでもうちょっと高階型っぽいものの模倣できるようになるかな?
  • Rust のデバッグチートシート - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Rust Debugging Cheatsheet 開発の基 エディタ VSCode + rust-analyzer - https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer 推奨 neovim + vim-lsp-settings - https://github.com/mattn/vim-lsp-settings lsp の最低限の機能が使える neovim + coc - https://github.com/fannheyward/

    Rust のデバッグチートシート - Qiita
    zyzy
    zyzy 2024/03/14
    便利
  • Rustがサポートするアーキテクチャ少なすぎる!

    RustLinuxカーネルモジュールを実装しよう!」とはしゃいできましたが、実は、X86-64とLoongArchという2つのCPUアーキテクチャしかサポートされていません。近いうちに、ARM64もサポートされそうですが、Linuxカーネルがサポートする大半のアーキテクチャで、Rustは使えません。 Linuxカーネルの標準コンパイラのGCCは、CのソースコードをLinuxカーネルがサポートする様々なCPUアーキテクチャ用の実行ファイルに変換することができます。一方、Rustの公式コンパイラがサポートを保証しているCPUアーキテクチャはARM64とX86、X86–64だけです。 Rustの公式コンパイラがサポートしているアーキテクチャが少なすぎるということで、別のコンパイラを試してみました。 Rustの公式コンパイラRustの公式コンパイラは、コンパイラを実装するための基盤的なソフトウ

    Rustがサポートするアーキテクチャ少なすぎる!
    zyzy
    zyzy 2024/02/26
    rustの問題っつーかLLVMの問題か。で、gcc系のコンパイラあるんだ。知らなかった。
  • Rustで自作シェル書いてみた

    はじめに 自作シェルを書いてみた記事はよく見かけるのですが、そのほとんどが fork -> exec という流れです。仕組みを学ぶという点で非常に有効なのでそれはそれで良いとして、 Rust では標準ライブラリの std::process::Command を使用してもっと簡単にコマンド実行ができるよ! という記事があまりないので書いてみました。 コマンドの実行 REPL パース処理はできるだけシンプルに書きます。 標準入力から1行読み取り、Command::spawn() で実行します。 それを繰り返すのが REPL (Read-Eval-Print Loop)です。 これだけでシェルと言い張っても良いと思っています🤔 use std::io::{self, Write}; use std::process::Command; fn main() { loop { // プロンプト p

    Rustで自作シェル書いてみた
    zyzy
    zyzy 2024/02/06
    この辺もちょっとScalaの使い勝手に似てるよな
  • Zed is now open source - Zed Blog

    We're excited to announce that Zed is now an open source project. The code for Zed itself is available under a copyleft license to ensure any improvements will benefit the entire community (GPL for the editor, AGPL for server-side components). GPUI, the UI framework that powers Zed, is distributed under the Apache 2 license, so that you can use it to build high-performance desktop applications and

    Zed is now open source - Zed Blog
    zyzy
    zyzy 2024/01/25
    相変わらずMacのみではある様子だが
  • Rust1.75で追加された機能を使ってモナドを作ってみる

    Rust1.74でモナドを作ってみようとしてたのですが、今回はその続きになります。 なんで続きをやろうと思ったの? Rust1.74で導入された以下の機能を使って、モナドを作ろうとしたのですがその時は残念ながらできませんでした。(詳細はこちらを参照ください。) その時は、traitの中で -> impl Traitをすることができなかったので断念したのですが、Rust1.75で導入された以下の機能を使えばできそうに見えました。 そのため、この機能を使って再チャレンジしようとしたのがこの記事になります。 この機能で何ができるようになるのか 詳細は上記blogを見ていただくとして、ざっくり説明すると、Trait内で-> impl Traitを定義することができるようになります。 上記blogからの引用ですが、こんな感じです。 trait Container { fn items(&self)

    Rust1.75で追加された機能を使ってモナドを作ってみる
    zyzy
    zyzy 2024/01/16
    Rust開発勢はモナドを実現する意思なさそうではあるというか、我々が勝手に期待してあがいてしまうというか……
  • 「Rust」言語向けの“ビジュアルタイムトラベルデバッガー”「FireDBG」が公開/関数の呼び出しを「コールツリー」として可視化、自由に時間を移動してエラーを特定

    「Rust」言語向けの“ビジュアルタイムトラベルデバッガー”「FireDBG」が公開/関数の呼び出しを「コールツリー」として可視化、自由に時間を移動してエラーを特定
    zyzy
    zyzy 2023/12/25
    Mozilla発というか、初期にMozillaが特に出資していたというか
  • 新たなゲームエンジン「Arete Engine」発表。ユニファイドメモリへの最適化を特徴とし「Unityの1000倍高速」とうたう - AUTOMATON

    新たなゲームエンジン「Arete Engine」発表。ユニファイドメモリへの最適化を特徴とし「Unityの1000倍高速」とうたう - AUTOMATON
    zyzy
    zyzy 2023/11/13
    RustのECSゲームエンジン界隈に新星が来たか。個人的にECS面白いと思ってるので頑張って育ってほしい。
  • iOSでもAndroidでもない新たなOS「BlueOS」ってどんなOS?

    iOSでもAndroidでもない新たなOS「BlueOS」ってどんなOS?2023.11.07 16:00266,947 湯木進悟 新たなワールドへ? 世界のスマートフォンって、基的にはiOSのiPhoneAndroidスマホの二択ですが、そこに新しい波がやってきました。 BlueOSという新ワールドGizChinaは、中国のスマホメーカーのVivoが、独自に開催した2023 Vivo Developer Conferenceにおいて新たなBlueOSの発表を行なったと報じました。 これまでVivoは、AndroidをベースにカスタマイズしたOriginOSをスマホやタブレットに載せて発売してきました。ところが、BlueOSは、Rustというプログラミング言語をベースにした、Androidとは別物のOSです。 Vivoは、BlueOSを搭載する初のデバイスとしてスマートウォッチの「Vi

    iOSでもAndroidでもない新たなOS「BlueOS」ってどんなOS?
    zyzy
    zyzy 2023/11/09
    RustベースのOSで本格的な奴がとうとう来た感じか
  • Rustの学び方教えてくれ

    プログラミングRustは昔一回読んだ 自力で書けなすぎるから写経して学ぼうかと思ったが、中々染み付く感じがしない

    Rustの学び方教えてくれ
    zyzy
    zyzy 2023/10/10
    Bevy Engineで遊んでるけど、ぶっちゃけあの子ライフタイム周りの面倒事を結構隠蔽しまくるので、あんまRustらしいコードかと言われると微妙かもしんない。Serdeとかの流行りのライブラリは触る事になってそこはいいかも。