Re: [Boost-maint] [boost] Community Maintenance Team and neglected libraries

2014-05-15 Thread Beman Dawes
On Tue, Apr 22, 2014 at 8:46 PM, Ben Pope benpop...@gmail.com wrote:

 On Wednesday, April 23, 2014 04:08 AM, Edward Diener wrote:


 None of these are in
 the list of libraries which the community maintenance team has write
 acces to apply fixes.

 Hopefully the developers who do have write access to these libraries
 will look at the issues involved.


 Not having write access is the problem, it's a barrier to the CMT
 achieving their first two goals of keeping boost building and a healthy
 test matrix.


The context of those goals is the libraries maintained by the CMT, not all
Boost libraries.

We are expanding the responsibility of the CMT to field queries about pull
requests and eventually other maintenance requests where the library
maintainer isn't responding, but we are certainly are not asking the CMT to
get involved in libraries with active, responsive maintainers.

--Beman
___
Unsubscribe  other changes: 
http://lists.boost.org/mailman/listinfo.cgi/boost-maint


Re: [Boost-maint] Community Maintenance Team and neglected libraries

2014-05-15 Thread Beman Dawes
On Tue, Apr 22, 2014 at 12:10 PM, Andrey Semashev andrey.semas...@gmail.com
 wrote:

 On Wednesday 23 April 2014 00:29:17 Ben Pope wrote:
  In case you haven't heard of the CMT:
  https://svn.boost.org/trac/boost/wiki/CommunityMaintenance
 
  I'm also interested in getting the test results less yellow and more
  green, I don't have a lot of time, I'm sure I'm not alone.
 
  There are quite a few places where the library code is probably fine,
  but the failure is in the test itself, the fix is often simple and
  uncontroversial.
 
  These easy fixes should just happen; make a pull request, ticket with
  patch, whatever; commit goes in; reminder when tests have cycled; merged
  to master; profit.

 This is a recurring topic and unfortunately the problem still stands. CMT
 was
 a step forward, but to my mind this is not enough. With SVN we had commit
 rights everywhere, and such simple fixes went in much easier. After
 modularization some libraries were left effectively unmaintained and
 inaccessible. CMT does have rights to push to some libraries but not all
 and
 therefore does not fix the problem completely.


We've been discussing such issues in steering committee, release
management, and community maintenance sessions at C++Now this week, with a
couple of more sessions scheduled that will address library review concerns.

The details will evolve over time, but the CMT is gaining more
responsibility and is being given authority to respond to pull requests to
any library when the maintainer isn't available to respond. As procedures
evolve, that will expand to cover more situations - pull requests are just
the starting point for a general need to be responsive to various kinds of
requests.



 To my mind CMT should have access to all libraries, maintained or not. If a
 given library is actively maintained then CMT doesn't need to intervene.
 However, if the maintainer goes silent for considerable time, CMT has the
 ability to apply such fixes.


Yes, that's more or less the approach that has gained support. The actual
mechanism will be to continue to limit the CMT write permissions to CMT
maintained libraries, but have small group of senior developers within the
CMT who have write permissions to all libraries.

--Beman
___
Unsubscribe  other changes: 
http://lists.boost.org/mailman/listinfo.cgi/boost-maint


Re: [Boost-maint] [boost] Community Maintenance Team and neglected libraries

2014-05-15 Thread Beman Dawes
On Tue, Apr 22, 2014 at 2:08 PM, Edward Diener eldie...@tropicsoft.comwrote:

 On 4/22/2014 12:29 PM, Ben Pope wrote:

 In case you haven't heard of the CMT:
 https://svn.boost.org/trac/boost/wiki/CommunityMaintenance

 I'm also interested in getting the test results less yellow and more
 green, I don't have a lot of time, I'm sure I'm not alone.

 There are quite a few places where the library code is probably fine,
 but the failure is in the test itself, the fix is often simple and
 uncontroversial.

 Without picking on any particular library or author, here are some
 examples:

 * Link the tests with boost::system
   http://thread.gmane.org/gmane.comp.lib.boost.maint/92
 * Merge existing fixes in develop to master
   http://thread.gmane.org/gmane.comp.lib.boost.devel/250129
 * Fight with casts
   http://thread.gmane.org/gmane.comp.lib.boost.devel/250143
 * Disambiguate a type
   https://svn.boost.org/trac/boost/ticket/9540


 These refer to system, MPI, utility, and assign. None of these are in the
 list of libraries which the community maintenance team has write acces to
 apply fixes.


Right.


 Hopefully the developers who do have write access to these libraries will
 look at the issues involved.


Right, but what we are now saying is that if the maintainers for those
libraries don't respond, the submitters can ask on the CMT mailing list (
http://lists.boost.org/mailman/listinfo.cgi/boost-maint) for a response.
The CMT may concentrate on pull requests initially, but as they gear up
then other forms of support requests will be dealt with by the CMT but only
when there is no response from a library maintainer.

--Beman
___
Unsubscribe  other changes: 
http://lists.boost.org/mailman/listinfo.cgi/boost-maint


Re: [Boost-cmake] merged to trunk (mpi tests fixed)

2009-05-21 Thread Beman Dawes
On Thu, May 21, 2009 at 12:01 PM, troy d. straszheim
t...@resophonic.com wrote:
 Hey,

 I went interrupt-driven for a bit and merged to trunk.

Wow! Thanks!

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Creating Known Issues: CMake Problems with boost 1.39

2009-05-15 Thread Beman Dawes
On Thu, May 14, 2009 at 9:33 PM, Doug Gregor doug.gre...@gmail.com wrote:
 On Wed, May 13, 2009 at 6:51 AM, Daniel James daniel_ja...@fmail.co.uk 
 wrote:
 I've added CMakeLists.txt to the release manager checklist so this
 should be updated by a release manager for future releases:

 https://svn.boost.org/trac/boost/wiki/ReleasePractices/ManagerCheckList

 ... and now I've removed it from the release manager checklist. CMake
 will parse boost/version.hpp to determine the Boost version.

Thanks!

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Wiki to disappear: docs in progress

2009-05-13 Thread Beman Dawes
On Tue, May 12, 2009 at 5:11 PM, Brad King brad.k...@kitware.com wrote:
 Beman Dawes wrote:

 On Tue, May 12, 2009 at 4:38 PM, Doug Gregor doug.gre...@gmail.com
 wrote:

 Beman, did you enable testing?

 No. I figured that was a bit much for now.

 Even without all of the tests, Boost still has a huge number of targets
 in it.

 Yes, although I've been impressed with how fast everything except the
 VS IDE load has been running.

 I'm surprised it takes so long without testing.  How many targets is it,
 and how long is long?

Sorry, I think my post was misleading. My tests with the VC++ IDE had
BUILD_TESTING  turned on.

Could we change the name of that to BUILD_REGRESSION_TESTS, and change
the tool tip to Enable regression testing?

If someone does that, could they please post the changeset or revision
number so I can look at what it takes to make that kind of minor
change.

Thanks,

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Creating Known Issues: CMake Problems with boost 1.39

2009-05-13 Thread Beman Dawes
On Wed, May 13, 2009 at 9:51 AM, Daniel James daniel_ja...@fmail.co.uk wrote:
 2009/5/13 troy d. straszheim t...@resophonic.com:
 Tan, Tom (Shanghai) wrote:

 I used CMake to build boost 1.39 and found at least two problems:

  - In the cmakelist.txt file the BOOST_VERSION_MINOR is 38, instead of 39


 A known problem.  You can tweak this in the toplevel CMakeLists.txt.

 I've added CMakeLists.txt to the release manager checklist so this
 should be updated by a release manager for future releases:

 https://svn.boost.org/trac/boost/wiki/ReleasePractices/ManagerCheckList

Thanks, Daniel!

I really rely on that list to initiate a new release cycle.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] CDash dashboard now available

2009-05-12 Thread Beman Dawes
On Tue, May 12, 2009 at 2:02 PM, Doug Gregor doug.gre...@gmail.com wrote:
... We might be able to prod someone into building x86
 Windows binaries. Any takers?

I'm already playing with trying to create a VC++ installer for
Windows. Just getting my feet wet, but I'll let this list know as I
make progress and/or have questions.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Wiki to disappear: docs in progress

2009-05-12 Thread Beman Dawes
On Tue, May 12, 2009 at 9:16 AM, troy d. straszheim t...@resophonic.com wrote:
 I've been working hard on getting some proper docs together.  Whats done is
 here:

  http://www.resophonic.com/boost_cmake/index.html

 Not quite everything is off the wiki just yet.   Bug reports welcome, help
 is more welcome.

Nice, readable, docs! Great start!

In the Windows section,

* Use the Browse... button to point CMake at the Boost source
code in $BOOST\src.
* Use the second Browse... button to select the directory
where Boost will build binaries, $BOOST\build.
* CMake will ask you what kind of project files or make files
to build. If you’re using Microsoft Visual Studio, select the
appropriate version to generate project files. Otherwise, you can use
Borland’s make files, generate NMake files, etc.
* Click Configure a first time to configure Boost, which will
search for various libraries on your system and prepare the build.
* You will then be given the opportunity to tune build options
in the CMake GUI (see also [wiki:CMakeBuildConfiguration]. These
options will affect what libraries are built and how. They will
initially appear red. Click Configure again when you are done editing
them.
* Finally, click OK to generate project files.

The third bullet item actually happens after the 4th bullet item.

I first tried to use the VC++ IDE compiler. The Solution file is so
large it is impossibly slow to load and unload. A non-starter. Bill or
Brad had warned about that, so no surprise, and I just moved on to the
command line compiler. That's what I prefer for these canned builds
anyhow.

That is specified as nmake rather than by something descriptive like
Microsoft command line tools. I'd really prefer not to ever know of
the existence of nmake. That is where bjam shines. So I'm looking
forward to a wrapper that hides all make tools behind a common
interface.

I typed nmake, hoping that might be all that was required, and
compiles started to run, and .lib and .exp files started to appear in
the lib sub-directory while .dll and .exe files started to appear in
the bin sub-directory.

The files identified the build as 1_38, so it looks like yet another
version number needs updating between releases. (I was running on
branches/release).

After [100%], there were error messages:

Linking CXX executable ..\..\bin\bcp.exe
LINK : fatal error LNK1104: cannot open file 'boost_system-mt-shared-debug.lib'
LINK Pass 1 failed. with 2
NMAKE : fatal error U1077: 'C:\Program Files (x86)\CMake
2.6\bin\cmake.exe' : return code '0xf
fff'
Stop.
NMAKE : fatal error U1077: 'C:\Program Files (x86)\Microsoft Visual
Studio 9.0\VC\BIN\nmake.exe' :
 return code '0x2'
Stop.
NMAKE : fatal error U1077: 'C:\Program Files (x86)\Microsoft Visual
Studio 9.0\VC\BIN\nmake.exe' :
 return code '0x2'
Stop.

I probably shouldn't have tried to build bcp; I'm still getting used
to the configure options.

Anyhow, not a bad start for the first try. What do I do to create an
installer? Is there a set of nmake commands?

Thanks,

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] CDash dashboard now available

2009-05-12 Thread Beman Dawes
On Tue, May 12, 2009 at 3:48 PM, Doug Gregor doug.gre...@gmail.com wrote:
 On Tue, May 12, 2009 at 12:10 PM, Beman Dawes bda...@acm.org wrote:
 On Tue, May 12, 2009 at 2:02 PM, Doug Gregor doug.gre...@gmail.com wrote:
 ... We might be able to prod someone into building x86
 Windows binaries. Any takers?

 I'm already playing with trying to create a VC++ installer for
 Windows. Just getting my feet wet, but I'll let this list know as I
 make progress and/or have questions.

 Great! If you build the modularize target first, then build the
 package target, you'll get the full component-based installer.

I just figured that out by looking at the Makefile. It is much cleaner
that any large Makefile I've looked at in the past. Good job, CMake!

What are the *\fast targets? For example, package\fast?

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Wiki to disappear: docs in progress

2009-05-12 Thread Beman Dawes
On Tue, May 12, 2009 at 4:09 PM, Doug Gregor doug.gre...@gmail.com wrote:
 On Tue, May 12, 2009 at 1:02 PM, Beman Dawes bda...@acm.org wrote:

 I suspect it's just:

  nmake modularize

 then

  nmake package

Yeah, that's what I did. Died on bcp again, so I removed the bcp
checkmark, did configure/generate again, and was back in business.

The various nmake runs went much faster - a good sign.

Got down to:

...
Run CPack packaging tool...
CPack: Create package using NSIS
CPack: Install projects
CPack: - Run preinstall target for: Boost
CPack: - Install project: Boost
CPack: -   Install component: Unspecified
CPack: -   Install component: accumulators_headers
CPack: -   Install component: algorithm_headers
...
CPack: -   Install component: variant_headers
CPack: -   Install component: wave_headers
CPack: -   Install component: wave_mt_shared
CPack: -   Install component: xpressive_headers
CPack: Compress package
CPack Error: Problem running NSIS command: C:/Program Files
(x86)/NSIS/makensis.exe C:/boost/rele
ase-cmake-build/_CPack_Packages/win32/NSIS/project.nsi
Please check 
C:/boost/release-cmake-build/_CPack_Packages/win32/NSIS/NSISOutput.log
for errors
CPack Error: Problem compressing the directory
CPack Error: Error when generating package: Boost
NMAKE : fatal error U1077: 'C:\Program Files (x86)\CMake
2.6\bin\cpack.exe' : return code '0x1'
Stop.

One clue might be that the CMake setup shows the UNZIP value as
C:/bgd/util/unzip.exe That's almost certainly not the unzip program
CMake expects. Perhaps I need to install cygwin zip/unzip programs?
I'll see if they've got anything by that name.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] CDash dashboard now available

2009-05-10 Thread Beman Dawes
On Sat, May 9, 2009 at 3:44 PM, Bill Hoffman bill.hoff...@kitware.com wrote:
 Philip Lowman wrote:

 The tests look like they're already grouped by a label that relates back
 to the boost library they derive from so implementing this would only be a
 matter of a different viewer.  I've filed a feature request for it here.
  Feel free to add comments if you'd like.

 http://public.kitware.com/Bug/view.php?id=8991

 This is already done



 An example can be found here in the Trilinos dashboard:

 http://trilinos-dev.sandia.gov/cdash/index.php [^]

 Trilinos is one big project with lots of sub-projects. The sub-projects can
 be described either in the CDash GUI, or in an XML file that can be uploaded
 to CDash.

FWIW, Bill Hoffman did a nice presentation at BoostCon looking at
CMake and how it might work for Boost. Brad King of Kitware was also
there, and helped flesh out a lot of technical details. We had a
breakout meeting looking at what needs to be done next. Troy and Doug
remain the leads on the Boost side, but others are starting to get
involved with various aspects. There was a hands on session Friday so
Boosters could kick the tires.

I'm going to experiment with pre-built binary installers, with an eye
to supplying them for the 1.40.0 release.

---Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Parallel Builds on Windows

2009-02-09 Thread Beman Dawes
On Mon, Feb 9, 2009 at 5:13 AM, Ingo Albrecht ingo.albre...@artcom.de wrote:

 ... Since VS2005, there is another tool called vcbuild
 that does not only emit messages on its stdout but can also dump them
 into a good old text file. As I already noted earlier, it can also prefix
 lines with specific severity levels with strings provided on the command
 line.

 It even has an advantage over make in that it can separate messages
 from parallel jobs correctly.

 This tool is also available in the free Express Edition.

Thanks! I'd missed vcbuild. It looks very interesting.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] README.txt and Welcome.txt?

2009-01-28 Thread Beman Dawes
On Tue, Jan 27, 2009 at 6:35 PM, Daniel James daniel_ja...@fmail.co.uk wrote:
 2009/1/27 troy d. straszheim t...@resophonic.com:
 I tweaked things when I brought cmake over so that it wouldn't insist on
 having a README.txt there, but of course it'd be good to have something
 better than the generic one that comes packaged with cmake.

 OK, I'll leave this for a future release.

I'd prefer to add it this release on the theory that we've got
everyone's attention and it looks easy to do, so let's get it out of
the way.

Daniel, if you could do two things, that should get us rolling on this.

* Create http://beta.boost.org/users/history/minimal.php/version_1_38_0
(or some permanent URL, if you can pull that off.)

* Update https://svn.boost.org/trac/boost/wiki/ReleasePractices/ManagerCheckList
Release cycle initialization to indicate what has to be done to set
up for each new release.

Thanks,

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] README.txt and Welcome.txt?

2009-01-28 Thread Beman Dawes
On Sun, Jan 25, 2009 at 3:34 PM, Daniel James daniel_ja...@fmail.co.uk wrote:

 Beman, would it be possible for you to install lynx and add the
 appropriate command to your release scripts?

I installed Cygwin's lynx and it ran fine on first try, using the
command line you provided.

No problem adding this to the daily snapshot script that is the basis
for the release script.

It would be a tiny bit easier if the URL was always the same, but
that's no big deal if not convenient.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] cmake not on release branch

2009-01-24 Thread Beman Dawes
On Sat, Jan 24, 2009 at 11:45 AM, troy d. straszheim
t...@resophonic.com wrote:

 I'm wondering what the story is with this...   is it OK to merge the
 cmakelists and whatnot over there, so that releases end up being
 cmake-buildable?

Yes, please do.

Thanks,

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Analysis of the current CMake system

2009-01-15 Thread Beman Dawes
On Wed, Jan 14, 2009 at 6:16 PM, Doug Gregor doug.gre...@gmail.com wrote:
 On Wed, Jan 14, 2009 at 3:02 PM, Beman Dawes bda...@acm.org wrote:
 On Wed, Jan 14, 2009 at 11:52 AM, Brad King brad.k...@kitware.com wrote:
..
 One of the goals of CMake is to let developers use their favorite
 native tools.

 Horrors! As a boost developer, the last thing in the world I want is
 to have to know anything about a platform's native tools. I just want
 to be able to enter the CMake equivalent of bjam in the directory
 I'm testing, and have it build and run all tests for all installed
 compilers. Perhaps with appropriate arguments if I only want to test
 with subset of the compilers, or a single test, or pass in some
 compiler arguments.

 This is exactly the argument that got us into our current build-tools
 mess. We've always placed so much emphasis on making things easy for
 Boost *developers* that we've made them extremely tough for Boost
 *users*. This feature---the ability to run bjam once and run
 everything across multiple compilers---is responsible for the majority
 of the damage, because we've been architecting bjam for multiple
 compilers at the expense of the common case of a single system
 compiler.

We had this discussion before and decided it would be fine for boost
developers if what they were running was actually just a script that
just called the underlying CMake setups multiple times. But at the
level of reporting, both local and on the web, there has to be a
single summary available that brings together all test results.

 Have you tried helping a Boost newbie go through the process of
 building and installing Boost lately? It's extremely painful, but we
 don't see that pain because we've all gone through the initial hurdles
 of getting bjam setup just right for our own configurations.

I certainly see the pain - I'm the one who does the builds for a
client of mine. It is a painful mess now, that's for sure.

Any progress on pre-built binaries?

 That's
 the wrong thing to optimize: we need to optimize for the case where a
 new user downloads Boost and wants to build/use it immediately. Those
 users only care about a single compiler---the one they use for their
 day-to-day work---and would greatly benefit from being able to use
 their platform-specific tools (Visual Studio, xCode, whatever).

True, but they have to build several variants for that compiler, and
on some platforms the 32 and 64 bit flavors are more like two separate
compilers.

 If we're going to go through the effort of introducing a new build
 system, we need to focus on the user experience first and foremost.

If you don't give the developers tools they can use, they won't switch to CMake.

If you don't give the release managers tools they can use, they won't
switch to CMake.

And of course the users needs have to be met too.

It is a three-legged stool. All three legs have to bear the weight, or
it topples.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Boost CMake at BoostCon?

2009-01-11 Thread Beman Dawes
On Sun, Jan 11, 2009 at 11:45 AM, troy d. straszheim
t...@resophonic.com wrote:
 Beman Dawes wrote:

 On Fri, Jan 9, 2009 at 11:27 PM, David Abrahams d...@boostpro.com wrote:

 on Fri Jan 09 2009, Beman Dawes bdawes-AT-acm.org wrote:

 Is anyone planning to submit a BoostCon proposal for a talk, tutorial,
 or workshop on Boost CMake?

 Seems like this would be a natural to build momentum.

 I've been considering that.

 My orbit is coming back around...  I've been planning to submit a talk
 on the state of boost-cmake.   Just booked my hotel room.

Wonderful!

 Should I proceed or does somebody else want to take this one?

You and possibly Michael Jackson would be naturals. Dave is always a
great presenter, but there are other topics that could benefit from
his insights.


 Great!

 Here are some off the top of my head thoughts, intended to stimulate
 discussion:

 It seems to me that there are several different Boost CMake tasks
 someone might want to accomplish, and documentation and/or training
 needs to be oriented toward those tasks. The tasks might be broken
 down like this:

 1)  Build one or more libraries, possibly with variants.

 2)  Test one or more libraries locally.

 3)  Set up simple build and test configurations for a library that
 does not require any deep understanding of Boost CMake.

 4)  Learn enough about Boost CMake to be able to set up complex
 configurations, or set up configurations that do not follow the
 standard patterns. Be able to support other users and help maintain
 Boost CMake.

 Docs for tasks 1-3 should contain only material relevant to the task
 at hand. IOW, be very task oriented.

 For BoostCon, it would be great if there was one session that covered
 a bit of an overview and then how to accomplish tasks 1 and 2, and
 then another session (or sessions) were devoted to 3 and 4. The 1-2
 session would be a prerequisite for the 3-4 session, at least for
 those with no prior exposure to CMake.

 Sounds reasonable to me.   It isn't clear to me that this would take
 two sessions, you could probably do it all in 60-90 minutes, maybe
 before lunch: do the task-oriented part first, then announce
 that those who aren't interested in gory details can split.

While I'm sure you *could* do a decent presentation in 60-90 minutes,
I'd like to suggest thinking in terms of actually getting participants
up-to-speed and running stuff on their laptops. That will take more
time than you just showing a bunch of powerpoint slides, but I think
people will get much more out of a more interactive session.

 I suppose we should plan for some birds-of-a-feather type sessions as
 well.

Yes. Also see the reply I'm about to write to Bill Hoffman's query.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Boost CMake at BoostCon?

2009-01-11 Thread Beman Dawes
On Sat, Jan 10, 2009 at 10:50 AM, Bill Hoffman bill.hoff...@kitware.com wrote:

 Would it be good if someone from Kitware came?

Yes, particularly if we set time aside to work on outstanding issues.
Such as reporting of test results.

Would a workshop on test result reporting be of interest to readers of
this list?

Last year there was a lot of informal discussion on reporting, with
many interesting ideas and suggestions mentioned. But no one actually
turned any of that into a working reporting system. Yet Boost can't
switch to CMake without a test reporting system in place. Perhaps
BoostCon could be a catalyst for moving forward on test reporting.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Boost CMake at BoostCon?

2009-01-10 Thread Beman Dawes
On Fri, Jan 9, 2009 at 11:27 PM, David Abrahams d...@boostpro.com wrote:

 on Fri Jan 09 2009, Beman Dawes bdawes-AT-acm.org wrote:

 Is anyone planning to submit a BoostCon proposal for a talk, tutorial,
 or workshop on Boost CMake?

 Seems like this would be a natural to build momentum.

 I've been considering that.

Great!

Here are some off the top of my head thoughts, intended to stimulate discussion:

It seems to me that there are several different Boost CMake tasks
someone might want to accomplish, and documentation and/or training
needs to be oriented toward those tasks. The tasks might be broken
down like this:

1)  Build one or more libraries, possibly with variants.

2)  Test one or more libraries locally.

3)  Set up simple build and test configurations for a library that
does not require any deep understanding of Boost CMake.

4)  Learn enough about Boost CMake to be able to set up complex
configurations, or set up configurations that do not follow the
standard patterns. Be able to support other users and help maintain
Boost CMake.

Docs for tasks 1-3 should contain only material relevant to the task
at hand. IOW, be very task oriented.

For BoostCon, it would be great if there was one session that covered
a bit of an overview and then how to accomplish tasks 1 and 2, and
then another session (or sessions) were devoted to 3 and 4. The 1-2
session would be a prerequisite for the 3-4 session, at least for
those with no prior exposure to CMake.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


[Boost-cmake] Boost CMake at BoostCon?

2009-01-09 Thread Beman Dawes
Is anyone planning to submit a BoostCon proposal for a talk, tutorial,
or workshop on Boost CMake?

Seems like this would be a natural to build momentum.

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Test feedback

2008-06-29 Thread Beman Dawes
On Sun, Jun 29, 2008 at 9:41 AM, troy d. straszheim [EMAIL PROTECTED]
wrote:

 David Abrahams wrote:

 troy d. straszheim wrote:

  The test that causes this is just a program with a main() routine... It
 seems like it should use boost.test, and boost.test should be
 responsible for making these dialog-suppressing calls. (Does that sound
 like it makes sense?)


 1. I'm reluctant to recommend that any program use Boost.Test until its
 documentation is made to correspond to its actual interface.

 2. You'd better ask Gennadiy what makes sense for Boost.Test; I don't
 understand the rationale by which it gets developed

 3. Maybe we could have an option in boost/detail/lightweight_test, or
 simply a separate header called boost/detail/regression.hpp that
 includes something that does this.  Maybe the old
 dynamically-initialized static member of a template trick makes sense
 here.


 Roger that, skipping to #3...


Before inventing something new, why not ask the Boost.Build folks how they
suppress unwanted pop ups during Boost regression tests. They went through
the exact same sequence you are now repeating; first a lot of popups
occurred, then a few, then a few that closed automatically after some time,
and finally none at all. That's regardless of whether the test involved is
running under Boost.Test or not.

Also, are you aware Boost.Test already has the equivalent of
lightweight_test? See trunk\boost\test\minimal.hpp.  If minimal.hpp is
missing something, shouldn't the missing feature be added there rather
inventing a whole new kind of lightweight test?

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Some issues getting started on Win32

2008-06-27 Thread Beman Dawes
On Thu, Jun 26, 2008 at 10:31 PM, troy d. straszheim [EMAIL PROTECTED]
wrote:

 David Abrahams wrote:

 troy d straszheim wrote:

  Things look good.  So...  Dave is it possible you were doing
 configuration of cmake in a build directory that had failed
 configuration once?


 Gosh, I don't know.  Maybe.  Probably.  Heck, shouldn't that work, after
 all!?  How will our users survive if one failure torpedoes all further
 attempts?


 It is just a standard cmake gotcha:configuration/generation fails, the
 cache isn't deleted, and whatever it was that caused the failure is
 preserved in the cache to fail on the next attempt.  You can reduce this
 effect by being careful what you cache, but in this case, well, we're still
 just hackin' on this thing


I thought cmake was supposed to be robust. This is very discouraging; it
implies cmake developers are only targeting folks who are cmake experts.

Is it possible to disable this misfeature?

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [Boost-cmake] Test feedback

2008-06-18 Thread Beman Dawes
On Wed, Jun 18, 2008 at 8:25 AM, troy d. straszheim [EMAIL PROTECTED]
wrote:

 Beman Dawes wrote:

I didn't have a clue as to what BOOST_BUILD_SLAVE_HOSTNAME should
be, so just left it blank. That resulted in the Traash Demo
Hostname being set to bgd.myhome.westell.com
http://bgd.myhome.westell.com, which I doubt is meaningful.


 meaningful enough

  What
should it be set to and how would I know that? If it is always to be
set to vista.dc.resophonic.com http://vista.dc.resophonic.com, why
do I have to set it?


 I tried to tune up the docs on this one:

  BOOST_BUILD_SLAVE_HOSTNAME

  This will change the hostname reported to the server, if you'd like
 to keep your internal hostnames completely private or make them more
 descriptive. This hostname should be unique among build slaves, and
 something generally descriptive and not too long would be nice, as this name
 is used fairly frequently in build result displays.


Much better! We might want to come up with naming conventions. Say I'm
running two Linux slaves, and two Windows slaves. Would names like this be a
good idea?

bgd.vista.vc++.9.0
bgd.vista.vc++.8.0
bgd.linux.gcc.4.3.c++03
bgd.linux.gcc.4.3.c++0x





 So it isn't just the DNS hostname of the slave, it is more an identifier
 for the slave that defaults to DNS hostname.  This is because on pages like
 this:

  http://boost.resophonic.com/trac/traash

 it would be nice to be able to see that e.g. Beman's build box has
 17 more errors than Troy's... so we don't want all the vistas to have their
 hostnames set to vista.dc.resophonic.com.


 I went back and set BOOST_BUILD_SLAVE_HOSTNAME to vista.dc.resophonic.com
 http://vista.dc.resophonic.com/, then tried nmake /I test. It runs for a
 bit and then pauses for a long time, then runs a bit more, etc. At this rate
 it will take days to run the full set of tests. Is that normal?


 I've seen this but haven't had time to dig in and solve it yet.   CPU usage
 drops to zero and the thing just sits there


Yes, those are the symptoms I'm seeing here.


 (there is no
 network connection open, that isn't the problem).   There is something
 fishy with the python subprocess stuff (on windows.  darwin/linux are fine.)
 that I haven't had time to look at.


Any Python win32api experts out there who could look at this?

--Beman
___
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake


Re: [boost] Has www.boost.org been hacked?

2003-09-03 Thread Beman Dawes
At 04:51 AM 9/3/2003, Raoul Gough wrote:

I was just looking at www.boost.org, and my browser (IE6.0) popped up
a confirmation request to run an Active-X control. Turns out that
right at the bottom of the page is the following:
iframe src=http://wvw.beech-info2.com/_vti_con/rip.asp
width=0 height=0 frameborder=0 marginwidth=0 marginheight=0
/iframe
Which leads to a seemingly malicious Visual Basic script at
http://ww.beech-info2.com/cgi-bin/inf2.pl which (from my limited
understanding of Visual Basic) *creates an executable* file from
hexadecimal data and then runs it. Full VB malware script follows .sig
Other pages on www.boost.org have the same problem. I believe this
should be rectified ASAP.
It appears to be fixed at the moment.

The problem is at least moderately serious, and is caused by an recurring 
server infection at Interland, the web host. They fix it, it comes back, 
they fix it again, and so on.

We've started testing preparatory to moving the web site to SourceForge.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] BOOST TEST and strict /Za no lanugage extensions option - virturenot fully rewarded?

2003-09-03 Thread Beman Dawes
At 09:56 AM 9/3/2003, Paul A. Bristow wrote:

In trying to be virtuous and test everything compiled in strict mode as I 

write it, I am finding myself thwarted by BOOST minimal_test otherwise
excellent test system.

I aim to compile and test all my code with MSVC 7.1 in strict mode 
(option
/Za -
no language extensions and warning level 4).

But in practice this is impossible using the minimal_test.cpp
because #include also compiles Windows specific structured exception
handling modules like winNT.h and these require MS extensions to
compile - otherwise zillions of errors.

It is possible to avoid this by compiling these modules separately with
extensions enabled, building a library, then to compile MY 
modules strictly, and then linking to the library, but this is a bit more
cumbersome than minimal_testing.

This problem will also apply to all testing of Boost library items using
the minimal test if we try to raise the code quality bar to 'strict'
compilation.

Is there any easier way round this so that minimal_test can be used 
without
linking with a library?

If Gennadiy can somehow make boost/test/minimal.hpp (and dependencies) work 
/Za, that's great. But he is already providing a full object-library based 
solution, as well as the header implemented solution. Not to mention three 
separate levels of functionality (execution tools, test tools, full unit 
test). I'd hate to see added complexity to solve a problem that can already 
be dealt with just by using the object-library version of the tools. 
Minimal test was designed to be just that - minimal. It isn't expected to 
be useful in as wide a range of uses as the library as a whole.

Just my 2 cents...

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: trouble with generating html compiler status pages

2003-09-03 Thread Beman Dawes
At 10:14 AM 9/3/2003, Matthew Towler wrote:

Beman Dawes wrote:
 
  Are you using run_tests.sh from CVS or your own script?
 

I did not know this script existed, so I have been doing everything
manually as per the documentation. on
http://www.boost.org/more/regression.html
and making the obvious syntactic adjustments for unix
Ouch! My fault. I've added a link (in CVS) to run_tests.sh to reduce 
likelihood of it being missed.

One thing I noticed is that this documentation indicates setting a
BOOST_ROOT environment variable, whilst run_tests.sh uses boost_root, I
was under the impression that case mattered - or is this irrelevant as
boost_root is always passed into the executables on the command line
rather than automatically referred to?
I don't know the answer to that. Someone familiar with running under Unix 
needs to answer.

I retried the processing of the regression test results using the
run_tests.sh script and got exactly the same result from
'compiler_status', namely

*** Error: std::runtime_error: boost::filesystem::directory_iterator
constructor:
/scratch8/buildman/builds/linux_boost_1_30_2/0_2/tools/regression/build/bin
:
No such file or directory

BOOST_ROOT (and boost_root in the script) were set to
/scratch8/buildman/builds/linux_boost_1_30_2

so I believe it is the processing program that is adding the spurious
'0_2' to the path.
I would do several things if that happened here:

(1) run only on a single test (I usually use config_info). That makes 
testing simpler and quicker.
(2) inspect the bjam log file to see if anything obvious jumps out.
(3) look at the target directory to see that the expected files are 
present. I set -sALL_LOCATE_TARGET=D:\boost-regr, so GCC target ends up 
being:

D:\boost-regr\status\bin\config_info.test\gcc\debug\runtime-link-dynamic

A listing of that directory shows:

08/14/2003  09:08 AM 1,775,667 config_info.exe
08/14/2003  09:08 AM   196,220 config_info.obj
08/14/2003  09:32 AM 4,310 config_info.output
08/14/2003  09:32 AM 4,310 config_info.run
08/14/2003  09:32 AM51 config_info.test
08/14/2003  09:43 AM 4,771 test_log.xml
The contents of test_log.xml are:

test-log library=config test-name=config_info test-type=run 
test-program=libs/config/test/config_info.cpp 
target-directory=status/bin/config_info.test/gcc/debug/runtime-link-dynamic 
toolset=gcc show-run-output=true
compile result=succeed timestamp=2003-08-14 13:43:35 UTC/compile
link result=succeed timestamp=2003-08-14 13:43:35 UTC/link
run result=succeed timestamp=2003-08-14 13:43:40 UTC
GNU C++ version 3.3.1
... macro values ...
/run
/test-log

Where macro values is a long list. Is the test_long.xml file present? Are 
the various paths correct in it?

If test_log.xml is missing or wrong, the problem is in process_jam_log or 
bjam. If test_log.xml looks good, the problem is in compiler_status.

(4) Run compiler_status under a debugger, and trap the call stack at the 
point the exception is thrown. By inspecting the call stack, it should be 
possible to figure out where the bad path came from. Let me know; we might 
be able to add an error check or workaround.

I also tried the script on IRIX (with the mipspro 7.3.1.3 compiler),
with a script adjusted to set test_tools and toolset to mipspro.  I got
the following (good) output for the processing

processing the regression test results for mipspro:
Usage: bjam [bjam-args] | process_jam_log [locate-root]
  locate-root is the same as the bjam ALL_LOCATE_TARGET
  parameter, if any. Default is boost-root.
boost_root: /local/buildman/builds/boost-1.30.2
locate_root: /local/buildman/builds/boost-1.30.2
no errors detected
generating html tables:
Using /local/buildman/builds/boost-1.30.2/status/bin/config_test.test to
determine compilers
no errors detected
done!

However when I look at the generated webpage (cs-IRIX64.html), most of
the tests are marked as missing. e.g. for regex regex_grep_example_1, 2,
3, are marked as Missing, whilst regex_grep_example_4 is a Pass.

Looking at the corresponding regress.log file, all of these four tests
passed - and when located in $BOOST_ROOT running
find . -name *.xml | grep example_
gives
./libs/regex/example/bin/regex_grep_example_1.test/mipspro/debug/threading-m
ulti/test_log.xml
./libs/regex/example/bin/regex_grep_example_2.test/mipspro/debug/threading-m
ulti/test_log.xml
./libs/regex/example/bin/regex_grep_example_3.test/mipspro/debug/threading-m
ulti/test_log.xml
./libs/regex/example/bin/regex_grep_example_4.test/mipspro/debug/threading-m
ulti/test_log.xml
./libs/regex/example/bin/regex_split_example_1.test/mipspro/debug/threading-
multi/test_log.xml
./libs/regex/example/bin/regex_split_example_2.test/mipspro/debug/threading-
multi/test_log.xml

so it would appear the output is there - so I do not understand why the
tests are Missing.
That sounds like compiler_status is being invoked from the wrong working 
directory or in some other way

Re: [boost] Is there any way to accelerate the compi

2003-09-03 Thread Beman Dawes
At 12:53 AM 9/3/2003, [EMAIL PROTECTED] wrote:

I used boost::tokenizer in one of my project and I found that it took
very long time to accomplish the building process when I include
boost::tokenizer in one of my cpp file.
Hum... How much is a very long time? A couple of seconds? minutes? more? 
FWIW,I don't recall the tokenizer regression tests taking excessive compile 
time.

Is there any way to accelerate the process. Here's some information
about my machine.

Computer: DELL Demension 2350
CPU: P4 2.0G
RAM: 256M
OS; Microsoft Windows 2003 Web edition
Compiler: Microsoft Visual C++ 6.0 Sp5
boost: boost 1.30.0
While there is certainly nothing wrong with that configuration, I'd sure 
upgrade with another 256M of RAM and VC++ 7.1 if it was mine:-; (That's a 
personal comment, unrelated to your tokenizer question.)

--Beman



___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: Deprecation/removal of libraries

2003-09-02 Thread Beman Dawes
At 05:17 PM 9/1/2003, Daniel Frey wrote:

On Thu, 28 Aug 2003 16:19:24 +0200, Douglas Gregor wrote:

 On Thursday 28 August 2003 08:20 am, Daniel Frey wrote:
 utility/tie was moved to tuple, so should we remove the obsolete
 docs/references in utility now?

 Please do.

Done. I also updated the Revisited ..., but there is some checksum in
the HTML-source. I have no clue what it's good for, so if I broke it,
please fix it and tell me how to avoid it next time :o)
The checksum is used by some HTML editors to automatically timestamp 
revisions. It is in a comment and it doesn't hurt to break it if you happen 
to edit the file manually. So you don't need to worry about it.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] trouble with generating html compiler status pages

2003-09-02 Thread Beman Dawes
At 09:09 AM 9/2/2003, Matthew Towler wrote:

I have been attempting to build boost 1.30.2 for a number of platforms.

I also wish to generate the html testsuite output for several reasons -
My own peace of mind, because we are using a reasonably large number of
platforms (some of which do not appear on the status tables), and so I
can see which parts of the libraries work on all our platforms.

In general I have been successful with the building of the
tools/libraries and running the testsuites as per the documentaion to
produce bjam.log.  However when I try to process the bjam.log I get a
number of errors and/or erroneous output.  I will describe my gcc/linux
experience as this is the platform I expected to have least trouble with.
Are you using run_tests.sh from CVS or your own script?

The kinds of troubles you describe can be caused by (1) wrong BOOST_ROOT, 
(2) failing to cd $boost_root/status before running the tests, (3) wrong 
arguments to the actual programs.

...

I checked that BOOST_ROOT was set to
/scratch8/buildman/builds/linux-boost-1.30.2/0.2/status/bin
That looks very suspicious and is almost certainly wrong. What I would 
expect is BOOST_ROOT set to:

  /scratch8/buildman/builds/linux-boost-1.30.2

or possibly (if you have copied the tree to 0.2):

  /scratch8/buildman/builds/linux-boost-1.30.2/0.2

Which of those directories has c++boost.gif, LICENSE, and README? Those 
live in the root directory, so can be checked for to verify you have 
BOOST_ROOT set correctly.

HTH,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] SourceForge CVS performance upgrade

2003-09-01 Thread Beman Dawes
This hasn't happened yet. Here is what SourceForge says about the upgrade:

The performance increase I spoke of
(600%+ increase) is just days away from being deployed.The new
systems are now in place, additional electrical power has been added to
our colocation cage, and the Linux boxes are in their final stages of
configuration.   Hang in there.  Help is on the way.
--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: path::leaf()

2003-08-26 Thread Beman Dawes
At 03:55 PM 8/21/2003, David Abrahams wrote:

Beman Dawes [EMAIL PROTECTED] writes:

 At 08:31 PM 8/19/2003, David Abrahams wrote:
  
  It surprised me a bit that leaf returns a string instead of a path.

 The rule isn't entirely obvious. If a decomposition function can
 possibly return more that one element, it is returned as type path. If
 at most a single element is returned, the return type is std::string.

It may not surprise you, but the easy translation between paths and
strings really rubs me the wrong way.  Practically the only reason I'm
using the path class at all is to increase the level of abstraction
and self-documentation of the code I'm writing -- I think it's foolish
to pass around something called std::string when it really represents
a file path.  A single component of a path is still a path, and it
shouldn't devolve into a string.

I'm rewriting some Java code in C++ which has a Directory
abstraction, that lets you open files in that directory.  I want those
functions take path parameters.  I want to assert that they're leaf
paths.  Having to write:

assert(path(p.leaf()) == p)

or

   assert(p.leaf() == p.string())

instead of:

   assert(p == p.leaf())

really feels odd to me.
What about:

assert( p.branch_path().empty() );

Isn't that closer to what you are trying to express?

  Shouldn't
  
 foo/bar/p.leaf()
  
  work?

 Yes, via the automatic conversion. I just added a test case to
 path_test to verify that. Yes, it does work. I expect there would
 have been scads of bug reports if it didn't work.

Whoa.  What code and compiler did you test that with?
Ah! I corrected your code first so that foo/bar was a path. There is no 
operator/ for string arguments, of course.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: path::leaf()

2003-08-26 Thread Beman Dawes
At 09:48 PM 8/25/2003, David Abrahams wrote:

Rainer Deyke [EMAIL PROTECTED] writes:

 It is my understanding that paths are implemented as
 std::vectorstd::string or something similar, where the individual
 strings can contain slashes if the underlying filesystem allows it.
 It would be a shame if filesystem::path was unable to represent
 legal native paths just because they contain characters which have
 special meaning in the portal path grammar.

 then 'p.leaf()' may contain any character that is supported by the
 native file system, which may include slashes.  When 'p.leaf()' is
 then converted back into a 'filesystem::path', the resulting path
 will have different sematics than intended.  This strikes me as very
 dangerous.

 Oh, is that what happens now?  Yipes!

 Yipes indeed.

I am finding Rainer's arguments quite convincing.  Beman, what do you
think about this?
When this was discussed in the past, one suggested solution was to 
represent slashes via an escape mechanism. That's the approach RFC2396 
takes. The other suggestion was to treat slashes like '\0'; just ban them. 
But that discussion never went anywhere since it isn't an issue for the 
current POSIX/Windows implementation.

I'm certainly in agreement that before adding implementations for any file 
or operating systems that would have that problem we have to deal with it 
safely.

Also, his last point makes me think that perhaps path ought to have
push_back so we can *add* an element with a slash in it.

If a path really *is* a container of strings, I have no problem with
having functions which build paths by parsing strings in various ways,
but it seems like those functions don't belong in the path
constructor.  What about, simply:

 struct path : std::vectorstd::string
 {
 // forwarding constructors
 };
I really don't view a path as a container of strings, at least not to the 
point of being willing to publicly derive from std::vectorstd::string. A 
container of strings seems a really useful conceptual model for how a path 
might store data internally. That conceptual model has helped answer 
various questions that were really troublesome before the model. But the 
intent was always to hand-tailor the actual interface to make it easy to 
write the kinds of code envisioned as the typical uses of the library.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: path::leaf()

2003-08-26 Thread Beman Dawes
At 10:08 PM 8/25/2003, David Abrahams wrote:
David Abrahams [EMAIL PROTECTED] writes:

  What about:
 
   assert( p.branch_path().empty() );
 
  Isn't that closer to what you are trying to express?

 I guess so.  I didn't see branch_path().

BTW, it would feel much more natural to me if it were

   path root() const;
   path branch() const;
   path leaf() const;

but because of the portable-ization of non-portable windows path
constructs, I think something this simple is impossible.
It isn't just Windows - multi-rooted file systems with named roots are a 
feature of many operating systems. Not to mention URI/URL's.

Early versions of the interface had only the three decomposition functions 
you mention above. IIRC, they even had those names. Almost immediately 
users came up with cases where they needed to distinguish between the root 
name and the root directory.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [filesystem] operator(path, path)?

2003-08-24 Thread Beman Dawes
At 07:46 AM 8/23/2003, David Abrahams wrote:

But paths do have such an ordering.   It's a lexicographic compare on
the conceptual underlying vector they contain.  In other words

x.m_name  y.m_name

Unfortunately, that vector isn't available to clients of path so you
have to use x.string()  y.string(), which is only a poor substitute
for the actual vector.
The hope is that the ability to iterate over the elements of the implied 
vector would serve as well as an actual vector. Thus the begin() and end() 
members. The assumption was that in the rare cases where an actual 
std::vector was needed, it would be easy enough to copy from begin(),end().

Off the top of my head, I'd think path::iterator would be sufficient for 
std::lexicographic_compare(), or is that not what you had in mind?

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [filesystem] native_file_string

2003-08-22 Thread Beman Dawes
At 11:01 PM 8/21/2003, David Abrahams wrote:
Beman Dawes [EMAIL PROTECTED] writes:

 At 04:49 PM 8/21/2003, David Abrahams wrote:
  
  This name, too, seems sorta redundant.  Seriously, my mind forgets
  the file_ in the middle every time I use it and I've had a bunch of
  stupid compiler errors because of it.  Is there any reason
  native_file_string is superior to native_string?

 To clearly distinguish between native_file_string() and
 native_directory_string().

Grrr.  OpenVMS certainly throws a wrench in this model, doesn't it?
No, VMS and OpenVMS were among the specific cases used to develop the 
design, and the whole point of having two functions is to accomodate the 
two different formats such file systems employ. Down at the level of calls 
to the native API, the implementation always knows which to call, by the 
way.

Should we give paths knowledge of whether they refer to files or
directories, and construct them with functions like file_path() and
directory_path(), so that there can be a single way to go native?
Two flavors of that design approach were investigated in depth, to the 
point of producing a partially working implementation for one and a fully 
working implementation of the other. They were abandoned because they 
turned out to be more complicated that expected, and the practical benefits 
were slim.

One was based on a generic grammar that distinguished between directories 
and files, and the other used classes directory_path and file_path derived 
from path, IIRC.

I can think of only one context in which I don't know whether I'm
working with a file or directory: when iterating over the contents of
a directory.  In that context I'll almost certainly want to know
whether I've got a file or directory pretty soon anyway.
While that is often the case, some user or library functions (like 
exists()) find it convenient to take a path that can be either a directory 
or a file path. It gets messy. Conversions were a problem, even though they 
were only needed occasionally. I ended up becoming much more of a fan of 
the UNIX a path is a path, doesn't matter to which approach, both at the 
grammar and interface levels.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [filesystem] operator(path, path)?

2003-08-22 Thread Beman Dawes
At 11:35 PM 8/21/2003, David Abrahams wrote:
Beman Dawes [EMAIL PROTECTED] writes:

 At 06:38 PM 8/21/2003, David Abrahams wrote:

  I need to make a mapping over paths.  Is there any important reason
  there's no operator provided?

 I don't think it has been discussed. I've had the need myself, but
 worked around it by using path::string() to generate the key.

 There were a number of discussions about operator== and !=. They can
 be subject to serious abuse and misunderstanding, and so are left
 out.

Whoa, really?

 I'm still not sure if that was the right decision, so might be
 willing to review it.

I'm curious about it, anyway.
Is path(abc)==path(ABC) true in the sense of being the same path? The 
correct answer is yes, no, or maybe, depending on the operating system. 
There are a ton of other examples where two paths which are textually 
different are sometimes the same path.

The counter argument is that defining path equality as path::string() 
equality seems natural, even if it doesn't answer the are they the same 
path? question. But this does lead to fragile programs; we can see that in 
the Boost regression test reporting where slight changes in the way bjam 
reports paths often break the status tables (which rely on assumptions 
about path equality.) operator== on paths can be a sign of poor, or at 
least fragile design.

--Beman

PS: I just changed the FAQ entry to use that example; it is clearer than 
the one given before.

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: POSIX, gcc, Comeau, Boost.Test, glibc

2003-08-18 Thread Beman Dawes
At 05:13 AM 8/18/2003, Gennadiy Rozental wrote:

 Boost.Config uses _POSIX_VERSION to determine wether sigaction()
 is available. The presence of _POSIX_VERSION doesn't indicate
 wether the POSIX API has actually been enabled.

 If we want to use Boost.Config to take care of this then
 Boost.Config also has to check wether POSIX has been enabled.
 This would be a very tedious task. glibc uses a plethora of
 flags to enable POSIX, other implementations probably will
 also add some flags.

It would be very tedious to repeat this check in every place that needs 
to
rely on POSIX API.
I think the Boost.Config is the very place to make a fix. Could you 
submit
a patch for the compilers you know about?
Our Boost.Config maintainer will need to varify and admit it in though.

I agree with Gennadiy. The detection code should be concentrated in 
Boost.Config rather than repeated in multiple libraries.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::filesystem file restrictions

2003-08-18 Thread Beman Dawes
At 05:43 AM 8/18/2003, John Torjo wrote:
 The current approach is clearly too restrictive and isn't satisfactory.
 Beyond the problems you mention, there really isn't a single standard 
for
 portability. Even 8.3 names aren't portable to systems which don't 
allow
 periods in names. A whole family of checkers is needed, giving various
 degrees of portability. Some should be supplied with the library, but
users
 also need to be able to provide their own.
 [...]

 boost/filesystem/path.hpp added this:

 typedef bool (*is_portable_test)( string  candidate );

 class scoped_portability_policy : noncopyable
 {
 public:
   explicit scoped_portabiity_policy( is_portable_test f );
   ~scoped_portabiity_policy();
  };


I'm not sure 'portability' is the right word here.

Since it can be overridden by the user, maybe a better name would be:
is_legal_name_test - and the user can override it to suit its needs.

I don't quite like is_portable_test, since I assume there is only
one 'portability', not more (at least, this is what I think, when
discussing portability). For instance, when talking about a portable 
name,
I assume there is a clear definition of what that means to everybody
(and I don't assume users could/should override that ;).


That said, instead of a scoped portability policy, which will go rather
bad with thread-safety, maybe, just a simple
set_legal_name_policy( is_legal_name_test f); would look better.

Users would (should) set this in main(), while there are no more threads,
and it could play nicely with thread-safety as well.

Yes. Plus there are some other issues.

The actual interface would include boost::filesystem::path constructors 
which take an additional argument to explicitly specify a name checker 
function. In working out use cases, it seems that temporary overrides of 
the default function are best handled via these constructors. That leaves 
only the case of wishing to permanently replace the default function, and 
the simpler approach you are talking about would be better for that.

For safety, such a set_legal_name_policy() would use the 
write-once-before-read idiom to avoid a dangerous global variable. (I'm 
actually thinking of name_check for the type, and set_name_check for 
the function name.)

I'm about to post a message asking for opinions on the details of the 
policy function pointer or object.

--Beman 

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] [Filesystem] Exact type of name checking function?

2003-08-18 Thread Beman Dawes
In discussions about being able to specify a function to check the validity 
of path element names, a simple function pointer has been used:

  typedef bool (*name_check)( const std::string  name );

Alternately, boost::function could be used. The boost::function docs 
mention several advantages over function pointers; the advantage that might 
particularly apply is that:

Boost.Function allows arbitrary compatible function objects to be targets 
(instead of requiring an exact function signature).

That can be a really powerful advantage in some applications, but usage of 
name checking in boost::filesystem seems likely to be limited to very 
simple cases where plain function pointers will do just fine. I'd also like 
to avoid the dependency on an additional library, since Boost regression 
test reporting breaks if boost::filesystem::path breaks.

So unless someone comes forward with a killer argument, a simple function 
pointer will be used.

Comments?

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [Filesystem] Exact type of name checking function?

2003-08-18 Thread Beman Dawes
At 02:08 PM 8/18/2003, Edward Diener wrote:

... one of the reasons, as I understand it, for
boost::function and boost::bind is so the end-user has the benefit of
defining his callback as he sees fit and not have it more rigidly 
dictated
by the implementation. That is the main reason I support such a callback
for boost::filesystem checking for pathname validity; it gives the 
end-user
maximum flexibility while letting the internals of boost::filesystem deal
with the result of the callback as it sees fit. Inevitably, somewhere 
down
the road, programmers will say that the callback system is too rigid for
their needs, no matter how simple is seems as if it should be now. With
boost::function such a complaint is very close to impossible. I am not
trying to create more work for the implementor, only suggesting that the
most flexible callback implementation done now will save possibly more 
work
in the future and be beneficial to end-users.

Edward,

If we loaded Boost.Filesystem up with every feature which would be 
beneficial to some user at some future time, it would be full of caches, 
allocators, path translators, vast numbers of compound operations, file 
system virtualizers, generation dataset emulators, partitioned dataset 
emulators, and a lot of other stuff. Some, like wide-character path names, 
I'd dearly love to add. Everything on that list is useful, sometimes very 
useful.

But if all those features were added, the library would almost certainly 
become so difficult to learn and use that it would no long meet its primary 
goal of being able to perform portable script-like [file and directory] 
operations from within C++ programs.

Maybe enough real-world use cases will arise to make it worthwhile to add 
boost::function (or several other Boost libraries which might bring quite a 
lot to the table.) But it needs a stronger justification that just that it 
might benefit some users. Boost::function is also something that could be 
added later without breaking existing code, AFAICS.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: boost::filesystem file restrictions

2003-08-18 Thread Beman Dawes
At 10:59 AM 8/18/2003, David Abrahams wrote:

Beman Dawes [EMAIL PROTECTED] writes:

 Yes. Plus there are some other issues.

 The actual interface would include boost::filesystem::path
 constructors which take an additional argument to explicitly specify a
 name checker function. In working out use cases, it seems that
 temporary overrides of the default function are best handled via these
 constructors. That leaves only the case of wishing to permanently
 replace the default function, and the simpler approach you are talking
 about would be better for that.

 For safety, such a set_legal_name_policy() would use the
 write-once-before-read idiom to avoid a dangerous global
 variable. (I'm actually thinking of name_check for the type, and
 set_name_check for the function name.)

 I'm about to post a message asking for opinions on the details of the
 policy function pointer or object.

This starts to align with what I've been thinking.  Every path object
could maintain a chain of checkers, and combinations of path objects
(e.g. via operator/) would use the union of the checkers of their
components, so that checking would never become less-restrictive
silently.
That is more machinery than is needed. It would be a nice design for a 
system that had to revisit elements, but for that isn't required here.

When I was first working with designs for error checking, I tried a lot of 
similar schemes. Eventually I realized that treating name validity as an 
invariant established at construction was much simpler and performed quite 
well. It doesn't require keeping a chain of checkers. It performs the 
checking at the point in the calling program where knowledge of what is 
valid is present.

  Of course, though I think this goes against the grain of
the library, I believe the default checker should always be the for
the native platform.
Because the native platform may support several different file systems 
within the same directory tree, it isn't possible to perform a full and 
correct lexical (inspection of the name only) check for the native 
platform. You in effect have to try the path and see if the operating 
system accepts it. What the lexical level name check done by class path is 
trying to do is early detection of gross naming errors.

A specific example might help. Say you are working on a Linux platform. It 
supports a really wide range of characters in names. But you know the code 
sometimes will run on Windows, so you would like to check automatically 
that some directory tree you create doesn't violate Windows naming 
conventions. You do this by specifying a Windows name checker (which 
disallows a bunch of special characters). This will prevent your program 
from inadvertently using the special characters that Windows always 
disallows.

Now when the program actually runs on a Windows box, a native path may be 
given (say by operator input) as the root, and then the relative portions 
your program adds get tacked on. If the operator supplied root happens to 
be a CD ISO-9660 file system, your carefully chosen relative names may 
fail, because the ISO-9660 names are way more restricted that general 
Windows names.

In that case, the attempt at early detection was a failure; the name 
checker did no good. But a lot of real-world errors will be detected early, 
so I don't see the name checking as a failure. It just is a partial check, 
not an iron-clad guarantee. A useful axillary mechanism, but not the main 
show.

But because it can't be an iron-clad guarantee, I'd prefer not to build an 
even mildly complex mechanism to support it. Particularly since some 
programmers will disable it anyhow.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Date iterators in Boost Date-Time

2003-08-18 Thread Beman Dawes
At 03:18 PM 8/18/2003, Victor A. Wagner, Jr. wrote:

At Monday 2003-08-18 11:39, you wrote:
Victor A. Wagner, Jr. [EMAIL PROTECTED] writes:

| how about  span ?

when read as the period of time spanned by these two, I can make
sense of it, even not as a mathematician :-)

Well, I don't know how it sounds to native speakers.
FWIW, I'm both a native-speaker and familiar with convex hulls. Regardless, 
span sounds better to me for use in the context of a Date-Time library.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::filesystem file restrictions

2003-08-16 Thread Beman Dawes
At 08:46 PM 8/14/2003, Walter Landry wrote:

Peter Dimov [EMAIL PROTECTED] wrote:
 I am not sure that it should be the responsibility of the path class to
 enforce some notion of portability. Wouldn't it be more appropriate to
 defer the portability check, if any, to the point where the path is
 actually used in a filesystem operation?

I agree, if only because I could imagine manipulating a bunch of
non-legal paths before actually using a legal one.
I gave that some thought during the initial design. Let's say you want to 
do some manipulation of an element (that is, a name representing a node in 
the tree). Perhaps you have a home grown runtime macro expansion scheme. 
You are probably better off holding the data in a std::string until your 
manipulations (say macro expansion) have progressed to the point it is a 
valid native or portable name or path. At that point, assign the string to 
a boost::filesystem::path.

  We still have to
solve the problem, but at a different place.
Yes, exactly.

  Beman's singleton stack
seems like a reasonable solution.  We can argue over what the default
portability policy should be, but it almost becomes irrelevant because
it is easy to change and forget about it.
I've been turning that solution over and over in my mind, and while it has 
some mild blemishes, it seems clearly a big improvement over the current 
design.

Among side advantages, it doesn't break any current code. So unless someone 
comes up with a killer argument against the stack approach, I'll implement 
it within a day or two.

Part of the difficulty with the current approach is documentation; I'll try 
to rectify that in the process.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::filesystem file restrictions

2003-08-16 Thread Beman Dawes
At 04:23 PM 8/15/2003, Peter Dimov wrote:
Beman Dawes wrote:
 At 01:40 PM 8/14/2003, Peter Dimov wrote:
  
  I am not sure that it should be the responsibility of the path
  class to enforce some notion of portability. Wouldn't it be more
  appropriate to defer the portability check, if any, to the point
  where the path is actually used in a filesystem operation?

 That's too late. A real path is often made up of some native elements
 (which the portability check doesn't apply to) and some portable
 elements (which the portability check should be applied to).

 The earlier the error can be detected, the better. Also, a path is
 only constructed once, but may be use multiple times.

[...]

 That would be easy if we accepted the native platform as the default,
 and portable cases had to be specially coded. But my interest is in
 portable semantics as the default.

I must be missing something. What is a portable path useful for? A
portable path _grammar_ (element sequence separated by '/') is certainly
useful, it allows me to write portable _code_ that deals with paths.
Yes, to the extent the elements (the names) are portable.

Portable path _data_ is a different story.

For sure. But we have been talking only about names which are elements of 
paths and how to string them together via a portable grammar. We haven't 
been talking about file data content at all.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] [PATCH] libs/integer/cstdint_test.cpp should define __STDC_CONSTANT_MACROSearlier

2003-08-16 Thread Beman Dawes
At 02:10 PM 8/15/2003, Douglas Paul Gregor wrote:
The test case libs/integer/cstdint_test.cpp includes cassert and
iostream _before_ it defines __STDC_CONSTANT_MACROS. This means that on
a platform that (a) supports defining the C99 macros in stdint.h when
__STDC_CONSTANT_MACROS is defined and (b) uses stdint.h somewhere in
iostream, the test fails, because __STDC_CONSTANT_MACROS has been
defined too late for stdint.h header to react (because it presumably 
has
include guards).

I believe the test case is wrong, and we should apply the patch below. 
Ok?

Doug,

I'm not sure there is anyone at the helm of cstdint_test.cpp to answer you. 
John Maddock, maybe.

So it seems to me you should go ahead and apply the patch. Just keep an eye 
on regression results for several platforms to make sure it doesn't break 
anything.

My two cents,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: boost::filesystem file restrictions

2003-08-15 Thread Beman Dawes
At 03:28 PM 8/14/2003, David Abrahams wrote:

Peter Dimov [EMAIL PROTECTED] writes:

 I am not sure that it should be the responsibility of the path class to
 enforce some notion of portability. Wouldn't it be more appropriate to
 defer the portability check, if any, to the point where the path is
 actually used in a filesystem operation?

I agree.  Having portability enforcement can be useful, but AFAICT the
way it's currently supplied is biased for the 1% case. There's an
enormous class of applications which gets paths from the user or one
part of the platform implementation (e.g. a file selection dialog),
possibly does some manipulation on the path, and uses it to open some
local files on the platform.
Yes, of course. There is no check performed in those cases. The only names 
checked are on those portions of a path created via the generic grammar 
constructors. The check does not apply to the native constructors.

  The only category of application which
needs enforced path portability, AFAICT, is the one which stores paths
in some file meant to be used on other platforms, or arguably those
which encode paths directly in portable code.  These applications are
comparitively rare IME.
Only those cases are checked, so if they are rare in your code, then you 
won't experience a problem. Let me know if you run into any cases where 
name checking gets applied to a native path; that shouldn't be happening.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::filesystem file restrictions

2003-08-15 Thread Beman Dawes
At 01:40 PM 8/14/2003, Peter Dimov wrote:
Beman Dawes wrote:

 The current approach is clearly too restrictive and isn't
 satisfactory. Beyond the problems you mention, there really isn't a
 single standard for portability. Even 8.3 names aren't portable to
 systems which don't allow periods in names. A whole family of
 checkers is needed, giving various degrees of portability. Some
 should be supplied with the library, but users also need to be able
 to provide their own.

 OTOH, a function that has to be explicitly called isn't going to be
 effective. Manual checking is too laborious in code that does a lot
 of path manipulation. A one time I took several pages of code and
 tried to add explicit checks. The code turned into a mess. Manual
 checking is also
 likely to be ignored by the very programmers who need it the most;
 those
 who have firm but erroneous ideas about what is or isn't portable.

I am not sure that it should be the responsibility of the path class to
enforce some notion of portability. Wouldn't it be more appropriate to
defer the portability check, if any, to the point where the path is
actually used in a filesystem operation?
That's too late. A real path is often made up of some native elements 
(which the portability check doesn't apply to) and some portable elements 
(which the portability check should be applied to).

The earlier the error can be detected, the better. Also, a path is only 
constructed once, but may be use multiple times.

Because it is an invariant that any fully constructed path has already been 
error checked (and operations like appends in effect construct their 
argument first if necessary to guarantee the invariant), lots of other code 
doesn't have to worry about error detection.

I'm very comfortable with applying the error check a construction time (or 
equivalent for rhs arguments), and not applying it at all for native paths. 
What I'm having trouble which is the mechanism for selecting the particular 
error function to apply.

That would be easy if we accepted the native platform as the default, and 
portable cases had to be specially coded. But my interest is in portable 
semantics as the default.

--Beman

--Beman

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Gcc problem in variant library

2003-08-14 Thread Beman Dawes
At 06:28 AM 8/7/2003, Hartmut Kaiser wrote:

Hi all,

I've tried to use the variant library to implement some new
functionality inside the Boost.Spirit library. I must say, I'm
impressed. Very well done!

I've stumbled over a problem though: gcc (Cygwin: gcc (GCC) 3.2 20020927
(prerelease)) reports:

In file included from D:/cvs/boost/boost/variant/variant.hpp:25,
 from D:/cvs/boost/boost/variant.hpp:22,
 from
D:/cvs/spirit/boost/spirit/core/non_terminal/impl/grammar.ipp:29,
 from
D:/cvs/spirit/boost/spirit/core/non_terminal/grammar.hpp:23,
 from D:/cvs/spirit/boost/spirit/core.hpp:49,
 from grammar_tests.cpp:18:
D:/cvs/boost/boost/variant/detail/forced_return.hpp:57: default argument

   specified in explicit specialization

Is it my fault? Other compilers (VC7.1) work well.
Hartmut,

The variant library developers were checking in changes almost daily until 
a week or two ago, so you might want to make sure you have the latest from 
CVS.

They haven't been active since then, however, so may be on vacation or 
otherwise busy.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Filesystem broken links

2003-08-14 Thread Beman Dawes
At 06:04 PM 8/5/2003, David Abrahams wrote:

Many of the internal references seem to be broken.  For example,
path.htm#Representation_example doesn't seem to go anywhere.
Ugh. Fixed.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 05:12 AM 8/11/2003, Alisdair Meredith wrote:
Aleksey Gurtovoy wrote:

 While I totally support the failures markup goal, I would like to see
 _the_ release criteria to include no regressions from the previous
 release item as well, preferrably for all non-beta compilers that are
 currently under regression testing. Especially since now we have tools
 to ensure it.

OTOH, it might not always be achievable.
For boost 1.31 we are having an interface breaking change to the
iterator_adaptors, and not all compilers pass all tests with the new
adaptors yet.

While this may not be a problem for the iterators library (it is
effectively new) it may have a knock-on effect on any other boost
libraries implemented on top of it.

The principle is a good one, but I be prepared to make a few allowances
in the practice.
I think a reasonable goal is that any regressions should be understood and 
discussed, rather than silent.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 04:11 PM 8/10/2003, Martin Wille wrote:

I added gcc-3.3.1 to the Linux tests for CVS HEAD.

Test failures have been down to 1% for gcc versions 3.2.3 and 3.3 a
few weeks ago. I think 3.2.3 and 3.3.1 would be good candidates for
being release criteria.
OK, let's use 3.2.3 and 3.3.1 as the Linux release criteria. Since someone 
has to research every failure, and this is our first release using formal 
criteria, we don't want to go overboard.

6 tests fail for 3.2.3 and 6 tests fail for 3.3.1


 From the list I recently posted 1 failure has been fixed and
1 failure is due to a compiler error and not considered harmful.

That leaves

 function::sum_avg_portable
 math::octonion_test
 math::quaternion_test
 test::errors_handling_test

to be fixed or to be explained. Note, all these tests fail for
both CVS HEAD and RC_1_30_0.
I've just installed 3.3.1 on Windows, and am getting those same four 
failure plus failures from:

 date_time/testmicrosec_time_clock (runtime failure)
 iterator/interoperable_fail (compile_fail test isn't failing)
That seems like a reasonable number to fix or otherwise account for.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost.Filesystem: naming, canonical path

2003-08-14 Thread Beman Dawes
At 01:07 AM 8/10/2003, David B. Held wrote:
David Abrahams [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 [...]
 As a user of the filesystem library, I am having the experience that
 obvious things are hard to find, and the docs are much harder to
 understand than they ought to be.
 [...]

Just out of curiosity, is the filesystem library being used to create a
new build or regression test system, like it was originally designed
to do?
Both the boost-root/tools/inspect and regression code use the filesystem 
library, as does the bcp code. The build system is built on the jam code, 
which is C rather than C++, and wasn't one of the envisioned uses of the 
filesystem library.

My sense is that the filesystem library is fairly widely used. I base that 
on page views on the web site, bug reports, enhancement requests, and 
comments I've gotten from users.

OTOH, the filesystem library isn't used by any other Boost libraries. That 
is pretty much is as I would expect, partially because the library is aimed 
more at end-use than as a building block for other libraries, and partially 
because it is a fairly new library.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.30.1 released

2003-08-14 Thread Beman Dawes
At 04:43 PM 8/7/2003, Daniel Frey wrote:

On Thu, 07 Aug 2003 17:38:22 +0200, Daniel Frey wrote:

 David Abrahams wrote:
 No, it means managing the next release.

 Um, no, I don't feel like I can handle that. Sorry. I'm sure it's a lot
 of work and a big Thank You! to you for doing this job, but I think 
it
 requires knowledge which I don't have. And more time than I have, but
 this seems to be everybody's problem... :)

Just to clarify: I don't meant to reject volunteering to the release
process in general. It's just that I am sure that I would make a mess of
1.30.2 due to the tight shedule. Also, I need to learn more about some
parts of boost that I don't feel comfortable with (yet).

Anyway, if you really think I should/could manage a release, I suggest
that I get more time and try my hands on 1.31.1 or something similar.

As far as 1.31.0 goes, I don't mind managing most of it. But what would be 
a great help is if you (and anyone else interested) would volunteer to work 
on patches/bugs/issues management.

There are really two aspects of this:

(1) Making sure that patches, bugs, and issues get dealt with. (I can 
provide more details on what this involves.)

(2) Figure out a better way to track patches, bugs, and issues. Somehow we 
aren't making use of available tools; we need to fix that.

Thanks,

--Beman 

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] New Filesystem Lib function to set last write time

2003-08-14 Thread Beman Dawes
At 03:35 PM 8/6/2003, Beman Dawes wrote:

I've having trouble with the Borland compiler. It is getting an error in
its own utime.h header:

Error E2303 D:\Program Files\Borland\CBuilder6\Include\utime.h 42: Type
name expected

If anyone can figure out a workaround, please let me know.
Never mind; I've worked around it. In one header Borland puts time_t in 
std::, and then in another headers assumes it is in the global namespace.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: ublas and gcc (was: Re: [boost] Re: Compiler status for GCC 3.3)

2003-08-14 Thread Beman Dawes
At 07:02 PM 8/10/2003, Gabriel Dos Reis wrote:

More seriously, did you have a chance to test GCC-3.3.1?

I just tested 3.3.1 on Windows, and the 7 ublas tests which had been 
failing on 3.3 are now passing. The variant libraries variant_test4 is also 
now passing.

The current plan is to use 3.3.1 as one of our release criteria compilers 
for Boost 1.31.0, so we will try to account for each remaining GCC 3.3.1 
failure.

There are only a handful of GCC failures left. Perhaps we can submit bug 
reports on any that turn out to be GCC problems, and GCC can join the 100% 
pass club with 3.3.2. (I still haven't gotten over Microsoft being the 
first compiler to pass 100%. The world takes some strange twists 
sometimes.)

--Beman





___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] SourceForge Tasks enabled for 1.31.0

2003-08-14 Thread Beman Dawes
SourceForge has a Tasks list feature which is now enabled for Boost. See 
the Tasks entry on the top toolbar at 
http://sourceforge.net/projects/boost/

If you click Tasks, that should take you to a page listing sub-projects. 
There is currently only one sub-project, titled 1.31.0 Release 
Preparation.

If you click on that sub-project, you should be able to see (at least) two 
tasks, and be able to browse their details.

The plan is to use this feature to actively manage the preparation for 
release 1.31.0.

IIUC, anyone should be able to view the list, but only Boost developers can 
add to it or modify it.

I've tried to set all developers permissions to be able to add/modify 
tasks, but if someone has been missed please let one of the moderators 
know. There are also several Boosters who actively help with bug reports, 
patches, and the like who may need to be added so they can help with tasks 
management. Again, please let a moderator know.

Boost developers should add tasks for themselves if they want other 
Boosters, including the release manager, to know that a task needs to be 
complete before the release. But only release managers or moderators should 
add tasks that others have to complete. A task list isn't wish list of 
things you would like to see someone else do; rather it is a list of 
specific tasks that a release manager, Boost moderator, or a library's 
developers view as a precondition for release.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: the boost::signal sample crashes

2003-08-14 Thread Beman Dawes
At 12:53 PM 8/6/2003, Russell Hind wrote:

Beman Dawes wrote:

 I don't think people were against the idea of solving the problem, but
 rather there is a need for a unified prefix/suffix header solution such 

 as John is suggesting. Developers need a canned solution; they can't
 be asked to code #ifdefs and pragmas for compilers they know nothing
about.


I thought people were against it for reasons of setting up test cases
and such, not because of the implementation.
Well, some of us are trying to get out of doing additional work:-)

At the time, I assumed it would be a pre-header and post-header for each
compiler supported under boost.  In that case, it would be good thing to
get in for the 1.31.0 release if possible.  I can supply the options for
Borland but not other compilers.
Perhaps coordinate with John Maddock? He is really our config header 
expert.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost.Filesystem: naming, canonical path

2003-08-14 Thread Beman Dawes
At 07:39 PM 8/10/2003, David Abrahams wrote:

Beman Dawes [EMAIL PROTECTED] writes:

 At 08:06 PM 8/9/2003, David Abrahams wrote:

  As a user of the filesystem library, I am having the experience that
  obvious things are hard to find, and the docs are much harder to
  understand than they ought to be.  The use of creative naming really
  gets in the way.  For example, the term complete is never defined
  anywhere.

 It is defined by the is_compler() returns clause.

I really think you have to do better than burying it in the returns
clause of a single function's docs.  The term is used all over the
library docs.
I've added complete path and relative path to the Definitions, so 
readers will get introduced to the terms much earlier. Also added a FAQ 
entry to address the why isn't it called absolute questions.

To address some of your other comments, I also changed to tutorial to no 
longer use a namespace alias, and to introduce the concept of canonical 
form. The tree/root/branch/leaf naming metaphor is now mentioned in several 
places early on. The organizational structure of lexical operations in 
path.hpp, filesystem operations in operations.hpp is presented much 
earlier.

Oh, and initial_directory points nowhere in operations.html: it's
initial_path.
Fixed. Also fixed in path.htm.

 There were lengthy discussions on the list of this and other naming
 issues during development, during review, and during the resolution
 of review issues. Many people had fairly strong views.

I could accept the idea that some of the naming choices were
neccessary, but when you add the choice of basename into the mix,
which flatly contradicts existing practice, it gives the impression of
being arbitrarily inventive.
I'm not enamored with basename. I'd like to hear from Vladimir on that, 
however, as those functions were contributed by him.

 IIRC, the idea that is_absolute( /foo ) was false on some
 operating systems was impeded by long-held beliefs.

Err, let's see... strings can be implicitly converted to paths, and
the implicit conversion treats the string as a portable generic path
format, right?  So when is /foo not absolute/complete?  Is not foo
the name of the root?  Oh, after much crawling backwards through the
docs, I see what has been done here...  I suppose it's needless to
say, but I would've chosen a different approach.  The idea that
is_complete(path(some_string)) returns different values on different
systems undermines the notion that paths are portable and generic.
The design attempts to balance the needs of those who wish to write 
portable programs and would prefer totally generic formats, with those who 
need to interact with users, and thus require native formats.

If I were king, the portable, generic version of windows-native
c:/foo would be /c/foo and the portable generic version of
windows-native /foo would be *current_path().begin()/foo.  Is
there a reason that approach was rejected?
Yes, it had five or six different problems IIRC, although some of them can 
be fixed by adding additional syntax. For example, the ambiguity in 
/c/foo - is it a relative path starting with a directory named c or a 
complete path to the c drive - can be dealt with via additional syntax.

Early implementations of the library used a lot more inventions for design 
aspects like the generic path grammar. As time went on many of them were 
removed because they just didn't work well in actual code.

...
What do you mean by semantic portability?  Isn't it undermined by the
variability of path(/foo).is_complete()?
Yes, but that gets balanced against the other design goals.

...

 The legacy operating system API's interesting because they sometimes
 take different approaches. Sometimes what we think of as a path is
 just a key used to find the actual path via some external mapping
 mechanism.

I don't think I understand what you're saying, sorry.  Could you be
more specific?
In some systems, what looks like a file name in a call like open( foo ) 
is actually a key that gets mapped by the operating system to the actual 
filename. It is an example (generation data sets and partitioned datasets 
are other examples) of really interesting ideas from non-Windows/non-POSIX 
operating systems which ultimately were not included in the filesystem 
library design.

It was mentioned as an example where, yes, other API's are a great source 
of ideas, but were not included in the interest of keeping the filesystem 
library design reasonably simple.

  The difference between is_empty(ph) and ph.empty() is too slight,
  IMO, for their differing semantics.  IMO it's not useful to have
  one function which reports both empty files and empty directories
  - the implications of the two are much too different.

 Early versions of the library did provide the finer granularity of
 is_empty_file(ph) and is_empty_directory(ph), but they didn't work
 out in practice, and we changed to a simpler set of non-compound
 functions. Remember

Re: [boost] Re: Boost 1.30.1 released

2003-08-14 Thread Beman Dawes
At 01:18 PM 8/5/2003, Daryle Walker wrote:
On Monday, August 4, 2003, at 10:50 PM, Douglas Gregor wrote:

 - Original Message -
 From: Fredrik Blomqvist [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Monday, August 04, 2003 4:40 PM
 Subject: [boost] Re: Boost 1.30.1 released


 Shouldn't the documentation for function and signals be added when
 you're making an official release also?

 Yep, we should add that to the release manager's TODO list. We can
 just pull in the 1.30.0 docs, because nothing has changed in either
 library for 1.30.1.
[TRUNCATE]

I read on an eXtreme Programming Wiki web-page that the release
procedure should be automated with a script.  This lowers the chance
that the release procedure has secret steps that only one person knows.
  Maybe we should strive for that.
Yes. It may be easier to script everything if we move the web hosting to 
SourceForge, which is under active consideration. (The current procedures 
use some GUI steps that don't script easily, and the current host doesn't 
allow shell access.)

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost.Filesystem: naming, canonical path

2003-08-14 Thread Beman Dawes
At 09:32 AM 8/12/2003, David Abrahams wrote:

...
 Once syntactic markers and/or rules are introduced, whether to
 eliminate ambiguities or to improve readability and writablity, the
 question is then what are the advantages of a new and unfamiliar set
 of markers and/or rules?

You're already making paths unfamiliar by genericizing them.
...
The generic path syntax was chosen to be a subset of the Uniform Resource 
Identifiers (URI) : Generic Syntax, RFC-2396. Because that syntax is used 
in Internet URL's, it has become familiar to millions of people even if 
they never used POSIX or Windows.

I'm not necessarily adverse to a different syntax. Several times during 
development something better was almost within reach, but I never could 
quite carry it off.

If you would like to write up a grammar and rules as a more formal 
proposal, we can all take a look and judge how it would perform in the 
cases we think are important.

The advantages are:

1. You can use familiar terminology - there should be no need to
   throw out the term absolute just to meet the expectations of
   Unix programmers who expect all paths beginning with '/' to be
   absolute.
You have conflict with existing practice for one group or another. If all 
paths which begin with '/' are complete, that conflicts with the experience 
of Windows programmers. If they aren't, that conflicts with the experience 
of POSIX programmers.

2. The rules for understanding generic path syntax are greatly
   simplified and can be understood without platform-specific
   knowledge.
I'm probably misunderstanding your proposal because it sounds like you are 
introducing special rules for the first non-'/' element. A formal proposal 
would clarify that.

3. Portable/generic paths can actually be portable/generic, as
   advertised.  You won't have the problem we have now: no
   complete path that works on a Windows machine can also work on
   a Unix machine (disregarding paths to remote machines, of
   course).
That isn't a problem in practice. The most portable and usually best way to 
deal with path completion is the same as with other libraries and 
programming languages. The bulk of the program code should always deal only 
in terms of relative paths. At some point (based on user input, an 
initial_path() default, or the operating system's path completion algorithm 
when the platform API is called with relative path arguments), the relative 
paths are completed to become the paths actually used in some platform API 
operation.

Perhaps I should explain that and give some examples in the docs. Perhaps 
the point needs to be made more strongly that the Filesystem library isn't 
doing any hidden completion manipulation of paths; in the end the native 
string just gets passed on to the operating system as is done by all other 
I/O libraries I'm aware of.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: Files of types *.ipp are unfriendly, especially to MSVC ?

2003-08-14 Thread Beman Dawes
At 09:50 AM 8/9/2003, Jeff Garland wrote:

...  So, I think
there is good precedent for this and now that workarounds for MSVC have
been provided I'd really rather not change.
While I understand the concern over proliferating file types, it really 
does seem we need to grant implementors some leeway.

I'll all .ipp as one of the file types covered by the inspection report.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Filesystem: undecorated

2003-08-14 Thread Beman Dawes
At 06:09 PM 8/5/2003, David Abrahams wrote:

The Filesystem docs use the term undecorated name in a few places
apparently without defining it.  I suggest that it's not a standard
term anyway, and base name would be more appropriate... unless of
course undecorated means something else.
I changed both uses to more explicit wording.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Release Manager's Checklist added

2003-08-14 Thread Beman Dawes
At 07:56 AM 8/8/2003, Alisdair Meredith wrote:
Daniel Frey wrote:

 The trackers are IMHO a problem because they require a lot of work. The
 current state shows that it is not maintained well, e.g. there are open
 bugs which are long closed in CVS, see #451535. Sure we could do better
 in theory, but is it worth it? Why not use regression tests to track
 bugs? AFAICS people pay a lot of attention to the regression tests and
 the whole systems work pretty well.

 Also, I hope that it could make the release manager's work easier to
 have fewer sources to track :)

 OK, what do others think? Am I the only one who feels uncomfortable 
with
 the SF-trackers?

The tracker is worse than useless if it is not actively supported.
Boost users who do not subscribe to the lists will submit bugs through
them, and wonder why they don't get the feedback they expect.  If bugs
are never marked closed, as you say, it looks bad on the project.

OTOH, regression tests are only good for the conditions they test for.
If we expand the tests to cover every potential bug, I suspect we will
not have enough computers to run them on.  Bug trackers let you record
and deal with bugs that are not part of the main-line regression suite.

As you can see, I am neither for-nor-agianst the bug tracker.  But I do
think we need to either adopt it, or disable it somehow.  It should not
be left as some half-way house.

Exactly!

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] GUI/GDI template library

2003-08-14 Thread Beman Dawes
At 10:54 AM 8/5/2003, Brock Peabody wrote:

 I don't know much about other GUI systems but win32
 and MFC. I think we can try to define the low-level
 layer using win32 and/or MFC as the starting point.
 If we cover these two, it'll be a good start and prove
 of concept.

Actually for a proof of concept we could get by with just one.
Given the major differences between underlying GUI API's, your really need 
to be developing in parallel for both Windows and Linux right from the 
start.

We will have to be able to run on a non windows
platform before we can submit the library for review anyway.
Yes.

Do you think we will be OK restricting this library to the more
conformant compilers?
Yes.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Filesystem: basename

2003-08-14 Thread Beman Dawes
At 11:32 AM 8/6/2003, David Abrahams wrote:

I think this is a badly-chosen name.  Both POSIX and Python have a
basename function which does roughly what our leaf() function does.

 ...

I don't think we should use creative naming in cases like this one.
The naming scheme based the root/branch/leaf tree metaphor was carefully 
worked out and reviewed over a long period of time. It would not be 
beneficial to use a different naming scheme for one of the decomposition 
function names, IMO.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] ABI prefix/suffix headers [was: boost::signal sample crashes]

2003-08-14 Thread Beman Dawes
At 07:57 AM 8/12/2003, John Maddock wrote:

 I'm not sure how to proceed with this so if there is anything I can do
 in the meantime, let me know.  Feel free to e-mail me off the list.

ABI prefix and suffix headers are now in cvs, as is
boost/config/auto_link.hpp for selecting link libraries - for now refer 
to
the header for usage, I'll add this to the config docs in due course, but
lets get it running through the regression tests first...

Once the headers are documented and ready for prime time, please post a 
note to let Boost developers know what they are supposed to do to get 
started using the headers.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: UI++ [was: GUI sublanguage; Re: Re: Re: Re: GUI/GDI template library]

2003-08-14 Thread Beman Dawes
At 11:34 AM 8/9/2003, brock wrote:

- Original Message -
From: Beman Dawes [EMAIL PROTECTED]
To: Boost mailing list [EMAIL PROTECTED]; 'Boost mailing list'
[EMAIL PROTECTED]
Sent: Saturday, August 09, 2003 8:31 AM
Subject: RE: [boost] Re: UI++ [was: GUI sublanguage; Re: Re: Re: Re:
GUI/GDI
template library]


 At 09:27 AM 8/8/2003, Brock Peabody wrote:

  ...  I took the library from work code ...

 Brock,

 Do you have formal permission from the library's owner to do that?
 Presumably the code is owned or licensed by your employer.

I don't intend for the library to be part of boost, just an example 
people
could play with.  We're going to start from scratch for Notus.

I'm a manager and I wrote all the code I posted.  My boss, who is a VP,
thinks it's great.  I don't know who else I would need to ask.  What do 
you
think?

Well, a Vice-President is normally an officer of the corporation, so can 
give permission. I'm not quite sure thinks it's great is what a lawyer 
would call permission. To protect yourself, you might want to be sure the 
VP understands that you have posted an excerpt from some code owned by the 
company.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: boost/math octonion/quaternion failures?

2003-08-14 Thread Beman Dawes
At 09:57 AM 8/13/2003, Hubert Holin wrote:

Somewhere in the E.U., le 13/08/2003

   Bonjour

  Sorry, I have been away from boost for the last month an a half or
so (an unbelievable string of deadlines *and* a vacation :-)  ), with
some of the things I had done then not checked in.

  I'll try to fix the Gcc problem today (or tomorrow morning at the
latest), but I fear that some of the work I did for special functions,
some of which are required by quaternions and octonions, might create
some new, more delicate, problems with older compilers (in other words,
Gcc 2.95.x might be out).

  At any rate, I only have CodeWarrior locally available for tests
(but I will read the results of the various platform runs to fix
things), so it might prove inconvenient for the imminent release.
If there are new failures, is it OK if I try to fix them? I've got 8 
compilers, will have a pretty good idea if changes break anything.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: UI++

2003-08-14 Thread Beman Dawes
At 02:38 AM 8/9/2003, Paul Hamilton wrote:


I am currently porting something called XMLUI to use boost/bjam etc.
Paul,

Is there a URL available for samples we could look at? Talking about an XML 
user interface description isn't something I can do in the abstract.

Also, it might be better if you posted with a specific subject, so those 
not following the other UI++ thread can participate.

Cheers,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: UI++ [was: GUI sublanguage; Re: Re: Re: Re: GUI/GDI template library]

2003-08-14 Thread Beman Dawes
At 06:42 PM 8/10/2003, brock wrote:

This makes me wonder what the legal ramifications are of developing code
for a boost or other non 'work' project while at work?  I also made it
clear to my boss, who is a good programmer and uses boost, that I planned
on devoting a significant amount of time to this new GUI project.  Again,
he thought it was great.  Should I get this permission formalized?
Yes, to protect both yourself and Boost. In particular, figure out ahead of 
time who owns the code and thus whose copyright goes in the code. My own 
rule is that the first line of code that goes into a new source file is 
always the copyright line. Avoids one source of potential misunderstanding.

It sounds like in your case the company will hold the copyright, so you 
should definitely get formal permission to contribute the code to Boost.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 10:50 PM 8/10/2003, David Abrahams wrote:

Beman Dawes [EMAIL PROTECTED] writes:
...
   iterator/interoperable_fail (compile_fail test isn't failing)

That is a compiler bug, which I guess ought to be reported again.
Yes. It saves us work in the long run when compilers get fixed. Please do 
report it.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: swappable user defined types and STLport libraries

2003-08-14 Thread Beman Dawes
At 07:49 PM 8/5/2003, Pavel Vozenilek wrote:

Edward Diener [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 Beman Dawes wrote:
  At 09:58 PM 8/4/2003, Alisdair Meredith wrote:
 
   There is a problem with the Borland BCB6 compiler...
 
  What is the status of the Borland compiler as far as fixes and
  updates go? Have they announced any plans?

 Although they have not announced anything further about more BCB6 
service
 packs, it is easy to guess that there will not be any more. All
indications
 are that Borland is working on a BCB7 release but, in true Borland
fashion,
 there is no date given when it will be released until it happens.
...

Something is happening right now - announcement and beta invitation is on
http://bdn.borland.com/article/0,1410,30279,00.html.

OK, sounds good. Thanks for the heads up.

I'd like to be sure that some Booster signs up for this beta and starts 
running the Boost regression tests against it. And then follows up with bug 
reports to Borland as needed. Any bugs fixed in the compiler before it 
ships are bugs Boosters don't have to cope with later.

Any volunteers:-?

--Beman 

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 08:45 AM 8/11/2003, Jeff Garland wrote:

 I've just installed 3.3.1 on Windows, and am getting those same four
 failure plus failures from:

   date_time/testmicrosec_time_clock (runtime failure)

This is likely due to the posix API call to std::time not providing
stable return values.  That is, when I sample the time rapidly the second
value is less than the previous value. So this is more of a platform /
library issue than a compiler issue.  This isn't a new problem with this
particular configuration...
OK, I've added a note to that effect. Consider the failure accounted for.

Is there any point to report this to someone? Cygwin?

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Files of types *.ipp are unfriendly, especially to MSVC ?

2003-08-14 Thread Beman Dawes
At 05:46 PM 8/9/2003, David Abrahams wrote:
Paul A. Bristow [EMAIL PROTECTED] writes:
 PS Do files of type .ipp get checked for nasties like tabs, dud 
newlines?

I dunno.  You can check the scripts as well as I can.

.ipp was added recently.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 09:56 AM 8/9/2003, Matthias Troyer wrote:

As far as I can see Jens Maurer has updated boost.random to his
standards proposal, but not yet the documentation. I believe it would
be important to have the random documentation be consistent with the
sources, especially since the interface has changed significantly.
I've added this to the 1.31.0 task list. See 
http://sourceforge.net/pm/task.php?group_project_id=30994group_id=7586func=browse

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 07:37 AM 8/11/2003, David Abrahams wrote:
Aleksey Gurtovoy [EMAIL PROTECTED] writes:

 Beman Dawes wrote:
 Assuming I'm release manager for 1.31.0, I'm going to publish explicit
 release criteria for key platform/compiler pairs. Basically, the
 criteria will be 100% accounting for all failures on those
 platform/compiler pairs.

 While I totally support the failures markup goal, I would like to see
 _the_ release criteria to include no regressions from the previous
 release item as well, preferrably for all non-beta compilers that are
 currently under regression testing. Especially since now we have tools
 to ensure it.

I worry a little about requiring library authors not to regress on
compiler combinations they don't test with.  For example, who is going
to address the one lexical_cast failure that's plaguing the 1.30.2
release?  It's only on intel-7.1 with STLPort and looks for all the
world like a config problem.
It can be very time consuming to track down the exact reason for failures. 
Thus we should focus our 1.31.0 effort on a small number of widely used 
compilers which don't have a lot of problems.

For a lightly used toolset like intel-7.1 with STLPort, looks for all the 
world like a config problem seems like a good enough resolution to me.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::random problem

2003-08-14 Thread Beman Dawes
At 12:48 PM 8/12/2003, Hugo Duncan wrote:
Trying to use the new random library on borland gives runtime problems.

The following program below gives a constant result of 85.

I have tracked the problem to variate_generator.hpp, where the internal
engine type is computed

   typedef typename random::detail::engine_helperhave_int,
want_int::BOOST_NESTED_TEMPLATE impldecorated_engine, typename
Distribution::input_type::type internal_engine_type;

In the example program it is using uniform_int_float instead of 
uniform_01
(engine_helperfalse,true instead of engine_helpertrue,false)

I could patch the engine_helper to work using mpl::bool_, but the
dependency is probably not wanted?

I've had some email with Jens about the Borland compiler. He is aware of 
the problems caused by compiler bugs, but hasn't had time to figure out 
workarounds.

I'm really hoping he will do some work on documentation (to reflect the new 
interface) before spending any time on broken compilers.

That doesn't really answer your question, but perhaps it help a bit.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


RE: [boost] Re: UI++ [was: GUI sublanguage; Re: Re: Re: Re: GUI/GDI template library]

2003-08-14 Thread Beman Dawes
At 09:27 AM 8/8/2003, Brock Peabody wrote:

...  I took the library from work code ...

Brock,

Do you have formal permission from the library's owner to do that? 
Presumably the code is owned or licensed by your employer.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::filesystem file restrictions

2003-08-14 Thread Beman Dawes
At 06:03 AM 8/14/2003, Walter Landry wrote:

Greetings,

I've started using boost::filesystem recently, and I'm mostly very
happy.
Wow! A very happy user. Or at least mostly very happy. That's good news:-) 
Seriously, it is a powerful motivator to get that kind of feedback.

  One thing bothers me, though.  Why does it implement any
restrictions, by default, on what kind of files it allows?
See below.

...
I also noticed that you can't open a directory named . or ..,
though I think ./ and ../ both work.
Hum... I'm not sure that is currently intended.

  Files starting or ending with spaces also don't work.

That is intended, although it may change if the portability checking scheme 
changes.


I understand that I can (painfully) work around it by using a
different context, but I don't understand why boost::filesystem wants
to restrict me to a set of filenames that are portable.  Isn't that a
bit too much handholding?  I don't mind having an is_portable()
command or something similar, but it is incredibly annoying to have to
abide by someone else's filename restrictions.
The current approach is clearly too restrictive and isn't satisfactory. 
Beyond the problems you mention, there really isn't a single standard for 
portability. Even 8.3 names aren't portable to systems which don't allow 
periods in names. A whole family of checkers is needed, giving various 
degrees of portability. Some should be supplied with the library, but users 
also need to be able to provide their own.

OTOH, a function that has to be explicitly called isn't going to be 
effective. Manual checking is too laborious in code that does a lot of path 
manipulation. A one time I took several pages of code and tried to add 
explicit checks. The code turned into a mess. Manual checking is also 
likely to be ignored by the very programmers who need it the most; those 
who have firm but erroneous ideas about what is or isn't portable.

So it comes down to an interface problem. What is the best way for the user 
specify a portability checking function to override the default checking 
function?

It would be trivial to add an additional path constructor that takes a 
checking function or function object.

But that would kill ease-of-use. It is one thing to require an additional 
constructor argument in the fairly limited use native case, but the 
portability checking is applied to each and every path object constructed, 
including the many path temporaries created by the automatic conversions 
from char * and string.

(That kill ease-of-use point might be hard to understand if you haven't 
actually written code using the library. The automatic conversions really 
do allow script-like programming ease, and are reasonably safe given the 
conversion result is class path.)

Also, the portability checking policy often needs to propagate to called 
functions such as third party liberties. Adding overloads of functions to 
take an additional argument is also too messy, and doesn't provide for 
automatic pass-through to lower level functions. In most (but not all) 
programs it really would be convenient if portability checking policy was a 
global. But of course we all know that global variables are consider 
harmful. There are also several valid use cases where a program needs to 
switch back and forth between portability policies.

Another approach is to provide a way to tell class path that within a file 
scope use a policy other than the default. It would have to be carefully 
worked out to avoid ODR violations, and to ensure propagation to called 
library functions. I have not been able to come up with a workable version 
of this approach.

That was about as far as my thinking had gotten in the past. While 
composing this reply, I came up with another possible solution. Let's say 
boost/filesystem/path.hpp added this:

   typedef bool (*is_portable_test)( string  candidate );

   class scoped_portability_policy : noncopyable
   {
   public:
 explicit scoped_portabiity_policy( is_portable_test f );
 ~scoped_portabiity_policy();
};
The effect of constructing a scoped_portability_policy is to push p onto a 
stack. The destructor pops the stack. Class path uses the top stack entry 
as the current portability checker. The stack is initialized with a default 
portability checker.

Most programs which wanted a policy other than the default would just being 
something like this:

  int main()
  {
 scoped_portability_policy( posix_portability_check );
 ...
Although the stack is global, when coupled with scoped_portability_policy, 
it is safer than a single global variable (because library functions which 
push are guaranteed to pop.)

Of course it can be subverted by static or heap allocation. (Aside: Is 
there a reliable way to prevent static or heap allocation?)

I'm curious to hear what others would think of the above scheme.

--Beman

___
Unsubscribe  other changes: 

Re: [boost] anonymous lock in boost/libs/random/build

2003-08-14 Thread Beman Dawes
At 02:48 AM 8/13/2003, Russell Hind wrote:

This lock has been there since I tried updating boost last night (about
8 hours ago).
Please report stale locks to SourceForge support. They are the only folks 
who can fix the problem.

Thanks,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost.Filesystem: naming, canonical path

2003-08-14 Thread Beman Dawes
At 12:31 PM 8/11/2003, David Abrahams wrote:

Beman Dawes [EMAIL PROTECTED] writes:

 At 07:39 PM 8/10/2003, David Abrahams wrote:

  If I were king, the portable, generic version of windows-native
  c:/foo would be /c/foo and the portable generic version of
  windows-native /foo would be *current_path().begin()/foo.  Is
  there a reason that approach was rejected?

 Yes, it had five or six different problems IIRC, although some of
 them can be fixed by adding additional syntax. For example, the
 ambiguity in /c/foo - is it a relative path starting with a
 directory named c or a complete path to the c drive

Read as a generic path according to my system, it is not a relative
path because it starts with a slash.  That's simple and there should
be no confusion assuming you know you're not looking at a native format..
Can that scheme represent paths which are relative to the root directory of 
an unspecified drive? Relative to the current directory of a specified 
drive? Can it handle server and share names?

And most important, can it do so in a way that is obvious to a human reader 
or writer?

Schemes which don't supply obvious syntactic markers such as : or // 
for special names are very hard for a human reader or writer to parse 
correctly.

Once syntactic markers and/or rules are introduced, whether to eliminate 
ambiguities or to improve readability and writablity, the question is then 
what are the advantages of a new and unfamiliar set of markers and/or 
rules? The existing operating system syntax and rules are familiar to a 
large number of programmers. Even programmers who don't ever work with 
multi-rooted file systems often have a passing familiarity with the Windows 
rules, which are particularly important as it is the most widely used 
multi-rooted system.

In other words, it isn't enough for some competing scheme to work. It has 
to have enough advantages to make it worthwhile for programmers to learn 
any new syntax or rules.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-14 Thread Beman Dawes
At 02:56 PM 8/11/2003, David Abrahams wrote:
Beman Dawes [EMAIL PROTECTED] writes:
 For a lightly used toolset like intel-7.1 with STLPort, looks for all
 the world like a config problem seems like a good enough resolution
 to me.

In that case, can I release 1.30.2?
Yes, as far as I'm concerned.

  I don't like having the 1.30.1
debacle hanging over my head.
Understood.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] cstdint.hpp missing docs?

2003-08-14 Thread Beman Dawes
At 11:48 AM 8/11/2003, David Abrahams wrote:

I'm not sure if this is intentional or not, but cstdint.hpp includes
typedefs for things like uint32_t, but they're not documented.  If
uint32_t is meant to be an unsigned integer with exactly 32 bits,
well, I need that and I don't see any other obvious way to get it.
That is supposed to be documented by the Exact-width integer types 
paragraph in boost-root/libs/integer/cstdint.htm. If you think those docs 
are lacking, please make whatever improvements you think helpful.

If questions arise as to the exact specification, the C99 standard (ISO/IEC 
9899:1999) is the authority.

HTH,

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: swappable user defined types and STLport libraries

2003-08-14 Thread Beman Dawes
At 04:57 PM 8/6/2003, Alisdair Meredith wrote:

That does bring up the question of how the config for the new compiler
is published though.
What has happened in the past is that config related changes (config 
headers and build toolsets) start appearing in CVS well before a compiler 
is actually released. Presumably the knowledge comes from beta compilers, 
but because of NDA's no mention is made of how the knowledge is acquired.

Thus by the time the compiler is released to the public, config changes are 
often already reflected in Boost releases.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: boost::fs?

2003-08-14 Thread Beman Dawes
At 03:20 PM 8/6/2003, David Abrahams wrote:

 A namespace alias of fs:: is used in an example on one of the doc
 pages, and in some of the test and implementation code. Is that a
 concern?

Yes!  People will be very confused, IMO.  I clearly was.
Hum... It really makes the tutorial hard to read if all the fs::'s are 
replaced with boost::filesystem::. How would you feel about the tutorial 
giving a

   using boost::filesystem;

and then eliminating the qualification entirely? I was trying to avoid 
that, as it isn't the best programming practice, but people are used to 
simplification in tutorials so maybe it is OK.

I had thought the use of a namespace alias was the better solution.

Ah, I haven't compiled anything yet. ;-

Oh:-! Well, that would clear up any confusion pretty quickly.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::fs?

2003-08-14 Thread Beman Dawes
At 03:59 PM 8/5/2003, David Abrahams wrote:

Why are we using such a cryptic namespace name?  I mean, I can
understand wanting to abbreviate template_metaprogramming, but
filesystem doesn't seem too bad and you could use filesys; people
will use namespace aliases anyway.
The Filesystem Library is in namespace boost::filesystem.

A namespace alias of fs:: is used in an example on one of the doc pages, 
and in some of the test and implementation code. Is that a concern?

  Sorry to complain, but fs has
been rubbing me the wrong way since I started using it.
Why are you using it then? I just double checked, and it doesn't appear in 
any of the filesystem headers.

--Beman 

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: libs/config/configure screwed up in DOS format in 1.30.1

2003-08-14 Thread Beman Dawes
At 07:58 AM 8/6/2003, John Maddock wrote:
 Fixed now.  I wonder if it really ought to be checked in as binary so
 this doesn't happen?

Personally I think that would cause even more problems (for me at least),
note that there are plenty of other files that need the \r's stripping in
order for them to work on Unix, in fact some pre-processors (some 
versions
of gcc for example) can't even cope with \r's in header files (if there's 
a
\r between a \ and a \n).

The only complete solution is to make sure that all text files have their
\r's stripped before producing the tar.gz file.

[ footnote - one way to do this is with the new bcp tool - something 
like:

bcp --boost=boost-path --unix-lines --cvs . destination-path

will produce a clean copy of all of the boost cvs with \r's stripped from
text files - we could probably even write a Jamfile that would automate 
the
release process come to that. -- end footnote ]

The way we've been doing it for releases is to do a CVS export with the 
option for Unix line endings. Once we started with that approach, the 
complaints stopped.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Iterator adaptor question

2003-08-14 Thread Beman Dawes
At 03:06 PM 8/6/2003, Thomas Witt wrote:

The whole point in adapting is that you modify some but not all
behaviour/interface of a thing. Ther is nothing a pair provides that can
be reused so adaption is pointless.

That's why the new version provides iterator_facade and
iterator_adaptor. iterator_facade helps with implementing iterators,
iterator_adaptor is for adapting iterator like types.
I found this separation of usages into iterator_facade and iterator_adaptor 
to be a vast improvement, FWIW. It seems to have resolved all the 
frustrations I felt with the old interface.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Release date? (was the boost::signal sample crashes)

2003-08-12 Thread Beman Dawes
At 08:00 AM 8/11/2003, John Maddock wrote:

 I'm not sure how to proceed with this so if there is anything I can do
 in the meantime, let me know.  Feel free to e-mail me off the list.

OK, I've got this working pretty well with regex - but as it entails
changes
to boost.config I'm not sure if I should make the changes now or wait 
until
after the next release - Beman I guess we have a couple of weeks still to
run yes?

Yes. Target dates haven't been set yet, so you should be OK.


[ Footnote - on second thoughts it just means moving code that's in
boost.regex now into the central config system it's not new code - so 
maybe
I should go ahead ]

Yes.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-12 Thread Beman Dawes
At 01:39 PM 8/8/2003, Martin Wille wrote:

In order to avoid problems to be discovered too late for fixing them
I'll list the tests that fail for many compilers/compiler versions
on Linux:

- filesystem::operations_test
Hum... That looks like a CVS problem. It looks like 
boost-root/libs/filesystem/src/operations_posix_windows.cpp has not been 
updated to 1.15.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Boost.Filesystem: naming, canonical path

2003-08-10 Thread Beman Dawes
At 08:06 PM 8/9/2003, David Abrahams wrote:

As a user of the filesystem library, I am having the experience that
obvious things are hard to find, and the docs are much harder to
understand than they ought to be.  The use of creative naming really
gets in the way.  For example, the term complete is never defined
anywhere.
It is defined by the is_compler() returns clause.

  The closest we come is in the following naming rationale.

is_complete

bool is_complete() const;

Returns: For single-root operating systems,
has_root_directory(). For multi-root operating systems,
has_root_directory()  has_root_name().

Naming rationale: The alternate name, is_absolute(), causes
confusion and controversy because on multi-root operating systems
some people believe root_name() should participate in
is_absolute(), and some don't.

I'm sorry if this sounds harsh, but I think the cure for someone being
confused about the term absolute on multi-root OSes is to pick the
definition that allows the term to be meaningful (an absolute path
identifies a specific location, and so must include the root) and *add
a clarifying note or definition for the corner case*, not to pick some
new term which nobody knows about and makes the library hard to
approach.
The library isn't all that large that people can't just read about each 
function.

There were lengthy discussions on the list of this and other naming issues 
during development, during review, and during the resolution of review 
issues. Many people had fairly strong views. IIRC, the idea that 
is_absolute( /foo ) was false on some operating systems was impeded by 
long-held beliefs. By giving the function an unfamiliar name, people are 
forced to actually read the specs instead of just assuming what it does, 
and that ends up being a good thing, IMO.

I suppose if we were to discuss the names all over again we would come up 
with a different set of names. But unless the new names are markedly 
superior to the old names, it would just be churn to change them, and might 
be a real step backwards.

--- aside ---
Regarding complete paths, is there any guarantee that they are
canonical?  Is foo/bar/../baz reduced to foo/baz?
Yes. That is documented as a postcondition specifying canonical form for 
all the functions that modify a path. I've just double checked, and it 
doesn't look like any were missed, but let me know if you spot any way to 
alter path state that doesn't supply that postcondition.

  See
http://java.sun.com/j2se/1.3/docs/api/java/io/File.html#getCanonicalPath()
for an example of the possible semantics.  We could learn a lot about
what's useful and broadly implementable by studying the libraries of
Java and/or Python (yes, I realize that the portability of Java ain't
quite what it's cracked up to be).
Yes, I often found other libraries helpful, although many of them offer 
syntactic portability rather than semantic portability.

The legacy operating system API's interesting because they sometimes take 
different approaches. Sometimes what we think of as a path is just a key 
used to find the actual path via some external mapping mechanism.

--- aside ---

The formal description of some of the function semantics leaves
something to be desired.  For example, the docs for remove_all say:

unsigned long remove_all( const path  ph );

Precondition: !ph.empty()
Postcondition: !exists( ph )
Returns: The number of files and directories removed.
Throws: if ph.empty(). See empty path rationale.

So, what does this do?  At first I thought it removed all the
directories along the branch described by ph.  I think I'm now
inferring that if ph is a file, it is the same as remove( ph ) and
otherwise it removes all of the files and subdirectories in ph and
then removes ph.  A plain English description would help a lot here.
This applies to many other functions in the library also.
Yes, a general prose description for each library would help.

I also have some doubts about the validity of the postcondition, since
another process can come along and create ph again before remove_all
returns.  This applies to many other functions in the library also.
The docs really weren't clear enough about postcondition/race-condition 
interactions. I've just added a paragraph to 
boost-root/libs/filesystem/doc/index.htm#Common_Specifications to make it 
clear that postcoditions don't hold if race-conditions exist.

Because of the race-condition problem, the original docs did not specify 
postconditions. Someone pointed out how much clearer they because if 
postconditions were used, and the docs got converted at that point.

The difference between is_empty(ph) and ph.empty() is too slight, IMO,
for their differing semantics.  IMO it's not useful to have one
function which reports both empty files and empty directories - the
implications of the two are much too different.
Early versions of the library did provide the finer granularity of 

Re: [boost] Re: Wrong version.hpp in Boost 1.30.1 download

2003-08-10 Thread Beman Dawes
At 01:13 PM 8/5/2003, Daryle Walker wrote:

On Monday, August 4, 2003, at 11:27 PM, David Abrahams wrote:

 Alisdair Meredith [EMAIL PROTECTED] writes:

 version.hpp still claims to be version 1.30.0

 Oh well.  I guess there are some details missing from the release
 manager's responsibilities on the release procedure page.

Can you (or Beman, who I think usually does the releases) add these
directions to CVS?  You may want to ask Beman if there are any other
details not yet mentioned in the docs.
I'll try to update it. The problem is that the actual checklist I use is 
quite a bit longer, and a lot of the steps are specific to my environment. 
For example, it gives the steps needed to run the particular graphical FTP 
program I use.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Release Manager's Checklist added

2003-08-10 Thread Beman Dawes
At 05:58 PM 8/9/2003, David Abrahams wrote:

[EMAIL PROTECTED] (Joerg Walter) writes:
 OK, what do others think? Am I the only one who feels uncomfortable 
with
 the SF-trackers?

Nope; I dislike them also.  That doesn't mean trackers in general are
a bad idea.

I'm not happy with the S/F trackers either. But like Dave, I definately 
feel we need some form of tracking.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Hey, I have a replacement test file here! (was: Added new testfile, need help testing)

2003-08-10 Thread Beman Dawes
At 01:32 AM 8/9/2003, Daryle Walker wrote:

I uploaded a new test file for the I/O state saving classes over a
month ago.  How do we get the regression test guys to use the new file
instead?
Add to or otherwise modify the Jamfile that drives the test?

Looks like the io tests are specified in boost-root/status/Jamfile:

run
  libs/io/test/ios_state_test.cpp 
lib../libs/test/build/boost_test_exec_monitor   # sources
  : # args
  : # input-files
  : runtime-linkstatic # requirements (static runtime required by 
Metrowerks)
  ;

So add another test or change this one.

The regression test guys just run bjam against the Jamfile. It is up to 
library maintainers to make Jamfile changes when needed.

When a library grows beyond a single simple test, it becomes worthwhile to 
set up a test directory with its own Jamfile. Look at say filesystem for 
how it is done.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Can't get from anonymous CVS

2003-08-10 Thread Beman Dawes
At 11:29 PM 8/7/2003, Victor A. Wagner, Jr. wrote:

At Thursday 2003-08-07 17:28, you wrote:
cvs server: [11:59:06] waiting for anoncvs_boost's lock in
/cvsroot/boost/boost/libs/numeric/mtl/test
cvs server: [15:35:09] waiting for anoncvs_boost's lock in
/cvsroot/boost/boost/libs/numeric/mtl/test

that's been going on every 30 seconds for 5 1/2 hours

does anyone know how to fix that problem?
[deleted]
Ok, so I can't subtract...but it's now
cvs server: [20:28:39] waiting for anoncvs_boost's lock in
/cvsroot/boost/boost/libs/numeric/mtl/test
When a SourceForge CVS lock goes stale you have to put in a request to 
SourceForge for them to clear the lock.

They are pretty prompt about fixing such problems, although it is past all 
understanding why they don't put some automated fix in place. Numerous 
project admins have asked for this in the past.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: time_duration bug in Boost 1.30.0

2003-08-10 Thread Beman Dawes
At 05:27 PM 8/7/2003, Bo Persson wrote:

Paul A. Bristow [EMAIL PROTECTED] wrote:


 (And other MS specific unhelpful warnings which could be dealt with
by

 #ifdef _MSC_VER  or BOOST_?
 #pragma warning (disable : 4800) // inefficient bool conversion?
 #endif

 As a general point, is there any reason why 'known to be unhelpful'
 warnings like this cannot be disabled in Boost code?


A problem here is that the inefficient bool conversion often
actually *is* an inefficient implicit conversion to bool. IME, most of
these warnings can be removed by actually producing a bool value.
Adding == 0 or != 0 is often all it takes.
FWIW, I've done that for years in my own code, and have come to believe 
that it results in better code. It makes the intent clear to someone 
reading the code. With an implicit conversion, a reader is unsure whether 
or not the conversion was intended.

To answer Paul's question, some of the toolsets do disable known to be 
unhelpful warnings. But I agree with Bo that this warning shouldn't be one 
of them.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] GUI/GDI template library

2003-08-10 Thread Beman Dawes
At 07:30 PM 8/6/2003, Joel de Guzman wrote:

Beman Dawes [EMAIL PROTECTED] wrote:
 At 10:54 AM 8/5/2003, Brock Peabody wrote:

   I don't know much about other GUI systems but win32
   and MFC. I think we can try to define the low-level
   layer using win32 and/or MFC as the starting point.
   If we cover these two, it'll be a good start and prove
   of concept.
  
  Actually for a proof of concept we could get by with just one.

 Given the major differences between underlying GUI API's, your really
need
 to be developing in parallel for both Windows and Linux right from the
 start.

And don't forget the Mac ;-)
For a proof-of-concept, implementations are needed for enough of the 
framework to make it obvious it can be make to work with GUI API's that 
follow the same general model. Particularly the 
event/callback/other-flow-of-control mechanisms. I know that Windows and X 
Window are major API's that follow very different flow-of-control models. 
Is the Mac sufficiently different to be an important proof-of-concept case? 
Are there others?

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.31 release?

2003-08-10 Thread Beman Dawes
At 01:39 PM 8/8/2003, Martin Wille wrote:
David Abrahams wrote:
 Matthias Troyer [EMAIL PROTECTED] writes:
...
I would be interested in
hearing about the plans for a Boost 1.31 release


 As far as I know the CVS is in very good health at the moment.  The
 only major thing I know needs to be done is to complete the
 documentation for the new iterator adaptors.  I'd like to get that
 over with soon, so it isn't hanging over our heads much longer.

In order to avoid problems to be discovered too late for fixing them
I'll list the tests that fail for many compilers/compiler versions
on Linux:

- filesystem::operations_test
- function::sum_avg_portable
- iterator::interoperable_fail (a compile_fail test that fails,
   probably not a real problem)
- math::octonion_test
   math::quaternion_test
- test::errors_handling_test

I hope that lists helps.
Assuming I'm release manager for 1.31.0, I'm going to publish explicit 
release criteria for key platform/compiler pairs. Basically, the release 
criteria will be 100% accounting for all failures on those 
platform/compiler pairs.

I assume that Linux/GCC will be one of those platform/compiler pairs. I 
need input from Linux/GCC experts as to which version of GCC should be used 
for the release criteria.

I see GCC 3.3.1 has just been released, and so will be switching the 
Windows/GCC tests to use that version. Unless anyone objects, it will be 
one of the Windows release criteria compilers.

--Beman

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Release Manager's Checklist added

2003-08-08 Thread Beman Dawes
I've added a detailed Release Manager's Checklist 
(boost-root/more/release_mgr_checklist.html).

It will take up to 24 hours for this to be reflected on SourceForge's 
public CVS (although it is available right away for those with write 
access).

There are five items on the checklist that take up the bulk of the release 
manager's time (see abbreviated descriptions below). The release manager is 
near exhaustion by the time these are complete. I think we need to figure 
out a way to delegate this management effort to more people. (There are 
already quite a number of people helping with bits and pieces of the 
overall process, but we need to formalize that a bit more, IMO, so the 
release manager doesn't get lost in the details.)

--Beman

* Monitor inspection report to verify problems are being dealt with.

* Monitor regression tests to verify that errors are dealt with.

* Monitor mailing lists to verify that patches are being dealt with.

* Monitor mailing lists and bug tracker to verify that bug reports are 
being dealt with.

* Monitor CVS commits to verify content gets committed as planned. 

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


  1   2   3   4   5   6   >