Can Orleans grains within a single thread share state without message passing via the interface?
Grains are not supposed to share state directly and are expected to only use message passing. But the runtime, being just a .NET library, cannot enforce this rule. So it's merely a convention, which is trivial to violate if necessary. For example, for sharing an immutable piece of state within a silo.
Thanks for the clear reply. I also read your paper. Immutable should be adequate for avoiding the serialization tax in hybrid applications that need 'symmetry breaking' of location transparency.