-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: Rename int/uint
to something better
#544
Conversation
The initial commit for yet another `int/uint` renaming RFC.
+1! I think this is a nice compromise. Familiarity is a double-edged sword: we want the names to be familiar enough so that peoples' initial reaction to them isn't "what is this I don't even", but at the same time we want to avoid giving an impression ("this is the type you should use most of the time") that is misleading and harmful, as I might like the names |
While I agree that leaving int & uint as they currently are is detrimental, the “x” suffix associates with “eXtension” to me and I feel that a better suffix can be found and agreed upon. |
+1 when I first saw the names, I didn't know what they meant--that's exactly what we want! |
+1 for renaming-away 'int' and 'uint' to something else. This seems as good an approach as any. :-) |
I agree with renaming in general and was disappointed to read the post about deciding not to, especially given the flimsy rationale. No matter what our best intentions will be, no matter how many times we spam people about the fact that they should really only use And it'll be much harder if not impossible to make this change post 1.0. |
I'm fine with the current int/uint. Although if this lands please consider intz uintz as the z reminds of size and x dont't carry any meaning. |
|
Uh, that's exactly what appending an
The
This was not given as the reason for rejecting it... and it wouldn't make sense anyway. The existing integer types use The reason we were given is that it's too late to make a breaking change like this, despite the fact that more significant breaking changes are being made for things they want to change. |
This proposal doesn't make the definition of these types any clearer from the name. The rationale for the rejection of the previous far superior proposal was that it's too late in the game to make a change like this. Nothing has changed about the release cycle, and making the same proposal with the focus on far less sensible names is not going to get anywhere. The last proposal was fairly open about the specific names and the rejection was really of renaming these types at all. The previous proposals to change the name were ignored by the core developers for a long time and then rejected with the logic being that it is too late to make a breaking change like this. There are still far bigger breaking changes in syntax and even semantics occurring at this point so I find the reasoning very difficult to follow. A renaming like this can be done with a simple guided search and replace, which is far easier to cope with than most other breaking changes. This was brought forwards as an issue by many in the community as early as October 2013 (rust-lang/rust#9940). It was brought up again in several other issues and at least one other RFC (#161) before I suggested starting over with a very clear rationale and plan. There was overwhelming consensus for the last RFC and it was still rejected. Anyway, I'm strongly against this RFC and I expect that many of the people who supported the last one are in the same boat. The decision on it was clearly made without considering the discussion that occurred and applying common sense. It's pretty damning that no one who was there pointed out how easy it is to do a search-and-replace compared to the difficult of coping with something overflow becoming ill-defined instead of wrapping. I wouldn't be surprised if this RFC was accepted simply because the core team is not a rational actor. I think it's far more likely that the core team members simply disliked this but couldn't justify it, and came up with some crappy talking points to tell us after the fact. I don't think they're completely incompetent, but it's clear that they're not above endless lying and manipulation based on their past actions. |
+1 for changing the name to anything but |
The post gives at least two other concrete reasons just below the single sentence discussing the break-the-world reason. (For some unfortunate reason which I don't understand, the entire community discourse since the posting of that post has basically completely avoided mentioning those two at all.) |
Ok, adressing the two ither reasons given:
|
I'm not seeing any rationale there.
This isn't a reason against renaming it. It's claiming that documentation changes can be equally effective in helping people to select the correct type. However, it's not denying the fact that documentation changes combined with renaming the types would be more effective than either one, and no one was proposing that we leave the documentation alone. It's nothing more than a logical fallacy. No one was arguing that the renaming should occur instead of changing the documentation...
This part raises the sensible argument against |
The community clearly isn't interested in the FUD the core developers choose to spread over and over. The fact that both the broad consensus and the in-depth reasoning in the discussions is ignored is further proof that a community-led fork of the project is necessary. The problem is not the "entire community", it's the small group of seemingly incompetent people who think they're so much better. |
Ignoring the community concern about this for over a year and then closing the issue with "too late" as the main argument against it is exactly the kind of manipulative politics that the core developers are so fond of. It's unbelievable that this issue was completely disregarded for that long. Stability attributes and the planned 1.0 release have been abused countless times as a tool to land sweeping changes without consensus and justify all kinds of unjustifiable decisions. Seeing it used here is not a surprise. |
Of course it is highly debatable... but there has been no debate about it until now. In any case, this is a squishy opinion-based topic with trade-offs and compromise, it's not some sort of mathematical proof: the best balance of pros and cons may involve a few "work-arounds".
It is not a logical fallacy because everything is a compromise: there's pros and cons to changing the name. There's absolutely no reason for the affect of documentation to be the same for It seems rather likely to me that the marginal effect of "improve the documentation" on
Both changes were actually implemented as part of the decision making process, and you can see the rendered documentation via the links in the post. (This is again something I don't understand: those links have apparently been clicked fewer than 20 times each, but 32 people have piled on to the discussion on discourse alone.) It was found that |
-1. int reads much better than intx or imem. |
@thestinger The goal is only to make people think twice before they reflexively write Reading between the lines, the reason the other suggested names were deemed to pose a "barrier to entry for newcomers" and a "cost of ... unfamiliarity" is almost surely because it's still not obvious enough that they are primitive integer types. (Perhaps @huonw can confirm or deny.) Yes, the consistent |
If there were cons, you would be able to mention them.
It has nothing to do with compromise. Improving the documentation about the choice of integers was already planned and is not relevant to with whether they should be renamed. It is a textbook logical fallacy because it's nothing more than an attempt to misdirect from the issue by arguing against the strawman that we can't improve the situation without renaming the types. I laughed out loud at your bullshit rhetoric here: "It is not a logical fallacy because everything is a compromise". You chose "compromise" as a good talking point and then found a totally irrelevant place to jam it in.
Oh, so you're just going to keep using this strawman argument. Improving the documentation has always been planned, and was an assumption throughout the discussion on the issue. The proposal to rename it is aimed at improving the ergonomics and learning curve beyond what you can do with documentation changes. Pointing at documentation as the only answer is an admission that this part of the language is poorly designed. Naming needs to be self-explanatory because people move between many languages and aren't going to read all of the guides or remember details like this. It's not an argument for or against this but rather a separate topic entirely...
I suggest reading the discussion here if you "don't understand" it. The fact that it was implemented doesn't make your logical fallacies and rhetoric any more valid. If you think there are arguments against renaming it, then you should present them instead of continuing to argue from authority and tear down arguments that no one was using. As usual, a core team member is being very manipulative and is dismissing the community consensus as simply the confusion of people who haven't read the post. It's dishonest, passive aggressive bullshit and you should expect to be called out on it when you repeatedly try to do this. |
A big +1, for |
@glaebhoerl: Yes, I get it. It's syntactic salt to force people to do a double take and keep in mind what the types are for. I don't think it makes any sense to design a language that way. There are plenty of self-explanatory names that fit with the existing I think nearly everyone would agree that The first name that was proposed was |
@glaebhoerl: Opening the same RFC in an inferior form is not going to get anywhere... The change that's necessary is replacing the people in charge of the project with ones who aren't so in love with making the decisions behind closed doors without taking into account logic and community consensus. The only conversations that matter happen in a venue where community members have no chance to correct the seemingly endless misconceptions and misunderstandings of the core team. They've fought on the wrong side of almost all of the major language design issues. It took ages for obvious things like external iterators, unboxed closures and sane io/concurrency to be reluctantly accepted. There are a lot of other design issues throughout the language and libraries that aren't going to be addressed before they proclaim 1.0. |
I had a long response written, but I don't think it's worth it if I'm going to get accused of being a bad person anyway.
I was not being trying to be manipulative or dismiss anything. Maybe I'm fundamentally wrong (I don't think I am, but it's possible), but I'm not trying to lie or generally push the conversation downhill/away. It's extremely saddening that malice is being assumed. |
@huonw While I won't necessarily attribute it to malice, I still think that @thestinger's point holds – I also stopped when I read that sentence that the "documentation should be improved" – this sentence is no reason for not changing it, it's just that it might not be as bad. That the other names also have drawbacks forgets to mention that (Random example from the compiler: Why is the left shift implemented by amounts of |
I don't think there's malice. I think the core team genuinely thinks that being manipulative is a good way to "manage" the problem of having a community. |
We should just use the full type name for the suffix, since that's what the other numeric types do. |
agreed with @ben0x539 |
@aturon Big thanks to you and the rest of the core team for a reasonable decision here. Keep up the awesome work! |
I'm really happy with this decision! Thanks for reconsidering after your original decision. I'd prefer for the suffixes to be the same as the type names. That's consistent with the rest of the numeric types, and since the suffixes can be inferred most of the time, the 3 extra characters ( |
@aturon, I suggest that we try
OTOH, we can treat P.S. I don't have access to an internet-enabled computer until tonight (local time of course), so sorry about not being able to update the RFC now. (My understanding is that we wish to merge this ASAP.) |
@CloudiDust we already do treat |
(In particular, all literal suffixes are reserved, and whitespace is required around literals to separate them from other tokens) |
@cmr, But my main concern is that |
@aturon, done. |
Thanks @CloudiDust for your tireless effort! I'm going to merge this RFC. |
Merged. Tracking issue. |
An after-note for register-sized types. As @thestinger and others pointed out, they are not synonymous with |
#573 has been filed to discuss the suffixes. That RFC proposes |
This RFC proposes that we rename the pointer-sized integer types
int/uint
, so as to avoid misconceptions and misuses.This is yet another attempt to rename
int/uint
. See A tale of two’s complement for reasons of the rejection of the previous proposal.After community disscussions, this RFC has undergone several major revisions and the originally proposed
intx/uintx
have lost favour.The winners are:
isize/usize
!Rendered View.