You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
8/24に開催された大阪Ruby会議04に参加してました。 自分は地元が関西なのもあって相性が良いのか、大阪で開かれた地域Ruby会議ではよく登壇する機会があって、今回もそうなることができて良かったなと思っています。 今回の大阪Ruby会議はチーフオーガナイザーであるydahさんの趣味が出てる感じがして、めちゃくちゃ楽しいイベントでした。なんというかめっちゃRubyKaigiそのものっぽかった。 実は少し前に実家の母が倒れて入院したりといった事件があったので、お見舞のために奈良と大阪を往復したり、ホテルが1日ごとに変わって荷物がやたら多くなったりと結構バタバタしてしまって体力は消耗したんですが、結果的には無事に楽しむことができて安心しました。 セッション内容について 今回の両キーノートスピーカーである金子さんとはすみさんは、この二人なら信頼感しか無いなと思っていたのですが、期待以上に素晴ら
Do you think dynamically typed interpreted Ruby language and statically typed compiled Rust language could be friends? Yes, they can! And actually, they are! Officially it all started when YJIT was ported to Rust and Ruby codebase has officially onboarded Rust code. This friendship matured when RubyGems 3.3.11 (with a new Add cargo builder for rust extensions feature) was released capable of compi
これは Rust Advent Calendar 2022 のカレンダー2の22日目の記事です。 YJITとは 私は今年の7月からShopifyという会社でRubyのJITコンパイラであるYJITを開発している。このJITは今年CからRustに書き直されたため、現職では業務としてフルタイムでRustを書いている。 実用段階になったYJIT おそらく世界最大規模でRubyを使っている弊社では、お客様のお店のサイトをレンダリングするアプリには社内最大のトラフィックが来ていて、実は最近そのアプリほぼ全台で最新のYJITが有効化されたことが昨日公開情報になった。あまりにも大量のトラフィックが来るので、YJITによって行なわれているRubyコード実行量はYJITが使われてないものよりも世界全体で見て多くなったのではないかとCEOが言っていた。 この規模のトラフィックを捌くためにこのアプリは比較的よく
Ruby Gems で Rust が Native として利用可能になった のでとりあえず UUIDv4 を生成してみた。 リポジトリ 準備 Ruby 側の gem に Rust を利用する準備として rb_sys と rake-compiler を利用します。この二つの gem は native compile するためにインストールしておきます。 Rust 側から Ruby へ関数を公開するために rb-sys と magnus を利用します。 gem install とりあえず cargo で Rust のパッケージを作って Rust を書いてみます。 > bundle gem rust_uuid --mit --ext rust_uuid # --ext を指定してnative build する gem を作成 > cd rust_uuid # 作成した gem のディレクトリへ移
YJIT の Rust 実装がマージされました。いまのところ今年の Shopify からの代表作ではと見ています (YJIT 自体は Ruby 3.1 で C 実装導入されている機能です) 。 github.com そういうわけで、現在の Ruby 3.2.0dev で YJIT を有効にする場合は、Rust の処理系 (1.60.0 1.58.1 以上) が必要になります。Rust のインストールに使う rustup については以下の公式ページなどを参照してください。 www.rust-lang.org YJIT はデフォルトではビルドされません (なので YJIT を使わないビルドであれば Rust 処理系は不要です) 。 デフォルトの YJIT なしの Ruby をビルドしている場合は --yjit オプションを渡しても、ruby: warning: Ruby was built w
TL;DR: The YJIT team wants to explore using Rust to help develop YJIT. The rest of CRuby will continue to build without Rust tools and building YJIT will remain optional. We’re currently exploring the possibility of porting YJIT to Rust and working on a small proof of concept that should be ready next month. The motivation behind this is that we are facing challenges in terms of code maintainabili
こんにちは、TaKO8Kiです。 この記事では、本日、2021年9月17日にRust.Tokyo 2021で「Rustでrbenvよりも7秒速いRubyのバージョンマネージャーを作った」というタイトルで発表した内容についてまとめています。 スライドは、こちらにあります。 作ったもの frumというRust製Rubyバージョンマネージャーを作りました。 きっかけは、具体的に何か課題があったというよりは、rbenv installを10秒くらい高速化できたら面白そうだなという軽い気持ちです。 rbenvを使ったことある方は分かると思いますが、普通にrbenvと同じような感じで使えます。 ベンチマーク タイトルには「rbenvよりもinitが6倍速い」とありますが、ベンチマークを見てみましょう。 まず、eval "$(rbenv init)" → rbenv install → rbenv lo
既存言語の処理系実装について 最後に既存言語の実装について少し書きます。 自作言語にせよ、既存言語にせよ、インタプリタにせよコンパイラにせよ、自分の実装がある程度動くようになって(例:自作Cコンパイラで自分自身をコンパイルできた!)ひとしきり興奮した後、大抵は次に何をするかという問題に直面します11。これはこの界隈でセルフホスト後燃え尽き症候群と呼ばれる深刻な病態です12。特に自作言語の場合はユーザーも少なく、一人で地道に文法を拡張して、扱える型やクラスを増やしてライブラリを整備して…というのはモチベーションを維持しづらく、なかなか続かないと思います。 一方、すでに広く使われている言語の場合はきちんと動作することが保証されているライブラリやプログラムがたくさんあります。それらを一つ一つ動かしていくというのはそれなりに楽しい作業です。もちろん巨大なフレームワークなどは依存する全てのライブラリ
⚠️ Deprecated ⚠️ Sadly, we have made the decision to deprecate this project. While we had hoped to bootstrap the project to a point where it could flourish as a community project, unfortunately we ran into a number of roadblocks along the way, along with the need for significant architectural overhaul. While these issues are solvable on a technical level, doing so correctly requires more resources
#[macro_use] extern crate helix; ruby! { class Console { def log(string: &str) { println!("LOG: {:?}", string); } } } $ irb >> require "console" >> Console.log("I'm in your Rust") LOG: "I'm in your Rust" BLAZING FAST Helix lets you offload performance-critical code to Rust without leaving your Ruby workflow. class CountWordsController < ApplicationController def index # WordCount is written in Rus
背景 RailsでCSVを返す時、10万データくらいのものを普通に処理するとメモリを食い潰したり、処理が遅かったりする。 そこで解決策を探していたら、RustでRailsの代わりにCSVを作るという素晴らしい記事に出会った。 この記事はPostgresやNginxを使ってたが、私はMySQLを使っており、Railsのアプリケーション内で完結したかったので、参考にしながら試験的に作って見た。 お断り Railsをすでに理解していることを前提に進めます。 初心者の方へ環境構築周りを最後の方におまけとして書いておきますので参考にしてください。 筆者はRust初心者ですのでアドバイスを頂けるととても助かります。 環境 Ruby 2.3.3 Rust 1.14.0 Rails 5.0.1 Gemfileは基本デフォルト source 'https://rubygems.org' git_source
Introducing Helix Rust + Ruby, Without The Glue. This post is a write-up of the talk I gave at RailsConf 2016. You can find the slides here. There's a lot to love about Ruby – the sweet syntax, the focus on developer productivity and happiness, the mature ecosystem, and of course, the awesome community we built around the language. One thing that Ruby is not known for though, is being a particular
この記事は Rust Advent Calendar 2015 10日目の記事です。 Rustは共有ライブラリを生成してCのプログラムとリンクすることが可能らしいので、Rubyからrequireしてちゃんと動くnative extensionをRustだけを使って書いてみる。 既に似たようなことをやっている例はあるんだけど、Cファイルを用意してそこからRustを呼び出す形になっているので、今回はCを書かずにやってみたいと思う。ちなみに実用性は特に無いのであしからず。 Dylib Rustで共有ライブラリを作成してCから呼び出すには、以下のようにすればよい。 #![crate_type = "dylib"] #[no_mangle] pub extern fn rust_test(s: i32) { println!("rust_test {0}", s); }
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く