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

観察日記 2010-11-05

文字と 32bit int

文字をsigned intで扱おうとしている子がいるな
GB18030がいるからunsigned 32bit必要だと何度!
... ということは、裏を返すと、ruby文字コードが32bit以内であることを仮定してる?
rubyに限らずほとんどそうだな
一部のコードは31bit以内である事を仮定している
その幻想をぶちこわさないと
http://redmine.ruby-lang.org/wiki/ruby-19/AssumptionsJa
{util_mput} Ruby 1.9 - AssumptionsJa - Ruby Issue Tracking System http://tinyurl.com/24cr3b5
こんなページがあるので
書いておくといいかもしれない
たしかに

GB18030ってmohta bitを使うの?
なんか嫌な名前のbitですね
32bitというか、4bytesなので
文字コードを32ビットで扱う場合のMSBのことを指す語で
ぐぐるせんせいに聞いても、世界で数人しか使ってなさそうな雰囲気ですが
ですな
というか一人ないし二人のような
g> mohta bit
{ko1_ndk} google web bot: めもがき:2010年5月27日分 - http://www.hi-matic.org/diary/index.cgi?20100527 (and 48 hits)
うぐぅ
tnozakiさんか、まぁふさわしい人のうちの一人ではある
出典を知りたいのだけど
手の届くところになさげだな。
fj説
fjだったらぐぐるさんが拾ってたりしねーのかな
太古だったら拾ってないか。
本人に聞けばわかるはず
恐山あたりに行けと
いやそっちの「本人」じゃなくてか
確かUnicode関係の議論で、内部コードにUCS4を使う場合に、空けといてくれとか要求したという
いや生きてますから
いやtnozakiさんの日記で引用されているmohta bitという言葉の含まれたコード片が itojun m17n という名前だそうなので
itojunさんを呼んでこないといけないのかと
wchar_t mappings: ってコード?
ってコード
nvi-m17nの断片かしら
google code> mohta bit lang:c
{ko1_ndk} google code bot: http://www.google.com/codesearch?q=mohta%20bit%20lang:c - 7 matches.
citrusのコードの一部ですよね?
citrus_iso2022.c のようですな。
なるほろ
ということは手元にあるな。あったらどうかというと特に意味はないが。
あ、そのコメント書き加えたのがitojunさんだったのか
itojunさんはCitrusのボスでもあったような
signedだとGB18030で困るの?
負になるみたいですが
一時的に負で扱うなら悪くはないけど、
if (c < 0) rb_raise(...);とかよくやってる
EOF?
EOFとは同時に扱えるような扱えないような
扱えないんじゃね?
unsignedだと、そのコードはありえなくなりますよね?
しかしめんどくさいなそういうコードがよくあると。
0xFFFFFFFFはGB18030でも使わないので、そこだけピンポイントではじけばよい
(uint32_t)-1 か。
うむ
4-byte: {81-FE}{30-39}{81-FE}{30-39}らしいので、実は結構いける
なんで30-39なんだろう。
2-byte: {81-FE}{40-7E,80-FE}だから
ふむ
この2-byteとはGBKでもあるんだったかな
http://www.iana.org/assignments/charset-reg/GB18030
{util_mput} (text/plain 5884bytes) http://tinyurl.com/6dr4g
A full superset of GBK

printf フォーマット名

PRIuVALUE とか
http://ruby1.9.1.sourcearchive.com/documentation/1.9.1.378/ruby_2ruby_8h-source.html
こんなサイトがあるのか
{util_mput} ruby1.9.1 sourcecode, ruby_2ruby_8h-source.html, 1.9.1.378 http://tinyurl.com/29so8ao
全く持って覚えられる自信が無い
ruby.h の中身
%z ってなんだっけ
Specifies that a following d, i, o, u, x, or X conversion specifier applies to a size_t or
the corresponding signed integer type argument; or that a following n conversion specifier applies
to a pointer to a signed integer type corresponding to a size_t argument.
整数変換に対応する引き数が size_t か ssize_t であることを示す。 (Linux libc5 では、これを
指定するのに Z を用いる。使ってはならない。)
libc5 って。
%Xって使ったこと無いな
これだけわかりづらいのに使い続けられているミニ言語って凄いなあ
16進数表記の英字大文字?
なんだかんだでJavaにも入りましたし。
おやいつの間に
へえ
PRI... ってどの仕様?
C99?
g> IEEE Std 1003.1-2001
{ko1_ndk} google web bot: UNIXの規格について - memologue - http://d.hatena.ne.jp/yupo5656/20040622/p
1 (and 103 hits)
POSIXなのかC99なのか
C99の電子リファレンスがほしい
http://seclan.dll.jp/c99d/c99d09.htm#dt19990705
{util_mput} プログラミング言語 C の新機能 http://tinyurl.com/oddyn6
おお
ここで知ったのでC99だと思ってた。

x64 と platform 名

あれ?結局x64-linuxになったんだっけ?
もどしたんでないのん?
今やってみたらx64-linuxになった
守備範囲外だからよくわからんが。
巻き戻しに俺がケチつけたあとどうなったんだべ
configure: error: target arch(s) has changed from x86_64 to x64 と言われた
どうなんですかなかださん
あれ?
target_os入れるの忘れてた
{znz} biff: [ruby-changes:17438] Ruby:r29443 (trunk): * configure.in (RUBY_MINGW32): canonicalize only on mingw. - http://mla.n-z.jp/?ruby-changes=17438
configure: error: target arch(s) has changed from x64 to x86_64 戻った
changesは便利だなあ。
じゃあmingwではどうなるの?x64-mingw64?
そのように見える。
{unak} +target_cpu=x64
{unak} +target_os="`echo ${target_os} | sed 's/32$/64/'`"
と差分に書いてあるので。
まあ、妥当なとこかな
x64-mswin64にあわせた
mswin64はOSの名前なのでmingwは以下略
mingwも64bit版はx64-mswin64と名乗ってみたら
いろんな人が叫ぶだろうか?
いや、それもありだと思う
分けたところで混ぜるやつはいるし
一緒にしちゃったら何が困るだろう?
思考実験
拡張ライブラリのバイナリ配布の場合: 互換だから問題ない
gemのバイナリがどういう扱いになるのか
拡張ライブラリのソース配布の場合: 手元のコンパイラでビルドされるから問題ない
そか、問題ないか。
互換なの?
... あっ
_100問題が
すると、むしろ逆に非互換すぎて問題がない説
site_rubyx64-msvcrXXXになるんだっけ?
あい。
RUBY_PLATFORMそろえるならsite_rubyRUBY_PLATFORMと同じに戻してもいいかもしれない
が、x64-mswin64は既にリリースされたrubyに含まれているので変えにくい
_100問題って?
_70問題とか_71問題とか_80問題とか_90問題とか
いや問題じゃないんだけど。
x64-mingw64ってどのmsvcrtとリンクするのかな
msvcrt.dllじゃないかねえ。
あるので。
64bitなmsvcrt.dllがあるの?
うん。
へー
なぜ64bitなmsvcrt.dllがわざわざ用意されているのかというとですね
ユーザーモードドライバが使うからなのですよ。
なるほろり
MSさんはまめだな
ドライバが_100.dllとかに依存してたら軽く死ねるので、いちいち素のやつを用意しているらしい。
みなさんドライバ作る時ってどうやって作ってるの
nmake
知らないうちにmsvcrt.dllにリンクされる?
うそだった
いや俺はnmakeで作ってるな
標準だとbuild.batとかいうファイルがあったような気もしないでもない
で、知らないうちにというかまあWDK使うとそうなるようになってるのですよ。
なるほろり
前に俺がやってた「VC9でmsvcrt.dllにリンクしたrubyを作ろう (1 2 3)」ってのもそれを応用したネタ。