Paul Smith wrote, on 08 Sep 2021: > > On Wed, 2021-09-08 at 09:29 +0100, Geoff Clare via austin-group-l at > The Open Group wrote: > > > > But here we're inventing an entirely new operator that NO VERSION > > > of make currently implements (yes, I understand that BSD make has a > > > different operator that works in this same way but that's not the > > > same thing: no existing makefile today contains the :::= operator > > > so every makefile that wants to use it will have to be changed, and > > > in a way which is not backward-compatible with older versions of > > > make). > > > > At the time that we accepted a proposal to add ::= no version of make > > implemented it. So your argument applies equally to that addition. > > No, that's not right. In issue 7 there is no way to have any sort of > immediate expansion in standard make. That's clearly something that > users wanted (for the record note that I was not the one who wanted > this standardized: I didn't propose it or push for it in any way; it > was users who wanted this). > > The ::= operator added immediate expansion. That's certainly a useful > addition, and worthy of creating a new operator for.
You are showing here that you misunderstand the POSIX standard development process. The ::= operator has NOT been "added" to the standard. There was a proposal to add it, which was accepted. This status can change, and has changed for some proposed additions, sometimes in radical ways (for example bug 267 which was an accepted proposal in 2010 but is currently open and, if it makes it into Issue 8 at all, will be quite different when it is re-resolved). Now that the ::= addition is in an Issue 8 draft, that perhaps makes it less likely that it will be removed or radically changed, but that is still a possibility. The statuses of ::= and :::= are currently exactly identical in this regard. > > Just because the proposal for ::= was applied to an earlier Issue 8 > > draft than :::= doesn't mean it has any claim to be treated > > differently as part of the overall changes from Issue 7 to Issue 8. > > If we wanted to have that discussion we should have had it back before > ::= was accepted. If we had known then what we know now, we would certainly have had that discussion. > At this point, ::= DOES have a claim to be treated differently because > there IS ample implementation precedent for it: as a result of the > previous decision back in 2011, GNU make has been providing the ::= > operator now for almost 8 years (released in GNU make 4.0 in October > 2013). It can't be changed now. You took a risk when you added ::= to gmake while it was only an accepted proposal, not part of an approved revision to the standard. And gmake users who make use of it in the expectation that is will be required by POSIX are taking a similar risk. > We could remove ::= from the standard No we couldn't, because it is NOT (yet) in the standard. > and instead add :::= but that > seems useless to me: there are real makefiles out there using ::= which > would be made NON-PORTABLE by removing ::= from the standard. They are already non-portable, because ::= is not in the standard. -- Geoff Clare <g.cl...@opengroup.org> The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England