Today, this is how you describe an entry point in WGSL:
void foo() {
...
}
... perhaps hundreds of lines later ...
entry_point compute as MyComputeEntryPoint = foo
Just like how decorations are separate statements in SPIR-V, but were moved onto the variable declaration they are decorating in WGSL, the same treatment should be done on entry points. The benefit is that related concepts should be near each other in the source code.
Here's another way to do it:
[[expose_as = "MyComputeEntryPoint"]]
compute fn foo() -> void {
...
}
This wouldn't actually be less expressive, it would just keep related concepts together.