-
Notifications
You must be signed in to change notification settings - Fork 22
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
Switch to stable Rust toolchain #592
Comments
The extern types might be all gone now after we deduplicated everything. At least the |
I've been meaning to fix all the atomic intrinsics to use atomic types soon; that'll be part of making the core data types safe. |
For the variadics, I'm not sure we can fully get rid of those because there are callbacks the user can set and we need to keep that ABI. Eventually we can put it behind a legacy C API feature flag, as we shouldn't need it for pure Rust usage. |
Could we do the same thing as bindgen and make the type unconstructable? We don't care what it's purported layout is, only that we can't construct it.
Do we have an issue on this? I was just looking at that, will simplify some things nicely.
Eek ok, yeah. This whole issue is super low priority, I just wanted to create an issue on it while I was thinking about it. |
I'm not sure, but the binaries I don't think are very important compared to the
No, I don't think so. Feel free to open one.
👍 |
Exactly. If the Rust binaries give us any trouble, I think we can delete them and build the C sources with meson. I have a patch somewhere to do that already – that's one way to test that we remain C compatible. |
I'm not sure if we should fully delete them in case someone finds them useful for a rust version of them, but I'd be in favor of testing with the C versions of them (though it does complicate the build system, unfortunately). |
This removes #![feature(extern_types)] just for the `rav1d` library, which is what really matters (unlike the binaries). All types have been deduplicated now, so we don't need this anymore. Fixes part of #592.
* Fixes part of #592 Feature no longer needed now that we use stable SIMD APIs.
Is the minimum rust version documented anywhere in the project? I could not get rav1d main to compile with 1.76.0-nightly on aarch64. |
Hi! Yes, we have our nightly pinned in We can remove the last nightly feature, but it wasn't a priority, so we haven't done it quite yet. Once we do, we'll switch to stable. |
I filed issue #773 with the exact build command. Just a simple |
With #620, we'll be able to build
For It would be nice if we can get |
Remove by replacing the remaining use with a `mem::transmute` from a non-variadic `fn` to a variadic `fn`, as we don't actually use the variadic args, we just need its type. * Fixes part of #592.
I'm gonna do a quick fix up on the tools so we can be on stable. |
I'm not sure it's so simple to get rid of |
Ideally rav1d should build with a stable toolchain at some point. It looks like we ended up with a few nightly-only features from the initial c2rust transpile that we should eventually remove. I currently find three nightly-only features that we use:
core_intrinsics
: Replace remaining C atomic intrinsics with native Rust atomics #688,#![feature(core_intrinsics)]
: Remove as it's unused #745c_variadic
:#![feature(c_variadic)]
: Remove for therav1d
library #620extern_types
:#![feature(extern_types)]
: Remove for therav1d
library #593The intrinsics we can take care of by using stabilized Rust atomic types, the variadic usage appears to just be
vfprintf
which would be easy to remove, and for extern types we can probably do opaque pointers in another way.The text was updated successfully, but these errors were encountered: