Norbi
09/09/2024, 1:47 PMOliver.O
09/19/2024, 10:21 AMWhy is it necessary to have a "transition period" when none of them are supported?As stated in the above YT issue:
Note that this part is most likely inevitable as the implementation of context parameters requires quite extensive refactoring in the compiler, and there are significant chances that we won't have either context receivers or context parameters at that time.
[There is a slight chance that we'll have an early prototype of context parameters, but we are not counting on that.]"Given this description in the original announcement of Kotlin 1.6.20-M1 (emphasis mine):
Please note that the implementation is a prototype:
โข Withenabled, the compiler will produce pre-release binaries that cannot be used in production code.-Xcontext-receivers
โข The IDE support for context receivers is now minimal.
Try the feature in your toy projects and share your thoughts and experience with us in this YouTrack issue.Experimentation means trying something out and learning from it. The result may be that the design changes or a feature is dropped completely. This may happen at any time, because making stability guarantees for an experiment would defeat the whole purpose.
Norbi
09/19/2024, 5:48 PMrequires quite extensive refactoring in the compilerdoes not mean that it would be impossible to provide a practical migration path for those who have really devoted time to try out the feature, report bugs, and experiment with it using non-trivial, non-dummy, non-helloworld-level code. It does not explain for me at all why it is necessary to release an intermediate version without any of the two features. I feel it as a non-practical decision from someone who is very removed from everyday software development. Especially because this feature has been part of the language since multiple major versions. Of course I can do nothing, I will have to adapt somehow. And of course I will never invest serious time and resources into trying out experimental features in the future, even if they will have been part of the language for a long time.
ephemient
09/19/2024, 5:51 PMNorbi
09/19/2024, 6:03 PMcertainly break context receiversI don't say that I don't understand that "implementing context parameters will almost certainly break context receivers as they're in the same part of the compiler". I'm sure that these two are conflicting features, and it is a major work to implement these. My only problem is: why release the intermediate version? The current plan means the following release schedule: 1. release x: has context receivers 2. release y: context receivers removed 3. release z: context parameters added Why not consider the following, i.e. not releasing the intermediate version: 1. release x: has context receivers 2. <not released>: context receivers removed 3. release y: context parameters added But as I see that probably nobody else sees this a problem, so I will stop whining and get back to work. Sorry for wasting your time.
Youssef Shoaib [MOD]
09/19/2024, 6:08 PMephemient
09/19/2024, 6:10 PM