10:03:43
icon

カビゴン餌やり失敗部

11:04:21
icon

今日の昼はポーランド行こうかな

11:07:30
icon

ポーランドはまだロケテなのか、終わり

11:28:30
2024-02-29 10:43:19 やまのくの投稿 yamanoku@mastodon.social
icon

このアカウントは、notestockで公開設定になっていません。

11:28:36
icon

すごい

11:41:08
icon

昼飯 うまい おすすめ

12:28:42
icon

ピクシブじゃないから公式見解じゃないヨシ!

13:31:11
icon

あずにゃん式余り物いため

Attach image
14:06:46
icon

今日は全然頭が回らん

14:28:02
icon

あらゆる現実をすべて自分の方へねじ曲げて

14:31:15
icon

ATR音素バランス文「あらゆる現実をすべて自分の方へねじ曲げたのだ」の出典がしれっと明らかにされてる!!!
ja.shuheikato.info/other/atr50

加藤集平 - ATR音素バランス503文の出典
15:21:42
icon

森林・オブ・ジョイトイ

16:26:39
icon

中華屋じゃないしっとり系のチャーハンが食べたい気分になってきた

16:29:17
icon

ゆれとかどこの

16:38:28
icon

関東大震災2マジ?

18:41:31
icon

ゆれてない

22:25:03
icon

なんか2月は長かったな

22:25:46
icon

@brsywe そうだね

22:39:24
icon

USE_FLONUMが落ちてる場合は20 (0x14) が特殊値じゃなくなる github.com/ruby/ruby/blob/1a6a

で、USE_FLONUMはsizeof(*void) >= sizeof(double) の時に立つので、実質的に64bit判定みたいになってる
github.com/ruby/ruby/blob/1a6a

Web site image
ruby/include/ruby/internal/special_consts.h at 1a6a7c699c4f66396d3f314423fee515ab8b4b19 · ruby/ruby
Web site image
ruby/include/ruby/internal/special_consts.h at 1a6a7c699c4f66396d3f314423fee515ab8b4b19 · ruby/ruby
22:41:46
icon

つまり32bit環境でObjectSpace._id2ref(20)が返してくるのはたまたまこのIDが振られた普通のインスタンスで、これが Encoding::UTF_8っぽい

22:52:41
icon

__id__の実装見つからないんだけどどうなってるんだろう。なんか実際のVALUEから上位bitをクリアしてそうな気がするけど

22:57:24 22:58:46
icon

@ahiru そう。Rubyは内部的に(void*)を同じ大きさの整数 (unsigned longかunsigned long long) として扱ってて、さらに動的に確保するメモリのアドレスは必ず下位8bitが0になるようにアラインメントしてる。そうすることで逆に下位8bitがセットされてたら特殊値を表すことにして、小さい整数やプリミティブ分の容量を節約してる

23:01:16
icon

Encoding::UTF_8が小さいidなのは、文字列を作るとString.encodingとしてEncoding::UTF_8が必要になることが影響していると思うけど詳しいことはよくわからん

23:27:03
icon

マジかこれ、いつからだ?

> Unlike in the old days,
* an object's object ID (that a user can query using `Object#object_id`)
* is no longer its physical address represented using Ruby level integers.
* It is now a monotonic-increasing integer unrelated to the underlying
* memory arrangement.

github.com/ruby/ruby/blame/1a6

Web site image
Blaming ruby/include/ruby/internal/fl_type.h at 1a6a7c699c4f66396d3f314423fee515ab8b4b19 · ruby/ruby
23:30:28
icon

id_table.cってやつがそれっぽいから9年前?ていうかRubyの仕組みを真面目に勉強してたのそんなに前なのか……
github.com/ruby/ruby/blame/1a6

Web site image
Blaming ruby/id_table.c at 1a6a7c699c4f66396d3f314423fee515ab8b4b19 · ruby/ruby
23:52:36
icon

object_idの仕様は2.xのどこかで変わったらしい(なんで曖昧なんだよ)

> In the old
* days this function was a purely arithmetic operation that maps the
* underlying memory address where the object resides into a Ruby's integer.
* Some time around 2.x this changed.

github.com/ruby/ruby/blob/950c

Web site image
ruby/include/ruby/internal/intern/object.h at 950c60623b83fb778df6b928ccbe46b2e54b18b6 · ruby/ruby