以前、書いていたやつをv3.7ベースに更新しました。
たぶんこのまま次期64ビット版に入ることはなくて実験的な扱いですが、ドックフード食べる人は試してみてください。
現状は、uselibの返り値でint64を扱いたい場合は、#funcで定義してstat64を見る必要があって、#cfuncでの返り値はint32のままです。
また配列長や文字列長はint32のままなので、単一変数は依然32bit制限が残ります。
hsp3.exeでint64変数は扱えなくして、hsp3_64.exeだけにするならstat64新設じゃなくてstatやcfuncの64ビット化もありかなと思います。
変更点
* int64型を追加
* ポインタやハンドルのシステム変数をint64に変更
* 64ビットのstat64システム変数を追加
* int64型に変換するためのint64()関数を追加
* varptr, dupptr, hwnd, hinstance, hdc, wparam, lparam をint64に変更
* hsp3_64で外部dll呼び出しをlibffi実装に変更
制限
* 既存プラグインと互換性がない
* HSPCTX, HSP3TYPEINFO, IRQDAT のレイアウトが変わる
* HSPVAR_FLAG_USERDEF, HSPVAR_FLAG_MAX が変わる
* hspcmpでint64リテラル非対応で、int64("12345678901234567890")のように文字列経由が必要
ソース:
https://github.com/onitama/OpenHSP/compare/master...zakki:int64-hsp64?expand=1
バイナリ:
https://github.com/zakki/OpenHSP-fork/actions/runs/23340468032