@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

ruby.wasmのrequire_relativeでfetchする

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる? - @ledsun blog で ruby.wasm ハックアイデアを思いつきました。 実際にやってみます。 packages/npm-packages/ruby-wasm-wasi/src/browser.script.ts に次のようなコ…

Cannot open display ":0"

WSL起動時にCannot open display ":0"が表示される どうもWSLgが上手く動いていないみたいです。 Xを使うアプリケーション起動すると同様のメッセージを表示して失敗します。 xeyesコマンドを実行するとCannot open display ":0"が表示される 試したけど直ら…

Windows 11, version 22H2に上げたらWSL更新の通知が表示された

WSLアップデートの案内 WSLのアップデート アップデート後のWSLのバージョン WSLのバージョン - @ledsun blog の時はWindowsのビルドとWSLのビルドが連動していたように記憶しています。 Microsoft Store での WSL のリリース ノート | Microsoft Learn によ…

ruby.wasmのハックの仕方

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる? - @ledsun blog で、ruby.wasmをハックしようと考えました。 実際どうすればハック出来るのかよくわかりません。 irb.wasm がgem関数でgemインストール出来ることがわ…

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる?

Enable src attribute in script tag in browser.script.iife.js. by ledsun · Pull Request #49 · ruby/ruby.wasm · GitHub が取り込まれたので使ってみました。 <script defer src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-10-01-a/dist/browser.script.iife.js"></script> <script type="text/ruby" src="main.rb">…

久しぶりに見知らぬリポジトリにプルリクエストを作成した

プルリクエストを作りました RubyをWebAssemblyで動かすruby.wasmを、ブラウザで動かす時に便利なJavaScriptにbrowser.script.iife.jsがあります。 <script type="text/ruby">にインラインで書いたRubyスクリプトを実行してくれます。 これにsrc属性の対応を追加するパッチです。 アイ…

Stackprofで時間の掛かる処理を探そうとして上手く行かなかった話

RactorでWoker pool - @ledsun blog で、並列化の効果が芳しくないことがわかりました。 どこに原因があるのか知りたいのでstackprof情報を取得します。 Ractor版だと例外がおきます。 PubAnnotationのアノテーション取り込み処理をRactor化したものをStackp…

https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-09-06-f/dist/browser.script.iife.js のsrc属性対応

ruby.wasm/browser.script.ts at d92d1a82256c12604a1e6e15e1269f6d11a81af3 · ruby/ruby.wasm · GitHub を次のようにすれば良いじゃん簡単じゃん?と思っていました。 if (tag.type === "text/ruby") { if (tag.hasAttribute('src')){ const response = awa…

静的サイトをホスティングする

RubyスクリプトをWebAssembly化したRubyランタイムで動かす - @ledsun blog でブラウザで動くRubyスクリプトができました。 スマートフォンでみれるように、ホスティングします。 しました。 https://wordle-search.onrender.com/ です。 スマートフォンで見…

RubyスクリプトをWebAssembly化したRubyランタイムで動かす

wordleの候補をgrepするRubyスクリプト - @ledsun blogをブラウザで動くようにしたいと思います。 ruby.wasm/lucky.html at main · ruby/ruby.wasm · GitHub を参考にして実装していきます。 <html> <script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-09-06-f/dist/browser.script.iife.js"></script> <script type="text/ruby"> require "js" di…</html>

wordleの候補をgrepするRubyスクリプト

Wordle - The New York Times を解くとき、次のようにgrepしています。 ledsun@MSI:~/wordle_rb►grep -e '^\w\w\wt\w$' /usr/share/dict/words | grep -v '[o sclh]' | grep a | grep e | grep r Berta Greta Harte grate irate prate これをRubyスクリプト…

Ractorで並列に動いているっぽい?

次の感じのRubyのソースコードがあります。 annotations_collection_with_doc.each do |annotations, doc| messages += Annotation.prepare_annotations!(annotations, doc, options) end Annotation.prepare_annotations!(annotations, doc, options)の先の…

Stories from developing YJIT

rubykaigi.org は、RubyのYJITでどんな挑戦をしてきたかの話でした。 最初はRubyのinstructionを1:1で機械語に置き換えるところか始めました。 Railsでは遅くなりました。 つぎにJIT部分をフロントエンドとバックエンドに分けました。 もう、この辺でわかり…

Roslynを使ってC#のクラス名を変更する

Roslynを使ってC#のソースコードを編集する - @ledsun blog でRoslynをつかうとC#のソースコードが編集出来るとわかりました。 編集内容を変えて練習します。 クラス名を変えてみます。 using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp;…

Roslynを使ってC#のソースコードを編集する

自分で自分用のC#のソースコード編集ツールをつくったら捗りそうなことに気がつきました。 ググってみたら GitHub - dotnet/roslyn: The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs. というのでC#のソース…

ruby/debugをつかってみる

rubykaigi.org を見ました。 良い機会なのでruby/debugを素振りしてみます。 次のRubyスクリプトを書きます。 require 'debug' def baz n n end def bar n baz n end def foo n bar n end binding.b result = foo(100) p result 実行してみましょう。 ledsun…

Ruby複数の実装でたらい回しベンチマーク

sumim.hatenablog.com の追試です。 複数のRuby実装で速さの違いを比べてみます。 スクリプト require 'benchmark' def tak(x, y, z) if x > y then tak(tak(x-1, y, z), tak(y-1, z, x), tak(z-1, x, y)) else y end end Benchmark.bm do |x| x.report do t…

Ruby 3.2.0-preview2

rbevnとruby-buildを使ってRuby 3.2.0-preview2をインストールします。 ledsun@MSI:~►rbenv install 3.2.0-preview2 To follow progress, use 'tail -f /tmp/ruby-build.20220909111902.4631.log' or pass --verbose Downloading ruby-3.2.0-preview2.tar.gz…

もののついでにjRubyでもπを繰り返し計算してみる

JITが効くまでに時間が掛かるのではないか? - @ledsun blog でTruffleRubyを計測したスクリプトがあります。 そのまま流用してjRubyも計測してみます。 スクリプト require "bigdecimal" require "benchmark" def pi prec = 100 conv = 3 a = BigDecimal("1…

MJITとYJITはπの計算には効かないらしい

JITが効くまでに時間が掛かるのではないか? - @ledsun blog で、TruffleRubyはJITが効くまでに40秒の実行時間が必要という仮説を立てました。 YJITやMJITではどうなるのでしょうか? 次のスクリプトを実行して計測してみます。 require "bigdecimal" requir…

TruffleRubyのスイートスポットはどこ?

JITが効くまでに時間が掛かるのではないか? - @ledsun blog でπを1万回計算したらTruffleRubyがCRubyより速く動きました。 一旦TruffleRubyが速くなったら、計算回数をもっと増やしたらTruffleRubyがもっと速く動くことが期待できます。 50000回計算を試し…

JITが効くまでに時間が掛かるのではないか?

いろいろなRubyでπを計算して速さを比べる - @ledsun blog で比較したところTruffle RubyよりCRubyの方がずっと速かったです。 なぜでしょうか? 例えば Ruby 3.0のJITの特性 - @ledsun blog でCRuby 3.0 の MJIT を試した時は実行時間が20秒を超えたあたり…

いろいろなRubyでπを計算して速さを比べる

計測用のスクリプト require "bigdecimal" require "benchmark" Benchmark.bmbm do |x| x.report do prec = 100 conv = 3 a = BigDecimal("1") b = BigDecimal("1") / BigDecimal("2").sqrt(prec) t = BigDecimal("1") / 4 p = BigDecimal("1") for n in 1..…

jRubyでπを計算する

Rubyでπを計算する - @ledsun blog でπを計算するRubyスクリプトが動くことがわかりました。 WSLにjRubyをインストールしてみる - @ledsun blog で設定したjRubyで動かしてみます。 ledsun@MSI:~/ruby-pi►rbenv local jruby-9.3.7.0 ledsun@MSI:~/ruby-pi►ru…

Rubyでπを計算する

jRubyが並列に動くのか確かめたいです。 CPUバウンドな時間が掛かる処理があるといいはず。 計算に時間が掛かる処理と言えばπの計算です。 BigMath::PIより早く円周率を計算する - Qiitaを参考にして、Rubyでπを計算してみます。 require "bigdecimal" requi…

VPN接続するとWSL内でgitが使えなくて困っていたところを通りすがりの同僚に助けてもらった話

同僚に次のブログを教えてもらいました。 blog.jicoman.info 初めてこの現象に出会ったときは、VPN接続が必要なgitリポジトリが相手でした。 なんとなくそういうもんかな?と思ってスルーしました。 スルーというかMac端末で作業を進めることにしました。 そ…

WSLにjRubyをインストールしてみる

Ubuntu にrbenvを使ってrubyとjrubyをインストールする方法 - Qiita を参考にします。 rbenvはインストール済みです。 ledsun@MSI:~[1]►rbenv --version rbenv 1.2.0-1-g6cc7bff Javaもインストールされています。 ledsun@MSI:~►java --version openjdk 11.0…

WSL上のfish-shellからWindowsのホストのディレクトリでプロンプト表示に時間がかかることがある

現象 表題がわかりにくいですね。 動画で再現するとこうです。 gyazo.com lsコマンドを実行すると、結果が表示されます。 すこし待つとプロンプトが表示されます。 fishのversionは 3.3.1 です。 今、原因の候補と考えているもの プロンプトの右側にgitの情…

Rails 7のload_async

Rails 7の新機能を見ていて次の機能があることに気がつきました。 Ruby on Rails 7の主要な新機能・機能追加・変更点 - Qiita ActiveRecord::Relation#load_asyncを使用することによって、非同期でSQLクエリを実行し、結果を取得することができるようになり…

Railsガイド日本語訳への貢献

雑談会 - @ledsun blog で 昔使ってたDelayed::Jobがなくなっていた と書いたら次のような情報を頂きました。 ちなみに、Railsガイドの英語版を見ると、Delayed::Jobの記載はありますね~https://t.co/mSD6s4Gz5N— thinkAmi (@thinkAmi) August 14, 2022 修…