Skip to content

Does deterministic profile have threads instructions? #150

@eqrion

Description

@eqrion

From appendix/profiles.rst

The deterministic profile excludes all rules marked \exprofiles{\PROFDET}. It defines a sub-language that does not exhibit any incidental non-deterministic behaviour:

    All [:ref:`NaN <syntax-nan>`](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id22) values [:ref:`generated <aux-nans>`](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id24) by [:ref:`floating-point instructions <syntax-instr-numeric>`](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id26) are canonical and positive.

Even under this profile, the [|MEMORYGROW|](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id32) and [|TABLEGROW|](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id34) instructions technically remain [:ref:`non-deterministic <exec-memory.grow>`](https://github.com/WebAssembly/relaxed-simd/blob/main/document/core/appendix/profiles.rst#id28), in order to be able to indicate resource exhaustion.

When threads is merged in the future, is this expected to include shared memory and instructions that operate on it?

If so, then deterministic may not be the best name as that's a huge source of non-determinism. Not sure on a better name though.

If not, then what is the expected ecosystem that will be adopting the 'deterministic' profile? At least for browsers, we'd maybe have an opt-in preference for this for variants like Tor. Other than that, I had heard that having a deterministic variants of these relaxed-simd instructions could be valuable for cloud platforms but I would guess they would also like to have shared memory.

cc'ing @rossberg as I think this came from the profiles proposal originally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions