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

Rust Language Support #78

Open
9 of 18 tasks
XAMPPRocky opened this issue Oct 21, 2020 · 8 comments
Open
9 of 18 tasks

Rust Language Support #78

XAMPPRocky opened this issue Oct 21, 2020 · 8 comments
Labels
t: tracking issue An issue tracking the progress of a specific feature or change.

Comments

@XAMPPRocky
Copy link
Member

XAMPPRocky commented Oct 21, 2020

This is a tracking issue for adding support for using Rust language features and the core library with rustc_codegen_spirv.

Language Support

Compiler & Library Support

Features that don't work

About Tracking Issues

Tracking issues are meant for providing status updates on the progress of a feature, it's not meant for bug reports or discussions on a feature. Please instead file a new issue or join the #rust-gpu channel on Discord.

@XAMPPRocky XAMPPRocky added the t: tracking issue An issue tracking the progress of a specific feature or change. label Oct 21, 2020
@XAMPPRocky XAMPPRocky pinned this issue Nov 18, 2020
@jarble

This comment has been minimized.

@XAMPPRocky

This comment has been minimized.

@eddyb
Copy link
Contributor

eddyb commented Mar 22, 2021

Should we update README.md and/or docs to indicate that e.g. for loops are now supported?

@mitchmindtree
Copy link

mitchmindtree commented Jun 10, 2021

Hi folks! Is it possible that rust-gpu may one day support trait objects? I'm currently implementing "ray tracing in one weekend" with rust-gpu and there are a couple cases like Hittable and Material where a trait allows for abstracting them nicely and a trait object would allow to work with collections of each with a little more ease. Being able to have world be a [&dyn Hittable; N] e.g. would allow for easily adding new objects to the world. I think support for ADTs would get us a lot of these same benefits where we specify different implementations under variants of an enum, though would lack the benefit of adding new variants in downstream crates.

I realise what we can achieve when targeting SPIR-V is far more limited and that it might not be possible to achieve use of &dyn Trait, though my understanding of these limitations is limited, so just thought I'd ask!

(edit: accidentally tapped "Comment" before finishing!)

@khyperia
Copy link
Contributor

khyperia commented Jun 10, 2021

Hi folks! Is it possible that rust-gpu may one day support trait objects?

I think at some point in the future, it may - however, we'd first have to get through a SPIR-V spec change to be able to support dynamic dispatch. The Slang folks are considering doing this (we've discussed a bit about what rust-gpu's needs would be if a SPIR-V feature for dynamic dispatch was proposed), but it's likely a ways off (if it happens at all), and then even further beyond that to let drivers implement it, and beyond that rust-gpu can start implementing it. So, I wouldn't hold your breath.

(impl Trait and friends all work 100% today, but yeah, unfortunately I don't think that's what you're asking)

@tema3210
Copy link

What about plain function pointers then? AFAIK spirv doesn't support these at all.

@khyperia
Copy link
Contributor

khyperia commented Jan 3, 2022

What about plain function pointers then? AFAIK spirv doesn't support these at all.

Yep, SPIR-V doesn't support them at all right now. With the Slang folks considering pushing through an implementation for dynamic dispatch in SPIR-V, plain function pointers may be able to piggyback on the same infrastructure as well, we'll see (probably more likely than not some hack would make it work). However, we haven't heard any updates in a while (and our unrelated requests for changes/clarifications to the SPIR-V spec have not made much progress at all), so I wouldn't hold your breath.

@pyranota
Copy link

pyranota commented Jan 5, 2024

Hey!
Is lifetimes supported in enums?

pub enum MyEnum<'a> {
    A {
        tmp: &'a Foo,
    },
    B {},
}

Im not sure if its Data-less enums or Algebraic data types

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
t: tracking issue An issue tracking the progress of a specific feature or change.
Projects
None yet
Development

No branches or pull requests

7 participants