On 2/20/26 18:20, Pali Rohár wrote:
On Friday 20 February 2026 14:22:31 Kirill Makurin wrote:
Jacek Caban <[email protected]> wrote:
Sure, but that is to be expected with older OS versions. They typically
provide fewer functions than newer versions, and if you want your
application to run on them, you need to avoid using APIs that are not
available there. Adding a few random wrappers to mingw-w64 will not
change that.
I don't see a problem in providing wrappers for functions missing in earlier 
versions of msvcrt.dll. One of usages for msvcrt.dll is to compile code which 
can run on pre-XP systems, where it is installed as a system library. When you 
configuring such a package with autoconf-like checks, you'll run those tests 
against msvcrt.dll on the build system, which is likely to be Windows 10/11, 
which has many functions not available in ancient versions of msvcrt.dll. 
You'll build the project and it'll run on the build system, but it may fail to 
load on old system with older versions of msvcrt.dll. Having such wrappers 
fixes this issue, making user's life easier.

These wrappers for time functions are rather simple and I see no harm in having 
them, obviously except increased binary size, which is unfortunate. There are 
other cases such as `_locale_t` functions, which are simple stubs in case if 
they're not available in system's msvcrt.dll, and I don't really like having 
them.

- Kirill Makurin
Hello, in past I have provided missing time functions for more builds
and these my changes are the last step for time functions to be
available in all builds. So with these changes, any time function
(32-bit or 64-bit) can be called from any build (system msvcrt,
versioned msvcr* or ucrt) and will be always available on any system.
So these changes just complete time functions availability for Windows XP.
If application want to target older system then it does not have to care
about time functions availability and use complicate ifdef-else-endif
conditions and handle different architectures and DLL architectures.


What’s so special about 32-bit time functions? There are thousands of Windows 11 functions missing on XP and we're obviously not aiming to implement all of them.


For UCRT these functions are already available (even on XP), they were
missing only in msvcrt. I understand that they can increase binary size,
but the purpose of using msvcrt is for compatibility with older systems
or to avoiding installing redistributable package.


It’s not just the binary size; it’s also the codebase complexity. Adding more and more of these conditions makes those files increasingly harder to work with. Adding a few macros is easy, but from that point on, everyone reading the source needs to understand them. It’s fine if there’s a real benefit to such complications, but seriously… the benefit seems theoretical to me, while the increase in complexity is real.


Jacek



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to