hwittenborn / celeste

GUI file synchronization client that can sync with any cloud provider
GNU General Public License v3.0
1.23k stars 40 forks source link

Avoid unstable Rust features #156

Open freijon opened 1 year ago

freijon commented 1 year ago

Hello

We discussed this briefly on Discord, but to make it a more official request I create this issue It would be great if you could find an alternative to the unstable Rust features currently in use.

The reason is that you need Rust with unstable features enabled to build your app. This is currently impossible on Gentoo. The nightly feature (which allows unstable features) is blocked since Rust 1.72.0 for stability reasons [^1]. So we cannot offer your app as a (source built) package at the moment 😟 I don't know if it also impacts other source-driven distros. Also I think it's safer for you to rely on stable features, the risk that they are suddenly removed from Rust is much lower.

[^1]: Breaks multiple high-profile packages depending on outdated proc-macro2. See https://github.com/rust-lang/rust/issues/113152

hwittenborn commented 1 year ago

I think this is a pretty good idea - I'm pretty sure the use of nightly Rust would also block Celeste from entering into repositories such as Debian, so it's probably good to get this going.

See the linked PR for the progress on getting that done. As of the time of writing only one nightly feature needs to be removed, but removing it would make the codebase a bit messier (the feature isn't any actual functionality, just some syntax sugar that's being used) so I'm trying to figure out the best way to go about that.

hwittenborn commented 1 year ago

I'm looking into this quite a bit @freijon, but the main parts of the codebase that need to be fixed lie in https://github.com/hwittenborn/celeste/blob/develop/src/launch.rs#L1492-L2284, and the codebase is quite a mess in that spot as well. It's in quite a dire need of a rewrite, and my attempts to change much in there just left me confused and without a way to get things fixed.

The two solutions currently are:

Right now I'm planning on #2 to happen, which has already been planned for a bit now (see #143). This won't be a huge rewrite, but it will probably take a bit of time to clean up things and get everything tested properly.

Just wanted to let you know about all that's going on.

freijon commented 1 year ago

Thank you for the status update, I appreciate it. Rust has had some features in unstable state indefinitely. There is really no telling when / if they stabilize this feature. So I don't count on that happening any time soon. I guess that leaves the rewrite ;)

freijon commented 12 months ago

Any progress so far? Please let me know if I can do anything to help.