読者です 読者をやめる 読者になる 読者になる

macOS上のAPFSはUnicode Normalizationを行うのか?

iOS 10.3がリリースされましたが、APFSへの移行が含まれていて話題です。特に文字コード界隈ではHFS+で搭載されていた暗黙のUnicode Normalizationがなくなっている点が指摘されています1。 ではmacOSではどうなのでしょうか。SierraならばすでにAPFSを扱う…

そして最近の分岐予測について2

先日の日記で最近のIntel CPUでは間接分岐の分岐予測がほとんどミスしなくなっているという話を紹介しましたが、Branch Prediction and the Performance of Interpreters - Don't Trust Folkloreという論文にまさに同じことが書かれているのを見つけました。…

ムーアの法則の終わり、そして最近の分岐予測について

ムーアの法則の終わり、そして最近の分岐予測について 序 僕らx86の大地の上に生きるものは、この10年Intelが告げるTick-Tockの鐘の音にあわせてムーアの法則の恩恵を享受してきた。*1 *2 しかし、Kaby Lakeの14nmプロセス採用つまり、2年おきのプロセスルー…

YARV命令ごとの実行コストを知るには

プログラムのボトルネックを探すには大きく分けて二つの方法があります。心眼を研ぎ澄ましていきなり最適化してみてから考えるのと、何かしらのツールでサイクル数やCPU時間を計測して地道に探す方法ですね。皆さん普通は前者だと思うんですが、それが行き詰…

CRubyとVisual Studio 15

先月「Visual Studio “15” Preview リリース」というニュースがありましたがみなさんはもう試してみましたか? おそらくCRuby的な意味で試した人は世界でも稀なんじゃないかと思います。MSVC14のときもcl.exeの起動でつまづいていましたが、今回はさらにその…

投機実行とOut of Orderはつよいというはなし

fluentdな人達と話していると定期的にRubyのオブジェクト生成が遅いとdisられます。 本質的にしょうがない部分もあるんですが、それにしても遅い部分も結構あるので、おもむろにperf statとperf recordを取ってみましょう。 % sudo perf stat -d ./miniruby …

GZIPをZlibデータとして読めるのか?

結論 ムリ。 何がしたいの 例えばMySQLにGZIPのデータが入ってるとき、誰しもこのデータを文字列関数とUNCOMPRESS関数だけで解凍できないのだろうかと思うのでは無いでしょうか。 GZIP +---+---+---+---+---+---+---+---+---+---+=======================+--…

割り切れてるかの確認を高速化しようとして、コンパイラに負けた話

今日見ていきたいのはtime.cのquo(VALUE x, VALUE y)です。akrさんのRuby における 2038年問題の解決で述べられているとおり、RubyのTimeは内部表現にRationalを使えるようになっているので、その辺を司る部品ですね。 static VALUE quo(VALUE x, VALUE y) {…

Bignumの10進文字列化を速くしよう

んー、花粉症がひどいし、ここはぱーっとRubyでも高速化して景気づけしたいですね。 先日の日記 でRubyとCしか読めないこの日記の読者の皆さんも、アセンブラに親しみが持てるようになったのではないかと思います。せっかくなので、引き続きこの方向で頑張っ…

CRubyとLink Time Optimizationについて

最近、夜寝る前にRubyのベンチマークを眺めたり、仕事の障害時のログを眺めるっていう悪趣味極まりない習慣がついてしまった。まぁ、草木も眠る丑三つ時にこの世の真理を求めて何かを読みふけるって言うのは、この業界にいる人間なら誰しもがやることなんじ…

What is nil? No matter. What is nil? Never mind.

"What is nil?" is mysterious question in Ruby. You may answer like "nothing", "nothing exists", or "NULL". Brian, the founder of Rubinius, wrote his thoughts around Lonely operator. CRuby developers sometimes discussed about nil for exampl…

therubyracer considered harmful

要約 therubyracerはやめてexecjsからnodeコマンド使え。 解説 Rails 3.1 で Asset Pipeline が導入されて以来、Gemfileにgem 'therubyracer'と書く人も増えたのではないでしょうか。しかし、それがどの程度のリスクを背負っているのか自覚のない人も多いよ…

RubyとGit for Windows

序 人は誰しも理想郷ユートピアを求めるものだし求めてしまうものだろう。「最強のUnix環境」、これもまたそうしたユートピアの一つである。 21世紀の正常な判断能力を持った人間A pragmatic programmerならば、ユートピアを探し求めることは諦めて、OS Xこ…

Ruby 2.3.0 released

Ruby 2.3.0 Releasedでした。皆さんお疲れ様でした。 リリーススケジュールとしては今回は例年になくぐだぐだで、リリース直前までブランチを切らなかったのも1.9系の仕様が安定した1.9.1以降では異例のことです。もっとも、これはCIが整備されたことで形式…

Ruby会議2015

Ruby会議2015 1日目 朝 家で Ruby 2.3.0-preview2 のsvnタグを打ってから優雅に会場に到着し、オープニングでリリースを行う予定だったのだが、雨で時間ロスしつつ会場へのラストワンマイルで迷ったため、焦ってしまっていまいちいい感じにならなかったのが…

Treasure Data に入社しました

今日から Treasure Data で働くことになりました。 前職が一段落して(退職エントリ)転職を考えた時に、ちょうどtagomorisさんが何社も回った末にTreasure Dataに決めていたので、TDにしました。 … もちろん物事を決めるときに理由はいくつもあるわけでして…

Visual C++ 14 と Ruby その2

というわけで、Rubyに普通にマージして良さそうな修正は既に入れてしまいつつ、workaroundをPull Request #884 として載せておきました。なんか妙にstack over flowしますが、おおむねtest-allも動きます。 また、Microsoft Connectにfeedbackも書きました。…

Visual C++ 14 と Ruby その1

Microsoft Visual Studio 2015 CTP6がでましたね。VS14ではVisual C++ Runtimeに大きく変更が入るそうで、とてもイヤな予感がしますから、ちょっと様子を見てみましょう。 Azure使いの人はMicrosoft Azure virtual machine galleryにあるVisual Studio Ultim…

「文字列」について

序 「文字列を文字の列とみなす単純化」について議論がありますが、前提が抜け落ちてるように思うので書くことにします。 そもそもこの話はどのような文脈の上にあるかというと、テキスト処理 (wikipedia:en:Text_processing) の文脈になります。ここでいう…

Cの構造体や関数が定義された位置を表示するnadoka用bot、crubybotつくった

なにをつくったか 表題のとおり crubybot.nb ですが、その名の通りCRubyのソースを解釈して、与えた構造体や関数の定義位置を返します。返す時はGitHubのURLなんですが、まぁそこは枝葉ですな。 libclang Cコンパイラにはプリプロセッサや構文解析、構文木の…

最近のFreeBSDのsignal trampolineの場所

しばらく悩んでしまったので、後世の人が悩まないように。プロセスにシグナルが送られると、カーネルはsignal frameをスタック(またはsigaltstack)に積み、「signal handlerを呼び、戻ってきたら後片付けをして元々のプログラムの位置に戻る関数(=sigretur…

C backtrace

5. Backtrace系ライブラリについて。> シグナルトランポリンとかよくわからないので教えてほしい。わたしは黒のBSD本 (4.7 Signals) で勉強しました。日本語訳は入手困難だけど、英語版ならKindleで買えます。 が、第2版が8月にでるそうです!(3月14日追記…

さくらのBASE Storage について

待望のs3っぽいやつがさくらに来たので、chkbuildのログ上げてみたら、CentOS系だけで70GB近くあった。 http://logfiles.b.storage.sakura.ad.jp/content-typeとHTTPヘッダ (Content-Encoding) の設定ができないので、html.gzやtxt.gzをブラウザに自動展開し…

GitHub で Web だけで Pull Request を投げるには

あらすじ typo の修正とかでいちいちローカルにリポジトリ取ってくるのだるいよね。 GitHub って Web でファイル編集できて便利だね。 油断してると master で編集しちゃうけど、master ブランチから Pull Request とか小学生でも許されないよね どうやって…

Rubyのバージョンについて

前提 Ruby 開発陣がブランチのメンテナンスに割けるリソースは限界がある。具体的には2本 (+trunk) が限界。 現状 1.9.3 と 2.0.0 がメンテナンスされている。年末に 2.1.0 が増える。 利用者のニーズ セキュリティ修正のみのブランチが欲しい (debian や he…

Ruby開発者会議20130727

というわけで、Ruby 2.1 に向けて DevelopersMeeting20130727Japan をしたのです。 開発者会議で何をするかというと、RubyKaigi での見世物の通り、みんなが集まって色んなトピックに対してああでもないこうでもないと言い合うわけです。するとあら不思議、…

観察日記 2013-02-20

2月も20日になるともう Ruby 2.0 出しちゃった気分なので、2.1 の妄想など考えるわけです…が、以下のログは実は1年半前のもの。 そういえばうささんいるからきくんですが、 殺気... Time#to_sとかそのへんって、今はnon ASCIIこない? こなくなったような {un…

観察日記 2013-01-16

ぼやぼやしていたら2013年になってしまってそろそろRubyさんも20歳になりそうですが皆様いかがお過ごしでしょうかぼくはげんきです。本日IRCにてRuby Implementers Meetingってのが行われたので、それのレポートをしたいところなんですが、朝8時とか無理ゲー…

観察日記 2012-09-28

久々の歴史チャンネル %ruby です。 少なくとも有史以降で人類が知的に成長したという痕跡は見られません。 平和を願うよりも、武力でお互いに脅し合った方が平和が実現できるってのはここ100年で最も人類が知的に成長した点だと思う それも割と昔から繰り返…

観察日記 2012-08-24

Flonumと不変オブジェクト r36798 で flonum が入ったわけですが。Feature #6763 あー、flonum導入で32bit環境と64bit環境でFloatのインスタンス変数やtaintの挙動が異なるようになったのか なんか不味いことになりそうですか その辺考えたつもりなんだけど …

日本におけるジュラルミン史

ヒンデンブルク号爆発事故 - Wikipedia {unak_} 同事故現場にたまたま居合わせた日本の住友金属の技術者が、ヒンデンブルク号の破片を拾得し(中略) 超々ジュラルミンを開発するきっかけとなった。 要出典だなあ。 超々ジュラルミンの開発は1936年、ヒンデン…

観察日記 2012-05-15

原始オブジェクト 変なオブジェクトを見つけた時に、そのオブジェクトがどこで作られたか知りたいという話を受けて、 しかし、先日踏んだ謎のオブジェクトはFixnumだったのであった Fixnumはこの世の開闢からあるのです^^ はじめにFixnumがあった nil じゃ…

観察日記 2012-03-22

教養ちゃんねる %ruby です。三種の神器とは鉄器のことではないか、という話。 「日本」はいつできたか 「日本」という国が本当は何者で、いつできたのかには色々と謎が多くて、この国が「日本」を名乗り始めたのは天智天武の頃だと各国歴史書が示しているん…

観察日記 2012-03-02

ビジーループとスレッドスイッチ (nurse) [ruby-core:42972] ついに懸賞金が (mame6) 50$ かあ (nurse) tk入れないと再現しない気がするのがハードル高い (unak) 50$だとせいぜい1時間くらいで解決しないと元が取れないな。 (unak) 再現しないんだよなあ。 (…

Genuine Han Unification

Ken Lunde さんによる "Genuine Han Unification" ですが、久しぶりに清々しいほどの寝言を見た気がしますね。これが CJKV の著者である、Ken Lunde によるものだってのがなかなか悩ましいところなんだけど。たぶんこれって、Arial Unicode MS の夢をまだ見…

git コミット ID の衝突確率

git はコミットを SHA1 で管理していることは、こんな場末の日記を好きこのんでご覧になられている皆さんならよくご存じかと思いますが、最近メイドガチャピン先生の「革命の日々! git のsha1は何桁あれば安全か」など、Linux において Git デフォルトの 7 …

MOGOK最速レビュー

序 MOGOK のクローズドβが始まったので、レビューをしてみんとてするなり。 MOGOK とは? 「MOGOKは、Ruby on Railsアプリケーションの開発支援環境と実行環境を提供するサービスです。」端的に言えば「heroku みたいなの」です、IIJ がやってます。IIJ 自身…

ServersMan@VPS Perfect Plan で NetBSD

先日から Ruby では DTI さんに VPS を無料で貸していただいてまして、以下のように chkbuild を走らせています。 http://fbsd.rubyci.org/~chkbuild/ruby-trunk/recent.html http://nbsd.rubyci.org/~chkbuild/ruby-trunk/recent.html http://u32.rubyci.or…

MS ゴシックの文字幅

こんな場末の日記をわざわざ見に来る方は UAX #11: East Asian Width なんかは当たり前に読み込んでいると思うんですが、読み込んだ人はきっと気づくと思うんです、このドキュメントはあてにならないことに。じゃあどうすればいいかってなるんですが、端的に…

RubyKaigi2011

なかなか書き終わらないからとりあえず載せてしまおう。 Aaronの発表について > 標準ライブラリなどで分野ごとに担当がはっきり決まっていることでこれは責任者(=バグったときに直せと言われる人)を明確にするって事と、ライブラリ全体のデザインをする人…

観察日記 2011-07-20

RubyKaigiの感想が書き終わらないので大昔のログでも。 cmd.exeさんとconhost.exeさん うささんうささん、こんそーるほすとぷろせすってなに @nalsh 入力ができないのはそれ全く別の問題。フォント指定も。Console Host Process を書き換えなければならなく…

観察日記 2011-07-15

Mac上でのベンチマーク結果速報 http://www.atdot.net/sp/readonly/nfbnnl_kosaki0 Mac上でのベンチマーク結果速報 これはえーと 一番下だけ見ればいいのか はい 基本的には、若干悪化している、と。 稀に速くなってるのもあるな。 vm_thread_mutex3 はなん…

観察日記 2011-07-12

僕らの自称 僕らの自称はC Rubyなの? CRuby じゃないっけ 純粋な疑問 JRuby とかと対比させるときは CRuby ということが多いかも 件のmatzはCRubyって言ってなかったっけ CRubyはまあそうかなー的な というかまあ、自称はRUBY_ENGINEに入ってるんですけど 混…

観察日記 2011-06-27

今日は IRC まとめではないんです。 バグアサイン会 リリース前恒例の バグアサイン会 でした。 Rubyプロジェクトに属していたチケットをRuby 1.9に移動した Ruby1.9プロジェクトのうち、"Bug"種別のものについて 対象バージョンが明らかに1.9.3でないもの以…

観察日記 2011-05-30

そういえばそういえば、include/ruby/*.hってあんなに分ける意味あるの? そんなわかれてたっけ うわ、すげーわかれてる missing.h、oniguruma.h、st.h、util.hには分かれてる意味がある。 ruby.hとdefines.hとintern.hの使い分けがよくわかってない あとwin3…

観察日記 2011-05-27

現実と言語の汚れた関係 @ksmakoto 表現したい対象があいまいなものであるならば、あいまいな用語を使うほうが正確な表現である、という知見 @unak @ksmakoto なんかどっかで聞いたような、と思ったら、Perlか! うささん、あいまいなことを、っていう話、 Pe…

観察日記 2011-05-26

Ruby コミッタの欲しい物 この文書の趣旨は、Ruby はまつもとゆきひろとゆかいな仲間たちによって作られているわけですが、その「ゆかいな仲間たち」は何を必要としているかを発信しようというものです。 http://twitter.com/tanakayoshikazu/status/7329476…

観察日記 2011-05-24

C死ねの話 卜部昌平のあまりreblogしないtumblr - どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。 を受けて C言語が大好きなんだけど、それは老害だと封じられていて手も足も出ない。 C言語なんてありません by う゛ぉいにゃん …

観察日記 2011-05-19

Perl 5.14 released http://journal.mycom.co.jp/news/2011/05/17/060/index.html http://perldoc.perl.org/perl5140delta.html {unak} Unicodeで処理すべきかASCIIで処理すべきかを指定できる新しい正規表現フラグの導入 ふむ? これはウチでも入れるかねぇ …

観察日記 2011-05-18

autoload/require と thread unsafe なひさんから1.8のautoloadがthread unsafeなのがどうにかならんかといま口頭で言われているが unsafeだっけ? 今気づいたのだが rb_mutex_lock()の remove_signal_thread_list() って何の意味もなくないか? add が ubf_s…