Removing _1 from the global namespace (again)
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace. This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary. So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
On Sat, Dec 14, 2013 at 5:56 PM, Peter Dimov
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
I believe the changes, except for switching to Git, should be kept as small as possible. /$
On 12/14/2013 11:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
I am all for it but maybe that's also because I am not affected by the change.
On Sat, Dec 14, 2013 at 8:56 PM, Peter Dimov
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
So far I had no problems with the global placeholders and used them extensively in my projects. For sure this will cause a lot of headache for me. I'd prefer not making this change, unless there is a compelling reason for it.
On 12/14/2013 12:14 PM, Andrey Semashev wrote:
On Sat, Dec 14, 2013 at 8:56 PM, Peter Dimov
wrote: If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
So far I had no problems with the global placeholders and used them extensively in my projects. For sure this will cause a lot of headache for me. I'd prefer not making this change, unless there is a compelling reason for it.
The compelling reason is that if it remains in the global namespace no other use of '_n' can be conveniently hoisted into the current scope at the same time via a 'using namespace xxx'. Whereas if it is in its own namespace, as in retrospect it should have been, then the flexibility of hoisting the use of '_n' from whatever library, can be preserved. Its the same as putting any common name into the global namespace from a library, only to have it easily conflict with other uses of the same name. It is to be avoided as a matter of good programming principle. On a practical level other libraries, Boost and otherwise, use the '_n' notation and this has led to problems and numerous complaints in the past because of the bind placeholders being in the global namespace.
On Sun, Dec 15, 2013 at 12:33 AM, Edward Diener
On 12/14/2013 12:14 PM, Andrey Semashev wrote:
On Sat, Dec 14, 2013 at 8:56 PM, Peter Dimov
wrote: If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
So far I had no problems with the global placeholders and used them extensively in my projects. For sure this will cause a lot of headache for me. I'd prefer not making this change, unless there is a compelling reason for it.
The compelling reason is that if it remains in the global namespace no other use of '_n' can be conveniently hoisted into the current scope at the same time via a 'using namespace xxx'. Whereas if it is in its own namespace, as in retrospect it should have been, then the flexibility of hoisting the use of '_n' from whatever library, can be preserved.
I suppose, I just don't use using directives all that much, so it doesn't bother me. But I can see why it could be annoying if I did.
The compelling reason is that if it remains in the global namespace no other use of '_n' can be conveniently hoisted into the current scope at the same time via a 'using namespace xxx'. Whereas if it is in its own namespace, as in retrospect it should have been, then the flexibility of hoisting the use of '_n' from whatever library, can be preserved.
+1 As a frequent Boost.Phoenix user (and one who dislikes their 'argN' alternative), I run into this often. Regards, Nate
On 12/14/13, 8:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
I can't speak for the maintainers, but as someone that would have considerable "outside world" breakage, I'm still very much in support of this. If there were ever a right time to do it (other than from the start of course), it would be 2.0.
Chris Brown
On 12/14/13, 8:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
I can't speak for the maintainers, but as someone that would have considerable "outside world" breakage, I'm still very much in support of this. If there were ever a right time to do it (other than from the start of course), it would be 2.0.
Not to mention that C++11 is now truly upon us, anf they have the bind placeholders in `namespace std::placeholders`. Basically, you'd just be aligning with the standard, the way Boost.Thread, Boost.System and others have been. Alex -- Swish - Easy SFTP for Windows Explorer (http://www.swish-sftp.org)
On Dec 14, 2013, at 3:19 PM, Alexander Lamaison
Chris Brown
writes: On 12/14/13, 8:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
I can't speak for the maintainers, but as someone that would have considerable "outside world" breakage, I'm still very much in support of this. If there were ever a right time to do it (other than from the start of course), it would be 2.0.
Not to mention that C++11 is now truly upon us, and they have the bind placeholders in `namespace std::placeholders`. Basically, you'd just be aligning with the standard, the way Boost.Thread, Boost.System and others have been.
+1 — Marshall
On Sat, Dec 14, 2013 at 7:58 PM, Marshall Clow
On Dec 14, 2013, at 3:19 PM, Alexander Lamaison
wrote: Chris Brown
writes: On 12/14/13, 8:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
+1 The fix for maintainers is trivial and will be more in line with standards. We recently made the update to std::placeholders::_n in our library's backwards compatibility layer, it was well-received and not too much effort. Hey, now that we can do it with pull requests, maybe maintainers won't have to do much work at all!
On Sun, Dec 15, 2013 at 3:03 AM, Rich E
On Sat, Dec 14, 2013 at 7:58 PM, Marshall Clow
wrote:
On Dec 14, 2013, at 3:19 PM, Alexander Lamaison
wrote: Chris Brown
writes: On 12/14/13, 8:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global
namespace.
This will, however, break many things all around Boost (to say
nothing
about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
+1... But, instead of making a drastic change, why don't we make a deprecation plan? Say, from the next Boost release (2.0?), the official way to refer to placeholders is boost::placeholders::_n However, we still support ::_n for some other release, until we completely remove it from Boost version 2.x Best, -- Marco
On 12/15/13, 12:56 AM, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
+1 Regards, -- Joel de Guzman http://www.ciere.com http://boost-spirit.com http://www.cycfi.com/
On 14 Dec 2013 at 18:56, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace. [snip] So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
I think improving conformance with standards is the one uncontroversial set of breaking changes Boost can make, and therefore requires no community consensus, just fair warning it's coming. It's relatively trivial for older libraries in to inject the placeholders namespace into their own local namespace if they need a quick fix anyway, so I'd press ahead as soon as possible here. IMHO of course. Niall -- Currently unemployed and looking for work. Work Portfolio: http://careers.stackoverflow.com/nialldouglas/
+1 for getting the placeholders out of the global namespace.
On Mon, Dec 16, 2013 at 1:25 AM, Niall Douglas
On 14 Dec 2013 at 18:56, Peter Dimov wrote:
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace. [snip] So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
I think improving conformance with standards is the one uncontroversial set of breaking changes Boost can make, and therefore requires no community consensus, just fair warning it's coming.
It's relatively trivial for older libraries in to inject the placeholders namespace into their own local namespace if they need a quick fix anyway, so I'd press ahead as soon as possible here. IMHO of course.
Niall
-- Currently unemployed and looking for work. Work Portfolio: http://careers.stackoverflow.com/nialldouglas/
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
From: lists@pdimov.com To: boost@lists.boost.org Date: Sat, 14 Dec 2013 18:56:14 +0200 Subject: [boost] Removing _1 from the global namespace (again)
If we're going to call the next release 2.0, we'll be allowed some latitude with respect to breaking changes, so maybe this is the right time to finally remove the Bind placeholders from the global namespace.
This will, however, break many things all around Boost (to say nothing about the outside world), as a quick grep can readily reveal. And, consequently, it will generate a certain amount of work for the maintainers of the affected libraries that, from their point of view, can appear unnecessary.
So I'll need a certain amount of community consensus before going ahead and breaking everyone's code. :-)
Just curious, did anything ever happen with this?
participants (14)
-
Ahmed Charles
-
Alexander Lamaison
-
Andrey Semashev
-
Chris Brown
-
Edward Diener
-
Henrik Sundberg
-
Joel de Guzman
-
Marshall Clow
-
Nathan Ridge
-
Niall Douglas
-
PB
-
Peter Dimov
-
Rich E
-
sguazt