Stream: t-compiler

Topic: Internal stability checking for libstd/libcore


Vadim Petrochenkov (Jun 21 2019 at 09:50, on Zulip):

IIRC, @RalfJ wanted libcore to require #![feature(my_feature)] when a library feature my_feature is used even if it's defined in libcore itself (that would be helpful for things like eliminating mem::uninitialized or something like that).

Vadim Petrochenkov (Jun 21 2019 at 09:53, on Zulip):

That sounded very reasonable and I tried it today.
The switch itself is trivial, but doing that naively gives more noise than signal.
The two primary problems are:
- Derives on unstable types and impls for unstable types
- Imports/reexports of unstable names

Vadim Petrochenkov (Jun 21 2019 at 09:55, on Zulip):

So, this needs some notion of "really used" excluding impls and imports, with feature gates being required only for really used entities.

Vadim Petrochenkov (Jun 21 2019 at 09:57, on Zulip):

The current list of libcore's own features used by libcore (noisy variant):

#![feature(c_variadic)]
#![feature(coerce_unsized)]
#![feature(core_intrinsics)]
#![feature(core_panic)]
#![feature(core_private_bignum)]
#![feature(core_private_diy_float)]
#![feature(dec2flt)]
#![feature(dispatch_from_dyn)]
#![feature(duration_float)]
#![feature(exact_size_is_empty)]
#![feature(fixed_size_array)]
#![feature(flt2dec)]
#![feature(fmt_internals)]
#![feature(fn_traits)]
#![feature(generator_trait)]
#![feature(hashmap_internals)]
#![feature(int_error_matching)]
#![feature(panic_internals)]
#![feature(pattern)]
#![feature(ptr_internals)]
#![feature(raw)]
#![feature(receiver_trait)]
#![feature(renamed_spin_loop)]
#![feature(slice_from_raw_parts)]
#![feature(slice_index_methods)]
#![feature(slice_internals)]
#![feature(stdimd_internal)]
#![feature(stdsimd)]
#![feature(step_trait)]
#![feature(str_internals)]
#![feature(trusted_len)]
#![feature(try_trait)]
#![feature(unicode_internals)]
#![feature(unicode_version)]
#![feature(unsize)]
Last update: Nov 20 2019 at 01:20UTC