Issue #13726 has been updated by kubo (Takehiro Kubo).


@usa Thanks for merging the patches.

I'm afraid that `File.mtime(filename).usec` returns always zero just after ruby.exe starts up on Windows 8 or later.

`have_precisetime` is -1 at process startup.
https://github.com/ruby/ruby/blob/5a8a270/win32/win32.c#L4574

It is changed to zero or one in `get_systemtime()`.
https://github.com/ruby/ruby/blob/5a8a270/win32/win32.c#L4586-L4589

If File.mtime is called before `get_systemime()`, the fractional second is always zero even on Windows 8 or later.
https://github.com/ruby/ruby/blob/5a8a270/win32/win32.c#L5493

I cannot check it by myself because I failed to compile ruby from SVN source.
Could somebody check it?

----------------------------------------
Feature #13726: PATCH: Windows builds - fractional second file times
https://bugs.ruby-lang.org/issues/13726#change-68205

* Author: MSP-Greg (Greg L)
* Status: Closed
* Priority: Normal
* Assignee: usa (Usaku NAKAMURA)
* Target version: 
----------------------------------------
At present, I believe Windows builds have integer seconds resolution on File times.

Attached are three patches that seem to correct the issue. The numbered patches are best applied in order.

The c source patches were created by kubo (Kubo Takehiro); I created the spec patch, along with some testing.

All related tests (run parallel) pass on my system for MinGW builds and x64-mswin64_140 builds.  I did some checks with Appveyor, and there may be issues with the logger tests, due to the fact that the tests are very time sensitive (I ran -j3 on a quad system, Appveyor runs -j2 on a dual core).

I believe file time values are stored with 100 ns resolution, but times have 100 s resolution.  This was the reason for some of the changes to the tests, as time appears to be truncated (floor), as opposed to round.

I would appreciate if consideration could be given to adding this (or similar) code.  Thank you.

---Files--------------------------------
02-file-utime.patch (5.53 KB)
spec-rubyspec-core-file-time.patch (2.99 KB)
01-time-subsec.patch (15.2 KB)
spec-rubyspec-core-file-time.patch (3.28 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>