From: eregontp@... Date: 2016-01-13T19:16:20+00:00 Subject: [ruby-core:72849] [Ruby trunk - Bug #11973] IO#advise should raise NotImplementedError on platforms that do not support that call Issue #11973 has been updated by Benoit Daloze. Ruby APIs try no unify across platforms, and IO is not just POSIX. So I think "noop returning nil" is an appropriate implementation on systems which do not support posix_fadvise. For instance, Process.clock_gettime also works for generic clocks, even on system without clock_gettime(2). There is no appropriate replacement for "fork" on Windows, so there it makes sense to fail hard. ---------------------------------------- Bug #11973: IO#advise should raise NotImplementedError on platforms that do not support that call https://bugs.ruby-lang.org/issues/11973#change-56085 * Author: Chuck Remes * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.4.0 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Right now IO#advise returns nil when passed legal arguments even on platforms that do not support that POSIX function (like OS X). To be consistent with other calls in core, I think that IO#advise should raise NotImplementedError for unsupported platforms. A similar topic on IO#advise was recently discussed in https://bugs.ruby-lang.org/issues/11806#note-6. To support this idea, I'd like to point to how File#link behaves in a similar situation on platforms that do not support hard links in the filesystem. It raises NotImplementedError. https://github.com/ruby/ruby/blob/trunk/file.c#L2723 I am bringing up this issue so we can make Ruby behave more consistently and behave in a consistent manner when trying to access functions on unsupported platforms. -- https://bugs.ruby-lang.org/ Unsubscribe: