Start a GoodDefaults file collecting recommended option settings.#19117
Start a GoodDefaults file collecting recommended option settings.#19117Zimmi48 wants to merge 1 commit intorocq-prover:masterfrom
Conversation
|
Thanks for opening this! I would say the relevant proposals are
For sure on the list should be the recommended config for type classes but I don't know it. |
|
If anyone disagrees with the proposed options, please voice your opinion. BTW, @TheoWinterhalter, you may be able to push changes directly to this branch, in particular if you see the "Add more commits by pushing to the good-defaults branch on Zimmi48/coq." message above the CI status section. |
|
I'm a bit wary of the Keyed Unification option, it's probably wildly undertested and thus very buggy. |
|
We know primitive projections are pretty buggy too. |
|
OK. I advise that we avoid any controversial or insufficiently tested option. We could make a separate file |
|
I guess we should look through the deprecated warnings to see if any correspond to options that may be flipped. |
|
But if we do that we need to version this file per release... |
That's already the case here. |
|
Versioning it is the whole point in fact. If we didn't version we may as well flip the global defaults. |
|
Thanks @Zimmi48, but I actually don't want to push things, I'm merely listing options that might be worth adding, but I'm myself unsure whether they should, and I think it should be debated. |
|
Since this is a draft, let's remove the milestone. |
|
There was a good reason for the milestone: the file has a version number. If it is not merged in this version, it should be renamed. |
|
Then rename to 8.21 and put in 8.21+rc1 milestone. |
|
Why would I do that, exactly? The documented branching date for 8.20 is 2024-06-17. So if this PR is ready to merge before that date, it can still go in 8.20, no? |
|
Sure |
|
Coming back to this so it doesn't die. I think we would need have a flag to change default hint mode for typeclasses. Currently I think it's |
|
The "needs: rebase" label was set more than 30 days ago. If the PR is not rebased in 30 days, it will be automatically closed. |
|
This PR was not rebased after 30 days despite the warning, it is now closed. |
|
I see #19473 is relevant here. |
7cd54f6 to
960c44d
Compare
| (** These three affect pepole that set [Implicit Arguments]. *) | ||
|
|
||
| #[ export ] Set Strongly Strict Implicit. | ||
| #[ export ] Set Maximal Implicit Insertion. |
There was a problem hiding this comment.
@anton-trunov seemed to defend the current default in his answer on Stack Overflow back in 2016: https://stackoverflow.com/questions/37211899/purpose-of-maximal-vs-non-maximal-implicit-arguments
That being said, I don't think the issue of having to add @ when you want to refer to a non-partially-applied constant is such a pain.
And on the other hand, the same @anton-trunov supported in 2021 the switch to maximally implicit arguments for lists (which didn't land) in #13069.
|
Just a thought: if those are really good defaults, they should probably be actual defaults. Then the compat file can be used (and recommended in the changelog entry) to retrieve the previous defaults and help transitioning. |
OK, but who does the work of porting external projects to these new defaults? (Although, of course, porting could also mean resetting the flags to their old values in the affected projects.) |
|
Nothing specific to this change compared to any other. Porting is obviously the responsibility of authors. They can simply use the compat file (with option |
|
I'm not against having them as actual defaults yes. We just thought this experiment had more chances to succeed since we're not messing with anyone. |
|
I fear, this also means more chances to just remained ignored or simply unknown :( |
|
Sure, but this is a better middle ground to doing nothing, which has been what has been done for years for many of these defaults. There were even attempts at changing some of these defaults, which failed (e.g., #17811). |
|
We have a better CI contract now, maybe that would help? |
318aa7f to
1fe2393
Compare
1fe2393 to
fd8ac57
Compare
|
I would also vouch to set the TC database opaque by default, see #20786. |
Co-authored-by: Théo Winterhalter <theo.winterhalter@inria.fr> Follow-up of Zulip discussion at: https://coq.zulipchat.com/#narrow/stream/237977-Coq-users/topic/Better.20default.20options Update theories/Corelib/Compat/GoodDefaults_2025.v Co-authored-by: Théo Zimmermann <theo.zimmermann@telecom-paris.fr>
fd8ac57 to
9eca531
Compare
|
Done. |
|
This should probably get merged. Then, we will have until the 9.2 release to nitpick the settings / improve the Good Defaults 2025 file before it is frozen forever. |
|
Is there anything we can do to have this PR accepted? |
|
@TheoWinterhalter concerning you ask to discuss this at Rocq Call
|
|
I'm not sure passing the Stdlib with it is mandatory since those are breaking changes, hence why they're not already default I gather. Also, I'm waiting for the Rocq call page of next week to be created to add the topic. |
|
I think Hint Constants Opaque may not be a good idea because it will override any transparency hints from code before the import. |
I agree, I am just saying it is a good test to see what would have to change, for instance, I was not expecting the example above to fail, and I guess it probably should not ? |
|
I do think we should hold any potential set of recommended settings to at least the written standard for changing the defaults -- having tried it on a few representative developments and still endorsing it. I have prematurely adopted "recommended" settings before and it was a colossal waste of time chasing down new issues they caused/surfaced (and now that file is almost empty). In that spirit, I worry that the current Having recently learned of More personally, I find |

Follow-up of Zulip discussion at: https://coq.zulipchat.com/#narrow/stream/237977-Coq-users/topic/Better.20default.20options
Let's keep the momentum on this good idea. I've started populating this file with an easy one. What else should go in there and is not controversial? For instance, I saw
Set Universe Polymorphism.being suggested in https://coq.zulipchat.com/#narrow/stream/237977-Coq-users/topic/Your.20favorite.20secret.20Coq.20option.3F, but is it already recommended for all users?