2024/07/27 TechRAMEN 2024 Conference 概要: 私にとって何番目の言語になるかはもう数えていませんが、昨年 Rust を学び、 OSS の開発ができるところまでやってきました。私はそれまで Rust の学習に何度か挫折しており、今回ようやくその壁を乗り越えたので…
主要なJavaScriptエンジンのTest262を毎日実行して結果を載せているtest262.fyiというサイトがあります。 (Test262とは最新のECMAScriptを実装できているかどうかのテストです。) このサイトの、2024/6/5現在の実装率ランキングはこちらです。 test262.fyiの画面キャプチャ(2024/6/5) V8(ChromeやNode.js、Deno等)、JavaScriptCore(SafariやBun等)、SpiderMonkey(Firefox等)という、大手エンジンとほぼ横並びで4位に食い込んでいるBoaとは何者でしょうか。 Boaは公式曰く『Rustで書かれた実験的なJavascriptのレキサー、パーサー、コンパイラー』です。これだけ揃えば、JavaScriptエンジンと言って差し支えないと思います。RustアプリケーションにJavaScri
これは何の記事? すっかり忘れて遅れてしまいましたが、Rustアドベントカレンダー15日目の記事です! (何番煎じかわかりませんが)今回はRustでモナドを作ってみようという記事になります。 なんでやろうと思ったの? 最初のきっかけはfuncさんとの会話になります。 以前RustにGATsという機能が導入されたとき、「Rustでもモナドを作ることはできるのか?」ということが話題になりました。GATsはざっくりいうと、trait内の関連型でGenericsを使用できる機能です。(詳しい内容はhttps://blog.rust-lang.org/2022/10/28/gats-stabilization.html を参照ください。) 偉大な先人の方々がモナドの実装を試してくれたのですが、そのときは ApplicativeからMonadを実装する MonadからApplicativeを実装するこ
気合いで実装、どうもかわしんです。 この記事は Rust Advent Calendar 2023 の6日目 兼 情報検索・検索技術 Advent Calendar 2023 の 6 日目です。 Rust で SQLite をフルスクラッチで実装しています。 github.com なぜ SQLite を Rust で再実装しようと思ったのかについては以前の記事で紹介しています。一言で言えば、誰も Rust で SQLite を書いている人がいなかったからやってみたのですが、そもそも SQLite が強すぎるということが再実装しているうちにわかってきて絶望しています。 kawasin73.hatenablog.com 4 ヶ月前にこの記事を書いたときは簡単な SELECT 文しか実行できなかったのですが、現時点では SELECT, INSERT, DELETE 文をサポートし、express
この記事は Rust Advent Calendar 2023 シリーズ2 の1日目の記事である。 Rustは良くも悪くもシステムプログラミング言語なので、何も工夫しなければデバッグの体験がC言語と同じレベルになってしまう。例えば「rust lldb」でググると上位に Debugging Rust programs with LLDB is a nightmare というスレッドが出てきてしまう。 使うべきツールを知っていれば幾分かマシな体験にできる。Rustコンパイラはデバッガとして LLDB, GDB, WinDbg/CDB をサポート していて、僕はWinDbGは10年くらい触ってないので、この記事ではLLDBとGDBについて書く。 LLDB Apple SiliconのMacだとGDBが使えないので、必然的にLLDBを使うことになる。 CodeLLDB GDBと同じく、LLDBにも
お手伝いの yuki です。 今日は serde の話です。最近仕事で serde を使っていて「これはバグでは??」と思った挙動がありました。具体的には untagged というものなのですが、同僚に「これはバグではなく仕様」というコメントをもらいました。たしかにドキュメントを見てみると注意書き等書いてあり、そういえば serde をなんとなく使っていたなと思いました。というわけで今日は記事を書くことで serde の理解を深めるということをしたいと思います。 なお、この記事はドキュメント以上のことはあまり書かれないと思います。実務的にどう利用しているかという観点から、このドキュメントをもとに記事として再編集することを目指しているためです。serde のドキュメントは下記にあります。 serde.rs 目次 目次 まず、読み方 serde とは何か? 基本 基本的な使い方 まとめ まず、
セキュリティを盾に一点突破。どうもかわしんです。最近 Rust で SQLite を実装してます。 以前の記事で HTTP Parser を Rust で実装しようとしたものの、すでに実装されていたので断念しましたが、いい題材を見つけました。SQLite です。開発中のリポジトリはこれです。 github.com 今の時点では、Read Only で1つの WHERE 句を持った SELECT 文しか処理できないですが、以下の機能を実装しています。 sqlite3 で生成された database ファイルの読み取り (cursor.rs, btree.rs, record.rs) SQL 文の解析 (token.rs, parser.rs) テーブルとインデックスのメタデータのパース (schema.rs) 動的なファイルの読み込み (pager.rs) SQL クエリとスキーマ情報を元に
はじめに 最近では、新しいライブラリがRustで書かれるようになってきました。これに伴い、RubyやCrystalなどの好みの言語からRustの関数を呼び出したくなることが増えます。 Python言語に対しては、バインディングが最初から提供されることも多いのですが、それ以外の言語からRustの関数を呼び出したい場合、自身で作成する必要があります。 この記事は、Rustに全く触れたことがない人間が、数時間調査した内容をまとめたものです。 しかし、QiitaでMagnusをググっても記事がほとんどヒットしないことからわかるようにそれほど日本語の情報が多くない分野なので、調べ物の取っ掛かりとしては価値があると思います。 目標 Rustで作成したライブラリの構造体と関数をみて、RubyやCrystalからFFIで呼び出せるようになること Rustで共有ライブラリを作成する方法 Rustは共有ライブ
こんにちは、エンジニアの籏野です。 フォルシアでは数年前からRustに関連したイベント(Shinjuku.rs)を開催したり、本の執筆を行ったりとRustに関する活動が行われてきました。 さらにここ最近はRustをよりコアな部分に活用していけないかという議論も活発に行われており、Rustは今後の開発でより重要な役割を担っていくのではないかと感じています。 私自身はこれまでRustにしっかりと触れる機会がなかったのですが、先日プロダクトの検討の一部としてRustを利用できないかという話が出たので、実際にRustを使った処理を実装してみることにしました。 今回の記事ではその際に試したことをまとめていきたいと思います。 やったこと 私が担当するあるプロダクトで、「webアプリでも、データ処理でも同じようなロジックを使いまわしたい」という要望が上がりました。 このプロダクトでは、webアプリはNo
Rust 1.75 日本語 Rust Guide 1. はじめに 1.1. Installation 1.2. こんにちは世界! 1.3. こんにちは、カーゴ! 2. 推測ゲームのプログラミング 3. 共通のプログラミング概念 3.1. 変数と可変性 3.2. データ型 3.3. Functions 3.4. Comments 3.5. 制御フロー 4. 所有権を理解する 4.1. 所有権とは何ですか? 4.2. 参考文献と借用 4.3. スライスの種類 5. 構造体を使用した関連データの構造化 5.1. 構造体の定義とインスタンス化 5.2. 構造体を使用したプログラム例 5.3. メソッドの構文 6. 列挙型とパターンマッチング 6.1. 列挙型の定義 6.2. 一致制御フロー構造 6.3. if let を使用した簡潔な制御フロー 7. パッケージ、クレート、モジュールを使用して成長
この記事は、 NTT Communications Advent Calendar 2022 22日目の記事です。 はじめに こんにちは、イノベーションセンターの鈴ヶ嶺(@suzu_3_14159265)です。普段は、クラウド・ハイブリッドクラウド・エッジデバイスなどを利用したAI/MLシステムに関する業務に従事しています。 本日は、Rustでベクトル化された乱数生成器を実装する方法を紹介します。乱数生成器にはPermuted congruential generator(PCG)という高速でシンプルな実装を取り扱います。ベクトル化には1つの命令で複数のデータを適用するSingle Instruction, Multiple Data(SIMD)を活用します。 また、以下のように毎年Rustネタのアドベントカレンダーを書いているのでぜひ見ていただけると嬉しいです! NTTコミュニケーション
Rustを第二言語として採用してデバイスドライバなどのモジュールをRustで書けるようにする「Rust for Linux」が近々マージされる予定だともLinus氏自身が発言しています。 そんな期待のかかるRust for Linuxですが、提案された当初は期待こそされていたものの、様々な懸念点も指摘されていました。 その1つが標準ライブラリの一部であるallocクレートの設計です。 このクレートはヒープ領域を扱うBox、Vec、StringなどRustではお馴染みの構造体を提供しています。 Rustの標準ライブラリはOSのサポートを前提とした構造体も多くあります。そのため、OSそのものを書くようなベアメタルプログラミングにおいて標準ライブラリをそのまま使うことはできません。 使えるのはcoreと呼ばれる依存関係のない全く無いライブラリがありますが、allocはOSのサポートが必要なヒープ
Published on 1/11/2021 – Text version TOML v1.0.0 Tom's Obvious, Minimal Language. By Tom Preston-Werner, Pradyun Gedam, et al. Objectives TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. TOML is designed to map unambiguously to a hash table. TOML should be easy to parse into data structures in a wide variety of languages. Spec TOML is case-sensitiv
こんにちは、あずんひ(@aznhe21)です。最近は標準ライブラリを持続的に翻訳する仕組みを考えてますが難航中です。 さて、本日7/1(金)にRust 1.62がリリースされました。 この記事ではRust 1.62での変更点を詳しく紹介します。 7/1は郵便番号制度がスタートした郵便番号記念日 ピックアップ 列挙型で#[derive(Default)]できるようになった 浮動小数点数で全順序による比較ができるようになった LinuxにおいてMutexなどの実装がfutexに切り替わった cargo addコマンドが追加された 安定化されたAPIのドキュメント bool::then_some サンプル f32::total_cmp サンプル f64::total_cmp サンプル Stdin::lines サンプル windows::CommandExt::raw_arg 変更点リスト 言語
Tauri はクロスプラットフォームデスクトップアプリのための Rust によるフレームワークです。Electron と同様 Web 技術でアプリの UI を構築します。 Build smaller, faster, and more secure desktop applications with a web frontend | Tauri Studio 記事執筆時点で v1.0.0-rc.5 (Pre-release)、もうすぐ v1.0 がリリースされそうなところです。 Release v1.0.0-rc.5: Apply Version Updates From Current Changes (#3468) · tauri-apps/tauri Electron と比べて、インストーラーのサイズ、メモリ消費量、起動時間などが圧倒的に小さいと謳われています。 https://gi
このエントリはRust Advent Calendarの2日目の記事です。 空いてる日を埋める担当のκeenです。2日目が空いてたので遡って記事を投稿します。 最近v1.0.0がリリースされたリンカ、moldを使うとビルドが高速化するよというお話です。 Rustのビルド、特にインクリメンタルビルドにおいてはRustコンパイラの速さと同じくらいリンカの速度がコンパイル時間に影響します。 この最後のバイナリを作る時間は意外と効いてきます。 具体例としてActix Webにあるexample、 basic をインクリメンタルビルドする例をみてみましょう。 この basic はたった42行の小さなアプリケーションです。 ただし、依存に Actix Webという巨大なライブラリを使っているので最終的なバイナリには非常に多くのコードが含まれます。フレームワークを使ってアプリケーションを開発してるときに
https://www.cyberagent.co.jp/careers/students/career_event/detail/id=26831
この記事について この記事はアドベントカレンダー2021 Rust 四日目の記事です 概要 フロントエンドエンジニアである筆者がWASM(Rust)でWebアプリを作ってみたので、 その際の技術選定(主にビルド・開発補助周り)について 作ってみた雑感、特に「ぶっちゃけフロントエンドRust[1]ってどうなの?」という点 について書いていこうと思います。 TL,DR 2021年12月現在フロントエンドでのRustの採用は技術的に可能だがエコシステムが未発達なのでそれなりに技術力とコストを要求される とはいえ伸び代はかなりあるのでエコシステムが頑張ってくれれば、数年後には十分一般的な選択肢になってるかも(なってて欲しい) 主な対象読者 フロントエンドに携わる機会がある方々 この記事を読んでいただくことで・・・ フロントエンドという文脈におけるWASMの現状を知ってもらう フロントエンドをRus
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く