ruby-trunk-changes 2021-04-01

今日は macOS での ARM64 版(つまり M1 cihp?)での coroutine 実装の修正などがありました。

[2a02b61fae] Nobuyoshi Nakada 2021-03-31 13:14:15 UTC

拡張ライブラリ objspace の GC.stress = true にして実施するテストでユーティリティメソッド EnvUtil.under_gc_stress を利用するようにリファクタリングしています。

[a5567350f7] Nobuyoshi Nakada 2021-04-01 03:00:10 UTC

time.c の timespec2timew() の引数を struct timespec * からそのメンバーの tv_sec と tv_nsec だけが必要なのでそれぞれを引数に受け取るように変更するリファクタリング。また time_overflow_p() を subsec_normalize() と改名して nanosec と microsec の余剰処理を引数で最大桁を指定することで共通するリファクタリング

[e675a7899c] git 2021-04-01 03:00:35 UTC

version.h の日付更新

[68a8f611e0] David CARLIER 2021-03-31 20:28:58 UTC

arm64版の coroutine 実装 coroutine/arm64/Context.S で macOS 版では .align のかわりに .p2align directive を利用するようにしています。 .align と .p2align の違いってなんだろと調べてみると .p2align はオペランドを 2の累乗にしてアライメントサイズを指定するものだそうです。ただ macOS だと .align が .p2align と同じ意味になるらしいので(ref. http://umezawa.dyndns.info/wordpress/?p=6361)、分岐しなくても同じ結果になりそうですが、いずれにせよアライメントを 2 bytes じゃなく 4 bytes になるようにしているようです。