Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2007-11-10 15:46:50


Author: eric_niebler
Date: 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
New Revision: 41002
URL: http://svn.boost.org/trac/boost/changeset/41002

Log:
Merged revisions 40970-41001 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r40971 | johnmaddock | 2007-11-09 10:42:46 -0800 (Fri, 09 Nov 2007) | 1 line
  
  Fixes for IBM xlc: ensure that functions that are also macros are correctly protected against macro expansion.
........
  r40975 | djowel | 2007-11-09 14:38:18 -0800 (Fri, 09 Nov 2007) | 1 line
  
  fix mismatch include guard
........
  r40978 | grafik | 2007-11-09 16:11:12 -0800 (Fri, 09 Nov 2007) | 1 line
  
  Add some machine info and previous run time to report info page.
........
  r40981 | grafik | 2007-11-09 21:43:05 -0800 (Fri, 09 Nov 2007) | 1 line
  
  Fix date info so that it shows point-to-point time span as the time on the XSLT report is misleading.
........
  r40986 | danieljames | 2007-11-10 06:54:18 -0800 (Sat, 10 Nov 2007) | 3 lines
  
  Remove a couple of html files that have been added to the beta site.
  Refs #1354, #1357.
........
  r40988 | danieljames | 2007-11-10 07:08:20 -0800 (Sat, 10 Nov 2007) | 3 lines
  
  Remove the library reuse page, as it has been added to the new site. Refs #1358
........
  r40990 | danieljames | 2007-11-10 07:47:49 -0800 (Sat, 10 Nov 2007) | 2 lines
  
  Remove the separate source guidelines, as they've been added to the new site. Refs #1370.
........
  r40992 | danieljames | 2007-11-10 08:03:37 -0800 (Sat, 10 Nov 2007) | 2 lines
  
  Remove the test policy page, now that it's in the new site. Refs #1372.
........
  r40995 | danieljames | 2007-11-10 08:37:03 -0800 (Sat, 10 Nov 2007) | 2 lines
  
  Update the license info from trunk, and delete from the trunk. Fixes #1359.
........
  r40996 | danieljames | 2007-11-10 09:10:53 -0800 (Sat, 10 Nov 2007) | 2 lines
  
  Update the mailing list page from trunk, and delete the copy from trunk. Fixes #1361
........
  r40997 | johnmaddock | 2007-11-10 09:40:19 -0800 (Sat, 10 Nov 2007) | 1 line
  
  Fix issue #1424.
........
  r40999 | speedsnail | 2007-11-10 11:25:45 -0800 (Sat, 10 Nov 2007) | 1 line
  
  Added static linking support for mingw compiler on windows.
........

Removed:
   branches/proto/v3/more/header.htm
   branches/proto/v3/more/lib_guide.htm
   branches/proto/v3/more/library_reuse.htm
   branches/proto/v3/more/license_info.html
   branches/proto/v3/more/mailing_lists.htm
   branches/proto/v3/more/separate_compilation.html
   branches/proto/v3/more/test_policy.htm
Properties modified:
   branches/proto/v3/ (props changed)
Text files modified:
   branches/proto/v3/boost/fusion/adapted/struct.hpp | 2
   branches/proto/v3/libs/math/test/compile_test/instantiate.hpp | 28 +++++++-------
   branches/proto/v3/libs/math/test/compile_test/sf_fpclassify_incl_test.cpp | 30 ++++++++--------
   branches/proto/v3/libs/math/test/test_policy_sf.cpp | 9 ++++
   branches/proto/v3/libs/math/test/test_triangular.cpp | 2
   branches/proto/v3/libs/thread/src/win32/tss_pe.cpp | 73 +++++++++++++++++++++++++++++++++++++++
   branches/proto/v3/libs/type_traits/test/promote_enum_test.cpp | 5 +-
   branches/proto/v3/tools/regression/xsl_reports/build_results.sh | 68 ++++++++++++++++++++++++++++++++++++
   8 files changed, 182 insertions(+), 35 deletions(-)

Modified: branches/proto/v3/boost/fusion/adapted/struct.hpp
==============================================================================
--- branches/proto/v3/boost/fusion/adapted/struct.hpp (original)
+++ branches/proto/v3/boost/fusion/adapted/struct.hpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 #if !defined(BOOST_FUSION_STRUCT_24122005_1744)
-#define BOOST_FUSION_STD_STRUCT_24122005_1744
+#define BOOST_FUSION_STRUCT_24122005_1744
 
 #include <boost/fusion/adapted/struct/extension.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>

Modified: branches/proto/v3/libs/math/test/compile_test/instantiate.hpp
==============================================================================
--- branches/proto/v3/libs/math/test/compile_test/instantiate.hpp (original)
+++ branches/proto/v3/libs/math/test/compile_test/instantiate.hpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -137,10 +137,10 @@
    boost::math::ibetac_invb(v1, v2, v3);
    boost::math::gamma_p_derivative(v2, v3);
    boost::math::ibeta_derivative(v1, v2, v3);
- boost::math::fpclassify(v1);
- boost::math::isfinite(v1);
- boost::math::isnormal(v1);
- boost::math::isnan(v1);
+ (boost::math::fpclassify)(v1);
+ (boost::math::isfinite)(v1);
+ (boost::math::isnormal)(v1);
+ (boost::math::isnan)(v1);
    boost::math::isinf(v1);
    boost::math::log1p(v1);
    boost::math::expm1(v1);
@@ -233,11 +233,11 @@
    boost::math::ibetac_invb(v1, v2, v3, pol);
    boost::math::gamma_p_derivative(v2, v3, pol);
    boost::math::ibeta_derivative(v1, v2, v3, pol);
- boost::math::fpclassify(v1);
- boost::math::isfinite(v1);
- boost::math::isnormal(v1);
- boost::math::isnan(v1);
- boost::math::isinf(v1);
+ (boost::math::fpclassify)(v1);
+ (boost::math::isfinite)(v1);
+ (boost::math::isnormal)(v1);
+ (boost::math::isnan)(v1);
+ (boost::math::isinf)(v1);
    boost::math::log1p(v1, pol);
    boost::math::expm1(v1, pol);
    boost::math::cbrt(v1, pol);
@@ -327,11 +327,11 @@
    test::ibetac_invb(v1, v2, v3);
    test::gamma_p_derivative(v2, v3);
    test::ibeta_derivative(v1, v2, v3);
- test::fpclassify(v1);
- test::isfinite(v1);
- test::isnormal(v1);
- test::isnan(v1);
- test::isinf(v1);
+ (test::fpclassify)(v1);
+ (test::isfinite)(v1);
+ (test::isnormal)(v1);
+ (test::isnan)(v1);
+ (test::isinf)(v1);
    test::log1p(v1);
    test::expm1(v1);
    test::cbrt(v1);

Modified: branches/proto/v3/libs/math/test/compile_test/sf_fpclassify_incl_test.cpp
==============================================================================
--- branches/proto/v3/libs/math/test/compile_test/sf_fpclassify_incl_test.cpp (original)
+++ branches/proto/v3/libs/math/test/compile_test/sf_fpclassify_incl_test.cpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -15,21 +15,21 @@
 
 void check()
 {
- check_result<int>(boost::math::fpclassify<float>(f));
- check_result<int>(boost::math::fpclassify<double>(d));
- check_result<int>(boost::math::fpclassify<long double>(l));
-
- check_result<bool>(boost::math::isfinite<float>(f));
- check_result<bool>(boost::math::isfinite<double>(d));
- check_result<bool>(boost::math::isfinite<long double>(l));
-
- check_result<bool>(boost::math::isinf<float>(f));
- check_result<bool>(boost::math::isinf<double>(d));
- check_result<bool>(boost::math::isinf<long double>(l));
-
- check_result<bool>(boost::math::isnormal<float>(f));
- check_result<bool>(boost::math::isnormal<double>(d));
- check_result<bool>(boost::math::isnormal<long double>(l));
+ check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<float>(f));
+ check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<double>(d));
+ check_result<int>(boost::math::fpclassify BOOST_NO_MACRO_EXPAND<long double>(l));
+
+ check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<float>(f));
+ check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<double>(d));
+ check_result<bool>(boost::math::isfinite BOOST_NO_MACRO_EXPAND<long double>(l));
+
+ check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<float>(f));
+ check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<double>(d));
+ check_result<bool>(boost::math::isinf BOOST_NO_MACRO_EXPAND<long double>(l));
+
+ check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<float>(f));
+ check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<double>(d));
+ check_result<bool>(boost::math::isnormal BOOST_NO_MACRO_EXPAND<long double>(l));
 }
 
 

Modified: branches/proto/v3/libs/math/test/test_policy_sf.cpp
==============================================================================
--- branches/proto/v3/libs/math/test/test_policy_sf.cpp (original)
+++ branches/proto/v3/libs/math/test/test_policy_sf.cpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -28,6 +28,15 @@
 #define TEST_POLICY_SF(call)\
    BOOST_CHECK_EQUAL(boost::math::call , test::call)
 
+//
+// Prevent some macro conflicts just in case:
+//
+#undef fpclassify
+#undef isnormal
+#undef isinf
+#undef isfinite
+#undef isnan
+
 int test_main(int, char* [])
 {
    int i;

Modified: branches/proto/v3/libs/math/test/test_triangular.cpp
==============================================================================
--- branches/proto/v3/libs/math/test/test_triangular.cpp (original)
+++ branches/proto/v3/libs/math/test/test_triangular.cpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -486,7 +486,7 @@
     triangular_distribution<RealType, inf_policy> tridef_inf(-1, 0., 1);
     // But can't use BOOST_CHECK_EQUAL(?, quiet_NaN)
     using boost::math::isnan;
- BOOST_CHECK(isnan(pdf(tridef_inf, std::numeric_limits<RealType>::infinity())));
+ BOOST_CHECK((isnan)(pdf(tridef_inf, std::numeric_limits<RealType>::infinity())));
   } // test for infinity using std::numeric_limits<>::infinity()
   else
   { // real_concept case, does has_infinfity == false, so can't check it throws.

Modified: branches/proto/v3/libs/thread/src/win32/tss_pe.cpp
==============================================================================
--- branches/proto/v3/libs/thread/src/win32/tss_pe.cpp (original)
+++ branches/proto/v3/libs/thread/src/win32/tss_pe.cpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -1,4 +1,6 @@
+// $Id$
 // (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004.
+// (C) Copyright 2007 Roland Schwarz
 // (C) Copyright 2007 Anthony Williams
 // (C) Copyright 2007 David Deakins
 // Use, modification and distribution are subject to the
@@ -7,7 +9,75 @@
 
 #include <boost/thread/detail/config.hpp>
 
-#if defined(BOOST_THREAD_BUILD_LIB) && defined(_MSC_VER) && !defined(UNDER_CE)
+#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB)
+
+#if defined(__MINGW32__) && !defined(_WIN64)
+
+#include <boost/thread/detail/tss_hooks.hpp>
+
+#include <windows.h>
+
+#include <cstdlib>
+
+extern "C" void tss_cleanup_implemented(void) {}
+
+namespace {
+ void NTAPI on_tls_callback(void* h, DWORD dwReason, PVOID pv)
+ {
+ switch (dwReason)
+ {
+ case DLL_THREAD_DETACH:
+ {
+ on_thread_exit();
+ break;
+ }
+ }
+ }
+
+ void on_after_ctors(void)
+ {
+ on_process_enter();
+ }
+
+ void on_before_dtors(void)
+ {
+ on_thread_exit();
+ }
+
+ void on_after_dtors(void)
+ {
+ on_process_exit();
+ }
+}
+
+extern "C" {
+
+ void (* after_ctors )(void) __attribute__((section(".ctors"))) = on_after_ctors;
+ void (* before_dtors)(void) __attribute__((section(".dtors"))) = on_before_dtors;
+ void (* after_dtors )(void) __attribute__((section(".dtors.zzz"))) = on_after_dtors;
+
+ ULONG __tls_index__ = 0;
+ char __tls_end__ __attribute__((section(".tls$zzz"))) = 0;
+ char __tls_start__ __attribute__((section(".tls"))) = 0;
+
+
+ PIMAGE_TLS_CALLBACK __crt_xl_start__ __attribute__ ((section(".CRT$XLA"))) = 0;
+ PIMAGE_TLS_CALLBACK __crt_xl_tls_callback__ __attribute__ ((section(".CRT$XLB"))) = on_tls_callback;
+ PIMAGE_TLS_CALLBACK __crt_xl_end__ __attribute__ ((section(".CRT$XLZ"))) = 0;
+}
+
+extern "C" const IMAGE_TLS_DIRECTORY32 _tls_used __attribute__ ((section(".rdata$T"))) =
+{
+ (DWORD) &__tls_start__,
+ (DWORD) &__tls_end__,
+ (DWORD) &__tls_index__,
+ (DWORD) (&__crt_xl_start__+1),
+ (DWORD) 0,
+ (DWORD) 0
+};
+
+
+#elif defined(_MSC_VER) && !defined(UNDER_CE)
 
     #include <boost/thread/detail/tss_hooks.hpp>
 
@@ -177,5 +247,6 @@
         longer needed and can be removed.
         */
     }
+#endif //defined(_MSC_VER) && !defined(UNDER_CE)
 
 #endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB)

Modified: branches/proto/v3/libs/type_traits/test/promote_enum_test.cpp
==============================================================================
--- branches/proto/v3/libs/type_traits/test/promote_enum_test.cpp (original)
+++ branches/proto/v3/libs/type_traits/test/promote_enum_test.cpp 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -29,6 +29,7 @@
 #include <climits>
 
 #include "promote_util.hpp"
+#include <boost/detail/workaround.hpp>
 
 enum IntEnum1 { IntEnum1_min = -5 , IntEnum1_max = 5 };
 enum IntEnum2 { IntEnum2_min = SHRT_MIN, IntEnum2_max = SHRT_MAX };
@@ -90,8 +91,8 @@
 #endif
 }
 
-#if (defined(BOOST_MSVC) && BOOST_MSVC <= 1400 ) || \
- (defined(BOOST_INTEL_WIN) && BOOST_INTEL_WIN <= 1000)
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500) ) || \
+ BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1000))
 // Don't test UIntEnum on VC++ 8.0 and Intel for Windows 9.0,
 // they are broken. More info is on top of this file.
 #else

Deleted: branches/proto/v3/more/header.htm
==============================================================================
--- branches/proto/v3/more/header.htm 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Boost Header policy</title>
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta name="Microsoft Border" content="none, default">
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-
-<table summary="Navigational header"
- border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF"><img src="../boost.png" alt="boost.png (6897 bytes)" width="277" height="86"></td>
- <td>Home</td>
- <td>Libraries</td>
- <td>People</td>
- <td>FAQ</td>
- <td>More</td>
- </tr>
-</table>
-<h1>Boost Header Policy</h1>
-<p>Header files are the place where a library comes into contact with user code
-and other libraries.&nbsp; To co-exist peacefully and productively, headers must
-be &quot;good neighbors&quot;.</p>
-<p>Here are the standards for boost headers.&nbsp;&nbsp;&nbsp; Many of
-these are also reasonable guidelines for general use.
-<ul>
- <li>Header filenames should have a .hpp (lowercase) extension.&nbsp;</li>
- <li>Unless multiple inclusion is intended, wrap the header in #ifndef guards.
- Use a naming convention that minimizes the chance of clashes
- with macro names from other's code.&nbsp; The <a href="#SampleHeader">sample
- header</a> uses the Boost convention of all uppercase letters, with the
- header name prefixed by the namespace name, and suffixed with HPP, separated
- by underscores.</li>
- <li>Wrap the header contents in a namespace to prevent global namespace
- pollution. The namespace approach to pollution control is strongly preferred
- to older approaches such as adding funny prefixes to global names.&nbsp;
- Libraries which are designed to work well with other Boost libraries should
- be placed in namespace <tt>boost</tt>.</li>
-
- <li>Make sure that a translation unit consisting of just the
- contents of the header file will compile successfully.</li>
-
- <li>Place the header file in a sub-directory to prevent conflict with
- identically named header files in other libraries.&nbsp; The parent
- directory is added to the compiler's include search path.&nbsp; Then both
- your code and user code specifies the sub-directory in <tt>#include</tt>
- directives.&nbsp; Thus the header sample header&nbsp;
- would be included by <tt>#include &lt;boost/furball.hpp&gt;</tt></li>
- <li>The preferred ordering for class definitions is public members, protected
- members, and finally private members.</li>
- <li>Include the boost/config.hpp <a href="../libs/config/config.htm">configuration
- header</a> if there is a need to deal with compiler or platform
- configuration issues.</li>
-</ul>
-<h2><a name="SampleHeader"></a>Sample Header</h2>
-<pre><tt>//&nbsp; Boost general library furball.hpp header file ---------------------------//
-
- &lt;<i> Copyright and license notice</i>, as indicated in the license page &gt;
-
-//&nbsp; See http://www.boost.org/ for latest version.
-
-#ifndef BOOST_FURBALL_HPP
-#define BOOST_FURBALL_HPP
-
-namespace boost {
-
-//&nbsp; Furball class declaration&nbsp; -----------------------------------------------//
-
-&nbsp; class furball
- {
- public:
-&nbsp; void throw_up();
- private:
- int whatever;
-&nbsp;&nbsp;};&nbsp; // furball
-
-} // namespace
-
-#endif&nbsp; // include guard</tt></pre>
-<h2>Coding Style</h2>
-<p>The alert reader will have noticed that the <a href="#SampleHeader">sample
-header</a> employs a certain coding style for indentation, positioning braces,
-commenting ending braces, and similar formatting issues.&nbsp; These stylistic
-issues are viewed as personal preferences and are not part of the Boost Header
-Policy.</p>
-<hr>
-<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->02 October, 2003<!--webbot bot="Timestamp" endspan i-checksum="38549" --></p>
-
-<p>&copy; Copyright Beman Dawes 1998</p>
-<p>
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy
- at http://www.boost.org/LICENSE_1_0.txt)
-</p>
-
-</body>
-
-</html>
\ No newline at end of file

Deleted: branches/proto/v3/more/lib_guide.htm
==============================================================================
--- branches/proto/v3/more/lib_guide.htm 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,931 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>
- Boost Library Requirements and Guidelines
- </title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
- <meta name="ProgId" content="FrontPage.Editor.Document">
- <meta name="Microsoft Border" content="none, default">
- </head>
-
- <body bgcolor="#FFFFFF" text="#000000">
- <table border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF">
- <img src="../boost.png" alt="boost.png (6897 bytes)" width="277"
- height="86">
- </td>
- <td>
- <a href="../index.htm"><font face="Arial" color=
- "#FFFFFF"><big>Home</big></font></a>
-
- </td>
- <td>
- <a href="../libs/libraries.htm"><font face="Arial" color=
- "#FFFFFF"><big>Libraries</big></font></a>
- </td>
- <td>
- <a href="../people/people.htm"><font face="Arial" color=
- "#FFFFFF"><big>People</big></font></a>
- </td>
- <td>
-
- <a href="faq.htm"><font face="Arial" color=
- "#FFFFFF"><big>FAQ</big></font></a>
- </td>
- <td>
- <a href="index.htm"><font face="Arial" color=
- "#FFFFFF"><big>More</big></font></a>
- </td>
- </tr>
- </table>
- <h1 align="left">
-
- Boost Library Requirements and Guidelines
- </h1>
- <p align="left">
- Introduction<br>
- Requirements<br>
- &nbsp;&nbsp;&nbsp; License requirements<br>
- &nbsp;&nbsp;&nbsp; Portability requirements<br>
-
- &nbsp;&nbsp;&nbsp; Ownership<br>
- Guidelines<br>
- &nbsp;&nbsp;&nbsp; <a href="#Design_and_Programming">Design and
- programming</a><br>
- &nbsp;&nbsp;&nbsp; <a href="#Directory_structure">Directory structure and
- filenames</a><br>
- &nbsp;&nbsp;&nbsp; <a href="#Naming_consistency">Naming
- consistency</a><br>
-
- &nbsp;&nbsp;&nbsp; Documentation<br>
- Rationale<br>
- &nbsp;&nbsp;&nbsp; <a href=
- "#Exception-specification">Exception-specification rationale</a><br>
- &nbsp;&nbsp;&nbsp; Naming conventions rationale<br>
- &nbsp;&nbsp;&nbsp; <a href="#code_fonts">Source code fonts
- rationale</a><br>
-
- &nbsp;&nbsp;&nbsp; Tabs rationale<br>
- &nbsp;&nbsp;&nbsp; <a href="#JavaScript">ECMAScript/JavaScript
- rationale</a><br>
- &nbsp;&nbsp;&nbsp; <a href="#Rationale_rationale">Rationale
- rationale</a><br>
- &nbsp;&nbsp;&nbsp; <a href="#Acknowledgements">Acknowledgements
- rationale</a>
- </p>
-
- <h2 align="left">
- <a name="Introduction" id="Introduction">Introduction</a>
- </h2>
- <p align="left">
- This page describes requirements and guidelines for the content of a
- library submitted to Boost.
- </p>
- <p align="left">
- See the <a href="submission_process.htm">Boost Library Submission
- Process</a> page for a description of the process involved.
- </p>
-
- <h2 align="left">
- <a name="Requirements" id="Requirements">Requirements</a>
- </h2>
- <p>
- To avoid the frustration and wasted time of a proposed library being
- rejected, it must meets these requirements:
- </p>
- <ul>
- <li>The license must meet the license requirements
-
- below. Restricted licenses like the GPL and LGPL are not acceptable.
- </li>
- <li>The copyright ownership must be clear.
- </li>
- <li>The library must be generally useful and not restricted to a narrow
- problem domain.
- </li>
- <li>The library must meet the <a href="#Portability">portability
- requirements</a> below.&nbsp;
-
- </li>
- <li>The library must come reasonably close to meeting the <a href=
- "#Guidelines">Guidelines</a> below.
- <ul>
- <li>
- Design and Programming
- </li>
- <li>
-
- Directory Structure
- </li>
- <li>
- Documentation
- </li>
- </ul>
- </li>
- <li>The author must be willing to participate in discussions on the mailing
- list, and to refine the library accordingly.
- </li>
-
- </ul>
- <p>
- There's no requirement that an author read the mailing list for a time
- before making a submission. It has been noted, however, that submissions
- which begin "I just started to read this mailing list ..." seem to fail,
- often embarrassingly.
- </p>
- <h3 align="left">
- <a name="License" id="License">License</a> requirements
- </h3>
- <p>
- The preferred way to meet the license requirements is to use the <a href=
- "../LICENSE_1_0.txt">Boost Software License</a>. See <a href=
- "license_info.html">license information</a>. If for any reason you do not
- intend to use the Boost Software License, please discuss the issues on the
- Boost developers mailing list first.
- </p>
-
- <p>
- The license requirements:
- </p>
- <ul>
- <li>Must be simple to read and understand.
- </li>
- <li>Must grant permission without fee to copy, use and modify the software
- for any use (commercial and non-commercial).
- </li>
- <li>Must require that the license appear on all copies of the software
- source code.
- </li>
- <li>Must not require that the license appear with executables or other
- binary uses of the library.
- </li>
-
- <li>Must not require that the source code be available for execution or
- other binary uses of the library.
- </li>
- <li>May restrict the use of the name and description of the library to the
- standard version found on the Boost web site.
- </li>
- </ul>
- <h3 align="left">
- <a name="Portability" id="Portability">Portability</a> requirements
- </h3>
- <ul>
-
- <li>
- <p align="left">
- A library's interface must portable and not restricted to a particular
- compiler or operating system.
- </p>
- </li>
- <li>
- <p align="left">
- A library's implementation must if possible be portable and not
- restricted to a particular compiler or operating system.&nbsp; If a
- portable implementation is not possible, non-portable constructions are
- acceptable if reasonably easy to port to other environments, and
- implementations are provided for at least two popular operating systems
- (such as UNIX and Windows).
- </p>
-
- </li>
- <li>
- <p align="left">
- There is no requirement that a library run on C++ compilers which do
- not conform to the ISO standard.&nbsp;
- </p>
- </li>
- <li>
- <p align="left">
-
- There is no requirement that a library run on any particular C++
- compiler.&nbsp; Boost contributors often try to ensure their libraries
- work with popular compilers.&nbsp; The boost/config.hpp <a href=
- "../libs/config/config.htm">configuration header</a> is the preferred
- mechanism for working around compiler deficiencies.
- </p>
- </li>
- </ul>
- <p align="left">
- Since there is no absolute way to prove portability, many boost submissions
- demonstrate practical portability by compiling and executing correctly with
- two different C++ compilers, often under different operating systems.&nbsp;
-
- Otherwise reviewers may disbelieve that porting is in fact practical.
- </p>
- <h3 align="left">
- <a name="Ownership" id="Ownership">Ownership</a>
- </h3>
- <p align="left">
- Are you sure you own the library you are thinking of
- submitting?&nbsp;&nbsp; "How to Copyright Software" by MJ Salone, Nolo
- Press, 1990 says:
- </p>
-
- <blockquote>
- <p align="left">
- Doing work on your own time that is very similar to programming you do
- for your employer on company time can raise nasty legal problems.&nbsp;
- In this situation, it's best to get a written release from your employer
- in advance.
- </p>
- </blockquote>
- <p align="left">
- Place a copyright notice in all the important files you submit. Boost won't
- accept libraries without clear copyright information.
- </p>
-
- <h2 align="left">
- <a name="Guidelines" id="Guidelines">Guidelines</a>
- </h2>
- <p align="left">
- Please use these guidelines as a checklist for preparing the content a
- library submission.&nbsp; Not every guideline applies to every library, but
- a reasonable effort to comply is expected.
- </p>
- <h3>
- <a name="Design_and_Programming" id="Design_and_Programming">Design and
- Programming</a>
-
- </h3>
- <ul>
- <li>Aim first for clarity and correctness; optimization should be only a
- secondary concern in most Boost libraries.
- </li>
- </ul>
- <ul>
- <li>Aim for ISO Standard C++. Than means making effective use of the
- standard features of the language, and avoiding non-standard compiler
- extensions. It also means using the C++ Standard Library where applicable.
- </li>
- </ul>
- <ul>
-
- <li>Headers should be good neighbors. See the <a href="header.htm">header
- policy</a>. See Naming consistency.
- </li>
- </ul>
- <ul>
- <li>Follow quality programming practices. See, for example, "Effective C++"
- 2nd Edition, and "More Effective C++", both by Scott Meyers, published by
- Addison Wesley.
- </li>
- </ul>
- <ul>
-
- <li>Use the C++ Standard Library or other Boost libraries, but only when
- the benefits outweigh the costs.&nbsp; Do not use libraries other than the
- C++ Standard Library or Boost. See <a href="library_reuse.htm">Library
- reuse</a>.
- </li>
- </ul>
- <ul>
- <li>Read Implementation Variation to see how to
- supply performance, platform, or other implementation variations.
- </li>
-
- </ul>
- <ul>
- <li>Read the <a href="separate_compilation.html">guidelines for libraries
- with separate source</a> to see how to ensure that compiled link libraries
- meet user expectations.
- </li>
- </ul>
- <ul>
- <li>Use the naming conventions of the C++ Standard Library (See <a href=
- "#Naming">Naming conventions rationale</a>):<br>
-
- &nbsp;
- <ul>
- <li>Names (except as noted below) should be all lowercase, with words
- separated by underscores.
- </li>
- <li>Acronyms should be treated as ordinary names (e.g.
- <code>xml_parser</code> instead of <code>XML_parser</code>).
- </li>
- <li>Template parameter names begin with an uppercase letter.
- </li>
-
- <li>Macro (gasp!) names all uppercase and begin with BOOST_.
- </li>
- </ul>
- </li>
- </ul>
- <ul>
- <li>Choose meaningful names - explicit is better than implicit, and
- readability counts. There is a strong preference for clear and descriptive
- names, even if lengthy.
- </li>
- </ul>
- <ul>
-
- <li>Use exceptions to report errors where appropriate, and write code that
- is safe in the face of exceptions.
- </li>
- </ul>
- <ul>
- <li>Avoid exception-specifications. See <a href="#Exception-specification">
- exception-specification rationale</a>.
- </li>
- </ul>
- <ul>
-
- <li>Provide sample programs or confidence tests so potential users can see
- how to use your library.
- </li>
- </ul>
- <ul>
- <li>Provide a regression test program or programs which follow the
- Test Policies and Protocols.
- </li>
- </ul>
- <ul>
- <li>Although some boost members use proportional fonts, tabs, and
- unrestricted line lengths in their own code, boost's widely distributed
- source code should follow more conservative guidelines:
- <ul>
-
- <li>Use fixed-width fonts.&nbsp; See <a href="#code_fonts">fonts
- rationale</a>.
- </li>
- <li>Use spaces rather than tabs. See <a href="#Tabs">tabs
- rationale</a>.
- </li>
- <li>Limit line lengths to 80 characters.
- </li>
- </ul>
-
- </li>
- </ul>
- <ul>
- <li>End all documentation files (HTML or otherwise) with a copyright
- message and a licensing message. See <a href="license_info.html">license
- information</a> page for the preferred form.
- </li>
- </ul>
- <ul>
- <li>Begin all source files (including programs, headers, scripts, etc.)
- with:<br>
-
- &nbsp;
- <ul>
- <li>A comment line describing the contents of the file.<br>
- &nbsp;
- </li>
- <li>Comments describing copyright and licensing: again, the preferred
- form is indicated in the <a href="license_info.html">license
- information</a> page<br>
-
- <br>
- Note that developers should not provide a copy of
- <code>LICENSE_1_0.txt</code> with their libraries: Boost
- distributions already include a copy in the Boost root directory.<br>
- &nbsp;
- </li>
- <li>A comment line referencing your library on the Boost web site. For
- example:<br>
- <br>
-
- <code>//&nbsp; See http://www.boost.org/libs/foo/ for library home
- page.</code><br>
- <br>
- where <code>foo</code> is the directory name (see below) for the
- library. As well as aiding users who come across a Boost file
- detached from its documentation, some of Boost's automatic tools
- depend on this comment to identify which library header files belong
- to.
- </li>
- </ul>
- </li>
-
- </ul>
- <ul>
- <li>Make sure your code compiles in the presence of the <code>min()</code>
- and <code>max()</code> macros. Some platform headers define
- <code>min()</code> and <code>max()</code> macros which cause some common
- C++ constructs to fail to compile. Some simple tricks can protect your code
- from inappropriate macro substitution:<br>
-
- &nbsp;
- <ul>
- <li>If you want to call <code>std::min()</code> or
- <code>std::max()</code>:<br>
- &nbsp;
- <ul>
- <li>If you do not require argument-dependent look-up, use
- <code>(std::min)(a,b)</code>.
- </li>
-
- <li style="list-style: none">
- <br>
- </li>
- <li>If you do require argument-dependent look-up, you should:
- </li>
- <li style="list-style: none">
- <br>
- <ul>
- <li>
-
- <code>#include &lt;boost/config.hpp&gt;</code>
- </li>
- <li>Use <code>BOOST_USING_STD_MIN();</code> to bring
- <code>std::min()</code> into the current scope.
- </li>
- <li>Use <code>min BOOST_PREVENT_MACRO_SUBSTITUTION
- (a,b);</code> to make an argument-dependent call to
- <code>min(a,b)</code>.
- </li>
-
- </ul>
- </li>
- </ul>
- </li>
- <li style="list-style: none">
- <br>
- </li>
- <li>If you want to call
- <code>std::numeric_limits&lt;int&gt;::max()</code>, use
- <code>(std::numeric_limits&lt;int&gt;::max)()</code> instead.
- </li>
-
- <li style="list-style: none">
- <br>
- </li>
- <li>If you want to call a <code>min()</code> or <code>max()</code>
- member function, instead to doing <code>obj.min()</code>, use
- <code>(obj.min)()</code>.<br>
-
- </li>
- <li style="list-style: none">
- <br>
- </li>
- <li>If you want to declare or define a function or a member function
- named <code>min</code> or <code>max</code>, then you must use the
- <code>BOOST_PREVENT_MACRO_SUBSTITUTION</code> macro. Instead of writing
- <code>int min() { return 0; }</code> you should write <code>int min
- BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }</code><br>
-
- This is true regardless if the function is a free (namespace scope)
- function, a member function or a static member function, and it
- applies for the function declaration as well as for the function
- definition.<br>
- </li>
- </ul>
- </li>
- </ul>
- <h3>
- <a name="Directory_structure" id="Directory_structure">Directory
- Structure</a> and Filenames
- </h3>
-
- <ul>
- <li>File and directory names must contain only <b>lowercase</b> ASCII
- letters , numbers, underscores, and a period.&nbsp; Leading character must
- be alphabetic. Maximum length 31. Only a single period is permitted.&nbsp;
- These requirements ensure file and directory names are relatively portable.
- </li>
- <li>Files intended to be processed by a C++ compiler as part of a
- translation unit should have <b>a three-letter filename extension ending in
- "pp"</b>. Other files should <i>not</i> use extensions ending in "pp". This
- convention makes it easy to identify all of the C++ source in Boost.
- </li>
-
- <li>All libraries have at their highest level a primary directory named for
- the particular library. See <a href="#Naming_consistency">Naming
- consistency</a>. The primary directory may have sub-directories.
- </li>
- <li>For very simple libraries implemented entirely within the library
- header, all files go in the primary directory (except headers, which go in
- the boost header directory).
- </li>
- </ul>
- <blockquote>
- <p>
- <b>Boost standard sub-directory names</b>
-
- </p>
- <table border="1" cellpadding="5">
- <tr>
- <td>
- <b>Sub-directory</b>
- </td>
- <td>
- <b>Contents</b>
-
- </td>
- <td>
- <b>Required</b>
- </td>
- </tr>
- <tr>
- <td>
- <code>build</code>
-
- </td>
- <td>
- Library build files such as a Jamfile.
- </td>
- <td>
- If any build files.
- </td>
- </tr>
- <tr>
- <td>
-
- <code>doc</code>
- </td>
- <td>
- Documentation (HTML) files.
- </td>
- <td>
- If several doc files.
- </td>
- </tr>
-
- <tr>
- <td>
- <code>example</code>
- </td>
- <td>
- Sample program files.
- </td>
- <td>
- If several sample files.
- </td>
-
- </tr>
- <tr>
- <td>
- <code>src</code>
- </td>
- <td>
- Source files which must be compiled to build the library.&nbsp;
- </td>
-
- <td>
- If any source files.
- </td>
- </tr>
- <tr>
- <td>
- <code>test</code>
- </td>
- <td>
-
- Regression or other test programs or scripts.
- </td>
- <td>
- If several test files.
- </td>
- </tr>
- </table>
- </blockquote>
- <h4>
- <a name="Redirection" id="Redirection">Redirection</a>
-
- </h4>
- <p>
- The primary directory should always contain a file named index.html (or
- index.htm). Authors have requested this so that they can publish URL's in
- the form <i>http://www.boost.org/libs/lib-name> with the assurance a
- documentation reorganization won't invalidate the URL. Boost's internal
- tools are also simplified by knowing that a library's documentation is
- always reachable via the simplified URL.
- </p>
- <p>
- If the documentation is in a doc sub-directory, the primary directory
- index.html file should just do an automatic redirection to the doc
- subdirectory:
- </p>
- <blockquote>
-
- <pre>
-&lt;html&gt;
-&lt;head&gt;
-&lt;meta http-equiv="refresh" content="0; URL=doc/index.html"&gt;
-&lt;/head&gt;
-&lt;body&gt;
-Automatic redirection failed, please go to
-&lt;a href="doc/index.html"&gt;doc/index.html&lt;/a&gt;
-
-&lt;/body&gt;
-&lt;/html&gt;
-</pre>
- </blockquote>
- <h3>
- <a name="Naming_consistency">Naming consistency</a>
- </h3>
- <p>
- As library developers and users have gained experience with Boost, the
- following consistent naming approach has come to be viewed as very helpful,
- particularly for larger libraries that need their own header subdirectories
- and namespaces.
- </p>
-
- <p>
- Here is how it works. The library is given a name that describes the
- contents of the library. Cryptic abbreviations are strongly discouraged.
- Following the practice of the C++ Standard Library, names are usually
- singular rather than plural. For example, a library dealing with file
- systems might chose the name "filesystem", but not "filesystems", "fs" or
- "nicecode".
- </p>
- <ul>
- <li>The library's primary directory (in parent <i>boost-root/libs</i>) is
- given that same name.&nbsp; For example,
- <i>boost-root/libs/filesystem</i>.<br>
- &nbsp;
-
- </li>
- <li>The library's primary header directory (in parent
- <i>boost-root/boost</i>) is given that same name. For example,
- <i>boost-root/boost/filesystem</i>.<br>
- &nbsp;
- </li>
- <li>The library's primary namespace (in parent <i>::boost</i>) is given
- that same name, except when there's a component with that name (e.g.,
- <i>boost::tuple</i>), in which case the namespace name is pluralized. For
- example, <i>::boost::filesystem</i>.
- </li>
-
- </ul>
- <p>
- When documenting Boost libraries, follow these conventions (see also the
- following section of this document):
- </p>
- <ul>
- <li>The library name is set in roman type.
- </li>
- <li>The library name is capitalized.
- </li>
- <li>A period between "Boost" and the library name (e.g., Boost.Bind) is
- used if and only if the library name is not followed by the word "library".
- </li>
-
- <li>The word "library" is not part of the library name and is therefore
- lowercased.
- </li>
- </ul>
- <p>
- Here are a few examples of how to apply these conventions:
- </p>
- <ul>
- <li>Boost.Bind was written by Peter Dimov.
- </li>
- <li>The Boost Bind library was written by Peter Dimov.
- </li>
-
- <li>I regularly use Bind, a Boost library written by Peter Dimov.
- </li>
- </ul>
- <h3>
- <a name="Documentation" id="Documentation">Documentation</a>
- </h3>
- <p>
- Even the simplest library needs some documentation; the amount should be
- proportional to the need.&nbsp; The documentation should assume the readers
- have a basic knowledge of C++, but are not necessarily experts.
- </p>
-
- <p>
- The format for documentation should be HTML, and should not require an
- advanced browser or server-side extensions. Style sheets are acceptable.
- ECMAScript/JavaScript is not acceptable. The documentation entry point
- should always be a file named index.html or index.htm; see <a href=
- "#Redirection">Redirection</a>.
- </p>
- <p>
- There is no single right way to do documentation. HTML documentation is
- often organized quite differently from traditional printed documents.
- Task-oriented styles differ from reference oriented styles. In the end, it
- comes down to the question: Is the documentation sufficient for the
- mythical "average" C++ programmer to use the library successfully?
- </p>
- <p>
- Appropriate topics for documentation often include:
- </p>
-
- <ul>
- <li>General introduction to the library.
- </li>
- <li>Description of each class.
- </li>
- <li>Relationship between classes.
- </li>
- <li>For each function, as applicable, description, requirements
- (preconditions), effects, post-conditions, returns, and throws.
- </li>
- <li>Discussion of error detection and recovery strategy.
- </li>
-
- <li>How to use including description of typical uses.
- </li>
- <li>How to compile and link.
- </li>
- <li>How to test.
- </li>
- <li>Version or revision history.
- </li>
- <li>Rationale for design decisions.&nbsp; See <a href=
- "#Rationale">Rationale rationale</a>.
- </li>
-
- <li>Acknowledgements.&nbsp; See <a href="#Acknowledgements">Acknowledgments
- rationale.</a>
- </li>
- </ul>
- <p>
- If you need more help with how to write documentation you can check out the
- article on <a href="writingdoc/index.html">Writing Documentation for
- Boost</a>.
- </p>
-
- <h2>
- <a name="Rationale" id="Rationale">Rationale</a>
- </h2>
- <p>
- Rationale for some of the requirements and guidelines follows.
- </p>
- <hr>
- <h3>
- <a name="Exception-specification" id=
- "Exception-specification">Exception-specification</a> rationale
- </h3>
-
- <p>
- Exception specifications [ISO 15.4] are sometimes coded to indicate what
- exceptions may be thrown, or because the programmer hopes they will
- improved performance.&nbsp; But consider the following member from a smart
- pointer:
- </p>
- <pre>
- T&amp; operator*() const throw() { return *ptr; }
-</pre>
- <p>
- This function calls no other functions; it only manipulates fundamental
- data types like pointers Therefore, no runtime behavior of the
- exception-specification can ever be invoked.&nbsp; The function is
- completely exposed to the compiler; indeed it is declared inline Therefore,
- a smart compiler can easily deduce that the functions are incapable of
- throwing exceptions, and make the same optimizations it would have made
- based on the empty exception-specification. A "dumb" compiler, however, may
- make all kinds of pessimizations.
- </p>
-
- <p>
- For example, some compilers turn off inlining if there is an
- exception-specification.&nbsp; Some compilers add try/catch blocks. Such
- pessimizations can be a performance disaster which makes the code unusable
- in practical applications.
- </p>
- <p>
- Although initially appealing, an exception-specification tends to have
- consequences that require <b>very</b> careful thought to understand. The
- biggest problem with exception-specifications is that programmers use them
- as though they have the effect the programmer would like, instead of the
- effect they actually have.
- </p>
- <p>
-
- A non-inline function is the one place a "throws nothing"
- exception-specification may have some benefit with some compilers.
- </p>
- <hr>
- <h3>
- <a name="Naming" id="Naming">Naming</a> conventions rationale
- </h3>
- <p>
- The C++ standard committee's Library Working Group discussed this issue in
- detail, and over a long period of time. The discussion was repeated again
- in early boost postings. A short summary:
- </p>
-
- <ul>
- <li>Naming conventions are contentious, and although several are widely
- used, no one style predominates.
- </li>
- <li>Given the intent to propose portions of boost for the next revision of
- the C++ standard library, boost decided to follow the standard library's
- conventions.
- </li>
- <li>Once a library settles on a particular convention, a vast majority of
- stakeholders want that style to be consistently used.
- </li>
- </ul>
- <hr>
- <h3>
-
- Source <a name="code_fonts" id="code_fonts">code fonts</a> rationale
- </h3>
- <p>
- Dave Abrahams comments: An important purpose (I daresay the primary
- purpose) of source code is communication: the documentation of intent. This
- is a doubly important goal for boost, I think. Using a fixed-width font
- allows us to communicate with more people, in more ways (diagrams are
- possible) right there in the source. Code written for fixed-width fonts
- using spaces will read reasonably well when viewed with a variable-width
- font, and as far as I can tell every editor supporting variable-width fonts
- also supports fixed width. I don't think the converse is true.
- </p>
- <hr>
- <h3>
- <a name="Tabs" id="Tabs">Tabs</a> rationale
- </h3>
-
- <p>
- Tabs are banned because of the practical problems caused by tabs in
- multi-developer projects like Boost, rather than any dislike in principle.
- See
mailing list archives. Problems
- include maintenance of a single source file by programmers using tabs and
- programmers using spaces, and the difficulty of enforcing a consistent tab
- policy other than just "no tabs". Discussions concluded that Boost files
- should either all use tabs, or all use spaces, and thus the decision to
- stick with spaces.
- </p>
- <hr>
- <h3>
- ECMAScript/<a name="JavaScript" id="JavaScript">JavaScript</a> rationale
- </h3>
-
- <p>
- Before the 1.29.0 release, two Boost libraries added ECMAScript/JavaScript
- documentation. Controversy followed (see <a href=
- "mailing_lists.htm#archive">mailing list archives</a>), and the developers
- were asked to remove the ECMAScript/JavaScript. Reasons given for banning
- included:
- </p>
- <ul>
- <li>Incompatible with some older browsers and some text based browsers.
- </li>
- <li>Makes printing docs pages difficult.
- </li>
- <li>Often results in really bad user interface design.
- </li>
-
- <li>"It's just annoying in general."
- </li>
- <li>Would require Boost to test web pages for ECMAScript/JavaScript
- compliance.
- </li>
- <li>Makes docs maintenance by other than the original developer more
- difficult.
- </li>
- </ul>
- <hr>
- <h3>
- <a name="Rationale_rationale" id="Rationale_rationale">Rationale
- rationale</a>
-
- </h3>
- <p>
- Rationale is defined as "The fundamental reasons for something; basis" by
- the American Heritage Dictionary.
- </p>
- <p>
- Beman Dawes comments:&nbsp; Failure to supply contemporaneous rationale for
- design decisions is a major defect in many software projects. Lack of
- accurate rationale causes issues to be revisited endlessly, causes
- maintenance bugs when a maintainer changes something without realizing it
- was done a certain way for some purpose, and shortens the useful lifetime
- of software.
- </p>
- <p>
- Rationale is fairly easy to provide at the time decisions are made, but
- very hard to accurately recover even a short time later.
- </p>
-
- <hr>
- <h3>
- <a name="Acknowledgements" id="Acknowledgements">Acknowledgements</a>
- rationale
- </h3>
- <p>
- As a library matures, it almost always accumulates improvements suggested
- to the authors by other boost members.&nbsp; It is a part of the culture of
- boost.org to acknowledge such contributions, identifying the person making
- the suggestion.&nbsp; Major contributions are usually acknowledged in the
- documentation, while minor fixes are often mentioned in comments within the
- code itself.
- </p>
-
- <hr>
- <p>
- Revised
- <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->
- 04 November, 2003<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
- </p>
- <p>
- &copy; <a name="Copyright" id="Copyright">Copyright</a> Beman Dawes 2003.
- </p>
-
- <p>
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy
- at <a href=
- "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
- </p>
- </body>
-</html>

Deleted: branches/proto/v3/more/library_reuse.htm
==============================================================================
--- branches/proto/v3/more/library_reuse.htm 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Boost Library Reuse</title>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-
-<table border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF"><img src="../boost.png" alt="boost.png (6897 bytes)" width="277" height="86"></td>
- <td>Home</td>
- <td>Libraries</td>
- <td>People</td>
- <td>FAQ</td>
- <td>More</td>
- </tr>
-</table>
-&nbsp;
-<h1>Boost Library reuse: cost versus benefit trade-offs</h1>
-<p>A Boost library <b>should not</b> use libraries other than Boost or the C++
-Standard Library.</p>
-<p>A Boost library <b>should</b> use other Boost Libraries or the C++ Standard
-Library, but only when the benefits outweigh the costs.&nbsp;</p>
-<p>The benefits of using components from other libraries may include clearer,
-more understandable code, reduced development and maintenance costs, and the
-assurance which comes from reusing well-known and trusted building blocks.</p>
-<p>The costs may include undesirable coupling between components, and added
-compilation and runtime costs.&nbsp; If the interface to the additional
-component is complex, using it may make code less readable, and thus actually
-increase development and maintenance costs.</p>
-<p>Negative effects of coupling become obvious when one library uses a second
-library which uses a third, and so on. The worst form of coupling requires the
-user understand each of the coupled libraries. Coupling may also reduce the
-portability of a library - even in case when all used libraries are
-self-sufficient (see example of questionable usage of &lt;iostream&gt; library
-below).</p>
-<p><b>Example where another boost component should certainly be used:</b>&nbsp;
-boost::noncopyable (in boost/utility.hpp) has
-considerable benefits; it simplifies code, improves readability, and signals
-intent.&nbsp; Costs are low as coupling is limited;&nbsp; noncopyable itself
-uses no other classes and its header includes only the lightweight headers
-&lt;boost/config.hpp&gt; and &lt;cstddef&gt;.&nbsp; There are no runtime costs
-at all. With costs so low and benefits so high, other boost libraries should use
-boost::noncopyable when the need arises except in exceptional circumstances.</p>
-<p><b>Example where a standard library component might possibly be used:</b>
-Providing diagnostic output as a debugging aid can be a nice feature for a
-library. Yet using Standard Library &lt;iostream&gt; can involves a lot of
-additional cost, particularly if &lt;iostream&gt; is unlikely to be use
-elsewhere in the application.&nbsp; In certain GUI or embedded applications,
-coupling to &lt;iostream&gt; would be a disqualification.&nbsp;&nbsp;&nbsp;
-Consider redesign of the boost library in question so that the user supplies the
-diagnostic output mechanism.</p>
-<p><b>Example where another boost component should not be used:</b>&nbsp; The
-boost dir_it library has considerable coupling and runtime costs, not to mention
-portability issues for unsupported operating systems.&nbsp; While completely
-appropriate when directory iteration is required, it would not be reasonable for
-another boost library to use dir_it just to check that a file is available
-before opening.&nbsp; C++ Standard Library file open functionality does this at
-lower cost.&nbsp; Don't use dir_it just for the sake of using a boost library.</p>
-<hr>
-<p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B %Y" startspan -->02 October 2003<!--webbot bot="Timestamp" endspan i-checksum="32277" --></p>
-<p>© Copyright Beman Dawes 2000</p>
-<p>Distributed under the Boost Software License, Version 1.0. (See
-accompanying file LICENSE_1_0.txt or copy
-at http://www.boost.org/LICENSE_1_0.txt)</p>
-
-</body>
-
-</html>
\ No newline at end of file

Deleted: branches/proto/v3/more/license_info.html
==============================================================================
--- branches/proto/v3/more/license_info.html 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,280 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html">
-<title>Boost Software License Background</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<table summary="Navigational header"
- border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF"><img src="../boost.png" alt="boost.png (6897 bytes)" width="277" height="86"></td>
- <td>Home</td>
- <td>Libraries</td>
- <td>People</td>
- <td>FAQ</td>
- <td>More</td>
- </tr>
-</table>
-
-<h1>Information about the Boost Software License </h1>
-
-<p>License text<br>
-Introduction<br>
-History<br>
-Rationale<br>
-FAQ<br>
-Transition<br>
-Acknowledgements</p>
-
-<h2><a name="Introduction">Introduction</a></h2>
-
-<p>The Boost Software License
-specifies the terms and conditions of use for those Boost libraries
-that it covers.</p>
-
-<p>Currently, some Boost libraries have their own licenses. The hope is that
-eventually all Boost libraries will be covered by the Boost Software
-License. In the meantime, <b>all</b> libraries comply with the <a
-href="#requirements">Boost License requirements</a>.</p>
-
-<h2><a name="History">History</a></h2>
-
-<p>As Boost grew, it became unmanageable for each Boost file to have
-its own license. Users complained that each license needed to be reviewed, and that
-reviews were difficult or impossible if Boost libraries contained many different licenses.
-Boost moderators and maintainers spent excessive time dealing with license
-issues. Boost developers often copied existing licenses without actually knowing
-if the license wording met legal needs.</p>
-<p>To clarify these licensing issues, the Boost moderators asked for help from
-the Berkman Center for Internet & Society
-at Harvard Law School, Cambridge, Massachusetts, USA. It was requested that a
-single Boost license be developed that met the traditional requirements that Boost licenses, particularly:</p>
-
-<a name="requirements"></a>
-<ul>
- <li>Must be simple to read and understand. </li>
- <li>Must grant permission without fee to copy, use and modify the software for
- any use (commercial and non-commercial). </li>
- <li>Must require that the license appear with all copies [including
- redistributions] of the software source code. </li>
- <li>Must not require that the license appear with executables or other binary
- uses of the library. </li>
- <li>Must not require that the source code be available for execution or other
- binary uses of the library. </li>
-</ul>
-
-<p>Additionally, other common open source licenses were studied to see what
-additional issues were being treated, and additions representing good legal
-practice were also requested. The result is the <a href="../LICENSE_1_0.txt">Boost
-Software License</a>.</p>
-
-<h2><a name="Rationale">Rationale</a></h2>
-
-<p>The following rationale was provided by Devin Smith, the
-lawyer who wrote the Boost Software License. It has been edited slightly for
-brevity. Editorial additions are shown in square brackets.</p>
-
-<h3>Benefit of Common Software License</h3>
-<p>If one of Boost's goals is to ease use and adoption of the various
-libraries made available by Boost, it does make sense to try to
-standardize the licenses under which the libraries are made available to
-users. (I make some recommendations about a possible short-form license
-below.)</p>
-<p>[Standardizing the license will not] necessarily address the issue of satisfying
-corporate licensees. Each corporation will have its own concerns, based
-on their own experiences with software licensing and distribution and,
-if they're careful, will want to carefully review each license, even if
-they've been told that they're all standard. I would expect that,
-unless we're remarkably brilliant (or lucky) in drafting the standard
-Boost license, the standard license won't satisfy the legal departments
-of all corporations. I imagine that some will, for instance, absolutely
-insist that licensors provide a warranty of title and provide
-indemnification for third-party intellectual property infringement
-claims. Others may want functional warranties. (If I were advising the
-corporations, I would point out that they're not paying anything for the
-code and getting such warranties from individual programmers, who
-probably do not have deep pockets, is not that valuable anyway, but
-other lawyers may disagree.)</p>
-<p>But this can be addressed, not by trying to craft the perfect standard
-license, but by informing the corporations that they can, if they don't like the
-standard license, approach the authors to negotiate a different, perhaps even
-paid, license.</p>
-<p>One other benefit of adopting a standard license is to help ensure that
-the license accomplishes, from a legal perspective, what the authors
-intend. For instance, many of the [original] licenses for the libraries available
-on boost.org do not disclaim the warranty of title, meaning that the
-authors could, arguably, be sued by a user if the code infringes the
-rights of a third party and the user is sued by that third party. I
-think the authors probably want to disclaim this kind of liability.</p>
-<h3>Short-Form License</h3>
-<p>Without in anyway detracting from the draft license that's been
-circulated [to Boost moderators], I'd like to propose an alternative &quot;short-form&quot; license that
-Boost could have the library authors adopt. David [Abrahams] has expressed a
-desire to keep things as simple as possible, and to try to move away
-from past practice as little as possible, and this is my attempt at a
-draft.</p>
-<p>This license, which is very similar to the BSD license and the MIT
-license, should satisfy the Open Source Initiative's Open Source
-Definition: (i) the license permits free redistribution, (ii) the
-distributed code includes source code, (iii) the license permits the
-creation of derivative works, (iv) the license does not discriminate
-against persons or groups, (v) the license does not discriminate against
-fields of endeavor, (vi) the rights apply to all to whom the program is
-redistributed, (vii) the license is not specific to a product, and (viii) the
-license is technologically neutral (i.e., it does not [require] an explicit gesture of
-assent in order to establish a contract between licensor and licensee).</p>
-<p>This license grants all rights under the owner's copyrights (as well as an
-implied patent license), disclaims all liability for use of the code (including
-intellectual property infringement liability), and requires that all subsequent
-copies of the code [except machine-executable object code], including partial copies and derivative works, include the
-license.</p>
-
-<h2><a name="FAQ">FAQ</a></h2>
-
-<p><b>How should Boost programmers apply the license to source and
-header files?</b></p>
-
-<p>Add a comment based on the following template, substituting
-appropriate text for the italicized portion:
-<br>
-<br>
-<pre>
-// Copyright <i>Joe Coder 2004 - 2006</i>.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-</pre>
-<br>
-Please leave an empty line before and after the above comment block.
-It is fine if the copyright and license messages are not on different lines; in
-no case there should be other intervening text. Do not include
-"All rights reserved" anywhere.<br>
-
-<p>Other ways of licensing source files have been considered, but some
-of them turned out to unintentionally nullify legal elements of the
-license. Having fixed language for referring to the license helps
-corporate legal departments evaluate the boost distribution.
-Creativity in license reference language is strongly discouraged, but
-judicious changes in the use of whitespace are fine.
-
-<p><b>How should the license be applied to documentation files, instead?</b></p>
-
-<p>Very similarly to the way it is applied to source files: the user should
-see the very same text indicated in the template above, with the only difference
-that both the local and the web copy of LICENSE_1_0.txt should be linked to.
-Refer to the HTML source code of this page in case of doubt.
-
-<p>Note that the location of the local LICENSE_1_0.txt needs to be indicated
-relatively to the position of your documentation file
-(<code>../LICENSE_1_0.txt</code>, <code>../../LICENSE_1_0.txt</code> etc.)</p>
-
-<p><b>How is the Boost license different from the
-<a href="http://www.opensource.org/licenses/gpl-license.php">GNU General Public
-License (GPL)</a>?</b></p>
-
-
-<p>The Boost license permits the creation of derivative works for
-commercial or non-commercial use with no legal requirement to release
-your source code. Other differences include Boost not requiring
-reproduction of copyright messages for object code redistribution, and
-the fact that the Boost license is not &quot;viral&quot;: if you
-distribute your own code along with some Boost code, the Boost license
-applies only to the Boost code (and modified versions thereof); you
-are free to license your own code under any terms you like. The GPL is
-also much longer, and thus may be harder to understand.</p>
-
-<p><b>Why the phrase &quot;machine-executable object code generated by a source
-language processor&quot;?</b></p>
-
-<p>To distinguish cases where we do not require reproduction of the copyrights
-and license, such as object libraries, shared libraries, and final program
-executables, from cases where reproduction is still required, such as
-distribution of self-extracting archives of source code or precompiled header
-files. More detailed wording was rejected as not being legally necessary, and
-reducing readability.</p>
-
-<p><b>Why is the &quot;disclaimer&quot; paragraph of the license entirely in uppercase?</b></p>
-
-<p>Capitalization of these particular provisions is a US legal mandate for
-consumer protection. (Diane Cabell)</p>
-
-<p><b>Does the copyright and license cover interfaces too?</b></p>
-
-<p>The conceptual interface to a library isn't covered. The particular
-representation expressed in the header is covered, as is the documentation,
-examples, test programs, and all the other material that goes with the library.
-A different implementation is free to use the same logical interface, however.
-Interface issues have been fought out in court several times; ask a lawyer for
-details.</p>
-
-<p><b>Why doesn't the license prohibit the copyright holder from patenting the
-covered software?</b></p>
-
-<p>No one who distributes their code under the terms of this license could turn
-around and sue a user for patent infringement. (Devin Smith)</p>
-
-<p>Boost's lawyers were well aware of patent provisions in licenses like the GPL
-and CPL, and would have included such provisions in the Boost license if they
-were believed to be legally useful.</p>
-
-<p><b>Why doesn't the copyright message say &quot;All rights reserved&quot;?</b></p>
-
-<p>Devin Smith says &quot;I don't think it belongs in the copyright notice for
-anything (software, electronic documentation, etc.) that is being licensed. It
-belongs in books that are sold where, in fact, all rights (e.g., to reproduce
-the book, etc.) are being reserved in the publisher or author. I think it
-shouldn't be in the BSD license.&quot;</p>
-
-<p><b>Do I have to copyright/license trivial files?</b>
-
-<p>Even a test file that just contains an empty <code>main()</code>
-should have a copyright. Files without copyrights make corporate
-lawyers nervous, and that's a barrier to adoption. The more of Boost
-is uniformly copyrighted and licensed, the less problem people will
-have with mounting a Boost release CD on a corporate server.
-
-
-<p><b>Can I use the Boost license for my own projects outside Boost?</b>
-
-<p>Sure; there are no restrictions on the use of the license itself.
-
-<h2><a name="Transition">Transition</a></h2>
-
-<p>To ease the transition of the code base towards the new common
-license, several people decided to give a <a
-href="blanket-permission.txt">blanket permission</a> for all
-their contributions to use the new license. This hopefully helps
-maintainers to switch to the new license once the list contains enough
-names without asking over and over again for each change. Please
-consider adding your name to the list.</p>
-
-<h2><a name="Acknowledgements">Acknowledgements</a></h2>
-<p>Dave Abrahams led the Boost effort to develop better licensing. The legal
-team was led by
-Diane Cabell,
-Director, Clinical Programs, <a href="http://cyber.law.harvard.edu">Berkman
-Center for Internet &amp; Society</a>, Harvard Law School.
-Devin Smith, attorney, <a href="http://www.nixonpeabody.com/default.asp">
-Nixon Peabody LLP</a>, wrote the Boost License. Eva Chan, Harvard Law School,
-contributed analysis of Boost issues and drafts of various legal documents.
-Boost members reviewed drafts of the license. Beman Dawes wrote this web page.</p>
-<hr>
-<p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->27 August, 2004<!--webbot bot="Timestamp" endspan i-checksum="39365" --></p>
-
-<p> &copy; Copyright 2003-2004 Beman Dawes, Daniel Frey, David Abrahams.</p>
-<p> Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or
-copy at www.boost.org/LICENSE_1_0.txt)
-</p>
-
-</body>
-
-</html>

Deleted: branches/proto/v3/more/mailing_lists.htm
==============================================================================
--- branches/proto/v3/more/mailing_lists.htm 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,412 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-<head>
- <title>Mailing Lists</title>
- <meta name="generator" content=
- "Microsoft FrontPage 5.0">
- <meta name="generator" content="Microsoft FrontPage 5.0">
- <meta name="generator" content="Microsoft FrontPage 5.0">
- <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
- <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
- <meta name="ProgId" content="FrontPage.Editor.Document">
-<style type="text/css">
-_at_import ../boost.css
-.first {
- margin-top: 0 }
-
-.last {
- margin-bottom: 0 }
-
-div.attention, div.caution, div.danger, div.error, div.hint,
-div.important, div.note, div.tip, div.warning, div.admonition {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-div.hint p.admonition-title, div.important p.admonition-title,
-div.note p.admonition-title, div.tip p.admonition-title,
-div.admonition p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
- </style>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
- <table summary="Navigational header"
- border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF"><img src="../boost.png" alt=
- "boost.png (6897 bytes)" width="277" height="86"></td>
-
- <td><a href="../index.htm"><font face="Arial" color=
- "#FFFFFF"><big>Home</big></font></a></td>
-
- <td><a href="../libs/libraries.htm"><font face="Arial" color=
- "#FFFFFF"><big>Libraries</big></font></a></td>
-
- <td><a href="../people/people.htm"><font face="Arial" color=
- "#FFFFFF"><big>People</big></font></a></td>
-
- <td><a href="faq.htm"><font face="Arial" color=
- "#FFFFFF"><big>FAQ</big></font></a></td>
-
- <td><a href="index.htm"><font face="Arial" color=
- "#FFFFFF"><big>More</big></font></a></td>
- </tr>
- </table>
-
- <h1>Boost Mailing Lists and other resources</h1>
-
- <p>The mailing lists are the heart of the Boost community.&nbsp; You may
- read the lists via full-content email, email digests, or via newsgroup
- reader.</p>
-
- <p>Hosting for the mailing lists is donated by the <a href=
- "http://www.osl.iu.edu/">Open Systems Lab at Indiana University</a>.</p>
-
- <p>Access to Boost mailing lists via newsgroup (NNTP) is contributed by
- GMANE.</p><a name="gmane_post" id=
- "gmane_post"></a><a name="important_notes" id="important_notes"></a>
-
- <div class="admonition-note admonition">
- <p class="first admonition-title">Before Posting</p>
-
- <p class="last">
-
- <b>Read the <a href="discussion_policy.htm">Discussion Policy and
- Guide to Effective Posting</a>.</b>&nbsp; Doing so will help you
- to ensure that your post is read by the people who can help you
- and received in the spirit in which it was intended.
-
-<p>
- <b>Subscribe your posting address.</b>&nbsp; As an anti-spam
- measure, postings to most Boost mailing lists will only be
- accepted if the posting's "From:" header contains an email
- address that is subscribed to the list.&nbsp; If you try to post from
- an address that isn't subscribed, you will probably get a
- message that says:</p>
-
- <blockquote>
- <tt>You are not allowed to post to this mailing list, and your message
- has been automatically rejected. If you think that your messages are
- being rejected in error, contact the mailing list owner at</tt> <i>list
- administrator's email address</i>.
- </blockquote>If you need to post from multiple email addresses, you
- should subscribe each one separately.&nbsp; You can configure your subscription
- settings for any address to disable mail delivery via each mailing list's
- web interface.
-
- <p>Even postings made through the <a href=
- "http://www.gmane.org">GMane</a> news server need to be made from
- subscribed addresses because GMane simply forwards your postings
- on to the appropriate email list.&nbsp; Don't be fooled by GMane's
- authentication message that says "you are now authorized to post
- to this list" after you answer its autogenerated mail; only
- subscribed addresses may post.</p>
-
-</div>
-
- <dl>
- <dt>Boost Users list
-
- <dt>Boost developers list</dt>
-
- <dd>
- <dl>
- <dt>Archives for the Boost developers
- list</dt>
- </dl>
- </dd>
-
- <dt>Boost Announce list</dt>
-
- <dt>Boost Interest list</dt>
-
- <dt>Project-Specific lists</dt>
-
- <dd>
- <dl>
- <dt>Boost.Build list</dt>
-
- <dt>Python C++-Sig (for Boost.Python)</dt>
-
- <dt>Language Binding (for generalized C++
- bindings)</dt>
-
- <dt>Boost.Spirit lists</dt>
-
- <dt>Boost.Documentation list</dt>
-
- <dt>Testing list (about regression-testing the
- boost libraries, not for the Boost.Test library specifically)</dt>
-
- <dt>Boost.uBlas (numerics) list</dt>
-
- <dt>Boost.Thread list</dt>
- </dl>
- </dd>
-
- <dt>Boost Sandbox</dt>
-
- <dt>#boost IRC channel</dt>
-
- <dt>#boost IRC channel</dt>
- </dl>
-
- <h2>Boost <a name="users" id="users">Users</a> mailing list (also available
- via newsgroup)</h2>
-
- <p>This list is oriented toward casual users of the Boost
- libraries.&nbsp;It is a good place to start if you are having
- trouble getting started with Boost or its individual libraries. Feel
- free to post both "newbie" and more challenging questions, but
- please check first to see if there's an
- appropriate Project-Specific list; you'll
- often get better answers in a forum dedicated to your problem
- area.&nbsp; This list is relatively
- low volume (less than 500 per month).&nbsp; Subscribe or unsubscribe
- at the <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost-users">Boost Users list
- home page</a>.
-</p>
-
- <p>For those who prefer to participate via an NNTP (<a name=
- "users_newsgroup" id="users_newsgroup">newsgroup</a>) interface, a gateway
- to the Boost Users mailing list is available at <a href=
- "news://news.gmane.org/gmane.comp.lib.boost.user">news://news.gmane.org/gmane.comp.lib.boost.user>.
- You can also browse <a href=
- "
http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.user">Gmane's
- searchable archive</a>.</p>
-
- <h2><a name="main" id="main">Boost</a> developers mailing list (also
- available via newsgroup)</h2>
-
- <p>This is the main Boost mailing list.&nbsp; It is high volume (over 1000
- messages per month), very technical, and oriented toward Boost library
- developers. It is also read by many other members interested in watching
- the Boost library development process.&nbsp; Virtually all Boost decisions,
- major or minor, technical or otherwise, are reached via public discussion
- on this mailing list.&nbsp; It is where the formal reviews of proposed
- libraries take place. Subscribe or unsubscribe at <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost">http://lists.boost.org/mailman/listinfo.cgi/boost>.</p>
-
- <p>When we talk about the "members of Boost", we are talking about those
- signed up for this main mailing list.</p>
-
- <p>For those who prefer to participate via an NNTP (<a name="newsgroup" id=
- "newsgroup">newsgroup</a>) interface, a gateway to the Boost mailing list
- is available at <a href=
- "
news://news.gmane.org/gmane.comp.lib.boost.devel">news://news.gmane.org/gmane.comp.lib.boost.devel>.
-
- <p>Preliminary libraries under discussion are available from the <a href=
- "
http://boost-consulting.com/vault/">Vault</a>.</p>
-
- <h3><a name="archive" id="archive">Archives</a> for Boost developers
- list</h3>
-
- <p>Archives of Boost messages include the
- <a href="http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.devel">Boost
- GMane NNTP Archive</a>, <a href=
- "http://www.mail-archive.com/boost%40lists.boost.org/">The Mail
- Archive</a>, <a
- href="http://archives.free.net.ph/list/boost.en.html">The Free
- Network Group</a>, and of course there is a Google search link for our <a href=
- "http://lists.boost.org/Archives/boost/">MailMan Archive</a> on
- our home page.
-
- <h2>Boost <a name="announce" id="announce">Announce</a> mailing list</h2>
-
- <p>This is an announce-only list for notification of upcoming software
- releases and formal reviews of proposed libraries. One to three messages
- per month.&nbsp; Subscribe or unsubscribe at the <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost-announce">Boost Announce
- list home page</a>.</p><a name="interest" id="interest"></a>
-
- <h2>Boost Interest Mailing List</h2>
-
- <p>This list is a moderated low-traffic announcement-only list of
- interest to the Boost community. On topic messages will include
- announcements of books, magazine articles, papers, talks, seminars,
- products, tools, events, or conferences on advanced uses of C++,
- generic/generative/meta-programming, and, of course, the Boost
- libraries. Off topic will be discussion of any kind. Job postings
- are accepted at the moderators' discretion. Subscribe or
- unsubscribe at the <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost-interest">Boost-Interest
- home page</a>.</p>
-
- <h2><a name="projects" id="projects">Project-Specific lists</a></h2>Several
- mailing lists have been established for specific Boost projects:
-
- <dl>
- <dd>
- <h3><a name="jamboost" id="jamboost">Boost.Build</a>
- list</h3>The mailing list for the <a href=
- "../tools/build">Boost Build System</a> is located <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost-build">here</a>. GMane provides
- <a href="news://news.gmane.org/gmane.comp.lib.boost.build">NNTP
- access</a> and <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.build">Searchable
- Archives</a> as well.
-
- <h3><a name="cplussig" id="cplussig">Python C++-Sig</a> (for
- Boost.Python)</h3>The <a href=
- "http://www.python.org/community/sigs/current/c++-sig/">Python C++-sig</a> is not
- strictly Boost-specific, but nearly all the traffic concerns <a href=
- "../libs/python">Boost.Python</a>. See also the <a href=
- "#langbinding">Language Binding</a> list below. GMane provides <a href=
- "news://news.gmane.org/gmane.comp.python.c%2b%2b">NNTP access</a> and
- <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.python.c%2b%2b">Searchable
- Archives</a> as well. There are also searchable archives at
- <a href=
- "http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/cpp-sig">ASPN</a>.
-
- <h3><a name="langbinding" id="langbinding">Language Binding</a></h3>The
- <a href=
- "http://lists.sourceforge.net/lists/listinfo/boost-langbinding">Language
- Binding</a> list is for discussion of a generalized framework for
- binding C++ to other languages and systems based on the technology of
- Boost.Python and <a href=
- "http://luabind.sourceforge.net/">Luabind</a>. The plan is to provide a
- single front-end for describing bindings with runtime-pluggable back
- ends for binding to specific languages. It is <b>highly recommended</b>
- that new subscribers read through the <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.langbinding">
- message history</a> <b>from the beginning</b> before posting; it will
- save time as much design progress has already been made. GMane provides
- <a href="news://news.gmane.org/gmane.comp.lib.boost.langbinding">NNTP
- access</a> and <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.langbinding">
- Searchable Archives</a> as well.
-
-
- <h3><a name="spirit" id="spirit">Boost.Spirit</a> lists</h3>Spirit has
- two additional mailing lists. <a href=
- "https://lists.sourceforge.net/lists/listinfo/spirit-general">Spirit-general</a>
- for Spirit users and <a href=
- "https://lists.sourceforge.net/lists/listinfo/spirit-devel">Spirit-devel</a>
- for Spirit developers (open to anyone who wishes to hang out with
- Spirit coders). Both have GMane NNTP
- access (<a href=
- "news://news.gmane.org/gmane.comp.parsers.spirit.general">Spirit-general</a>
- and <a href=
- "news://news.gmane.org/gmane.comp.parsers.spirit.devel">Spirit-devel</a>)
- with searchable archives ( <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.parsers.spirit.general">
- Spirit-general</a> and <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.parsers.spirit.devel">
- Spirit-devel</a>).
-
-
- <h3><a name="boostdocs" id="boostdocs">Boost.Documentation</a>
- list</h3>The SourceForge mailing list for the <a href=
- "../doc/html/boostbook.html">Boost Documentation System</a> is located <a href=
- "https://lists.sourceforge.net/lists/listinfo/boost-docs">here</a>.
- GMane provides <a href=
- "news://news.gmane.org/gmane.comp.lib.boost.documentation">NNTP
- access</a> and <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.documentation">
- Searchable Archives</a> as well.
-
-
- <h3><a name="ublas" id="ublas">uBLAS development</a> (ublas-dev)
- list</h3>A seperate user and developer mailing list for <a href=
- "../libs/numeric/ublas/doc/index.htm">Boost uBLAS</a> specific topics is
- located here.
-
- <h3><a name="thread" id="thread">Thread development</a> (threads-devel)
- list</h3>A seperate developer mailing list for <a href=
- "../libs/thread/doc/index.html">Boost Thread</a> specific topics is
- located
- here.
- <p><strong>Important: </strong>This mailing list is for the discussion of
- the specification and implementation of Boost.Threads only &mdash;
- questions regarding usage should be directed to the
- Boost Users list, or the main
- Boost developers list.
-
-
- <p>GMane provides <a href=
- "news://news.gmane.org/gmane.comp.lib.boost.threads-devel">NNTP
- access</a> and <a href=
- "http://news.gmane.org/thread.php?group=gmane.comp.lib.boost.threads-devel">
- Searchable Archives</a> as well.
-
-
- <h3><a name="testing" id="testing">Testing</a> list</h3>
-
- <p>The setup, procedures and tools necessary for running Boost
- regression tests are discussed on <a href=
- "http://lists.boost.org/mailman/listinfo.cgi/boost-testing">this
- list</a>. The list main participants are regression runners - people
- who run Boost tests on a variety of compilers and platforms, and the
- maintainers of tools for collecting and processing test results.</p>
-
- <p><b>Important:</b> questions relevant to a wider audience, including
- questions about Boost.Test framework or test results for a particular
- library, should be posted to main development list.</p><a href=
- "news://news.gmane.org/gmane.comp.lib.boost.documentation">NNTP
- access</a> and <a href=
- "http://news.gmane.org/gmane.comp.lib.boost.testing">Searchable
- Archives</a> are available on GMane.
-
- <h3>Boost Subversion Commit Messages</h3>
- <p>The <a
- href="http://lists.boost.org/mailman/listinfo.cgi/boost-commit">boost-commit</a>
- mailing list receives messages whenever a change is committed to
- the Boost Subversion repository.</p>
-
- </dd>
- </dl>
-
- <h2>Boost <a name="sandbox" id="sandbox">Sandbox</a></h2>
-
- <p>In addition to the main <a href="getting_started.html#CVS">Boost CVS
- repository</a>, a separate Sandbox is available for Boost developers
- wishing to collaborate on projects prior to formal acceptance of a new
- library.&nbsp; Read-only access is available via Subversion and web browser at
- <a href=
- "http://svn.boost.org/svn/boost/sandbox">http://svn.boost.org/svn/boost/sandbox>.
-
- <p>Developer access to the sandbox uses the Subversion repository
- at <a href=
- "
https://svn.boost.org/svn/boost/sandbox">https://svn.boost.org/svn/boost/sandbox>. For more information about the Boost Subversion repository,
- please
- see
http://svn.boost.org.</p>
-
- <h2>#boost <a name="IRC" id="IRC">IRC</a> channel</h2>
-
- <p>In addition to the mailing lists presented above, a #boost IRC channel on
- freenode is frequented by some boost users.
- As usual with IRC channels, one should not necessarily expect that his questions
- will be answered. The channel is not moderated.</p>
-
- <h2>#boost <a name="IRC" id="IRC">IRC</a> channel</h2>
-
- <p>In addition to the mailing lists presented above, a #boost IRC channel on
- freenode is frequented by some boost users.
- As usual with IRC channels, one should not necessarily expect that his questions
- will be answered. The channel is not moderated.</p>
- <hr>
-
- <p>Revised
- <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y"
- startspan -->11 December, 2006<!--webbot bot="Timestamp" endspan
- i-checksum="39365" --></p>
-
- <p>Copyright Beman Dawes and David Abrahams 2001-2005</p>
-
- <p>Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy
- at http://www.boost.org/LICENSE_1_0.txt)</p>
-</body>
-</html>

Deleted: branches/proto/v3/more/separate_compilation.html
==============================================================================
--- branches/proto/v3/more/separate_compilation.html 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,385 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
- <head>
- <title>Guidelines for Authors of Boost Libraries Containing Separate Source</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <LINK href="../boost.css" type="text/css" rel="stylesheet"></head>
- <body>
- <TABLE summary="Page header" id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="0">
- <TR>
- <td vAlign="top" width="300">
- <h3>C++ Boost</h3>
- </td>
- <TD width="353">
- <H1 align="center">Guidelines for Authors of Boost Libraries Containing Separate
- Source</H1>
- </TD>
- </TR>
- </TABLE>
- <BR>
- <HR>
- <P>These guidelines are designed for the authors of Boost libraries which have
- separate source that need compiling in order to use the library. Throughout,
- this guide refers to a fictitious "whatever" library, so replace all
- occurrences of "whatever" or "WHATEVER" with your own library's name when
- copying the examples.</P>
- <H2>Contents</H2>
- <dl class="index">
- <dt>Changes Affecting Source Code
- <dd>
- <dl class="index">
- <dt>Preventing Compiler ABI Clashes <DT><A href="#static_or_dynamic">Static
- or Dymanic Libraries</A>&nbsp; <dt>Supporting Windows Dll's <dt>
- Automatic Library Selection and Linking with auto_link.hpp
- </dt>
- </dl>
- <dt>Changes Affecting the Build System
- <dd>
- <dl class="index">
- <dt>Creating the Library Jamfile <dt><A href="#testing">Testing
- Auto-linking</A> </dt>
- </dl>
- <dt>Copyright</dt>
- </dl>
- <h2><A name="source_changes"></A>Changes Affecting Source Code</h2>
- <H3><A name="abi"></A>Preventing Compiler ABI Clashes</H3>
- <P>There are some compilers (mostly Microsoft Windows compilers again!), which
- feature a range of compiler switches that alter the ABI of C++ classes and
- functions. By way of example, consider Borland's compiler which has the
- following options:</P>
- <PRE>-b (on or off - effects enum sizes).
--Vx (on or off - empty members).
--Ve (on or off - empty base classes).
--aX (alignment - 5 options).
--pX (Calling convention - 4 options).
--VmX (member pointer size and layout - 5 options).
--VC (on or off, changes name mangling).
--Vl (on or off, changes struct layout).
-</PRE>
- <P>These options are provided in addition to those affecting which runtime library
- is used (more on which later); the total number of combinations of options can
- be obtained by multiplying together the individual options above, so that gives
- 2*2*2*5*4*5*2*2 = 3200 combinations!
- </P>
- <P>The problem is that users often expect to be able to build the Boost libraries
- and then just link to them and have everything just plain work, no matter what
- their project settings are. Irrespective of whether this is a reasonable
- expectation or not, without some means of managing this issue, the user may
- well find that their program will experience strange and hard to track down
- crashes at runtime unless the library they link to was built with the same
- options as their project (changes to the default alignment setting are a prime
- culprit). One way to manage this is with "prefix and suffix" headers: these
- headers invoke compiler specific #pragma directives to instruct the compiler
- that whatever code follows was built (or is to be built) with a specific set of
- compiler ABI settings.</P>
- <P>Boost.config provides the macro BOOST_HAS_ABI_HEADERS which is set whenever
- there are prefix and suffix headers available for the compiler in use, typical
- usage in a header like this:</P>
- <PRE>#ifndef BOOST_WHATEVER_HPP
-#define BOOST_WHATEVER_HPP
-
-#include &lt;boost/config.hpp&gt;
-
-// this must occur after all of the includes and before any code appears:
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-//
-// this header declares one class, and one function by way of examples:
-//
-class whatever
-{
- // details.
-};
-
-whatever get_whatever();
-
-// the suffix header occurs after all of our code:
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif
-</PRE>
- <P>You can include this code in your library source files as well if you want,
- although you probably shouldn't need to:&nbsp;&nbsp;</P>
- <UL>
- <LI>
- If you <EM>don't</EM>
- use these in the library source files (but do in your library's headers) and
- the user attempts to compile the library source with a non-default ABI setting,
- then they will get compiler errors if there are any conflicts.
- <LI>
- If you <EM>do </EM>include them in both the library's headers and the library
- source files, then the code should always compile no matter what the compiler
- settings used, although the result might not match what the user was expecting:
- since we've forced the ABI back into default mode.</LI></UL>
- <H4>Rationale:</H4>
- <P>Without some means of managing this issue, users often report bugs along the
- line of "Your silly library always crashes when I try and call it" and so on.
- These issues can be extremely difficult and time consuming to track down, only
- to discover in the end that it's a compiler setting that's changed the ABI of
- the class and/or function types of the program compared to those in the
- pre-compiled library. The use of prefix/suffix headers can minimize this
- problem, although probably not remove it completely.</P>
- <H5>Counter Argument #1:</H5>
- <P>Trust the user, if they want 13-byte alignment (!) let them have it.</P>
- <H5>Counter Argument #2:</H5>
- <P>Prefix/suffix headers have a tendency to "spread" to other boost libraries -
- for example if boost::shared_ptr&lt;&gt; forms part of your class's ABI, then
- including prefix/suffix headers in your code will be of no use unless
- shared_ptr.hpp also uses them. Authors of header-only boost libraries may not
- be so keen on this solution - with some justification - since they don't face
- the same problem.</P>
- <H3><A name="static_or_dynamic"></A>Static or Dynamic Libraries</H3>
- <P>When the users runtime is dynamically linked the Boost libraries can be built
- either as dynamic libraries (.so's on Unix platforms, .dll's on Windows) or as
- static libraries (.a's on Unix, .lib's on Windows).&nbsp; So we have a choice
- as to which is supported by default:</P>
- <UL>
- <LI>
- On Unix platforms it typically makes no difference to the code: the user just
- selects in their makesfile which library they prefer to link to.
- <LI>
- On Windows platforms, the code has to be specially annotated to support DLL's,
- so we need to pick one option as the default and one as an alternative.
- <LI>
- On Windows platforms, we can inject special code to automatically select which
- library variant to link against: so again we need to decide which is to be the
- default (see the section on auto-linking below).</LI></UL>
- <P>The recomendation is to pick static linking by default.</P>
- <H4>Rationale:</H4>
- <P>There is no one policy that fits all here.
- </P>
- <P>The rationale for the current behaviour was inherited from Boost.Regex (and
- it's ancestor regex++): this library&nbsp;originally used dynamic linking by
- default whenever the runtime was dynamic. It's actually safer that way should
- you be using regex from a dll for example. However,&nbsp;this
- behavior&nbsp;brought a persistent stream of user complaints: mainly about
- deployment, all asking if static linking could be the default. After&nbsp;regex
- changed behavior the complaints stopped, and the author hasn't had one
- complaint about static linking by default being the wrong choice.</P>
- <P>Note that other libraries might need to make other choices: for example
- libraries that are intended to be used to implement dll pluggin's would like
- need to use dynamic linking in almost all cases.</P>
- <H3>Supporting Windows Dll's</H3>
- <p>On most Unix-like platforms no special annotations of source code are required
- in order for that source to be compiled as a shared library because all
- external symbols are exposed. However the majority of Windows compilers require
- that symbols that are to be imported or exported from a dll, be prefixed with
- __declspec(dllimport) or __declspec(dllexport). Without this mangling of source
- code, it is not possible to correctly build shared libraries on Windows
- (historical note - originally these declaration modifiers were required on
- 16-bit Windows where the memory layout for exported classes was different from
- that of "local" classes - although this is no longer an issue, there is still
- no way to instruct the linker to "export everything", it also remains to be
- seen whether 64-bit Windows will resurrect the segmented architecture that led
- to this problem in the first place. Note also that the mangled names of
- exported symbols are different from non-exported ones, so __declspec(dllimport)
- is required in order to link to code within a dll).</p>
- <p>In order to support the building of shared libraries on MS Windows your code
- will have to prefix all the symbols that your library exports with a macro
- (lets call it BOOST_WHATEVER_DECL) that your library will define to expand to
- either __declspec(dllexport) or __declspec(dllimport) or nothing, depending
- upon how your library is being built or used. Typical usage would look like
- this:</p>
- <pre>#ifndef BOOST_WHATEVER_HPP
-#define BOOST_WHATEVER_HPP
-
-#include &lt;boost/config.hpp&gt;
-
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
-// we need to import/export our code only if the user has specifically
-// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
-// libraries to be dynamically linked, or BOOST_WHATEVER_DYN_LINK
-// if they want just this one to be dynamically liked:
-#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_WHATEVER_DYN_LINK)
-// export if this is our own source, otherwise import:
-#ifdef BOOST_WHATEVER_SOURCE
-# define BOOST_WHATEVER_DECL __declspec(dllexport)
-#else
-# define BOOST_WHATEVER_DECL __declspec(dllimport)
-#endif // BOOST_WHATEVER_SOURCE
-#endif // DYN_LINK
-#endif // BOOST_HAS_DECLSPEC
-//
-// if BOOST_WHATEVER_DECL isn't defined yet define it now:
-#ifndef BOOST_WHATEVER_DECL
-#define BOOST_WHATEVER_DECL
-#endif
-
-//
-// this header declares one class, and one function by way of examples:
-//
-class BOOST_WHATEVER_DECL whatever
-{
- // details.
-};
-
-BOOST_WHATEVER_DECL whatever get_whatever();
-
-#endif
-</pre>
- And then in the source code for this library one would use:
- <pre>
-//
-// define BOOST_WHATEVER SOURCE so that our library's
-// setup code knows that we are building the library (possibly exporting code),
-// rather than using it (possibly importing code):
-//
-#define BOOST_WHATEVER_SOURCE
-#include &lt;boost/whatever.hpp&gt;
-
-// class members don't need any further annotation:
-whatever::whatever() { }
-// but functions do:
-BOOST_WHATEVER_DECL whatever get_whatever()
-{
- return whatever();
-}
-</pre>
- <H4>Importing/exporting dependencies</H4>
- <P>As well as exporting your main classes and functions (those that are actually
- documented), Microsoft Visual C++ will warn loudly and often if you try to
- import/export a class whose dependencies are not also exported. Dependencies
- include: any base classes, any user defined types used as data members, plus
- all of the dependencies of your dependencies and so on. This causes particular
- problems when a dependency is a template class, because although it is
- technically possible to export these, it is not at all easy, especially if the
- template itself has dependencies which are implementation-specific details. In
- most cases it's probably better to simply suppress the warnings using:</P>
- <PRE>#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable : 4251 4231 4660)
-#endif
-
-// code here
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-</PRE>
- <p>This is safe provided that there are no dependencies that are (template)
- classes with non-constant static data members, these really do need exporting,
- otherwise there will be multiple copies of the static data members in the
- program, and that's really really bad.
- </p>
- <p>Historical note: on 16-bit Windows you really did have to export all
- dependencies or the code wouldn't work, however since the latest Visual Studio
- .NET supports the import/export of individual member functions, it's a
- reasonably safe bet that Windows compilers won't do anything nasty - like
- changing the class's ABI - when importing/exporting a class.</p>
- <h4>Rationale:</h4>
- <p><EM>Why bother - doesn't the import/export mechanism take up more code that the
- classes themselves?</EM></p>
- <P>A good point, and probably true, however there are some circumstances where
- library code must be placed in a shared library - for example when the
- application consists of multiple dll's as well as the executable, and more than
- one those dll's link to the same Boost library - in this case if the library
- isn't dynamically linked and it contains any global data (even if that data is
- private to the internals of the library) then really bad things can happen -
- even without global data, we will still get a code bloating effect.
- Incidentally, for larger applications, splitting the application into multiple
- dll's can be highly advantageous - by using Microsoft's "delay load" feature
- the application will load only those parts it really needs at any one time,
- giving the impression of a much more responsive and faster-loading application.</P>
- <p><EM>Why static linking by default? </EM>
- </p>
- <P>In the worked example above, the code assumes that the library will be
- statically linked unless the user asks otherwise. Most users seem to prefer
- this (there are no separate dll's to distribute, and the overall distribution
- size is often significantly smaller this way as well: i.e. you pay for what you
- use and no more), but this is a subjective call, and some libraries may even
- only be available in dynamic versions (Boost.threads for example).</P>
- <h3><A name="auto-link"></A>Automatic Library Selection and Linking with <a href="../boost/config/auto_link.hpp">
- auto_link.hpp</a></h3>
- <p>Many Windows compilers ship with multiple runtime libraries - for example
- Microsoft Visual Studio .NET comes with 6 versions of the C and C++ runtime. It
- is essential that the Boost library that the user links to is built against the
- same C runtime as the program is built against. If that is not the case, then
- the user will experience linker errors at best, and runtime crashes at worst.
- The Boost build system manages this by providing different build variants, each
- of which is build against a different runtime, and gets a slightly different
- mangled name depending upon which runtime it is built against. For example the
- regex libraries get named as follows when built with Visual Studio .NET 2003:</p>
- <pre>boost_regex-vc71-mt-1_31.lib
-boost_regex-vc71-mt-gd-1_31.lib
-libboost_regex-vc71-mt-1_31.lib
-libboost_regex-vc71-mt-gd-1_31.lib
-libboost_regex-vc71-mt-s-1_31.lib
-libboost_regex-vc71-mt-sgd-1_31.lib
-libboost_regex-vc71-s-1_31.lib
-libboost_regex-vc71-sgd-1_31.lib
-</pre>
- <p>The difficulty now is selecting which of these the user should link his or her
- code to.</p>
- <p>In contrast, most Unix compilers typically only have one runtime (or sometimes
- two if there is a separate thread safe option). For these systems the only
- choice in selecting the right library variant is whether they want debugging
- info, and possibly thread safety.
- </p>
- <p>Historically Microsoft Windows compilers have managed this issue by providing a
- #pragma option that allows the header for a library to automatically select the
- library to link to. This makes everything automatic and extremely easy for the
- end user: as soon as they include a header file that has separate source code,
- the name of the right library build variant gets embedded in the object file,
- and as long as that library is in the linker search path, it will get pulled in
- by the linker without any user intervention.</p>
- <p>Automatic library selection and linking can be enabled for a Boost library by
- including the header &lt;boost/config/auto_link.hpp&gt;, after first defining
- BOOST_LIB_NAME and, if applicable, BOOST_DYN_LINK.</p>
- <pre>//
-// Automatically link to the correct build variant where possible.
-//
-#if !defined(BOOST_ALL_NO_LIB) &amp;&amp; !defined(BOOST_WHATEVER_NO_LIB) &amp;&amp; !defined(BOOST_WHATEVER_SOURCE)
-//
-// Set the name of our library, this will get undef'ed by auto_link.hpp
-// once it's done with it:
-//
-#define BOOST_LIB_NAME boost_whatever
-//
-// If we're importing code from a dll, then tell auto_link.hpp about it:
-//
-#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_WHATEVER_DYN_LINK)
-# define BOOST_DYN_LINK
-#endif
-//
-// And include the header that does the work:
-//
-#include &lt;boost/config/auto_link.hpp&gt;
-#endif // auto-linking disabled
-</pre>
- <p>The library's user documentation should note that the feature can be disabled
- by defining either BOOST_ALL_NO_LIB or BOOST_WHATEVER_NO_LIB:</p>
- <P>If for any reason you need to debug this feature, the header
- &lt;boost/config/auto_link.hpp&gt; will output some helpful diagnostic messages
- if you first define BOOST_LIB_DIAGNOSTIC.</P>
- <H2><A name="build_changes"></A>Changes Affecting the Build System</H2>
- <H3><a name="build"></a><A name="jamfile"></A>Creating the library Jamfile</H3>
- <P>The Jamfile for building library "whatever" typically lives in
- boost-root/libs/whatever/build, the only extra step required is to add a
- &lt;define&gt; requirement to the library target so that your code knows
- whether it's building a dll or static library, a typical Jamfile would like
- like this:</P>
- <PRE>
-lib boost_regex : ../src/whatever.cpp :
- &lt;link&gt;shared:&lt;define&gt;BOOST_WHATEVER_DYN_LINK=1 ;
- </PRE>
- <H3><A name="testing"></A>Testing Auto-linking</H3>
- <P>Testing the auto-link feature&nbsp;is somewhat convoluted, and requires access
- to a compiler that supports the feature: refer to <A href="../libs/config/test/link/test/Jamfile.v2">
- libs/config/test/link/test/Jamfile.v2</A> for an example.</P>
- <HR>
- <p><A name="copyright"></A>Revised
- <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
- 26 November, 2003<!--webbot bot="Timestamp" endspan i-checksum="39365" --></p>
- <p><i>© Copyright John Maddock&nbsp;1998-
- <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y" startspan --> 2003<!--webbot bot="Timestamp" endspan i-checksum="746" --></i></p>
- <P><I>Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
- http://www.boost.org/LICENSE_1_0.txt>)</I></P>
- <P><EM>The use of code snippets from this article does not require the reproduction
- of this copyright notice and license declaration; if you wish to provide
- attribution then please provide a link to this article.</EM></P>
- </body>
-</html>

Deleted: branches/proto/v3/more/test_policy.htm
==============================================================================
--- branches/proto/v3/more/test_policy.htm 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
+++ (empty file)
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Boost Test Policies and Protocols</title>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-
-<table border="1" bgcolor="#007F7F" cellpadding="2">
- <tr>
- <td bgcolor="#FFFFFF"><img src="../boost.png" alt="boost.png (6897 bytes)" width="277" height="86"></td>
- <td>
Home</td>
- <td>Libraries</td>
- <td>People</td>
- <td>FAQ</td>
- <td>More</td>
- </tr>
-</table>
-<h1>Boost Test Policies and Protocols</h1>
-<p>The Boost libraries are intended to be both reliable and portable.&nbsp;
-Every experienced programmer knows that means each library must be tested against a suitable number of test cases, on a wide range of platforms,
-and then tested again (regression tested) every time a change is made and before
-every release.&nbsp;</p>
-<p>&quot;Quality assurance based on a wide range of targeted tests&quot; as one
-of the key answers to C.A.R
-Hoare's question
-&quot;How did software get so reliable without proof.&quot;</p>
-<h2>Regression test</h2>
-<p>Boost uses an automatic regression test suite which generates HTML
-<a href="../status/compiler_status.html">compiler
-status tables</a>.</p>
-<h2>Test Policy</h2>
-<h3>Required</h3>
-<ul>
- <li>Every Boost library should supply one or more suitable test programs to be
- exercised by the Boost regression test suite.&nbsp; In addition to
- the usual compile-link-run tests expecting successful completion,
- compile-only or compile-and-link-only tests may be performed, and success
- for the test may be defined as failure of the steps.</li>
- <li>Test program execution must report errors by returning a non-zero value.&nbsp; They
- may also write to stdout or stderr, but that output should be relatively
- brief.&nbsp; Regardless of other output, a non-zero return value is the only
- way the regression test framework will recognize an error has
- occurred.&nbsp;Note that test programs to be included in the status tables must
- compile, link, and run quickly since the tests are executed many, many,
- times.</li>
- <li>Libraries with time consuming tests should be divided into a
- fast-execution basic test program for the status tables, and a separate
- full-coverage test program for exhaustive test cases.&nbsp; The basic test
- should concentrate on compilation issues so that the status tables
- accurately reflect the library's likelihood of correct compilation on a
- platform.</li>
- <li>If for any reason the usual test policies do not apply to a particular
- library, an alternate test strategy must be implemented.</li>
- <li>A Jamfile to drive the
- regression tests for the library. &nbsp;&nbsp;</li>
-</ul>
-<h3>Optional (but highly recommended)</h3>
-<p>The Boost Test Library provides many
-useful components which ease the construction of test programs.</p>
-<ul>
- <li>Use the library's
- Test Tools for the construction of simple test
- programs that do not need much structure.</li>
- <li>Use the library's
- <a href="../libs/test/doc/components/utf/index.html">Unit Test
- Framework</a> for the construction of more complex test programs that need to
- be structured into individual tests
- and test suites.</li>
-</ul>
-<h2>Suggested Protocol for Fixing Bugs or Adding Features.</h2>
-<ul>
- <li>First, add regression test cases that detects the bug or tests the
- feature. Sometimes adding one case suggests similar untested cases, and they
- are added too.</li>
- <li>Second, for bugs, run the regression test and verify that the bug is now
- detected.</li>
- <li>Third, then, and only then, fix the bug or add the feature.</li>
- <li>Finally, rerun the full regression tests - sometimes the change breaks
- something else.</li>
-</ul>
-<h2>History</h2>
-<p>See Regression Test History.</p>
-<h2>Acknowledgements</h2>
-<p>Written by Beman Dawes. Jens Maurer, Paul Moore, Gary Powell and Jeremy Siek contributed helpful suggestions.</p>
-<hr>
-<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->08 January, 2004<!--webbot bot="Timestamp" endspan i-checksum="38708" -->
-</p>
-<p>© Copyright Beman Dawes 2001</p>
-<p>Distributed under the Boost Software License, Version 1.0. (See
-accompanying file LICENSE_1_0.txt or copy
-at http://www.boost.org/LICENSE_1_0.txt)</p>
-
-</body>
-
-</html>

Modified: branches/proto/v3/tools/regression/xsl_reports/build_results.sh
==============================================================================
--- branches/proto/v3/tools/regression/xsl_reports/build_results.sh (original)
+++ branches/proto/v3/tools/regression/xsl_reports/build_results.sh 2007-11-10 15:46:49 EST (Sat, 10 Nov 2007)
@@ -21,6 +21,71 @@
     cd "${cwd}"
 }
 
+report_info()
+{
+cat - > comment.html <<HTML
+<table style="border-spacing: 0.5em;">
+ <tr>
+ <td style="vertical-align: top;"><tt>uname</tt></td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`uname -a`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;"><tt>uptime</tt></td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`uptime`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;"><tt>vmstat</tt></td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`vmstat`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;"><tt>xsltproc</tt></td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`xsltproc --version`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;"><tt>python</tt></td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`python --version 2>&1`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">previous run</td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`cat previous.txt`
+ </pre>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">current run</td>
+ <td>
+ <pre style="border: 1px solid #666; overflow: auto;">
+`date -u`
+ </pre>
+ </td>
+ </tr>
+</table>
+HTML
+ date -u > previous.txt
+}
+
 build_results()
 {
     cwd=`pwd`
@@ -31,12 +96,13 @@
         trunk) tag=trunk ;;
         release) tag=branches/release ;;
     esac
+ report_info
     python "${boost}/tools/regression/xsl_reports/boost_wide_report.py" \
         --locate-root="${root}" \
         --tag=${tag} \
         --expected-results="${boost}/status/expected_results.xml" \
         --failures-markup="${boost}/status/explicit-failures-markup.xml" \
- --comment="" \
+ --comment="comment.html" \
         --user=""
     cd "${cwd}"
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk