タグ

Rustに関するkenzy_nのブックマーク (13)

  • Rustで単一化を書くスマートな方法を考えた

    課題 Rustでシンプルな単一化を書くことを考えます。単一化は主に型推論の実装に用いられます。 ここでは以下の方針で実装します。 一階の単一化。 変数は非負整数のidで表現し、0から順に付番する。 変数以外の項はRustのADTを使った通常の木構造で表現し、ノードの共有は行わない。 変数参照の縮約は行わない。 この方針のもと実装すると、およそ以下のようなコードになります。 #[derive(Debug, Clone)] pub struct UnifyEnv { vars: Vec<Option<Type>>, } #[derive(Debug)] pub struct UnificationFailure; #[derive(Debug, Clone, PartialEq, Eq)] pub enum Type { Var(usize), Constr { constr: u32, ar

    Rustで単一化を書くスマートな方法を考えた
  • 個人開発したサービスのバックエンドを Python から Rust に書き換えてみた

    はじめに 過去の記事『淡路島発着の高速バス検索サービス「GO TO AWAJI」をリリースした話』で Python を用いて個人開発サービスのバックエンドを実装したことを紹介しました。 勉強のためにこのサービスのバックエンドの一部を Rust で書き換えたので、記事で紹介させて頂きます。 クローラーサービス 今回 Python から Rust に書き換えを行ったのはクローラーと呼んでいるサービスです。 これは GCP の Cloud Run 上で動いており、 Cloud Scheduler から定期的に実行されて以下のことを行っています。 クローラーサービスのシステム構成 各バス会社の新着情報をスクレイピングする 取得した新着情報を DB (SQLite) に保存されている過去の新着情報と比較する 新しい新着情報が存在する場合DBに保存し、SendGrid で筆者宛にメールで通知する な

    個人開発したサービスのバックエンドを Python から Rust に書き換えてみた
    kenzy_n
    kenzy_n 2022/07/16
    移行される背景が気になり
  • Rustのビルドを高速化する方法 | POSTD

    Rustコードのコンパイルが遅いことは誰でも知っています。しかし筆者は、世の中のほとんどのRustコードはコンパイルをもっと速くできると強く感じています。 例えば、つい最近の記事にこのように書かれていました。 一方、Rustでは、プロジェクトやCIサーバーの性能にもよりますが、 CIパイプラインの実行に15~45分かかります。 これは筆者には理解できません。GitHub Actions上にあるrust-analyzerのCIの所要時間は8分です。しかも、これは100万行の依存関係に加え、20万行の独自コードが記述されたとても大規模で複雑なプロジェクトでの話です。 確かに、Rustは根的な部分で非常にコンパイルが遅いのは間違いありません。Rustはジェネリクスのジレンマにおいて「遅いコンパイラ」を選び、全体的な設計思想としてコンパイル時間よりもランタイムを優先しています(この点に関する優れ

    Rustのビルドを高速化する方法 | POSTD
  • Rustのメモリ管理機能とその特徴

    初出:技術評論社刊「ソフトウェアデザイン 2021年9月号」 先日、技術評論社よりRustのメモリ管理機能についての特集に寄稿させて頂きました。 この記事は自分が寄稿させていただいた記事をブログ用に一部推敲・加筆を加えたものです。 なお、ソフトウェアデザインでの特集ではより実践的な例でのメモリ管理についての解説もあるので、興味のある方は誌のほうも手にとっていただければと思います。 プログラム言語におけるメモリ管理の課題プログラミングにおける課題の一つとしてどうやってメモリ領域(ヒープ領域)を管理するかというものがあります。 C言語ではmalloc/free関数などを用いて手動でメモリを管理しています。 これらの関数はメモリアドレスを示すポインタを介してメモリ管理を行います。 malloc関数は必要なメモリ領域を確保してその先頭番地のポインタを返し、プログラム内ではその番地のメモリを読み書

  • GoのスライスとRustのスライス | Wantedly Engineer Blog

    こんにちは、WantedlyDX Squadでエンジニアをしている原です。 (DXはDeveloper Experienceの略で、開発者が心地よくプロダクトを作れる環境を作ることを目標に頑張る部門です) 稿は、WANTEDLY TECH BOOK 9 から「GoのスライスとRustのスライス」という章を抜粋し加筆修正を加えたものです。ウォンテッドリーでは WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布しています。ぜひ読んでみてください。 過去の WANTEDLY TECH BOOK を入手する 以下、文です。 GoのスライスとRustのスライスは大枠では似ていますが、スライスの共有に関する振舞いが微妙に異なり、GoRustの設計の違いが垣間見られます。記事ではこの違いを説明します。 配列型とスライス型Go/Rustにおいて「配列」は固定長でスタッ

    GoのスライスとRustのスライス | Wantedly Engineer Blog
  • Rustの知見を深めたい! 開発合宿でmackerel-agentを再実装してみた - Hatena Developer Blog

    はてなには、開発合宿というイベントがあります。有志で集ったメンバーが普段の開発から離れ、テーマを決めて集中して取り組むイベントです。 今回、私(id:dekokun)、id:Krouton、id:ne-sachirouの3人からなるチームで、はてなが提供するサーバー管理・監視サービスMackerelに必須であるmackerel-agentというプログラムを題材に、Rustでの再実装を試みました。 mackerel-agentは、監視対象のホストにインストールし、ホストの情報(メトリックやメタデータ)を集めてMackerelに送るプログラムで、Go言語で実装されています。なお、今回はあくまでRustの知見を得る材料として選択したもので、今後の実装を置き換えようとしているわけではありません。 Rustmackerel-agentを再実装する狙い なぜRustなのか なぜmackerel-ag

    Rustの知見を深めたい! 開発合宿でmackerel-agentを再実装してみた - Hatena Developer Blog
    kenzy_n
    kenzy_n 2020/10/22
    Rustチャレンジ
  • Rust + PEG + LLVM で電卓を作る - Qiita

    言語書いてる人すごいな〜かっけな〜って思ったので、ちょっとした処理系を書いてみたくてやってみた。 主にWebやアプリを開発している人がやってみたので、処理系をやったことなくても、読みやすいと思う。 ※ ちょっと前に書いたRustのコードなので書き方がふるくなってるかも?? ソースコード https://github.com/anharu2394/rust-llvm-calculator 使ったライブラリ rust-PEG 知識がなくても、とりあえず簡単に構文が作れる。 inkwell LLVMのラッパー。安全にラップしたらしい。 詳しくないので勧められたから使った。 計算機の処理の流れ のちに詳しく説明する。 パース(文字列→AST) ↓ ASTをたどってLLVM IRに変換(AST->LLVM IR) ↓ (LLVM IRの関数を)実行する パース 上の通り、PEGというライブラリに任せ

    Rust + PEG + LLVM で電卓を作る - Qiita
    kenzy_n
    kenzy_n 2020/08/10
  • Rust初心者がRustで全文検索サーバを作ってみた - Qiita

    情報検索・検索エンジン Advent Calendar 2019 の5日目の記事です。このAdvent Calendarを作った@takuya_aさんより、お誘いいただきました。 @minoru_osuka もし余裕あれば12/5の記事お願いします! https://t.co/YIA9tIB4Gj — takuya-a (@takuya_b) December 1, 2019 ということで、仕事とは別で個人的に始めたプロジェクトについて紹介できたらと思います。 私自身はApache Solrを好んで利用しています。 ただ、最近のサーバサイドの技術の移り変わりや、新しい開発言語の登場など、取り巻く環境が変化してきています。それらの習得も踏まえ、使ったことのない開発言語を用いて軽量な全文検索サーバを作り始めるという内容です。 開発した経緯 インフラの変化 ここ数年でインフラは大きく変化しました

    Rust初心者がRustで全文検索サーバを作ってみた - Qiita
  • Python vs Rust for Neural Networks | Nathan Goldbaum

    In a previous post I introduced the MNIST dataset and the problem of classifying handwritten digits. In this post I’ll be using the code I wrote in that post to port a simple neural network implementation to rust. My goal is to explore performance and ergonomics for data science workflows in rust. The Python Implementation Chapter 1 of the book describes a very simple single-layer Neural Network t

  • Rustのモジュールを詳細に理解する(1) モジュール入門 (この回は簡単です!) - 簡潔なQ

    概要: Rust2018以降、Rustのモジュールシステムは入門しやすく、かつマスターしにくくなりました。そこで記事では、その両方を達成することを目指しました。 モジュール入門 名前解決の役割と用語 モジュールグラフの構造 インポート解決 可視性 パス解決 名前解決とマクロ 記事は2017年に書いた記事 (https://qnighy.hatenablog.com/entry/2017/03/27/070000, https://qnighy.hatenablog.com/entry/2017/04/24/070000 ) と同じテーマで、Rust2018を考慮して改めてまとめ直したものです。 モジュールとは モジュールはRustのプログラムを分割する単位のひとつです。ワークスペース・クレート・モジュールという単位になっていると考えてください。 ワークスペースは関連するライブラリ(クレ

    Rustのモジュールを詳細に理解する(1) モジュール入門 (この回は簡単です!) - 簡潔なQ
  • Rust 1.34を早めに深掘り - OPTiM TECH BLOG

    ついにRustの深掘りがシリーズ化してしまいました。R&Dチームの齋藤です。 先週からTwitterを始めてみました(@aznhe21)。 さて、日、日時間4/12(金)にRust 1.34がリリースされました。 この記事ではRust 1.34での変更点を詳しく紹介します。 なお、この記事は公式リリースノートをベースに、意訳・追記をしています。 ピックアップ TryFrom/TryIntoが安定化 iter::from_fn/iter::successorsが追加 usize/isize以外の整数型にもアトミック型が追加 符号付き整数型にもNonZeroが追加 cargoで代替レジストリが使えるようになった 変更点リスト 言語 コンパイラ ライブラリ 安定化されたAPI std & core Any::type_id Error::type_id atomic::Atomic{I8,I

    Rust 1.34を早めに深掘り - OPTiM TECH BLOG
    kenzy_n
    kenzy_n 2019/04/12
  • Rust で Erlang 処理系を実装してみている

    今年の 9 月あたりから、 Rust で Erlang の処理系を実装してみています。まともに試せるほど進んでないんですが、気分的に年内に一区切りつけたいので公開しておきます。リポジトリはこちら。 https://github.com/szktty/starlight みています、というのはもちろん思いつきだからです。なにぶん Erlang は適用分野がベリーハードなミッションクリティカルシステムしかなく、あらゆる性能やメリットが Erlang VM (BEAM) を超えなければ非公式処理系の用途はありません。 かといって最初から諦めてもいませんが、業務で Erlang に関わらなくなったら or 開発に疲れたら自然消滅すると思います。すでにわりと疲れている。 進捗状況「速くなるのか?」「軽量プロセスは?」などの疑問に興味津々の皆様、すいません。全然ご期待に応えられません。当に同梱のごく

    kenzy_n
    kenzy_n 2018/12/19
  • Rust、Alexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します!

    RustAlexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します! 2018.07.09 テクノロジー Rust イベント インターンシップ 採用活動 こんにちは!技術部・インターンシップ企画チームの川口です。梅雨があっという間に明け、いよいよ夏がやってきますね。夏といえば...いろいろ思い浮かぶものはありますが、学生の皆様の中ではインターンをしたいと考えている方も多いのではないでしょうか?フォルシアでは、自分の研究や経験を活かして活躍したいエンジニア志望の学生の皆様に向けた、ワクワクするようなインターンシップをご用意しました!(もちろん有給です!) 概要は下記リンクをご覧ください。(現在は終了しております) FORCIA Summer Internship 2018 RustAlexa... フォルシアならではの選べる8コース 検索アプリケーション開発

    Rust、Alexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します!
    kenzy_n
    kenzy_n 2018/07/20
    インターンの夏、Alexaの夏
  • 1