タグ

Rustに関するyu_dotnet2004のブックマーク (19)

  • Rustのパターンマッチを完全に理解した

    プログラミング言語Rustのパターンマッチを完全に理解しました!!! 記念にここにメモしておこうと思います! let文についてlet文ってありますよね?こういうのです。 1 let x = 1; タプルや構造体ならこんな感じ。 1 2 3 4 5 6 7 struct Foo { a: i32, b: i32, }; let x = (1, 2); let x = Foo { a: 1, b: 2 }; これが基系ですね。 これが基?そうじゃない!let 変数名 = 式; と書くのが基・・・そう思っていましたが、違ったんです。 変数名 ではなく 右辺の型 と同じ構造を書くのが基、そう考えましょう。 つまり、タプルや構造体なら下のように。 1 2 3 4 5 6 7 struct Foo { a: i32, b: i32, }; let (x, y) = (1, 2); let Fo

    yu_dotnet2004
    yu_dotnet2004 2018/08/10
    本当によくまとまっていた。
  • Rustコンパイラの処理の流れ(1)

    Rustのプログラムは以下のようなステップから構成されており、上から順に処理されている。 .rsファイルをパースし、ASTを生成マクロの展開、名前解決、#[cfg] アトリビュートの解釈ASTをHIRに変換型推論、型解析HIRをMIRに変換MIRをLLVM IRに変換、最適化.o ファイルをリンク.rsファイルのパースパーサはlibsyntax crateにまとまっている。一般的なパーサと同じく、字句を解析しASTを作る。 rust/src/libsysntax/codemap.rsでもともとのソースコードの位置の情報とASTのノードをマッピングしている。CodeMapのフィールドの1つであるfilesにファイルの情報がFileMapというデータ構造で入っている。また、CodeMapの先頭からの絶対的な位置がSpanというデータ構造に格納される。StringReader がFileMapを

  • 最速で知る! プログラミング言語Rustの基本機能とメモリ管理【第二言語としてのRust】 - エンジニアHub|若手Webエンジニアのキャリアを考える!

    最速で知る! プログラミング言語Rustの基機能とメモリ管理【第二言語としてのRustRustは、新しいシステムプログラミング言語です。稿では、基的な構文に加えて、所有権、参照と借用、ライフタイムといった特徴的な機能によるメモリ管理を解説します。 κeen(@blackenedgold)です。Rustの入門を担当することになりました。基的な文法と使い方を説明しつつ、Rustの特徴的な機能と、なぜその機能が必要かというモチベーションを紹介していけたらと思います。 Rustは非常に高機能であり、この記事ですべてを紹介できません。興味を持った方は、ぜひ公式ドキュメントを読んでみてください。私が管理している和訳もあります。 The Rust Programming Language プログラミング言語Rust Rustはシステムプログラミング言語 Rustのインストール Hello W

    最速で知る! プログラミング言語Rustの基本機能とメモリ管理【第二言語としてのRust】 - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • Servo, the Parallel Browser Engine Project

    The embeddable, independent, memory-safe, modular, parallel web rendering engine Servo is a web rendering engine written in Rust, with WebGL and WebGPU support, and adaptable to desktop, mobile, and embedded applications. 2024-06-28 This month in Servo: text fields, better emoji, devtools, and more! Plus font rendering performance, OpenHarmony and AddressSanitizer builds, and a new AI policy.

  • ドワンゴがRustで分散ファイルシステムを作っているらしい

    第2回 大量トラフィックを支えるインフラ~独自プロトコル,ファイルシステムの実装もいとわない!~ ドワンゴが分散ファイルシステムを作っているというニュースを見た. しかもRustで. ニュース以上のことも知りたくなったがツテがないし, あったとしても教えてくれるわけがないので外側から推測することにした. 実は分散ファイルシステムも独自に開発しました。もともと既存のオープンソースのファイルシステムを使っていたのですが,それだと期待する性能が出ないことがわかり,独自に調査開発を進めることにしました。 Rustという言語で,ガベージコレクションがなく,C++にメモリ安全性の機能を付加したようなものです。ニコニコの動画・生放送の配信基盤開発ではErlangを使うことが多いのですが,レイテンシを細かく制御したい分散ファイルシステムの分野では,どうしてもガベージコレクションが気になってきます。たしかに

    ドワンゴがRustで分散ファイルシステムを作っているらしい
  • Announcing Rust 1.14 | Rust Blog

    The Rust team is happy to announce the latest version of Rust, 1.14.0. Rust is a systems programming language focused on safety, speed, and concurrency. As always, you can install Rust 1.14.0 from the appropriate page on our website, and check out the detailed release notes for 1.14.0 on GitHub. 1230 patches were landed in this release. What's in 1.14.0 stable One of the biggest features in Rust 1

    Announcing Rust 1.14 | Rust Blog
    yu_dotnet2004
    yu_dotnet2004 2016/12/27
    rustupが1.0に達したとのこと。
  • Zero-cost abstractions

    buffer: &mut [i32]; // A mutable array slice. coefficients: [i64; 12]; // A fixed-size array of 12 elements. qlp_shift: i16; The snippet is part of a function that restores sample values from residues. This is something that happens a lot during decoding, and this particular loop makes up roughly 20% of the total decoding time. It had better be efficient. IngredientsThe snippet computes a fixed-po

    yu_dotnet2004
    yu_dotnet2004 2016/12/02
    一見するとオーバーヘッドが掛かりそうなコードでも本当にゼロコスト抽象化している、というお話(逆アセンブル結果のコードはちゃんと読めてないけど)
  • LinuxコミュニティはRustを受け入れた

    私が最近注目しているプログラミング言語がある。Rustだ。Rustとは、錆のことである。何が錆なものか。JJだ。 RustはMozillaが開発しているプログラミング言語である。恥ずかしいことに私はRustの存在をつい最近まで知らなかった。私がRustの存在を知ったのはkernelvmでのことである。発表をustで聴いたあと自分で調べるとなるほどこれは私の望んでいた言語だと思った。そしてそれは、Linuxコミュニティが望んでいた言語でもあったのだ。 昨今、Go言語なるものが流行っている。も杓子もDockerの実装言語として採用されているためだ。しかし、Goは私のテイストに合わない。プログラミング言語というのは、異性のようなもので、一目見ただけで良いとか悪いとか感じるものである。これがまさにテイストということであり、言語にこだわりがないなんて人は、「誰でも良い」と言ってるようなものである。

    LinuxコミュニティはRustを受け入れた
  • プログラミング言語Rust

  • rust の lifetime - toshi_pp’s blog

    まずは 1.0 alpha リリースおめでとうございます。 リリースしてドキュメント関係が差し替わって Book (旧 guide) に lifetime について乗るようになったぽい。 C++ はリファレンスによって NULL ポインタのデリファレンスを防げるようになったが、ダングリングリファレンスは依然として起こってしまう。 rust の lifetime の概念はこれを解決するためのものらしい。 lifetime は Book にあるように、 場合によって省略可能だが、コンパイラが決定できない場合ユーザーが明示的に指定する必要がある。 具体的には、以下のような場合。 fn f<'a> (x: &'a i32, y: &i32) -> &'a i32 { x } fn main() { let x = 1; let r: &i32; { let y = 2; r = f(&x, &y)

    rust の lifetime - toshi_pp’s blog
  • 関数型プログラマのためのRust | POSTD

    この投稿はEdward Z. Yangが2010年に書いた OCaml for Haskellers 、私自身が今年頭に書いた Haskell for OCaml programmers の流れに沿っています。 目次 プロローグ なぜRustを学ぶべきか 直接対応が可能なもの トレイト:Rustの型クラス アドホックなオブジェクトとメソッド 安全な参照 寿命と記憶域、そして管理オブジェクト オブジェクトの共有:RcとArc マクロとメタプログラミング リテラル 謝辞 参照 Copyright and licensing 注 : この記事の最新版は下記サイトで見られます。 http://science.raphael.poss.name/rust-for-functional-programmers.html 他のフォーマット: Source , PDF プロローグ C言語プログラマのための

    関数型プログラマのためのRust | POSTD
  • Rustを学びシステムレベル言語を理解すること - ワザノバ | wazanova

    https://www.youtube.com/watch?v=ySW6Yk_DerY Rustについては「Rustのあれこれ」で少し触れましたが、Yehuda Katzが、Skylightの一連のブログとGoGaRuCo2014の講演で、「ハイレベル言語のプログラマーがシステムレベルの言語を学ぶチャンス」という観点で紹介しています。 主なポイントとしては、 プログラミング言語の特性は変わることがないとか、プログラミング言語のパフォーマンスと生産性は常にトレードオフであるという考え方は、JavaScriptにおいて、生産性が少し改善されつつ同時にパフォーマンスが大きく向上してきたという事実から、必ずしも正しくはない。 Rustは、セグメンテーション違反が起きないという意味での安全性と、どこにメモリを置くか直接コントロールできる仕様を両方兼ね備える。 Rustを学ぶということは、ハイレベル言

  • [Rust] 文字列のフォーマット指定(println! / format!) - Qiita

    TL;DR Rustのprintln!のフォーマット指定についての記事です。 長い記事でもありませんが、以下のソースを見れば大体わかります。 https://gist.github.com/YusukeHosonuma/6ee32ade9ac88cbc9fbd6b494154c5a0 はじめに 最近「Rustはいいぞ!」という声を聞いたり、Swiftが影響を受けた言語がRustだったりと、気になったので勉強し始めました。 Rustで標準出力はprintln!マクロで行うのですが、フォーマット指定がC言語などのprintfとは異なります。 以下のあたりのドキュメントに詳しく書かれているのですが、自分でコードを書いていて迷ったりすることもあったのでまとめてみました。(網羅はしていません) 基 println!で標準出力 {}がプレースホルダ format!でフォーマット後の文字列を取得(指定

    [Rust] 文字列のフォーマット指定(println! / format!) - Qiita
  • Spongedown - Spongedown

    The code used in writing this book is hosted in github here and the source code used for generating the book is in here The following is the code for the page # #![allow(unused_variables)] # #fn main() { # Spongedown [Spongedown](https://github.com/ivanceras/spongedown) is a wraps of markdown with to multiple funky features added. Funky features: * [bob](https://github.com/ivanceras/svgbobrus/) di

  • Possible alternative compiler backend: Cretonne

    Hi everyone, So I’ve been having some interesting conversations with @sunfishcode, and I wanted to talk about an idea that he floated to me and try to get some feedback. The idea is to add an alternate backend to LLVM based on Cretonne. Cretonne is a compiler IR, similar to LLVM, being implemented (in Rust!) for use with WASM. It is intended for use in SpiderMonkey, Mozilla’s JS engine. The idea i

    Possible alternative compiler backend: Cretonne
  • Xi Editor - Google製のRustを使ったテキストエディタ

    最近導入が増えているプログラミング言語としてGoRustがあります。新しいプログラミング言語を学ぶのはプログラマーにとって楽しいことですし、言語特有のテクニックを学ぶことで新しい開発方法を知ることもできます。 今回はRustで作られたテキストエディタ、Xi Editorを紹介します。Googleが開発しているRust製のエディタです。 Xi Editorの使い方 Xi Editorの画面です。今はCocoaが使えるようになっており、Mac OSX向けに開発されています。他のプラットフォームも計画に入っています。 日語も問題なく扱えます。 フルスクリーン機能もあります。 Xi Editorはまだごく基的なエディタ機能しか備わっていません。Xi Editorの特徴としてはハイパフォーマンス、エレガントなコード、安全性(クラッシュしない、作業中の内容が消えたりしない)、カスタマイズしやすい

    Xi Editor - Google製のRustを使ったテキストエディタ
    yu_dotnet2004
    yu_dotnet2004 2016/10/30
    あのGoogleがGoではなくRustってのが面白い
  • Production

    npm Read how npm, who runs the JavaScript Registry of the same name, found Rust to be boring to deploy. Read the whitepaper Tilde Learn how Rust helps Tilde, makers of Skylight, use minimal resources to enable feature-rich performance monitoring of their customers’ applications. Read the whitepaper Dropbox Several components of the Dropbox core file-storage system were written in Rust as one step

    Production
    yu_dotnet2004
    yu_dotnet2004 2016/10/29
    Dropboxみたいな大御所もいて実績が増えてきているのを感じる。そしてさりげなくLINEも入っている。
  • Rust ハンズオン

    chikoski@ このハンズオンについて Rust とは?から始まって、基的な文法をカバーします 自分なりの grep コマンドを実装します 自分のペースで、できるところまでやりましょう 今回の成果物:grep テキストファイルから、パターンに一致する行を抜き出すコマンド 使い方:grep オプション パターン ファイル名 次の例では、Cargo.toml の中から、2018 という文字列が含まれる行を抜き出しています: % grep 2018 Cargo.toml edition = "2018" 資料の使い方 資料はスライド形式になっています 横方向に進んでいけば、自分なりの grep を実装できます 縦方向にも進める場合もあります 縦方向のスライドは補足です 縦方向のスライドには、補足や詳細な情報がのっています 日の内容 Rust についての簡単な紹介 FizzBuzz を作ろ

  • Introducing Rust Language Server, source release

    @nrc and I have been hard at work on IDE support, turning the Rust Language Server demo we showed at RustConf into an actual project. Today, we’re making our first source pre-alpha release of the project. We’re excited about what the RLS project will mean for Rust development in the future. The RLS aims at being a self-contained, full-featured application for IDE support. By being self-contained,

    Introducing Rust Language Server, source release
    yu_dotnet2004
    yu_dotnet2004 2016/10/20
    Rustによる、Rustのための、IDEなどの各種エディタ向けの、バックエンド。
  • 1