Date: Fri, 26 Sep 2025 10:57:24 +0300
On Fri, 26 Sept 2025 at 10:47, Timur Doumler <cpp_at_[hidden]> wrote:
>
> Hi Ville,
>
> Oh, I see where the misunderstanding came from. Thanks for explaining.
>
> Yes, what you describe matches closely how Iain described his prototype to me. And yes, this (link-time or runtime selection of semantic where YOU control the compilation) does not require new technology.
>
> What does require new technology is to be able to tell, from an already compiled binary (potentially from a 3rd party) with a fixed semantic baked in at compile time, which semantic was used in that binary, and then do things like Harald suggested (reject the binary if it doesn't have the semantic you want) or more generally, make a deterministic choice between different versions of the same function compiled with different baked-in semantics, at link time.
That doesn't require "new technology" either, jeesh. We could add a
library symbol that reveals the evaluation semantic chosen for that
library (which is
no different from having a version symbol in a library), or we could
generate forcibly-non-inlined function calls that you can scan for in
the library.
Then you can just grep the result of nm to find out the contract
evaluation semantic for a particular library binary, and I don't think
that counts as "new technology".
> I am sorry if this distinction wasn't clear. I will make sure to make it very clear in the upcoming paper.
>
> Are we good now?
When this committee's members actually prototype their ideas and
gather real implementation and deployment experience for their grand
ideas, yes.
>
> Hi Ville,
>
> Oh, I see where the misunderstanding came from. Thanks for explaining.
>
> Yes, what you describe matches closely how Iain described his prototype to me. And yes, this (link-time or runtime selection of semantic where YOU control the compilation) does not require new technology.
>
> What does require new technology is to be able to tell, from an already compiled binary (potentially from a 3rd party) with a fixed semantic baked in at compile time, which semantic was used in that binary, and then do things like Harald suggested (reject the binary if it doesn't have the semantic you want) or more generally, make a deterministic choice between different versions of the same function compiled with different baked-in semantics, at link time.
That doesn't require "new technology" either, jeesh. We could add a
library symbol that reveals the evaluation semantic chosen for that
library (which is
no different from having a version symbol in a library), or we could
generate forcibly-non-inlined function calls that you can scan for in
the library.
Then you can just grep the result of nm to find out the contract
evaluation semantic for a particular library binary, and I don't think
that counts as "new technology".
> I am sorry if this distinction wasn't clear. I will make sure to make it very clear in the upcoming paper.
>
> Are we good now?
When this committee's members actually prototype their ideas and
gather real implementation and deployment experience for their grand
ideas, yes.
Received on 2025-09-26 07:57:38