Re: make-target-2-load.lisp: add :ucrt to public features

Christophe Rhodes via Sbcl-devel <[email protected]> Fri, 24 Apr 2026 17:17:58 +0100
Newsgroups gmane.lisp.steel-bank.devel
Message-ID <[email protected]>
Masatoshi SANO <[email protected]> writes:

> :ucrt is detected at build time (via tools-for-build/ucrt-test.c) and
> used as a reader conditional in several places, but it is missing from
> the public-features whitelist in make-target-2-load.lisp and therefore
> stripped from *features* before the core is saved.
>
> This means the feature does not work as intended when it matters most:
> contribs are built using the saved core, so #+ucrt/#-ucrt conditions
> in contrib code (currently sb-posix/constants.lisp and
> sb-posix/interface.lisp) are never taken.

I pushed a change to make :ucrt public, but as Stas points out contribs
are built with *features* bound to -- effectively --
  `(:sb-building-contrib ,@*features* ,@sb-impl::+internal-features)
(see the head of DEFUN PERFORM in contrib/make-contrib.lisp)

Did you notice an issue using sb-posix:stat on a ucrt system?  Are there
any other uses where you need it?

Thanks,

Christophe