はじめに こんばんは、あいおいです。佐香やではすみませんでした……。今回は初めて松江に行ってRubyWorld Conference*1に参加したのでその話をします。なんか過去のブログを見ると見出しサイズがまちまちで「なぜ…?」と思っています。 Day -1 荷造りが終わってなくてお昼とかに気合で荷造りしてなんとかサンライズに間に合いました。サンライズのチケットはべーたさんに取ってもらっています。ありがとうべーたさん……あなたは今ぷぽさんと楽しげに蟹を茹でています*2ね……楽しそうで何よりですよ…… サンライズ、こたつハウスの住人たちとうなすけと大倉さんと金子さんといまいずみさんが一緒に乗ってたんだったかな。いまいずみさんがいるのは知らなかったのでびっくり。 いってきまーす べーたさんに取ってもらったのは4人分で、2人ずつ。ぷぽさんとべーたさんはあんまり寝られてないのでゆっくり寝てもらうた

沖縄、那覇で行われたRubyKaigi 2024に参加してきた。いやあ、もう、最高でしたね。 (Photo by @hsbt -san) しゃべってきた "Namespace, What and Why" というタイトルで話してきた。speakerdeck.com これはいまRubyに提案している"Namespace on read"というものについての紹介で、本当は実装面とかも細々ひたすら語りたかったんだけど、なにしろこれまでのRubyに全くなかったパラダイムと機能なので、デモやユースケースの紹介、これからどうなるか、みたいな解説を中心にせざるをえなかったかな、というのはある。けど、そうしただけあって、聞いてくれた人達にはかなりインパクトを与えられた、んじゃないかなあ、少なくともKaigi中にいろんな人から感想を聞く限りは……。 実装はまだ完成していなくて、自分のトークが15日(水曜)

フルタイムRubyコミッター・松本宗太郎を採用 開発生産性やコード品質向上に取り組み、Ruby自体の改善にも寄与 #経営情報 スキマバイトサービス「タイミー」を提供する株式会社タイミー(所在地:東京都港区、代表取締役:小川 嶺)は、開発生産性やコード品質の向上を目的とし、松本宗太郎をフルタイムRubyコミッターとして採用したことをお知らせします。 「『はたらく』を通じて人生の可能性を広げるインフラをつくる」というミッションの実現に向け、開発における生産性やコード品質向上に取り組み、さらなる事業拡大を進めてまいります。Rubyコミッター:松本宗太郎(Soutaro Matsumoto) 【略歴】Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年から

テクノロジー部門CTO室の笹田(ko1)と遠藤(mame)です。今年の 9 月から STORES 株式会社でRuby (MRI: MatzRuby Implementation、いわゆるruby コマンド) の開発をしています(Rubyのこれからを STORES で作る。Rubyコミッター笹田さん、遠藤さんにCTOがきく「Fun」|STORES People )。お金をもらってRuby を開発しているのでプロのRuby コミッタです。本日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.3.0 がリリースされました(Ruby 3.3.0 リリース)。クックパッド開発者ブログで連載していたように、今年も STORES ProductBlog にてRuby 3.3 の NEWS.md ファイルの解説をします(ちなみに、STORES Advent Calendar

概要 原著者の許諾を得て翻訳・公開いたします。英語記事: Performance impact of the memoization idiom on modernRuby |Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 |Creative CommonsRuby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(objectshape)の導入があります。本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのかRubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います

RubyのJITコンパイラYJITを開発している弊社Shopifyでは、社内で最もトラフィックが多いストアフロントのアプリにRuby 3.3 (master) をデプロイして平均レスポンスタイムが16%高速化、社内で最も大きなアプリであるモノリスにRuby 3.2をデプロイして平均レスポンスタイムが9%高速化している。他の会社でも、YJITを本番で有効にしたら高速化したという事例をちらほら目にした。 一方で必ずしも良い報告ばかりではなく、YJITを有効化したらメモリを使い切ってしまったりだとか、遅くなったみたいな報告も目に入ることがある。こういった問題は我々も多かれ少なかれ経験しており、それぞれ適切に対処することで解決できたため、その知見を共有する。*1 メモリを使い切ってしまった時zenn.dev YJITを有効化すると、YJITが生成する機械語に加えて、それに関するメタデータもメモリ
rubykaigi.orgspeakerdeck.comRubyKaigi2022で発表した。オンライン参加で、発表は録画だったので、発表したかどうかは奇妙な感じだけど、ともかくできるだけのことはやりきった。 僕にとって、RubyKaigiは2013が最初の参加だった。以来「いつかは発表を……。」と思ってはいたけど、ネタがなかったり、CFPを出したけどRejectだったりだった。 今回、"Rubyに関する国内最大級の国際会議"に初登壇できたのは万感の思いだ。本当に嬉しい。 一方、採用率(採用数 / CFP数)は実は2倍もない。つまり誰にでもチャンスはあって、やれる覚悟があるかどうかが重要なのだ。みんなも発表やってみよ。 KPI "GitHubリポジトリのスター100個"を目標にしてたけど、結果としては30くらいだった。 https://github.com/ksss/orthoses
とみなされるというもので、ES6と同じ記法です。 ただ、HashというよりSetに見えるという理由で却下されました。私自身、すごくほしいというよりは「実装できたから提案してみるか」という感じだったので、あまりがんばって説得しなかった気がします。 次の提案は2018年のFeature #14579 Hash value omissionです。Hashのように見えないのがいやだと言われたので という記法に変更しました。 これならちゃんとHashに見えるので意気揚々と提案したのですが、「前の文法よりいいけど、ES6の文法と違うRuby独自の文法の導入になっちゃうし、どっちも直感的じゃないから好きじゃない」という理由でこれも却下されました。 ES6と違う文法を導入するのはいやで、ES6の文法もいやということで、ああこれは詰みですねということでもう提案を諦めることにしました。 ところが、その後も同じ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 「愚者は経験に学び、賢者は歴史に学ぶ」はビスマルクさんの言葉ですが(ググった)、愚者である私は当然経験から学んでおります。経験から学ぶととかく失敗が多いのですが(これも経験から学んだ)、今回は私が5年くらい取り組んでいるmmcが失敗した話でもしたいなと思います。 はじめに 静的型付けであらずんばプログラミング言語であらず 世はまさに大静的型付け時代なわけですが、動的型付け言語が静的型付け言語と同じとかそれ以上の速度で動作したらどうでしょう?実はそのような言語処理系は既に存在し、Stalinなどはその代表です。まあ、静的型付けがもてはやさ

This is part #2. Head over to part #1 to learn about HTTP inRuby. Motivation HistoricallyRuby's been lacking in the concurrency department.Ruby has "native" threads (prior to 1.9 there were only "green"), which means there can be multiple threads controlled by an OS, but only 1 thread can be executed at a time, this is managed via Global Interpreter Lock (GIL). However, native calls and I/O cal

For the past year, the Sorbet team has been working on an experimental, ahead-of-time compiler forRuby, powered by Sorbet and LLVM. Today we’re sharing the source code forit.It lives alongside the existing code for Sorbet onGitHub, mostly in the compiler/ folder: → https://github.com/sorbet/sorbet/tree/master/compiler/ We want to be clear up front: the code is nowhere near ready for external u

RBSRailsを使ってRailsアプリケーションにSteepを導入するまでの解説します。 ただしこの「導入できる」というのは、解析が完走するという意味です。 型エラーを全てつぶすことや、Steepを実際の開発フローに乗っけることは私もまだできていないため、この記事ではサポートしません。 登場人物RailsアプリケーションにSteepを導入するには、複数のプロジェクトが関連してきます。 まずはそれらをざっと紹介します。 steep gemRubyの静的型検査器です。 rbs_rails gemRailsでRBSを使う上で必要な型定義を提供・生成するgemです。 データベースのスキーマ定義からモデルの型生成、及びroutesの定義からパスヘルパーの型生成をします。 それ以外のコードの型生成は担当範囲外です。 rbs gem ビルトインのライブラリ、及びスタンダードライブラリの型定義を
require "benchmark/ips" class Foo def initialize forward forward ?go_forward :go_backward end ivars = ("a".."zz").map { |name| "@#{name} = 5" } # define thego_forward method eval "defgo_forward; #{ivars.join("; ")} end" # define thego_backward method eval "defgo_backward; #{ivars.reverse.join("; ")} end" end # Heat Foo.new true Foo.new false Benchmark.ips do |x| x.report("backward") { 5000.t
Rubyの標準添付ライブラリーのcsvをメンテナンスしている須藤です。歴史csvは名前の通りCSVを読み書きするための便利ライブラリーです。 もともとRuby本体とは別に開発されていたのですが、Ruby 1.8.0のときにRuby本体にバンドルするようになりました。dRubyやREXMLがRuby本体にバンドルされたのも同じタイミングです。Ruby 1.8.0のときにバンドルするライブラリーをすごく増やしたのです。(その頃の様子がわかるURLをここに置いておきたかったけど見つけられなかった。。。)Rubyではcsvのようにrequireするだけで使えるライブラリーを「標準添付ライブラリー」と呼んでいます。Stringのようにrequireしなくても使えるライブラリーは。。。なんだろう。組み込みクラスかしら。 その後、Ruby 1.9.0のタイミングで実装をFasterCSVに置き換え
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く