Code Monkey home page Code Monkey logo

boost-headers-only's Introduction

https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A https://img.shields.io/pypi/dm/scipy.svg?label=Pypi%20downloads https://img.shields.io/conda/dn/conda-forge/scipy.svg?label=Conda%20downloads

SciPy (pronounced "Sigh Pie") is an open-source software for mathematics, science, and engineering. It includes modules for statistics, optimization, integration, linear algebra, Fourier transforms, signal and image processing, ODE solvers, and more.

SciPy is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines, such as routines for numerical integration and optimization. Together, they run on all popular operating systems, are quick to install, and are free of charge. NumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world's leading scientists and engineers. If you need to manipulate numbers on a computer and display or publish the results, give SciPy a try!

For the installation instructions, see our install guide.

Call for Contributions

We appreciate and welcome contributions. Small improvements or fixes are always appreciated; issues labeled as "good first issue" may be a good starting point. Have a look at our contributing guide.

Writing code isn’t the only way to contribute to SciPy. You can also:

  • review pull requests
  • triage issues
  • develop tutorials, presentations, and other educational materials
  • maintain and improve our website
  • develop graphic design for our brand assets and promotional materials
  • help with outreach and onboard new contributors
  • write grant proposals and help with other fundraising efforts

If you’re unsure where to start or how your skills fit in, reach out! You can ask on the forum or here, on GitHub, by leaving a comment on a relevant issue that is already open.

If you are new to contributing to open source, this guide helps explain why, what, and how to get involved.

boost-headers-only's People

Contributors

mckib2 avatar mkoeppe avatar rgommers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boost-headers-only's Issues

Difference betwee 1.75.0 initial commit and rebuild with `make_headers.sh`

This doesn't seem like a real problem, because the difference is only files that were removed and we're not using those in SciPy I think. That said, running the automated script doesn't reproduce the initial commit in this repo, so I thought it'd be useful to record the files with differences:

$ git show --pretty="" --name-only 
.gitignore
Boost_1_75_0_README.md
Boost_1_76_0_README.md
README.rst
boost/asio/impl/src.cpp
boost/function/detail/gen_maybe_include.pl
boost/function/gen_function_N.pl
boost/hana/detail/struct_macros.hpp.erb
boost/json/json.natvis
boost/numeric/odeint/util/ublas_matrix_expression.patch
boost/pool/detail/for.m4
boost/pool/detail/pool_construct.bat
boost/pool/detail/pool_construct.m4
boost/pool/detail/pool_construct.sh
boost/pool/detail/pool_construct_simple.bat
boost/pool/detail/pool_construct_simple.m4
boost/pool/detail/pool_construct_simple.sh
boost/safe_numerics/CMakeLists.txt
boost/safe_numerics/concept/CMakeLists.txt
boost/spirit/home/classic/tree/parsetree.dtd
boost/wave/cpplexer/re2clex/cpp.re
boost/wave/cpplexer/re2clex/strict_cpp.re
make_headers.sh

Full diff:

commit 1fd7f1d42221934c2a2bddabae7e5ed0fa84bed6
Author: Nicholas McKibben <[email protected]>
Date:   Sat May 1 14:04:29 2021 -0700

    tmp 1.75.0 squashed

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..cb5c5caf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*~
+bootstrap.log
+b2.log
\ No newline at end of file
diff --git a/README.md b/Boost_1_75_0_README.md
similarity index 100%
rename from README.md
rename to Boost_1_75_0_README.md
diff --git a/Boost_1_76_0_README.md b/Boost_1_76_0_README.md
new file mode 100644
index 00000000..fa9faa16
--- /dev/null
+++ b/Boost_1_76_0_README.md
@@ -0,0 +1,11 @@
+# Boost C++ Libraries
+
+The Boost project provides free peer-reviewed portable C++ source libraries.
+
+We emphasize libraries that work well with the C++ Standard Library. Boost
+libraries are intended to be widely useful, and usable across a broad spectrum
+of applications. The Boost license encourages both commercial and non-commercial use
+and does not require attribution for binary use. 
+
+The project website is www.boost.org, where you can obtain more information and
+[download](https://www.boost.org/users/download/) the current release.
diff --git a/README.rst b/README.rst
new file mode 100644
index 00000000..ee67de96
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,37 @@
+Boost Header-only Distribution
+------------------------------
+
+"Boost, but only the header files."
+
+This repo is meant to provide a lightweight, minimal Boost distribution to
+satisfy SciPy's limited set of Boost dependencies.  No binaries are features
+relying on compiled libraries are available through this header-only
+package.
+
+Structure
+---------
+
+::
+
+    project-root
+    ├── boost/ : Contents of Boost includes directory (generated)
+    ├── Boost_README_[version].md : Boost README file (generated)
+    ├── LICENSE_1_0.txt : Boost license (generated)
+    ├── make_headers.sh : script to create generated files
+    └── README.rst : this README file
+
+Updating
+--------
+
+To regenerate the header files or update to a new version of boost, the
+`make_headers.sh` script can be modified and run on a Linux or MacOS machine
+that has access to the internet.  It will automatically populate the `boost/`
+directory with the generated header files from a minimal build.  It can run
+very simply as follows:
+
+.. code-block:: bash
+
+    source make_headers.sh
+
+To update the version of Boost, modify the `BOOST_MAJOR`, `BOOST_MINOR`,
+and `BOOST_PATCH` variables at the top of `make_headers.sh`
diff --git a/boost/asio/impl/src.cpp b/boost/asio/impl/src.cpp
deleted file mode 100644
index 0ea3601e..00000000
--- a/boost/asio/impl/src.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// impl/src.cpp
-// ~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// 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)
-//
-
-#if defined(_MSC_VER) \
-  || (defined(__BORLANDC__) && !defined(__clang__)) \
-  || defined(__DMC__)
-# pragma message ( \
-    "This file is deprecated. " \
-    "Please #include <boost/asio/impl/src.hpp> instead.")
-#elif defined(__GNUC__) \
-  || defined(__HP_aCC) \
-  || defined(__SUNPRO_CC) \
-  || defined(__IBMCPP__)
-# warning "This file is deprecated."
-# warning "Please #include <boost/asio/impl/src.hpp> instead."
-#endif
-
-#include <boost/asio/impl/src.hpp>
diff --git a/boost/function/detail/gen_maybe_include.pl b/boost/function/detail/gen_maybe_include.pl
deleted file mode 100644
index bc409840..00000000
--- a/boost/function/detail/gen_maybe_include.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Boost.Function library
-#
-# Copyright (C) 2001-2003 Douglas Gregor ([email protected])
-#
-# Permission to copy, use, sell and distribute this software is granted
-# provided this copyright notice appears in all copies.
-# Permission to modify the code and to distribute modified code is granted
-# provided this copyright notice appears in all copies, and a notice
-# that the code was modified is included with the copyright notice.
-#
-# This software is provided "as is" without express or implied warranty,
-# and with no claim as to its suitability for any purpose.
-#
-# For more information, see http://www.boost.org
-use English;
-
-$max_args = $ARGV[0];
-
-open (OUT, ">maybe_include.hpp") or die("Cannot write to maybe_include.hpp");
-for($on_arg = 0; $on_arg <= $max_args; ++$on_arg) {
-    if ($on_arg == 0) {
-	print OUT "#if";
-    }
-    else {
-	print OUT "#elif";
-    }
-    print OUT " BOOST_FUNCTION_NUM_ARGS == $on_arg\n";
-    print OUT "#  undef BOOST_FUNCTION_MAX_ARGS_DEFINED\n";
-    print OUT "#  define BOOST_FUNCTION_MAX_ARGS_DEFINED $on_arg\n";
-    print OUT "#  ifndef BOOST_FUNCTION_$on_arg\n";
-    print OUT "#    define BOOST_FUNCTION_$on_arg\n";
-    print OUT "#    include <boost/function/function_template.hpp>\n";
-    print OUT "#  endif\n";
-}
-print OUT "#else\n";
-print OUT "#  error Cannot handle Boost.Function objects that accept more than $max_args arguments!\n";
-print OUT "#endif\n";
diff --git a/boost/function/gen_function_N.pl b/boost/function/gen_function_N.pl
deleted file mode 100644
index d8f1249b..00000000
--- a/boost/function/gen_function_N.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Boost.Function library
-#
-# Copyright Douglas Gregor 2001-2003. Use, modification and
-# distribution is subject to 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)
-#
-# For more information, see http://www.boost.org
-use English;
-
-if ($#ARGV < 0) {
-  print "Usage: perl gen_function_N <number of arguments>\n";
-  exit;
-}
-
-
-$totalNumArgs = $ARGV[0];
-for ($numArgs = 0; $numArgs <= $totalNumArgs; ++$numArgs) {
-  open OUT, ">function$numArgs.hpp";
-  print OUT "#define BOOST_FUNCTION_NUM_ARGS $numArgs\n";
-  print OUT "#include <boost/function/detail/maybe_include.hpp>\n";
-  print OUT "#undef BOOST_FUNCTION_NUM_ARGS\n";
-  close OUT;
-}
diff --git a/boost/hana/detail/struct_macros.hpp.erb b/boost/hana/detail/struct_macros.hpp.erb
deleted file mode 100644
index ecfd0edd..00000000
--- a/boost/hana/detail/struct_macros.hpp.erb
+++ /dev/null
@@ -1,231 +0,0 @@
-<%#
-    This is an ERB [1] template file used to generate the
-    <boost/hana/detail/struct_macros.hpp> header. The maximum
-    number of members that can be handled by the macros can
-    be controlled with the 'MAX_NUMBER_OF_MEMBERS' variable,
-    which can be set when calling ERB to generate the header:
-
-        export MAX_NUMBER_OF_MEMBERS=55; erb struct_macros.hpp.erb
-
-    'MAX_NUMBER_OF_MEMBERS' must be greater than 0. In case 'MAX_NUMBER_OF_MEMBERS'
-    is not specified, it defaults to 40. To regenerate the default struct macros,
-    issue the following command from the root of the project:
-
-      erb include/boost/hana/detail/struct_macros.hpp.erb > include/boost/hana/detail/struct_macros.hpp
-
-    [1]: http://en.wikipedia.org/wiki/ERuby
-%>
-
-<%
-    MAX_NUMBER_OF_MEMBERS = (ENV["MAX_NUMBER_OF_MEMBERS"] || 40).to_i
-    raise "MAX_NUMBER_OF_MEMBERS must be > 0" if not MAX_NUMBER_OF_MEMBERS > 0
-%>
-
-/*!
-@file
-Defines the `BOOST_HANA_DEFINE_STRUCT`, `BOOST_HANA_ADAPT_STRUCT`, and
-`BOOST_HANA_ADAPT_ADT` macros.
-
-@copyright Louis Dionne 2013-2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- */
-
-//////////////////////////////////////////////////////////////////////////////
-// THIS FILE IS GENERATED FROM THE <boost/hana/detail/struct_macros.erb.hpp>
-// ERB TEMPLATE. DO NOT EDIT THIS FILE DIRECTLY.
-//
-// THE ERB TEMPLATE CONTAINS INFORMATION ABOUT HOW TO REGENERATE THIS FILE.
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_HANA_DETAIL_STRUCT_MACROS_HPP
-#define BOOST_HANA_DETAIL_STRUCT_MACROS_HPP
-
-#include <boost/hana/config.hpp>
-#include <boost/hana/detail/preprocessor.hpp>
-#include <boost/hana/pair.hpp>
-#include <boost/hana/string.hpp>
-#include <boost/hana/tuple.hpp>
-
-#include <cstddef>
-#include <utility>
-
-
-BOOST_HANA_NAMESPACE_BEGIN namespace struct_detail {
-    template <typename Memptr, Memptr ptr>
-    struct member_ptr {
-        template <typename T>
-        constexpr decltype(auto) operator()(T&& t) const
-        { return static_cast<T&&>(t).*ptr; }
-    };
-
-    constexpr std::size_t strlen(char const* s) {
-        std::size_t n = 0;
-        while (*s++ != '\0')
-            ++n;
-        return n;
-    }
-
-    template <std::size_t n, typename Names, std::size_t ...i>
-    constexpr auto prepare_member_name_impl(std::index_sequence<i...>) {
-        return hana::string_c<hana::at_c<n>(Names::get())[i]...>;
-    }
-
-    template <std::size_t n, typename Names>
-    constexpr auto prepare_member_name() {
-        constexpr std::size_t len = strlen(hana::at_c<n>(Names::get()));
-        return prepare_member_name_impl<n, Names>(std::make_index_sequence<len>{});
-    }
-} BOOST_HANA_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_PP_NARG
-//////////////////////////////////////////////////////////////////////////////
-//! @ingroup group-details
-//! Macro expanding to the number of arguments it is passed.
-//!
-//! Specifically, `BOOST_HANA_PP_NARG(x1, ..., xn)` expands to `n`. It is
-//! an error to call this macro with 0 arguments.
-#define BOOST_HANA_PP_NARG(...) \
-    BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, <%= (1..MAX_NUMBER_OF_MEMBERS).to_a.reverse.join(',') %>,)
-
-#define BOOST_HANA_PP_NARG_IMPL(<%= (1..MAX_NUMBER_OF_MEMBERS).to_a.map { |i| "e#{i}" }.join(',') %>, N, ...) N
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_PP_BACK
-//////////////////////////////////////////////////////////////////////////////
-//! @ingroup group-details
-//! Expands to its last argument.
-#define BOOST_HANA_PP_BACK(...) \
-    BOOST_HANA_PP_BACK_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)
-
-#define BOOST_HANA_PP_BACK_IMPL(N, ...) \
-    BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_BACK_IMPL_, N)(__VA_ARGS__)
-
-<% (1..MAX_NUMBER_OF_MEMBERS).each do |n| %>
-#define BOOST_HANA_PP_BACK_IMPL_<%= n %>(<%= (1..n).to_a.map { |i| "e#{i}" }.join(', ') %>) e<%= n %>
-<% end %>
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_PP_DROP_BACK
-//////////////////////////////////////////////////////////////////////////////
-//! @ingroup group-details
-//! Expands to all of its arguments, except for the last one.
-#define BOOST_HANA_PP_DROP_BACK(...) \
-    BOOST_HANA_PP_DROP_BACK_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)
-
-#define BOOST_HANA_PP_DROP_BACK_IMPL(N, ...) \
-    BOOST_HANA_PP_CONCAT(BOOST_HANA_PP_DROP_BACK_IMPL_, N)(__VA_ARGS__)
-
-<% (1..MAX_NUMBER_OF_MEMBERS).each do |n| %>
-#define BOOST_HANA_PP_DROP_BACK_IMPL_<%= n %>(<%= (1..n).to_a.map { |i| "e#{i}" }.join(', ') %>)<%= (1..n-1).to_a.map { |i| "e#{i}" }.join(', ') %>
-<% end %>
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_ADAPT_STRUCT
-//////////////////////////////////////////////////////////////////////////////
-template <typename ...>
-struct BOOST_HANA_ADAPT_STRUCT_must_be_called_in_the_global_namespace;
-
-#define BOOST_HANA_ADAPT_STRUCT(...)                                        \
-  template <>                                                               \
-  struct BOOST_HANA_ADAPT_STRUCT_must_be_called_in_the_global_namespace<>;  \
-  BOOST_HANA_ADAPT_STRUCT_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)\
-  static_assert(true, "force the usage of a trailing semicolon")            \
-/**/
-
-#define BOOST_HANA_ADAPT_STRUCT_IMPL(N, ...) \
-  BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_STRUCT_IMPL_, N)(__VA_ARGS__)
-
-<% (0..MAX_NUMBER_OF_MEMBERS).each do |n| %>
-#define BOOST_HANA_ADAPT_STRUCT_IMPL_<%= n+1 %>(TYPE <%= (1..n).map { |i| ", m#{i}" }.join %>)    \
-    namespace boost { namespace hana {                                                            \
-        template <>                                                                               \
-        struct accessors_impl<TYPE> {                                                             \
-            static constexpr auto apply() {                                                       \
-                struct member_names {                                                             \
-                  static constexpr auto get() {                                                   \
-                      return ::boost::hana::make_tuple(                                           \
-                          <%= (1..n).map { |i| "BOOST_HANA_PP_STRINGIZE(m#{i})" }.join(', ') %>   \
-                      );                                                                          \
-                  }                                                                               \
-                };                                                                                \
-                return ::boost::hana::make_tuple(                                                 \
-                    <%= (1..n).map { |i| "::boost::hana::make_pair(::boost::hana::struct_detail::prepare_member_name<#{i-1}, member_names>(), ::boost::hana::struct_detail::member_ptr<decltype(&TYPE::m#{i}), &TYPE::m#{i}>{})" }.join(', ') %>\
-                );                                                                                \
-            }                                                                                     \
-        };                                                                                        \
-    }}                                                                                            \
-/**/
-<% end %>
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_ADAPT_ADT
-//////////////////////////////////////////////////////////////////////////////
-template <typename ...>
-struct BOOST_HANA_ADAPT_ADT_must_be_called_in_the_global_namespace;
-
-#define BOOST_HANA_ADAPT_ADT(...)                                           \
-  template <>                                                               \
-  struct BOOST_HANA_ADAPT_ADT_must_be_called_in_the_global_namespace<>;     \
-  BOOST_HANA_ADAPT_ADT_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)   \
-  static_assert(true, "force the usage of a trailing semicolon")            \
-/**/
-
-#define BOOST_HANA_ADAPT_ADT_IMPL(N, ...) \
-  BOOST_HANA_PP_CONCAT(BOOST_HANA_ADAPT_ADT_IMPL_, N)(__VA_ARGS__)
-
-<% (0..MAX_NUMBER_OF_MEMBERS).each do |n| %>
-#define BOOST_HANA_ADAPT_ADT_IMPL_<%= n+1 %>(TYPE <%= (1..n).map { |i| ", m#{i}" }.join %>)             \
-    namespace boost { namespace hana {                                                                  \
-        template <>                                                                                     \
-        struct accessors_impl<TYPE> {                                                                   \
-            template <typename ...>                                                                     \
-            static constexpr auto apply() {                                                             \
-                struct member_names {                                                                   \
-                  static constexpr auto get() {                                                         \
-                      return ::boost::hana::make_tuple(                                                 \
-                        <%= (1..n).map { |i| "BOOST_HANA_PP_STRINGIZE(BOOST_HANA_PP_FRONT m#{i})" }.join(', ') %>\
-                      );                                                                                \
-                  }                                                                                     \
-                };                                                                                      \
-                return ::boost::hana::make_tuple(                                                       \
-                    <%= (1..n).map { |i| "::boost::hana::make_pair(::boost::hana::struct_detail::prepare_member_name<#{i-1}, member_names>(), BOOST_HANA_PP_DROP_FRONT m#{i})" }.join(', ') %>\
-                );                                                                                      \
-            }                                                                                           \
-        };                                                                                              \
-    }}                                                                                                  \
-/**/
-<% end %>
-
-//////////////////////////////////////////////////////////////////////////////
-// BOOST_HANA_DEFINE_STRUCT
-//////////////////////////////////////////////////////////////////////////////
-#define BOOST_HANA_DEFINE_STRUCT(...) \
-    BOOST_HANA_DEFINE_STRUCT_IMPL(BOOST_HANA_PP_NARG(__VA_ARGS__), __VA_ARGS__)
-
-#define BOOST_HANA_DEFINE_STRUCT_IMPL(N, ...) \
-    BOOST_HANA_PP_CONCAT(BOOST_HANA_DEFINE_STRUCT_IMPL_, N)(__VA_ARGS__)
-
-<% (0..MAX_NUMBER_OF_MEMBERS).each do |n| %>
-#define BOOST_HANA_DEFINE_STRUCT_IMPL_<%= n+1 %>(TYPE <%= (1..n).map { |i| ", m#{i}" }.join %>)       \
-  <%= (1..n).map { |i| "BOOST_HANA_PP_DROP_BACK m#{i} BOOST_HANA_PP_BACK m#{i};" }.join(' ') %>       \
-                                                                                                      \
-  struct hana_accessors_impl {                                                                        \
-    static constexpr auto apply() {                                                                   \
-      struct member_names {                                                                           \
-        static constexpr auto get() {                                                                 \
-            return ::boost::hana::make_tuple(                                                         \
-              <%= (1..n).map { |i| "BOOST_HANA_PP_STRINGIZE(BOOST_HANA_PP_BACK m#{i})" }.join(', ') %>\
-            );                                                                                        \
-        }                                                                                             \
-      };                                                                                              \
-      return ::boost::hana::make_tuple(                                                               \
-        <%= (1..n).map { |i| "::boost::hana::make_pair(::boost::hana::struct_detail::prepare_member_name<#{i-1}, member_names>(), ::boost::hana::struct_detail::member_ptr<decltype(&TYPE::BOOST_HANA_PP_BACK m#{i}), &TYPE::BOOST_HANA_PP_BACK m#{i}>{})" }.join(', ') %>\
-      );                                                                                              \
-    }                                                                                                 \
-  }                                                                                                   \
-/**/
-<% end %>
-
-#endif // !BOOST_HANA_DETAIL_STRUCT_MACROS_HPP
diff --git a/boost/json/json.natvis b/boost/json/json.natvis
deleted file mode 100644
index 940c17b3..00000000
--- a/boost/json/json.natvis
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
-
-  <Type Name="boost::json::storage_ptr">
-    <DisplayString Condition="i_==0">default</DisplayString>
-    <DisplayString Condition="(i_&amp;3)==1"> shared</DisplayString>
-    <DisplayString Condition="(i_&amp;3)==2"> trivial</DisplayString>
-    <DisplayString Condition="(i_&amp;3)==3"> shared, trivial</DisplayString>
-    <DisplayString>non-owning</DisplayString>
-    <Expand>
-      <Item Name="[ refs ]" Condition="(i_&amp;1)==1">((shared_resource*)(i_&amp;~3))->refs</Item>
-      <Item Name="[ resource ]" Condition="(i_&amp;2)==1">(shared_resource*)(i_&amp;~3)</Item>
-      <Item Name="[ resource ]" Condition="(i_&amp;2)!=1">(memory_resource*)(i_&amp;~3)</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::detail::shared_resource_impl&lt;*&gt;">
-    <DisplayString>$T1*</DisplayString>
-    <Expand>
-      <Item Name="[ refs ]">refs</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::monotonic_resource">
-    <DisplayString>monotonic_resource</DisplayString>
-    <Expand>
-      <Item Name="[ free ]">head_->n</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::static_resource">
-    <DisplayString>static_resource</DisplayString>
-    <Expand>
-      <Item Name="[ free ]">n_</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::value">
-    <DisplayString Condition="sca_.k==kind::null">null</DisplayString>
-    <DisplayString Condition="sca_.k==kind::bool_">{sca_.b}</DisplayString>
-    <DisplayString Condition="sca_.k==kind::int64">{sca_.i}</DisplayString>
-    <DisplayString Condition="sca_.k==kind::uint64">{sca_.u}u</DisplayString>
-    <DisplayString Condition="sca_.k==kind::double_">{sca_.d}</DisplayString>
-    <DisplayString Condition="sca_.k==kind::string">{((char*)(str_.impl_.p_.t+1)),[str_.impl_.p_.t->size]s}</DisplayString>
-    <DisplayString Condition="sca_.k==kind::string+64">{((char*)(str_.impl_.k_.s)),[str_.impl_.k_.n]s}:</DisplayString>
-    <DisplayString Condition="sca_.k==kind::string+128">{str_.impl_.s_.buf,[detail::string_impl::sbo_chars_-str_.impl_.s_.buf[detail::string_impl::sbo_chars_]]s}</DisplayString>
-    <DisplayString Condition="sca_.k==kind::array">array [{arr_.t_->size}]</DisplayString>
-    <DisplayString Condition="sca_.k==kind::object">object [{obj_.t_->size}]</DisplayString>
-    <Expand>
-      <ExpandedItem Condition="sca_.k==kind::string">str_</ExpandedItem>
-      <ExpandedItem Condition="sca_.k==kind::string+64">str_</ExpandedItem>
-      <ExpandedItem Condition="sca_.k==kind::string+128">str_</ExpandedItem>
-      <ExpandedItem Condition="sca_.k==kind::array">arr_</ExpandedItem>
-      <ExpandedItem Condition="sca_.k==kind::object">obj_</ExpandedItem>
-    </Expand>    
-  </Type>
-
-  <Type Name="boost::json::string">
-    <DisplayString Condition="impl_.s_.k==kind::string">{((char*)(impl_.p_.t+1)),[impl_.p_.t->size]s}</DisplayString>
-    <DisplayString Condition="impl_.s_.k==kind::string+64">{((char*)(impl_.k_.s)),[impl_.k_.n]s}:</DisplayString>
-    <DisplayString Condition="impl_.s_.k==kind::string+128">{impl_.s_.buf,[detail::string_impl::sbo_chars_-impl_.s_.buf[detail::string_impl::sbo_chars_]]s}</DisplayString>
-    <Expand>
-      <!-- VFALCO Need to handle key string here -->
-      <Item Name="[size]">impl_.s_.k==kind::string?impl_.p_.t->size:detail::string_impl::sbo_chars_-impl_.s_.buf[detail::string_impl::sbo_chars_]</Item>
-      <Item Name="[capacity]">impl_.s_.k==kind::string?impl_.p_.t->capacity:detail::string_impl::sbo_chars_</Item>
-      <Item Name="[storage]">sp_</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::array">
-    <DisplayString>array [{t_->size}]</DisplayString>
-    <Expand>
-      <ArrayItems>
-        <Size>t_->size</Size>
-        <ValuePointer>((value*)(t_+1))</ValuePointer>
-      </ArrayItems>
-      <Item Name="[capacity]">t_->capacity</Item>
-      <Item Name="[storage]">sp_</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::object">
-    <DisplayString>object [{t_->size}]</DisplayString>
-    <Expand>
-      <ArrayItems>
-        <Size>t_->size</Size>
-        <ValuePointer>(boost::json::key_value_pair*)(t_+1)</ValuePointer>
-      </ArrayItems>
-      <Item Name="[capacity]">t_->capacity</Item>
-      <Item Name="[storage]">sp_</Item>
-    </Expand>
-  </Type>
-
-  <Type Name="boost::json::key_value_pair">
-    <DisplayString Condition="value_.sca_.k==kind::null">{{ {key_,[len_]s}, null }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::bool_">{{ {key_,[len_]s}, {value_.sca_.b} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::int64">{{ {key_,[len_]s}, {value_.sca_.i} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::uint64">{{ {key_,[len_]s}, {value_.sca_.u} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::double_">{{ {key_,[len_]s}, {value_.sca_.d} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::string">{{ {key_,[len_]s}, {((char*)(value_.str_.impl_.p_.t+1)),[value_.str_.impl_.p_.t->size]s} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::string+128">{{ {key_,[len_]s}, {value_.str_.impl_.s_.buf,[detail::string_impl::sbo_chars_-value_.str_.impl_.s_.buf[detail::string_impl::sbo_chars_]]s} }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::array">{{ {key_,[len_]s}, array [{value_.arr_.t_->size}] }}</DisplayString>
-    <DisplayString Condition="value_.sca_.k==kind::object">{{ {key_,[len_]s}, object [{value_.obj_.t_->size}] }}</DisplayString>
-    <Expand>
-      <ExpandedItem>&amp;this->value_</ExpandedItem>
-    </Expand>
-  </Type>
-
-</AutoVisualizer>
diff --git a/boost/numeric/odeint/util/ublas_matrix_expression.patch b/boost/numeric/odeint/util/ublas_matrix_expression.patch
deleted file mode 100644
index 4e8ac6c9..00000000
--- a/boost/numeric/odeint/util/ublas_matrix_expression.patch
+++ /dev/null
@@ -1,6 +0,0 @@
-3390,3392c3390
-<     typename enable_if< is_convertible<typename E1::value_type , T2>,
-<                         typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type 
-<                         > ::result_type
----
->     typename matrix_binary_scalar2_traits<E1, const T2, scalar_divides<typename E1::value_type, T2> >::result_type
diff --git a/boost/pool/detail/for.m4 b/boost/pool/detail/for.m4
deleted file mode 100644
index f926a11d..00000000
--- a/boost/pool/detail/for.m4
+++ /dev/null
@@ -1,107 +0,0 @@
-m4_dnl 
-m4_dnl Copyright (C) 2000 Stephen Cleary
-m4_dnl 
-m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
-m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-m4_dnl
-m4_dnl See http://www.boost.org for updates, documentation, and revision history.
-m4_dnl 
-m4_dnl
-m4_dnl 
-m4_dnl BOOST_M4_FOR: repeat a given text for a range of values
-m4_dnl   $1 - variable to hold the current value.
-m4_dnl   $2 - the starting value.
-m4_dnl   $3 - the ending value (text is _not_ repeated for this value).
-m4_dnl   $4 - the text to repeat.
-m4_dnl   $5 - the delimeter text (optional).
-m4_dnl
-m4_dnl If the starting value is < ending value:
-m4_dnl   Will repeat $4, binding $1 to the values in the range [$2, $3).
-m4_dnl Else (that is, starting value >= ending value):
-m4_dnl   Will do nothing
-m4_dnl Repeats $5 in-between each occurrence of $4
-m4_dnl
-m4_dnl Logic:
-m4_dnl   Set $1 to $2 and call BOOST_M4_FOR_LIST_HELPER:
-m4_dnl     If $1 >= $3, do nothing
-m4_dnl     Else
-m4_dnl       output $4,
-m4_dnl       set $1 to itself incremented,
-m4_dnl       If $1 != $3, output $5,
-m4_dnl       and use recursion
-m4_dnl
-m4_define(`BOOST_M4_FOR',
-          `m4_ifelse(m4_eval($# < 4 || $# > 5), 1,
-                     `m4_errprint(m4___file__:m4___line__: `Boost m4 script: BOOST_M4_FOR: Wrong number of arguments ($#)')',
-                     `m4_pushdef(`$1', `$2')BOOST_M4_FOR_HELPER($@)m4_popdef(`$1')')')m4_dnl
-m4_define(`BOOST_M4_FOR_HELPER',
-          `m4_ifelse(m4_eval($1 >= $3), 1, ,
-                     `$4`'m4_define(`$1', m4_incr($1))m4_ifelse(m4_eval($1 != $3), 1, `$5')`'BOOST_M4_FOR_HELPER($@)')')m4_dnl
-m4_dnl 
-m4_dnl Testing/Examples:
-m4_dnl 
-m4_dnl The following line will output:
-m4_dnl   "repeat.m4:42: Boost m4 script: BOOST_M4_FOR: Wrong number of arguments (3)"
-m4_dnl BOOST_M4_FOR(i, 1, 3)
-m4_dnl
-m4_dnl The following line will output:
-m4_dnl   "repeat.m4:46: Boost m4 script: BOOST_M4_FOR: Wrong number of arguments (6)"
-m4_dnl BOOST_M4_FOR(i, 1, 3, i, ` ', 13)
-m4_dnl
-m4_dnl The following line will output (nothing):
-m4_dnl   ""
-m4_dnl BOOST_M4_FOR(i, 7, 0, i )
-m4_dnl
-m4_dnl The following line will output (nothing):
-m4_dnl   ""
-m4_dnl BOOST_M4_FOR(i, 0, 0, i )
-m4_dnl
-m4_dnl The following line will output:
-m4_dnl   "0 1 2 3 4 5 6 "
-m4_dnl BOOST_M4_FOR(i, 0, 7, i )
-m4_dnl
-m4_dnl The following line will output:
-m4_dnl   "-13 -12 -11 "
-m4_dnl BOOST_M4_FOR(i, -13, -10, i )
-m4_dnl
-m4_dnl The following two lines will output:
-m4_dnl   "(0, 0) (0, 1) (0, 2) (0, 3) "
-m4_dnl   "(1, 0) (1, 1) (1, 2) (1, 3) "
-m4_dnl   "(2, 0) (2, 1) (2, 2) (2, 3) "
-m4_dnl   "(3, 0) (3, 1) (3, 2) (3, 3) "
-m4_dnl   "(4, 0) (4, 1) (4, 2) (4, 3) "
-m4_dnl   "(5, 0) (5, 1) (5, 2) (5, 3) "
-m4_dnl   "(6, 0) (6, 1) (6, 2) (6, 3) "
-m4_dnl   "(7, 0) (7, 1) (7, 2) (7, 3) "
-m4_dnl   ""
-m4_dnl BOOST_M4_FOR(i, 0, 8, BOOST_M4_FOR(j, 0, 4, (i, j) )
-m4_dnl )
-m4_dnl
-m4_dnl The following line will output (nothing):
-m4_dnl   ""
-m4_dnl BOOST_M4_FOR(i, 7, 0, i, |)
-m4_dnl
-m4_dnl The following line will output (nothing):
-m4_dnl   ""
-m4_dnl BOOST_M4_FOR(i, 0, 0, i, |)
-m4_dnl
-m4_dnl The following line will output:
-m4_dnl   "0|1|2|3|4|5|6"
-m4_dnl BOOST_M4_FOR(i, 0, 7, i, |)
-m4_dnl
-m4_dnl The following line will output:
-m4_dnl   "-13, -12, -11"
-m4_dnl BOOST_M4_FOR(i, -13, -10, i, `, ')
-m4_dnl
-m4_dnl The following two lines will output:
-m4_dnl   "[(0, 0), (0, 1), (0, 2), (0, 3)],"
-m4_dnl   "[(1, 0), (1, 1), (1, 2), (1, 3)],"
-m4_dnl   "[(2, 0), (2, 1), (2, 2), (2, 3)],"
-m4_dnl   "[(3, 0), (3, 1), (3, 2), (3, 3)],"
-m4_dnl   "[(4, 0), (4, 1), (4, 2), (4, 3)],"
-m4_dnl   "[(5, 0), (5, 1), (5, 2), (5, 3)],"
-m4_dnl   "[(6, 0), (6, 1), (6, 2), (6, 3)],"
-m4_dnl   "[(7, 0), (7, 1), (7, 2), (7, 3)]"
-m4_dnl BOOST_M4_FOR(i, 0, 8, `[BOOST_M4_FOR(j, 0, 4, (i, j), `, ')]', `,
-m4_dnl ')
-m4_dnl
\ No newline at end of file
diff --git a/boost/pool/detail/pool_construct.bat b/boost/pool/detail/pool_construct.bat
deleted file mode 100755
index e13066a7..00000000
--- a/boost/pool/detail/pool_construct.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-@echo off
-rem
-rem Copyright (C) 2000, 2001 Stephen Cleary
-rem
-rem Distributed under the Boost Software License, Version 1.0. (See accompany-
-rem ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-
-rem Check for Windows NT
-if %OS%==Windows_NT goto NT
-
-rem Not NT - run m4 as normal, then exit
-m4 -P -E -DNumberOfArguments=%1 pool_construct.m4 > pool_construct.ipp
-goto end
-
-rem DJGPP programs (including m4) running on Windows/NT do NOT support long
-rem  file names (see the DJGPP v2 FAQ, question 8.1)
-rem Note that the output doesn't have to be a short name because it's an
-rem  argument to the command shell, not m4.
-:NT
-m4 -P -E -DNumberOfArguments=%1 < pool_construct.m4 > pool_construct.ipp
-
-:end
diff --git a/boost/pool/detail/pool_construct.m4 b/boost/pool/detail/pool_construct.m4
deleted file mode 100644
index 3ae6b78c..00000000
--- a/boost/pool/detail/pool_construct.m4
+++ /dev/null
@@ -1,84 +0,0 @@
-m4_dnl
-m4_dnl Copyright (C) 2000 Stephen Cleary
-m4_dnl
-m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
-m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-m4_dnl
-m4_dnl See http://www.boost.org for updates, documentation, and revision history.
-m4_dnl
-m4_dnl
-m4_dnl
-m4_dnl Avoid the use of any m4_* identifiers in this header file,
-m4_dnl  as that may cause incompatibility problems with future
-m4_dnl  versions of m4.
-m4_dnl
-m4_dnl This is a normal header file, except that lines starting
-m4_dnl  with `m4_dnl' will be stripped, TBA_FOR
-m4_dnl  macros will be replaced with repeated text, and text in
-m4_dnl  single quotes (`...') will have their single quotes
-m4_dnl  stripped.
-m4_dnl
-m4_dnl
-m4_dnl Check to make sure NumberOfArguments was defined.  If it's not defined,
-m4_dnl  default to 3
-m4_dnl
-m4_ifdef(`NumberOfArguments', , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is not defined; defaulting to 3
-')m4_define(`NumberOfArguments', 3)')m4_dnl
-m4_ifelse(NumberOfArguments, , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is defined to be empty; defaulting to 3
-')m4_define(`NumberOfArguments', 3)')m4_dnl
-m4_dnl
-m4_dnl Check to make sure NumberOfArguments >= 1.  If it's not, then fatal error.
-m4_dnl
-m4_ifelse(m4_eval(NumberOfArguments < 1), 1, `m4_errprint(m4___file__:m4___line__`: NumberOfArguments ('NumberOfArguments`) is less than 1
-')m4_m4exit(1)')m4_dnl
-m4_dnl
-m4_dnl Include the BOOST_M4_FOR macro definition
-m4_dnl
-m4_include(`for.m4')`'m4_dnl
-m4_dnl
-m4_dnl Begin the generated file.
-m4_dnl
-// Copyright (C) 2000 Stephen Cleary
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-m4_dnl These warnings apply to the file generated from this file.
-m4_dnl Of course, you may freely edit this file.
-// This file was AUTOMATICALLY GENERATED from "m4___file__"
-//  Do NOT include directly!
-//  Do NOT edit!
-
-m4_dnl
-m4_dnl First we define a simple 'cv_qual' macro which takes a number, either
-m4_dnl   0, 1, 2, or 3, and determines cv-qualification.
-m4_dnl
-m4_define(`cv_qual',
-`m4_ifelse($1, 0, `',
-`m4_ifelse($1, 1, `const ',
-`m4_ifelse($1, 2, `volatile ',
-`m4_ifelse($1, 3, `const volatile ',
-`m4_errprint(m4___file__:m4___line__: `Boost m4 script: cv-determiner: Not 0, 1, 2, or 3 (was '$1`)')'
-)')')')')m4_dnl
-m4_dnl
-m4_dnl Next we go through the actual loop.  For each number of arguments from
-m4_dnl   1 to NumberOfArguments, we create a template function that takes that
-m4_dnl   many template arguments, and also generate all cv-qualified permutations
-m4_dnl   of that function.
-m4_dnl
-BOOST_M4_FOR(N, 1, NumberOfArguments + 1,
-`BOOST_M4_FOR(cv, 0, m4_eval(4 ** N),
-  `template <BOOST_M4_FOR(i, 0, N, `typename T`'i', `, ')>
-element_type * construct(BOOST_M4_FOR(i, 0, N,
-    `cv_qual(m4_eval((cv >> (i * 2)) % 4))T`'i & a`'i', `, '))
-{
-  element_type * const ret = (malloc)();
-  if (ret == 0)
-    return ret;
-  try { new (ret) element_type(BOOST_M4_FOR(i, 0, N, `a`'i', `, ')); }
-  catch (...) { (free)(ret); throw; }
-  return ret;
-}
-')')
diff --git a/boost/pool/detail/pool_construct.sh b/boost/pool/detail/pool_construct.sh
deleted file mode 100644
index 4596e068..00000000
--- a/boost/pool/detail/pool_construct.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2000 Stephen Cleary
-#
-# Distributed under the Boost Software License, Version 1.0. (See accompany-
-# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#
-# See http://www.boost.org for updates, documentation, and revision history.
-#
-
-m4 -P -E -DNumberOfArguments=$1 pool_construct.m4 > pool_construct.ipp
-
diff --git a/boost/pool/detail/pool_construct_simple.bat b/boost/pool/detail/pool_construct_simple.bat
deleted file mode 100755
index 8a347b9e..00000000
--- a/boost/pool/detail/pool_construct_simple.bat
+++ /dev/null
@@ -1,25 +0,0 @@
-@echo off
-rem
-rem Copyright (C) 2001 Stephen Cleary
-rem
-rem Distributed under the Boost Software License, Version 1.0. (See accompany-
-rem ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-rem
-rem See http://www.boost.org for updates, documentation, and revision history.
-rem
-
-rem Check for Windows NT
-if %OS%==Windows_NT goto NT
-
-rem Not NT - run m4 as normal, then exit
-m4 -P -E -DNumberOfArguments=%1 pool_construct_simple.m4 > pool_construct_simple.ipp
-goto end
-
-rem DJGPP programs (including m4) running on Windows/NT do NOT support long
-rem  file names (see the DJGPP v2 FAQ, question 8.1)
-rem Note that the output doesn't have to be a short name because it's an
-rem  argument to the command shell, not m4.
-:NT
-m4 -P -E -DNumberOfArguments=%1 < pool_construct_simple.m4 > pool_construct_simple.ipp
-
-:end
diff --git a/boost/pool/detail/pool_construct_simple.m4 b/boost/pool/detail/pool_construct_simple.m4
deleted file mode 100644
index 9d598ef3..00000000
--- a/boost/pool/detail/pool_construct_simple.m4
+++ /dev/null
@@ -1,72 +0,0 @@
-m4_dnl
-m4_dnl Copyright (C) 2001 Stephen Cleary
-m4_dnl
-m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
-m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-m4_dnl
-m4_dnl See http://www.boost.org for updates, documentation, and revision history.
-m4_dnl
-m4_dnl
-m4_dnl
-m4_dnl Avoid the use of any m4_* identifiers in this header file,
-m4_dnl  as that may cause incompatibility problems with future
-m4_dnl  versions of m4.
-m4_dnl
-m4_dnl This is a normal header file, except that lines starting
-m4_dnl  with `m4_dnl' will be stripped, TBA_FOR
-m4_dnl  macros will be replaced with repeated text, and text in
-m4_dnl  single quotes (`...') will have their single quotes
-m4_dnl  stripped.
-m4_dnl
-m4_dnl
-m4_dnl Check to make sure NumberOfArguments was defined.  If it's not defined,
-m4_dnl  default to 3
-m4_dnl
-m4_ifdef(`NumberOfArguments', , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is not defined; defaulting to 3
-')m4_define(`NumberOfArguments', 3)')m4_dnl
-m4_ifelse(NumberOfArguments, , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is defined to be empty; defaulting to 3
-')m4_define(`NumberOfArguments', 3)')m4_dnl
-m4_dnl
-m4_dnl Check to make sure NumberOfArguments >= 1.  If it's not, then fatal error.
-m4_dnl
-m4_ifelse(m4_eval(NumberOfArguments < 1), 1, `m4_errprint(m4___file__:m4___line__`: NumberOfArguments ('NumberOfArguments`) is less than 1
-')m4_m4exit(1)')m4_dnl
-m4_dnl
-m4_dnl Include the BOOST_M4_FOR macro definition
-m4_dnl
-m4_include(`for.m4')`'m4_dnl
-m4_dnl
-m4_dnl Begin the generated file.
-m4_dnl
-// Copyright (C) 2000 Stephen Cleary
-//
-// 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)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-m4_dnl These warnings apply to the file generated from this file.
-m4_dnl Of course, you may freely edit this file.
-// This file was AUTOMATICALLY GENERATED from "m4___file__"
-//  Do NOT include directly!
-//  Do NOT edit!
-
-m4_dnl
-m4_dnl Here we go through the actual loop.  For each number of arguments from
-m4_dnl   1 to NumberOfArguments, we create a template function that takes that
-m4_dnl   many template arguments.
-m4_dnl
-BOOST_M4_FOR(N, 1, NumberOfArguments + 1,
-`template <BOOST_M4_FOR(i, 0, N, `typename T`'i', `, ')>
-element_type * construct(BOOST_M4_FOR(i, 0, N,
-    `const T`'i & a`'i', `, '))
-{
-  element_type * const ret = (malloc)();
-  if (ret == 0)
-    return ret;
-  try { new (ret) element_type(BOOST_M4_FOR(i, 0, N, `a`'i', `, ')); }
-  catch (...) { (free)(ret); throw; }
-  return ret;
-}
-')
diff --git a/boost/pool/detail/pool_construct_simple.sh b/boost/pool/detail/pool_construct_simple.sh
deleted file mode 100644
index 93b4d599..00000000
--- a/boost/pool/detail/pool_construct_simple.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2001 Stephen Cleary
-#
-# Distributed under the Boost Software License, Version 1.0. (See accompany-
-# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#
-# See http://www.boost.org for updates, documentation, and revision history.
-#
-
-m4 -P -E -DNumberOfArguments=$1 pool_construct_simple.m4 > pool_construct_simple.ipp
-
diff --git a/boost/safe_numerics/CMakeLists.txt b/boost/safe_numerics/CMakeLists.txt
deleted file mode 100644
index cd94725f..00000000
--- a/boost/safe_numerics/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-####################
-# add include headers to IDE
-
-file(GLOB include_files 
-  RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" 
-  "*.hpp"
-)
-add_custom_target(safe_numerics SOURCES ${include_files})
-
-add_subdirectory("concept")
-
-# end headers in IDE
-####################
diff --git a/boost/safe_numerics/concept/CMakeLists.txt b/boost/safe_numerics/concept/CMakeLists.txt
deleted file mode 100644
index 22f8629f..00000000
--- a/boost/safe_numerics/concept/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-####################
-# add include headers to IDE
-
-set(USE_FOLDERS TRUE)
-
-file(GLOB include_files
-  RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
-  "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
-)
-add_custom_target(concept SOURCES ${include_files})
-set_target_properties(concept PROPERTIES FOLDER "safe_numerics")
-
-# end headers in IDE
-####################
diff --git a/boost/spirit/home/classic/tree/parsetree.dtd b/boost/spirit/home/classic/tree/parsetree.dtd
deleted file mode 100644
index 9d847c74..00000000
--- a/boost/spirit/home/classic/tree/parsetree.dtd
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- This DTD is used for the output of Spirit parse tree's through          -->
-<!-- the boost::spirit::tree_to_xml functions.                               -->
-<!-- Copyright (c) 2001-2007 Hartmut Kaiser                                  -->
-<!-- Distribution 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)                                   -->
-<!ELEMENT parsetree (parsenode)>
-<!ATTLIST parsetree
-    version CDATA "1.0"
->
-<!ELEMENT parsenode ((value | token)?, parsenode*)>
-<!ATTLIST parsenode
-    rule CDATA #IMPLIED
->
-<!ELEMENT value (#PCDATA | token)*>
-<!ELEMENT token (#PCDATA)>
-<!ATTLIST token
-    id CDATA #REQUIRED
-    is_root CDATA "0"
->
diff --git a/boost/wave/cpplexer/re2clex/cpp.re b/boost/wave/cpplexer/re2clex/cpp.re
deleted file mode 100644
index 98399016..00000000
--- a/boost/wave/cpplexer/re2clex/cpp.re
+++ /dev/null
@@ -1,615 +0,0 @@
-/*=============================================================================
-    Boost.Wave: A Standard compliant C++ preprocessor library
-
-    Copyright (c) 2001 Daniel C. Nuffer
-    Copyright (c) 2001-2013 Hartmut Kaiser.
-    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)
-
-    This is a lexer conforming to the Standard with a few exceptions.
-    So it does allow the '$' to be part of identifiers. If you need strict
-    Standards conforming behaviour, please include the lexer definition
-    provided in the file strict_cpp.re.
-
-    TODO:
-        handle errors better.
-=============================================================================*/
-
-/*!re2c
-re2c:indent:string  = "    ";
-any                 = [\t\v\f\r\n\040-\377];
-anyctrl             = [\001-\037];
-OctalDigit          = [0-7];
-Digit               = [0-9];
-HexDigit            = [a-fA-F0-9];
-Integer             = (("0" [xX] HexDigit+) | ("0" OctalDigit*) | ([1-9] Digit*));
-ExponentStart       = [Ee] [+-];
-ExponentPart        = [Ee] [+-]? Digit+;
-FractionalConstant  = (Digit* "." Digit+) | (Digit+ ".");
-FloatingSuffix      = [fF] [lL]? | [lL] [fF]?;
-IntegerSuffix       = [uU] [lL]? | [lL] [uU]?;
-LongIntegerSuffix   = [uU] ("ll" | "LL") | ("ll" | "LL") [uU]?;
-MSLongIntegerSuffix = "u"? "i64";
-Backslash           = [\\] | "??/";
-EscapeSequence      = Backslash ([abfnrtv?'"] | Backslash | "x" HexDigit+ | OctalDigit OctalDigit? OctalDigit?);
-HexQuad             = HexDigit HexDigit HexDigit HexDigit;
-UniversalChar       = Backslash ("u" HexQuad | "U" HexQuad HexQuad);
-Newline             = "\r\n" | "\n" | "\r";
-PPSpace             = ([ \t\f\v]|("/*"(any\[*]|Newline|("*"+(any\[*/]|Newline)))*"*"+"/"))*;
-Pound               = "#" | "??=" | "%:";
-NonDigit            = [a-zA-Z_$] | UniversalChar;
-*/
-
-/*!re2c
-    "/*"            { goto ccomment; }
-    "//"            { goto cppcomment; }
-    "."? Digit      { goto pp_number; }
-
-    "alignas"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
-    "alignof"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
-    "asm"           { BOOST_WAVE_RET(T_ASM); }
-    "auto"          { BOOST_WAVE_RET(T_AUTO); }
-    "bool"          { BOOST_WAVE_RET(T_BOOL); }
-    "break"         { BOOST_WAVE_RET(T_BREAK); }
-    "case"          { BOOST_WAVE_RET(T_CASE); }
-    "catch"         { BOOST_WAVE_RET(T_CATCH); }
-    "char"          { BOOST_WAVE_RET(T_CHAR); }
-    "char8_t"       { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CHAR8_T : T_IDENTIFIER); }
-    "char16_t"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
-    "char32_t"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
-    "class"         { BOOST_WAVE_RET(T_CLASS); }
-    "concept"       { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONCEPT : T_IDENTIFIER); }
-    "const"         { BOOST_WAVE_RET(T_CONST); }
-    "consteval"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONSTEVAL : T_IDENTIFIER); }
-    "constexpr"     { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
-    "constinit"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONSTINIT : T_IDENTIFIER); }
-    "const_cast"    { BOOST_WAVE_RET(T_CONSTCAST); }
-    "continue"      { BOOST_WAVE_RET(T_CONTINUE); }
-    "co_await"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_AWAIT : T_IDENTIFIER); }
-    "co_return"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_RETURN : T_IDENTIFIER); }
-    "co_yield"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_YIELD : T_IDENTIFIER); }
-    "decltype"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
-    "default"       { BOOST_WAVE_RET(T_DEFAULT); }
-    "delete"        { BOOST_WAVE_RET(T_DELETE); }
-    "do"            { BOOST_WAVE_RET(T_DO); }
-    "double"        { BOOST_WAVE_RET(T_DOUBLE); }
-    "dynamic_cast"  { BOOST_WAVE_RET(T_DYNAMICCAST); }
-    "else"          { BOOST_WAVE_RET(T_ELSE); }
-    "enum"          { BOOST_WAVE_RET(T_ENUM); }
-    "explicit"      { BOOST_WAVE_RET(T_EXPLICIT); }
-    "export"        { BOOST_WAVE_RET(T_EXPORT); }
-    "extern"        { BOOST_WAVE_RET(T_EXTERN); }
-    "false"         { BOOST_WAVE_RET(T_FALSE); }
-    "float"         { BOOST_WAVE_RET(T_FLOAT); }
-    "for"           { BOOST_WAVE_RET(T_FOR); }
-    "friend"        { BOOST_WAVE_RET(T_FRIEND); }
-    "goto"          { BOOST_WAVE_RET(T_GOTO); }
-    "if"            { BOOST_WAVE_RET(T_IF); }
-    "import"        { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-    "inline"        { BOOST_WAVE_RET(T_INLINE); }
-    "int"           { BOOST_WAVE_RET(T_INT); }
-    "long"          { BOOST_WAVE_RET(T_LONG); }
-    "mutable"       { BOOST_WAVE_RET(T_MUTABLE); }
-    "namespace"     { BOOST_WAVE_RET(T_NAMESPACE); }
-    "new"           { BOOST_WAVE_RET(T_NEW); }
-    "noexcept"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
-    "nullptr"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
-    "operator"      { BOOST_WAVE_RET(T_OPERATOR); }
-    "private"       { BOOST_WAVE_RET(T_PRIVATE); }
-    "protected"     { BOOST_WAVE_RET(T_PROTECTED); }
-    "public"        { BOOST_WAVE_RET(T_PUBLIC); }
-    "register"      { BOOST_WAVE_RET(T_REGISTER); }
-    "reinterpret_cast" { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-    "requires"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_REQUIRES : T_IDENTIFIER); }
-    "return"        { BOOST_WAVE_RET(T_RETURN); }
-    "short"         { BOOST_WAVE_RET(T_SHORT); }
-    "signed"        { BOOST_WAVE_RET(T_SIGNED); }
-    "sizeof"        { BOOST_WAVE_RET(T_SIZEOF); }
-    "static"        { BOOST_WAVE_RET(T_STATIC); }
-    "static_cast"   { BOOST_WAVE_RET(T_STATICCAST); }
-    "static_assert" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
-    "struct"        { BOOST_WAVE_RET(T_STRUCT); }
-    "switch"        { BOOST_WAVE_RET(T_SWITCH); }
-    "template"      { BOOST_WAVE_RET(T_TEMPLATE); }
-    "this"          { BOOST_WAVE_RET(T_THIS); }
-    "thread_local"  { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
-    "throw"         { BOOST_WAVE_RET(T_THROW); }
-    "true"          { BOOST_WAVE_RET(T_TRUE); }
-    "try"           { BOOST_WAVE_RET(T_TRY); }
-    "typedef"       { BOOST_WAVE_RET(T_TYPEDEF); }
-    "typeid"        { BOOST_WAVE_RET(T_TYPEID); }
-    "typename"      { BOOST_WAVE_RET(T_TYPENAME); }
-    "union"         { BOOST_WAVE_RET(T_UNION); }
-    "unsigned"      { BOOST_WAVE_RET(T_UNSIGNED); }
-    "using"         { BOOST_WAVE_RET(T_USING); }
-    "virtual"       { BOOST_WAVE_RET(T_VIRTUAL); }
-    "void"          { BOOST_WAVE_RET(T_VOID); }
-    "volatile"      { BOOST_WAVE_RET(T_VOLATILE); }
-    "wchar_t"       { BOOST_WAVE_RET(T_WCHART); }
-    "while"         { BOOST_WAVE_RET(T_WHILE); }
-
-    "__int8"        { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-    "__int16"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-    "__int32"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-    "__int64"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-    "_"? "_based"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-    "_"? "_declspec" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-    "_"? "_cdecl"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-    "_"? "_fastcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-    "_"? "_stdcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-    "__try"         { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-    "__except"      { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-    "__finally"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-    "__leave"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-    "_"? "_inline"  { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-    "_"? "_asm"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-
-    "{"             { BOOST_WAVE_RET(T_LEFTBRACE); }
-    "??<"           { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-    "<%"            { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-    "}"             { BOOST_WAVE_RET(T_RIGHTBRACE); }
-    "??>"           { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-    "%>"            { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-    "["             { BOOST_WAVE_RET(T_LEFTBRACKET); }
-    "??("           { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-    "<:"            { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-    "]"             { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-    "??)"           { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-    ":>"            { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-    "#"             { BOOST_WAVE_RET(T_POUND); }
-    "%:"            { BOOST_WAVE_RET(T_POUND_ALT); }
-    "??="           { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-    "##"            { BOOST_WAVE_RET(T_POUND_POUND); }
-    "#??="          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=#"          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=??="        { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "%:%:"          { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-    "("             { BOOST_WAVE_RET(T_LEFTPAREN); }
-    ")"             { BOOST_WAVE_RET(T_RIGHTPAREN); }
-    ";"             { BOOST_WAVE_RET(T_SEMICOLON); }
-    ":"             { BOOST_WAVE_RET(T_COLON); }
-    "..."           { BOOST_WAVE_RET(T_ELLIPSIS); }
-    "?"             { BOOST_WAVE_RET(T_QUESTION_MARK); }
-    "::"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_COLON);
-            }
-            else {
-                BOOST_WAVE_RET(T_COLON_COLON);
-            }
-        }
-    "."             { BOOST_WAVE_RET(T_DOT); }
-    ".*"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
-            }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR);
-            }
-        }
-    "+"             { BOOST_WAVE_RET(T_PLUS); }
-    "-"             { BOOST_WAVE_RET(T_MINUS); }
-    "*"             { BOOST_WAVE_RET(T_STAR); }
-    "/"             { BOOST_WAVE_RET(T_DIVIDE); }
-    "%"             { BOOST_WAVE_RET(T_PERCENT); }
-    "^"             { BOOST_WAVE_RET(T_XOR); }
-    "??'"           { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-    "xor"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-    "&"             { BOOST_WAVE_RET(T_AND); }
-    "bitand"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-    "|"             { BOOST_WAVE_RET(T_OR); }
-    "bitor"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-    "??!"           { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-    "~"             { BOOST_WAVE_RET(T_COMPL); }
-    "??-"           { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-    "compl"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-    "!"             { BOOST_WAVE_RET(T_NOT); }
-    "not"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-    "="             { BOOST_WAVE_RET(T_ASSIGN); }
-    "<"             { BOOST_WAVE_RET(T_LESS); }
-    ">"             { BOOST_WAVE_RET(T_GREATER); }
-    "+="            { BOOST_WAVE_RET(T_PLUSASSIGN); }
-    "-="            { BOOST_WAVE_RET(T_MINUSASSIGN); }
-    "*="            { BOOST_WAVE_RET(T_STARASSIGN); }
-    "/="            { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-    "%="            { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-    "^="            { BOOST_WAVE_RET(T_XORASSIGN); }
-    "xor_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-    "??'="          { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-    "&="            { BOOST_WAVE_RET(T_ANDASSIGN); }
-    "and_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-    "|="            { BOOST_WAVE_RET(T_ORASSIGN); }
-    "or_eq"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-    "??!="          { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-    "<<"            { BOOST_WAVE_RET(T_SHIFTLEFT); }
-    ">>"            { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-    ">>="           { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-    "<<="           { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-    "=="            { BOOST_WAVE_RET(T_EQUAL); }
-    "!="            { BOOST_WAVE_RET(T_NOTEQUAL); }
-    "not_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-    "<=>"
-        {
-            if (s->act_in_cpp2a_mode) {
-                BOOST_WAVE_RET(T_SPACESHIP);
-            }
-            else {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_LESSEQUAL);
-            }
-        }
-    "<="            { BOOST_WAVE_RET(T_LESSEQUAL); }
-    ">="            { BOOST_WAVE_RET(T_GREATEREQUAL); }
-    "&&"            { BOOST_WAVE_RET(T_ANDAND); }
-    "and"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-    "||"            { BOOST_WAVE_RET(T_OROR); }
-    "??!|"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "|??!"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "or"            { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-    "??!??!"        { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "++"            { BOOST_WAVE_RET(T_PLUSPLUS); }
-    "--"            { BOOST_WAVE_RET(T_MINUSMINUS); }
-    ","             { BOOST_WAVE_RET(T_COMMA); }
-    "->*"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
-            }
-            else {
-                BOOST_WAVE_RET(T_ARROWSTAR);
-            }
-        }
-    "->"            { BOOST_WAVE_RET(T_ARROW); }
-    "??/"           { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-
-    "L"? (['] (EscapeSequence | UniversalChar | any\[\n\r\\'])+ ['])
-        { BOOST_WAVE_RET(T_CHARLIT); }
-
-    "L"? (["] (EscapeSequence | UniversalChar | any\[\n\r\\"])* ["])
-        { BOOST_WAVE_RET(T_STRINGLIT); }
-
-    "L"? "R" ["]
-        {
-            if (s->act_in_cpp0x_mode)
-            {
-                rawstringdelim = "";
-                goto extrawstringlit;
-            }
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    [uU] [']
-        {
-            if (s->act_in_cpp0x_mode)
-                goto extcharlit;
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([uU] | "u8") ["]
-        {
-            if (s->act_in_cpp0x_mode)
-                goto extstringlit;
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([uU] | "u8") "R" ["]
-        {
-            if (s->act_in_cpp0x_mode)
-            {
-                rawstringdelim = "";
-                goto extrawstringlit;
-            }
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([a-zA-Z_$] | UniversalChar) ([a-zA-Z_0-9$] | UniversalChar)*
-        { BOOST_WAVE_RET(T_IDENTIFIER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "<" (any\[\n\r>])+ ">"
-        { BOOST_WAVE_RET(T_PP_HHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "\"" (any\[\n\r"])+ "\""
-        { BOOST_WAVE_RET(T_PP_QHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace
-        { BOOST_WAVE_RET(T_PP_INCLUDE); }
-
-    Pound PPSpace "if"        { BOOST_WAVE_RET(T_PP_IF); }
-    Pound PPSpace "ifdef"     { BOOST_WAVE_RET(T_PP_IFDEF); }
-    Pound PPSpace "ifndef"    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-    Pound PPSpace "else"      { BOOST_WAVE_RET(T_PP_ELSE); }
-    Pound PPSpace "elif"      { BOOST_WAVE_RET(T_PP_ELIF); }
-    Pound PPSpace "endif"     { BOOST_WAVE_RET(T_PP_ENDIF); }
-    Pound PPSpace "define"    { BOOST_WAVE_RET(T_PP_DEFINE); }
-    Pound PPSpace "undef"     { BOOST_WAVE_RET(T_PP_UNDEF); }
-    Pound PPSpace "line"      { BOOST_WAVE_RET(T_PP_LINE); }
-    Pound PPSpace "error"     { BOOST_WAVE_RET(T_PP_ERROR); }
-    Pound PPSpace "pragma"    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-
-    Pound PPSpace "warning"   { BOOST_WAVE_RET(T_PP_WARNING); }
-
-    Pound PPSpace "region"    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-    Pound PPSpace "endregion" { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-
-    [ \t\v\f]+
-        { BOOST_WAVE_RET(T_SPACE); }
-
-    Newline
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        BOOST_WAVE_RET(T_EOF);
-    }
-
-    any        { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-ccomment:
-/*!re2c
-    "*/"            { BOOST_WAVE_RET(T_CCOMMENT); }
-
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
-        /*s->tok = cursor; */
-        s->line += count_backslash_newlines(s, cursor) +1;
-        cursor.column = 1;
-        goto ccomment;
-    }
-
-    any            { goto ccomment; }
-
-    "\000"
-    {
-        if(cursor == s->eof)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C' style comment");
-        }
-        else
-        {
-            --YYCURSOR;                   // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character: '\\000' in input stream");
-        }
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-cppcomment:
-/*!re2c
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
-        /*s->tok = cursor; */
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    any            { goto cppcomment; }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof)
-        {
-            --YYCURSOR;                     // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-
-        --YYCURSOR;                         // next call returns T_EOF
-        if (!s->single_line_only)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C++' style comment");
-        }
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-/* this subscanner is called whenever a pp_number has been started */
-pp_number:
-{
-    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
-    marker = uchar_wrapper(s->ptr);
-    limit = uchar_wrapper(s->lim);
-
-    if (s->detect_pp_numbers) {
-    /*!re2c
-        "."? Digit (Digit | NonDigit | ExponentStart | ".")*
-            { BOOST_WAVE_RET(T_PP_NUMBER); }
-
-        // because we reached this point, then reset the cursor,
-        // the pattern above should always match
-        * { BOOST_ASSERT(false); }
-    */
-    }
-    else {
-    /*!re2c
-        ((FractionalConstant ExponentPart?) | (Digit+ ExponentPart)) FloatingSuffix?
-            { BOOST_WAVE_RET(T_FLOATLIT); }
-
-        Integer { goto integer_suffix; }
-
-        // one of the above patterns should always match
-        * { BOOST_ASSERT(false); }
-    */
-    }
-}
-
-/* this subscanner is called, whenever an Integer was recognized */
-integer_suffix:
-{
-    if (s->enable_ms_extensions) {
-    /*!re2c
-        LongIntegerSuffix | MSLongIntegerSuffix
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-    else {
-    /*!re2c
-        LongIntegerSuffix
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-
-    // re2c will complain about -Wmatch-empty-string above
-    // it's OK because we've already matched an integer
-    // and will return T_INTLIT
-}
-
-/* this subscanner is invoked for C++0x extended character literals */
-extcharlit:
-{
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        ((EscapeSequence | UniversalChar | any\[\n\r\\']) ['])
-            { BOOST_WAVE_RET(T_CHARLIT); }
-
-        any
-            { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-    */
-}
-
-/* this subscanner is invoked for C++0x extended character string literals */
-extstringlit:
-{
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        ((EscapeSequence | UniversalChar | any\[\n\r\\"])* ["])
-            { BOOST_WAVE_RET(T_STRINGLIT); }
-
-        any
-            { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-    */
-}
-
-extrawstringlit:
-{
-    // we have consumed the double quote but not the lparen
-    // at this point we may see a delimiter
-
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        // delimiters are any character but parentheses, backslash, and whitespace
-        any\[()\\\t\v\f\r\n]
-        {
-            rawstringdelim += yych;
-            if (rawstringdelim.size() > 16)
-            {
-                (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                    "Raw string delimiter of excessive length (\"%s\") in input stream",
-                    rawstringdelim.c_str());
-            }
-            goto extrawstringlit;
-        }
-
-        "("
-        {
-            rawstringdelim = ")" + rawstringdelim;
-            goto extrawstringbody;
-        }
-
-    */
-}
-
-extrawstringbody:
-{
-    /*!re2c
-
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string body ('%c')", yych);
-        }
-
-        Newline
-        {
-            s->line += count_backslash_newlines(s, cursor) +1;
-            cursor.column = 1;
-            goto extrawstringbody;
-        }
-
-        (EscapeSequence | UniversalChar | any\["])
-        {
-            goto extrawstringbody;
-        }
-
-        ["]
-        {
-            // check to see if we have completed a delimiter
-            if (string_type((char *)(YYCURSOR - rawstringdelim.size() - 1),
-                             (char *)(YYCURSOR - 1)) == rawstringdelim)
-            {
-                 BOOST_WAVE_RET(T_RAWSTRINGLIT);
-            } else {
-                goto extrawstringbody;
-            }
-        }
-    */
-}
diff --git a/boost/wave/cpplexer/re2clex/strict_cpp.re b/boost/wave/cpplexer/re2clex/strict_cpp.re
deleted file mode 100644
index b9e84ed3..00000000
--- a/boost/wave/cpplexer/re2clex/strict_cpp.re
+++ /dev/null
@@ -1,611 +0,0 @@
-/*=============================================================================
-    Boost.Wave: A Standard compliant C++ preprocessor library
-
-    Copyright (c) 2001 Daniel C. Nuffer
-    Copyright (c) 2001-2011 Hartmut Kaiser.
-    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)
-
-    This is a strict lexer conforming to the Standard as close as possible.
-    It does not allow the '$' to be part of identifiers. If you need the '$'
-    character in identifiers please include the lexer definition provided
-    in the cpp.re file.
-
-    TODO:
-        handle errors better.
-=============================================================================*/
-
-/*!re2c
-re2c:indent:string = "    ";
-any                = [\t\v\f\r\n\040-\377];
-anyctrl            = [\001-\037];
-OctalDigit         = [0-7];
-Digit              = [0-9];
-HexDigit           = [a-fA-F0-9];
-Integer            = (("0" [xX] HexDigit+) | ("0" OctalDigit*) | ([1-9] Digit*));
-ExponentStart      = [Ee] [+-];
-ExponentPart       = [Ee] [+-]? Digit+;
-FractionalConstant = (Digit* "." Digit+) | (Digit+ ".");
-FloatingSuffix     = [fF] [lL]? | [lL] [fF]?;
-IntegerSuffix      = [uU] [lL]? | [lL] [uU]?;
-LongIntegerSuffix  = [uU] ("ll" | "LL") | ("ll" | "LL") [uU]?;
-Backslash          = [\\] | "??/";
-EscapeSequence     = Backslash ([abfnrtv?'"] | Backslash | "x" HexDigit+ | OctalDigit OctalDigit? OctalDigit?);
-HexQuad            = HexDigit HexDigit HexDigit HexDigit;
-UniversalChar      = Backslash ("u" HexQuad | "U" HexQuad HexQuad);
-Newline            = "\r\n" | "\n" | "\r";
-PPSpace            = ([ \t\f\v]|("/*"(any\[*]|Newline|("*"+(any\[*/]|Newline)))*"*"+"/"))*;
-Pound              = "#" | "??=" | "%:";
-NonDigit           = [a-zA-Z_] | UniversalChar;
-*/
-
-/*!re2c
-    "/*"            { goto ccomment; }
-    "//"            { goto cppcomment; }
-    "."? Digit      { goto pp_number; }
-
-    "alignas"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
-    "alignof"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
-    "asm"           { BOOST_WAVE_RET(T_ASM); }
-    "auto"          { BOOST_WAVE_RET(T_AUTO); }
-    "bool"          { BOOST_WAVE_RET(T_BOOL); }
-    "break"         { BOOST_WAVE_RET(T_BREAK); }
-    "case"          { BOOST_WAVE_RET(T_CASE); }
-    "catch"         { BOOST_WAVE_RET(T_CATCH); }
-    "char"          { BOOST_WAVE_RET(T_CHAR); }
-    "char8_t"       { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CHAR8_T : T_IDENTIFIER); }
-    "char16_t"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
-    "char32_t"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
-    "class"         { BOOST_WAVE_RET(T_CLASS); }
-    "concept"       { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONCEPT : T_IDENTIFIER); }
-    "const"         { BOOST_WAVE_RET(T_CONST); }
-    "consteval"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONSTEVAL : T_IDENTIFIER); }
-    "constexpr"     { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
-    "constinit"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CONSTINIT : T_IDENTIFIER); }
-    "const_cast"    { BOOST_WAVE_RET(T_CONSTCAST); }
-    "continue"      { BOOST_WAVE_RET(T_CONTINUE); }
-    "co_await"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_AWAIT : T_IDENTIFIER); }
-    "co_return"     { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_RETURN : T_IDENTIFIER); }
-    "co_yield"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_CO_YIELD : T_IDENTIFIER); }
-    "decltype"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
-    "default"       { BOOST_WAVE_RET(T_DEFAULT); }
-    "delete"        { BOOST_WAVE_RET(T_DELETE); }
-    "do"            { BOOST_WAVE_RET(T_DO); }
-    "double"        { BOOST_WAVE_RET(T_DOUBLE); }
-    "dynamic_cast"  { BOOST_WAVE_RET(T_DYNAMICCAST); }
-    "else"          { BOOST_WAVE_RET(T_ELSE); }
-    "enum"          { BOOST_WAVE_RET(T_ENUM); }
-    "explicit"      { BOOST_WAVE_RET(T_EXPLICIT); }
-    "export"        { BOOST_WAVE_RET(T_EXPORT); }
-    "extern"        { BOOST_WAVE_RET(T_EXTERN); }
-    "false"         { BOOST_WAVE_RET(T_FALSE); }
-    "float"         { BOOST_WAVE_RET(T_FLOAT); }
-    "for"           { BOOST_WAVE_RET(T_FOR); }
-    "friend"        { BOOST_WAVE_RET(T_FRIEND); }
-    "goto"          { BOOST_WAVE_RET(T_GOTO); }
-    "if"            { BOOST_WAVE_RET(T_IF); }
-    "import"        { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-    "inline"        { BOOST_WAVE_RET(T_INLINE); }
-    "int"           { BOOST_WAVE_RET(T_INT); }
-    "long"          { BOOST_WAVE_RET(T_LONG); }
-    "mutable"       { BOOST_WAVE_RET(T_MUTABLE); }
-    "namespace"     { BOOST_WAVE_RET(T_NAMESPACE); }
-    "new"           { BOOST_WAVE_RET(T_NEW); }
-    "noexcept"      { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
-    "nullptr"       { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
-    "operator"      { BOOST_WAVE_RET(T_OPERATOR); }
-    "private"       { BOOST_WAVE_RET(T_PRIVATE); }
-    "protected"     { BOOST_WAVE_RET(T_PROTECTED); }
-    "public"        { BOOST_WAVE_RET(T_PUBLIC); }
-    "register"      { BOOST_WAVE_RET(T_REGISTER); }
-    "reinterpret_cast" { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-    "requires"      { BOOST_WAVE_RET(s->act_in_cpp2a_mode ? T_REQUIRES : T_IDENTIFIER); }
-    "return"        { BOOST_WAVE_RET(T_RETURN); }
-    "short"         { BOOST_WAVE_RET(T_SHORT); }
-    "signed"        { BOOST_WAVE_RET(T_SIGNED); }
-    "sizeof"        { BOOST_WAVE_RET(T_SIZEOF); }
-    "static"        { BOOST_WAVE_RET(T_STATIC); }
-    "static_cast"   { BOOST_WAVE_RET(T_STATICCAST); }
-    "static_assert" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
-    "struct"        { BOOST_WAVE_RET(T_STRUCT); }
-    "switch"        { BOOST_WAVE_RET(T_SWITCH); }
-    "template"      { BOOST_WAVE_RET(T_TEMPLATE); }
-    "this"          { BOOST_WAVE_RET(T_THIS); }
-    "thread_local"  { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
-    "throw"         { BOOST_WAVE_RET(T_THROW); }
-    "true"          { BOOST_WAVE_RET(T_TRUE); }
-    "try"           { BOOST_WAVE_RET(T_TRY); }
-    "typedef"       { BOOST_WAVE_RET(T_TYPEDEF); }
-    "typeid"        { BOOST_WAVE_RET(T_TYPEID); }
-    "typename"      { BOOST_WAVE_RET(T_TYPENAME); }
-    "union"         { BOOST_WAVE_RET(T_UNION); }
-    "unsigned"      { BOOST_WAVE_RET(T_UNSIGNED); }
-    "using"         { BOOST_WAVE_RET(T_USING); }
-    "virtual"       { BOOST_WAVE_RET(T_VIRTUAL); }
-    "void"          { BOOST_WAVE_RET(T_VOID); }
-    "volatile"      { BOOST_WAVE_RET(T_VOLATILE); }
-    "wchar_t"       { BOOST_WAVE_RET(T_WCHART); }
-    "while"         { BOOST_WAVE_RET(T_WHILE); }
-
-    "__int8"        { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-    "__int16"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-    "__int32"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-    "__int64"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-    "_"? "_based"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-    "_"? "_declspec" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-    "_"? "_cdecl"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-    "_"? "_fastcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-    "_"? "_stdcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-    "__try"         { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-    "__except"      { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-    "__finally"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-    "__leave"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-    "_"? "_inline"  { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-    "_"? "_asm"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-
-    "{"             { BOOST_WAVE_RET(T_LEFTBRACE); }
-    "??<"           { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-    "<%"            { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-    "}"             { BOOST_WAVE_RET(T_RIGHTBRACE); }
-    "??>"           { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-    "%>"            { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-    "["             { BOOST_WAVE_RET(T_LEFTBRACKET); }
-    "??("           { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-    "<:"            { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-    "]"             { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-    "??)"           { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-    ":>"            { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-    "#"             { BOOST_WAVE_RET(T_POUND); }
-    "%:"            { BOOST_WAVE_RET(T_POUND_ALT); }
-    "??="           { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-    "##"            { BOOST_WAVE_RET(T_POUND_POUND); }
-    "#??="          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=#"          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=??="        { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "%:%:"          { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-    "("             { BOOST_WAVE_RET(T_LEFTPAREN); }
-    ")"             { BOOST_WAVE_RET(T_RIGHTPAREN); }
-    ";"             { BOOST_WAVE_RET(T_SEMICOLON); }
-    ":"             { BOOST_WAVE_RET(T_COLON); }
-    "..."           { BOOST_WAVE_RET(T_ELLIPSIS); }
-    "?"             { BOOST_WAVE_RET(T_QUESTION_MARK); }
-    "::"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_COLON);
-            }
-            else {
-                BOOST_WAVE_RET(T_COLON_COLON);
-            }
-        }
-    "."             { BOOST_WAVE_RET(T_DOT); }
-    ".*"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
-            }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR);
-            }
-        }
-    "+"             { BOOST_WAVE_RET(T_PLUS); }
-    "-"             { BOOST_WAVE_RET(T_MINUS); }
-    "*"             { BOOST_WAVE_RET(T_STAR); }
-    "/"             { BOOST_WAVE_RET(T_DIVIDE); }
-    "%"             { BOOST_WAVE_RET(T_PERCENT); }
-    "^"             { BOOST_WAVE_RET(T_XOR); }
-    "??'"           { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-    "xor"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-    "&"             { BOOST_WAVE_RET(T_AND); }
-    "bitand"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-    "|"             { BOOST_WAVE_RET(T_OR); }
-    "bitor"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-    "??!"           { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-    "~"             { BOOST_WAVE_RET(T_COMPL); }
-    "??-"           { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-    "compl"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-    "!"             { BOOST_WAVE_RET(T_NOT); }
-    "not"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-    "="             { BOOST_WAVE_RET(T_ASSIGN); }
-    "<"             { BOOST_WAVE_RET(T_LESS); }
-    ">"             { BOOST_WAVE_RET(T_GREATER); }
-    "+="            { BOOST_WAVE_RET(T_PLUSASSIGN); }
-    "-="            { BOOST_WAVE_RET(T_MINUSASSIGN); }
-    "*="            { BOOST_WAVE_RET(T_STARASSIGN); }
-    "/="            { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-    "%="            { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-    "^="            { BOOST_WAVE_RET(T_XORASSIGN); }
-    "xor_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-    "??'="          { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-    "&="            { BOOST_WAVE_RET(T_ANDASSIGN); }
-    "and_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-    "|="            { BOOST_WAVE_RET(T_ORASSIGN); }
-    "or_eq"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-    "??!="          { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-    "<<"            { BOOST_WAVE_RET(T_SHIFTLEFT); }
-    ">>"            { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-    ">>="           { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-    "<<="           { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-    "=="            { BOOST_WAVE_RET(T_EQUAL); }
-    "!="            { BOOST_WAVE_RET(T_NOTEQUAL); }
-    "not_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-    "<=>"
-        {
-            if (s->act_in_cpp2a_mode) {
-                BOOST_WAVE_RET(T_SPACESHIP);
-            }
-            else {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_LESSEQUAL);
-            }
-        }
-    "<="            { BOOST_WAVE_RET(T_LESSEQUAL); }
-    ">="            { BOOST_WAVE_RET(T_GREATEREQUAL); }
-    "&&"            { BOOST_WAVE_RET(T_ANDAND); }
-    "and"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-    "||"            { BOOST_WAVE_RET(T_OROR); }
-    "??!|"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "|??!"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "or"            { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-    "??!??!"        { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "++"            { BOOST_WAVE_RET(T_PLUSPLUS); }
-    "--"            { BOOST_WAVE_RET(T_MINUSMINUS); }
-    ","             { BOOST_WAVE_RET(T_COMMA); }
-    "->*"
-        {
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
-            }
-            else {
-                BOOST_WAVE_RET(T_ARROWSTAR);
-            }
-        }
-    "->"            { BOOST_WAVE_RET(T_ARROW); }
-    "??/"           { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-
-    "L"? (['] (EscapeSequence | UniversalChar | any\[\n\r\\'])+ ['])
-        { BOOST_WAVE_RET(T_CHARLIT); }
-
-    "L"? (["] (EscapeSequence | UniversalChar | any\[\n\r\\"])* ["])
-        { BOOST_WAVE_RET(T_STRINGLIT); }
-
-    "L"? "R" ["]
-        {
-            if (s->act_in_cpp0x_mode)
-            {
-                rawstringdelim = "";
-                goto extrawstringlit;
-            }
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    [uU] [']
-        {
-            if (s->act_in_cpp0x_mode)
-                goto extcharlit;
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([uU] | "u8") ["]
-        {
-            if (s->act_in_cpp0x_mode)
-                goto extstringlit;
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([uU] | "u8") "R" ["]
-        {
-            if (s->act_in_cpp0x_mode)
-            {
-                rawstringdelim = "";
-                goto extrawstringlit;
-            }
-            --YYCURSOR;
-            BOOST_WAVE_RET(T_IDENTIFIER);
-        }
-
-    ([a-zA-Z_] | UniversalChar) ([a-zA-Z_0-9] | UniversalChar)*
-        { BOOST_WAVE_RET(T_IDENTIFIER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "<" (any\[\n\r>])+ ">"
-        { BOOST_WAVE_RET(T_PP_HHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "\"" (any\[\n\r"])+ "\""
-        { BOOST_WAVE_RET(T_PP_QHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace
-        { BOOST_WAVE_RET(T_PP_INCLUDE); }
-
-    Pound PPSpace "if"        { BOOST_WAVE_RET(T_PP_IF); }
-    Pound PPSpace "ifdef"     { BOOST_WAVE_RET(T_PP_IFDEF); }
-    Pound PPSpace "ifndef"    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-    Pound PPSpace "else"      { BOOST_WAVE_RET(T_PP_ELSE); }
-    Pound PPSpace "elif"      { BOOST_WAVE_RET(T_PP_ELIF); }
-    Pound PPSpace "endif"     { BOOST_WAVE_RET(T_PP_ENDIF); }
-    Pound PPSpace "define"    { BOOST_WAVE_RET(T_PP_DEFINE); }
-    Pound PPSpace "undef"     { BOOST_WAVE_RET(T_PP_UNDEF); }
-    Pound PPSpace "line"      { BOOST_WAVE_RET(T_PP_LINE); }
-    Pound PPSpace "error"     { BOOST_WAVE_RET(T_PP_ERROR); }
-    Pound PPSpace "pragma"    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-
-    Pound PPSpace "warning"   { BOOST_WAVE_RET(T_PP_WARNING); }
-
-    Pound PPSpace "region"    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-    Pound PPSpace "endregion" { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-
-    [ \t\v\f]+
-        { BOOST_WAVE_RET(T_SPACE); }
-
-    Newline
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        BOOST_WAVE_RET(T_EOF);
-    }
-
-    any        { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-ccomment:
-/*!re2c
-    "*/"            { BOOST_WAVE_RET(T_CCOMMENT); }
-
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
-        /*s->tok = cursor; */
-        s->line += count_backslash_newlines(s, cursor) +1;
-        cursor.column = 1;
-        goto ccomment;
-    }
-
-    any            { goto ccomment; }
-
-    "\000"
-    {
-        if(cursor == s->eof)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C' style comment");
-        }
-        else
-        {
-            --YYCURSOR;                   // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character: '\\000' in input stream");
-        }
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-cppcomment:
-/*!re2c
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
-        /*s->tok = cursor; */
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    any            { goto cppcomment; }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof)
-        {
-            --YYCURSOR;                     // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-
-        --YYCURSOR;                         // next call returns T_EOF
-        if (!s->single_line_only)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C++' style comment");
-        }
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-*/
-
-/* this subscanner is called whenever a pp_number has been started */
-pp_number:
-{
-    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
-    marker = uchar_wrapper(s->ptr);
-    limit = uchar_wrapper(s->lim);
-
-    if (s->detect_pp_numbers) {
-    /*!re2c
-        "."? Digit (Digit | NonDigit | ExponentStart | ".")*
-            { BOOST_WAVE_RET(T_PP_NUMBER); }
-
-        * { BOOST_ASSERT(false); }
-    */
-    }
-    else {
-    /*!re2c
-        ((FractionalConstant ExponentPart?) | (Digit+ ExponentPart)) FloatingSuffix?
-            { BOOST_WAVE_RET(T_FLOATLIT); }
-
-        Integer { goto integer_suffix; }
-
-        * { BOOST_ASSERT(false); }
-    */
-    }
-}
-
-/* this subscanner is called, whenever an Integer was recognized */
-integer_suffix:
-{
-    if (s->enable_ms_extensions) {
-    /*!re2c
-        LongIntegerSuffix | "i64"
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-    else {
-    /*!re2c
-        LongIntegerSuffix
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-
-    // re2c will complain about -Wmatch-empty-string above
-    // it's OK because we've already matched an integer
-    // and will return T_INTLIT
-}
-
-/* this subscanner is invoked for C++0x extended character literals */
-extcharlit:
-{
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        ((EscapeSequence | UniversalChar | any\[\n\r\\']) ['])
-            { BOOST_WAVE_RET(T_CHARLIT); }
-
-        any
-            { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-    */
-}
-
-/* this subscanner is invoked for C++0x extended character string literals */
-extstringlit:
-{
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        ((EscapeSequence | UniversalChar | any\[\n\r\\"])* ["])
-            { BOOST_WAVE_RET(T_STRINGLIT); }
-
-        any
-            { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-    */
-}
-
-extrawstringlit:
-{
-    // we have consumed the double quote but not the lparen
-    // at this point we may see a delimiter
-
-    /*!re2c
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string delimiter ('%c')", yych);
-        }
-
-        // delimiters are any character but parentheses, backslash, and whitespace
-        any\[()\\\t\v\f\r\n]
-        {
-            rawstringdelim += yych;
-            if (rawstringdelim.size() > 16)
-            {
-                (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                    "Raw string delimiter of excessive length (\"%s\") in input stream",
-                    rawstringdelim.c_str());
-            }
-            goto extrawstringlit;
-        }
-
-        "("
-        {
-            rawstringdelim = ")" + rawstringdelim;
-            goto extrawstringbody;
-        }
-
-    */
-}
-
-extrawstringbody:
-{
-    /*!re2c
-
-        * {
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "Invalid character in raw string body ('%c')", yych);
-        }
-
-        Newline
-        {
-            s->line += count_backslash_newlines(s, cursor) +1;
-            cursor.column = 1;
-            goto extrawstringbody;
-        }
-
-        (EscapeSequence | UniversalChar | any\["])
-        {
-            goto extrawstringbody;
-        }
-
-        ["]
-        {
-            // check to see if we have completed a delimiter
-            if (string_type((char *)(YYCURSOR - rawstringdelim.size() - 1),
-                             (char *)(YYCURSOR - 1)) == rawstringdelim)
-            {
-                 BOOST_WAVE_RET(T_RAWSTRINGLIT);
-            } else {
-                goto extrawstringbody;
-            }
-        }
-    */
-}
diff --git a/make_headers.sh b/make_headers.sh
new file mode 100644
index 00000000..5e270d6d
--- /dev/null
+++ b/make_headers.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Which version of Boost?
+BOOST_MAJOR=1
+BOOST_MINOR=75
+BOOST_PATCH=0
+
+# Version formatted representations (dot and underscore)
+BOOST_VER_DOT=${BOOST_MAJOR}.${BOOST_MINOR}.${BOOST_PATCH}
+BOOST_VER_UND=${BOOST_MAJOR}_${BOOST_MINOR}_${BOOST_PATCH}
+
+# where do I live?
+#base="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+base=/home/rgommers/code/scipy/boost-headers-only
+
+# download tarball (location of tarballs can also be found at https://www.boost.org/users/download/)
+echo "Downloading source distribution of Boost ${BOOST_VER_DOT}... "
+archive=${base}/boost.${BOOST_VER_DOT}.tar.gz
+srctree=${base}/boost_${BOOST_VER_UND}
+wget -q --show-progress -O ${archive} https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VER_DOT}/source/boost_${BOOST_VER_UND}.tar.gz
+printf "Unpacking... "
+tar -xzf ${archive}
+echo "Extracted!"
+
+# configure build by calling bootstrap.sh
+printf "Starting configure... "
+boost_tmp=${base}/../boost_with_lib
+$(cd ${srctree} && ./bootstrap.sh --prefix=${boost_tmp} --with-libraries=math > ${base}/bootstrap.log)
+res=${?}
+if [ "${res}" -ne 0 ]; then
+    echo "Failed to run Boost ./bootstrap.sh!"
+    return 1
+fi
+echo "Success!"
+
+# Do the build, will create some binaries but we will ignore these
+printf "Starting build... "
+$(cd ${srctree} && ./b2 install > ${base}/b2.log)
+res=${?}
+if [ "${res}" -ne 0 ]; then
+    echo "Failed to run Boost ./b2!"
+    return 1
+fi
+# ensure the include/ directory really does exist where we think it does
+if [ ! -d "${boost_tmp}/include" ]; then
+    echo "Headers failed to generate!"
+    return 1
+fi
+echo "Success!"
+
+# Remove old headers and replace with new headers and move License, README
+echo "Updating header files!"
+rm -r ${base}/boost/
+mv ${boost_tmp}/include/boost/ ${base}/
+mv ${srctree}/LICENSE_1_0.txt ${base}/
+mv ${srctree}/README.md ${base}/Boost_${BOOST_VER_UND}_README.md
+
+# Cleanup
+printf "Cleaning up... "
+rm -r ${boost_tmp}/
+rm -r ${srctree}/
+rm ${archive}
+echo "Done!"

It's not impossible I messed something up here. What I did is:

  • check out master
  • change the version number in make_headers.sh back to 1.75.0
  • commit the results
  • squash all commits on top of the initial commit (= 1.75.0 committed by @mckib2 before writing the make_headers.sh script)

"base" in `make_headers.sh` is not determined correctly

This should use some local tempfile, not /usr/bin/:

$ source make_headers.sh
Downloading source distribution of Boost 1.75.0... 
/usr/bin/boost.1.75.0.tar.gz: Permission denied
Unpacking... tar (child): /usr/bin/boost.1.75.0.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Extracted!
Starting configure... bash: cd: /usr/bin/boost_1_75_0: No such file or directory
Failed to run Boost ./bootstrap.sh!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.