[#615] [MethodIndex] <!-- hhmts ... — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

13 messages 1997/10/01

[#645] pack/unpack base64 — WATANABE Hirofumi <watanabe@...>

わたなべです.

18 messages 1997/10/06

[#654] [BUG?] ruby -r nothing-file — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

29 messages 1997/10/06
[#661] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#662] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#663] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#666] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#667] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#669] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#670] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#671] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#672] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#673] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#674] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#675] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#676] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#677] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#678] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#679] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#770] printn means print and newline — HYOUDOU Kouichi /note <hyoudo@...>

兵藤です%思い付きなのですが

19 messages 1997/10/28
[#771] Re: printn means print and newline — shugo@... (Shugo Maeda) 1997/10/28

前田です。

[ruby-dev:723] Re: 64bit int support (Re: _muldi3 included in libgcc.a)

From: "EGUCHI Osamu" <eguchi@...>
Date: 1997-10-12 02:22:42 UTC
List: ruby-dev #723
えぐち です。

----------
> 差出人 : Yukihiro Matsumoto <matz@netlab.co.jp>
> 件名 : [ruby-dev:722] Re: 64bit int support (Re: _muldi3 included in
libgcc.a)
> 
> まつもと ゆきひろです
> 
> In message "[ruby-dev:719] 64bit int support (Re: _muldi3 included in
libgcc.a)"
>     on 97/10/10, "EGUCHI Osamu" <eguchi@shizuokanet.or.jp> writes:
> |
> |えぐち です。

> |ところで、alpha-linuxでは
> |sizeof({long,void*,int,short})は、それぞれいくつになりますか?
> 
>         short 2
>         int   4
>         long  8
>         void* 8
> 
> です.
> 
> |問題が
> |	sizeof(long) != sizeof(void*)
> |なのか
> |	sizeof(long) != sizeof(int)
> |なのかが理解できていないのです(面目ない)。
> 
> sizeof(int) != sizeof(void*)が問題なんですね.

なるほど、なるほど、
sizeof(long) != sizeof(int)
	て事もそうですね、あぁ次の話題がそうですか。
	逆に言えば
sizeof(long) == sizeof(void*)
	ってのはある意味救いですね。

> まずプロトタイプ宣言をしていない関数の戻り値はintなのですが,
> rubyではけっこうsizeof(int)==sizeof(VALUE)を仮定して,VALUE
> を返す関数を宣言無しで使っていますのでで,全部の関数にプロト
> タイプを付ける必要があります.

あと int で VALUE の戻り値を受け取ってるのもあるので
size_t 的な場合以外 long を使うべきってのもありますね。

gcc の typeof() を使うと ruby1.1 の #type と同等なコードが、
書けるのですが、いかんせん gcc 依存なので、
地道に gcc -Wall を黙らせるしかないのでしょう?! 

> またsetjmp()でポインタを返していた部分がありましたが,これは
> 修正しました.

longjump() の第二パラが int なのは、今となっては、
いやな仕様ですね >X3J11 。(専用の typedef ならよかったのに)

> 後はFIX2INT(),INT2FIX()の扱いですね.

ここでいう *INT* はC言語の int と言うことでなく
「Fixnumを格納するに十分なC言語の整数型」が求められているとすると
「左に1つシフトしてLSBをセット」の従来の方法で問題無いのでは?

> |あと、Bignum の DIGIT の大きさを2バイトと仮定するのは
> |今後問題にならないですか?(仕様ですか?)
> |今の marshal はそれを仮定しているようですが如何でしょう?
> 
> 現状のmarshalがそれを仮定しているのは確かですね.どうしましょ
> うか? Flexibleなのが望ましいとは思うのですが….

marshal のメジャーバージョンを1つあげていいのであれば
TYPE_FIXNUM と TYPE_BIGNUM を TYPE_INTEGER に統合して
Fixnum の表現可能な範囲を気にしないでいいようにするのが
将来にわたってのデーター交換性を確保するにいい方法だとおもいます。

あと、 符号に1byte使うのもあれなので、

#define TYPE_POSINT '+'
#define TYPE_NEGINT '-'

なんてどうでしょうか?

record MARSHAL_INT begin
  BYTE type; (* pos:'+' neg:'-' *)
  LONG len;
  BYTE digit[len];
end

って感じです。

符号化効率を気にするのであれば、頻繁に現れるであろう 0 や 1 に

#define TYPE_ZERO '0'
#define TYPE_ONE  '1'

をマッピングすると効果的かもしれません。また

#define TYPE_ZARRAY 'Z'

なんかも状況によっては有効かも、、

符号化方法はともあれ、
現在の marshal で作られたデータファイルの継続的使用の保証の為、
reader は現と新の両バージョンに対応しつづける事が大切でしょう。
(ところでデータソースのmarshalバージョンを返すメソッドあったん?)

writer では 新で書くを既定値とするにしても旧(現)バージョンでの 
形式の書き込みも Marshal#set_write_version の様なメソッドで
選択可能にできると、いいんぢゃないでしょうか。

> |少なくとも、私はそう感じます、、でも仕事では使わざるをえない
> |という悲しい現実が、、
> 
> 転職して以来 C++ からは開放されました.

理想的な脱出方法ですね。 (^^)

まぁ、多重継承や friend の様な部分に手を出さない(!)
と言う消極的な態度になってしまっています。

あと、開発効率より実行効率を優先するような、実時間アプリは
C++ が妥当な選択に思えない事もないではないです。

あまり、ruby-dev な話でないので愚痴はこの辺にします。

	えぐち

In This Thread

Prev Next