Unix エポック以前のタイムスタンプがなぜ保存できるか、というのは単純に Unix 時間を負数も含めて管理できるように設計していれば負数で過去の時間も与えられるという話な気がする
@orumin 最初に書いてあるpdfには
> With APFS, all time-stamps were changed from 32- to 64-bit andstored as unsigned values. The APFS timestamp value records thenumber of nano-seconds since 1970-01-01. By dividing the APFStime value by 1109, we have the number of seconds since 1970-01-01.
って書いてあるのと負数保存できるんだったらHFS+→APFSのマイグレーションでも保持してくれてよくない??っていうのが (APFSに後から足されたからマイグレーションツールに反映されてないのかもしれないけど)
@rinsuki 素の FS の layer で負数使えるようにすると具体的に time_t で扱うのに不具合と互換性に問題が出そうだから、FS の上の layer で何かそういうのやってるとか……?(time_t 自体は符号付きであることが多いけど、主にエラーを通知するとき (time_t)(-1) を使うというだけっぽいので
@rinsuki 基本的に unix epoch 以前のことはあんまり考慮したくないだろうから migration のときは正規化のつもりで、タイムスタンプそのままにできなくもないとこをあえて unix epoch に切り上げというのはまあありそうだと思っている