Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nightly feature usage #25

Open
dhardy opened this issue Dec 17, 2019 · 7 comments
Open

Nightly feature usage #25

dhardy opened this issue Dec 17, 2019 · 7 comments
Labels
low priority Not a near-term goal / not easily achievable

Comments

@dhardy
Copy link
Collaborator

dhardy commented Dec 17, 2019

KAS currently requires may use unstable language features when using nightly Rust.

Features enabled by the nightly feature flag (optional but recommended):

  • proc_macro_diagnostic — used in kas-macros for better diagnostics
  • min_specialization — used by the Label widget to select appropriate draw routine
  • specialisation: used by TryFormat utility to use Debug impl where available on generic type
  • doc_cfg — enables annotation of feature flags in documentation
  • generic_associated_types — used in several places where associated types require a lifetime parameter, and desired to use in several more places. unsafe and boxing/cloning used as workarounds. This feature is now stable!

Features not used but desired:

@dhardy
Copy link
Collaborator Author

dhardy commented Dec 17, 2019

new_uninit is now behind a nightly feature gate.

@dhardy dhardy added the low priority Not a near-term goal / not easily achievable label Jan 29, 2020
@dhardy
Copy link
Collaborator Author

dhardy commented Feb 18, 2020

Since #57 we depend on two more nightly features:

@dhardy
Copy link
Collaborator Author

dhardy commented May 4, 2020

#101 enables compatibility with stable Rust 🎉

This issue should remain open to track usage of nightly features.

@dhardy dhardy changed the title Target: stable Rust Nightly feature usage May 4, 2020
@dhardy
Copy link
Collaborator Author

dhardy commented Jul 17, 2020

proc_macro_hygiene was stabilised in Rust 1.45.0.

@dhardy
Copy link
Collaborator Author

dhardy commented Oct 31, 2020

Updated: we now use min_specialization and no longer use new_uninit.

@dhardy
Copy link
Collaborator Author

dhardy commented Jul 16, 2022

Updated:

  • const_generics is stable now
  • (full) specialization is used, but only for a utility
  • unsize is no longer used

@dhardy
Copy link
Collaborator Author

dhardy commented Dec 14, 2022

Data models could be simplified with return position impl trait in traits.

Edit: type_alias_impl_trait doesn't allow simplification of the traits, but it does allow simplified impls:

type RowKeyIter<'b> = impl Iterator<Item = u8>;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
low priority Not a near-term goal / not easily achievable
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant