Hi,
Takashi Yano wrote:
Hi Mark,
On Tue, 7 Jul 2026 00:58:48 -0700
Mark Geisert wrote:
Hi Takashi,
On 7/6/2026 5:45 PM, Takashi Yano wrote:
...
I don't think we should change CYGWIN_VERSION_API_MINOR value
because the API itself is not changed. This patch fixes a bug
in madvice() implementation.
I went back and forth internally on whether the minor version should be
bumped. One point was whether divorcing madvise() from posix_madvise()
in cygwin.din warranted an API bump: without a bump won't existing
programs be unable to access the new error return behavior?
Existing programs will call the new madvise() function. The existing
DLLs provide a distinct symbol 'madvise' which will then arrive at the
new function.
Another
point was that the error return behavior of madvise() is being changed;
isn't that behavior part of the API? I agree this is a bug fix but such
fixes could cause API changes.
I could not found the case that API version bump for behavioral change
in the past.
The adding MACROs such as:
148: Add open(2) flags O_SYNC, O_RSYNC, O_DSYNC and O_DIRECT.
149: Add open(2) flag O_NOFOLLOW.
could be a 'behavioral change', but header files for user were also
changed in these cases.
For this change of the return value of nice(), no API bump was requested:
https://sourceware.org/pipermail/cygwin-patches/2024q4/013015.html
From the point of view of officially released versions, it would be
possibly sufficient if the first 3.7.* release will have a larger minor
API version than any 3.6.* has or will have.
This is a case where I'd like to get input from other folks who might've
made similar changes to Cygwin over its long history. I am totally OK
with removing the API bump in a v2 patch if that's the consensus opinion.
Two unrelated suggestions for a possible v2 patch:
- Add a note to winsup/cygwin/release/3.7.0
- Provide distinct 'syscall_printf()' for both functions: rename 'extern
... posix_madvise()' to e.g. `static ... posix_madvise_worker()`, add
two new 'extern ... *madvise()' functions calling it, move the
'syscall_printf()' (which then also allows to remove the 'goto out').
--
Regards,
Christian