@itaiferber @stephencelis I discussed the issue of immutable properties with default values extensively with @Chris_Lattner3 while working on the flexible memberwise initialization proposal.
There are many good reasons to want the semantics to be such that the default value is only used when an initializer does not explicitly provide a value. The value of such properties would still be immutable but they may have more than one path to initialization and therefore may take on different values in different instances of the type. It sounds to me like this is the model @stephencelis had in mind when posting to this thread. His post is a great example of why we may wish to reconsider the semantics.
My proposal was deferred but the core team indicated willingness to at least consider modifying the semantics of immutable properties. See common feedback and points in the rationale for the core team's decision. If anyone is interested in the discussion between Chris and I, see the draft thread. There was also extensive discussion in the review thread.
The good news is that aside from the initializers synthesized by Codable
I don't think there would be any source breakage involved in such a change. We would simply be making code that is not valid today valid in the future. I would really love to see this topic revisited. Perhaps now is the time.