Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-5880

Audit use of Boost in the stack and remove it where possible

    Details

    • Type: Story
    • Status: Done
    • Priority: Major
    • Resolution: Done
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Templates:
    • Story Points:
      10
    • Sprint:
      DRP X16-3, DRP F16-1
    • Team:
      Data Release Production

      Description

      Consider use of Boost in the stack, and investigate where it can be eliminated by using std library equivalents. Create tickets to remove it, then work on them.

        Issue Links

          Activity

          Hide
          swinbank John Swinbank added a comment -

          Note that many relevant tickets already exist:

          Please check if there's anything these tickets don't already cover, with a particular eye to moving towards header-only usage of Boost.

          Show
          swinbank John Swinbank added a comment - Note that many relevant tickets already exist: DM-4014 DM-4035 DM-4036 DM-3920 Please check if there's anything these tickets don't already cover, with a particular eye to moving towards header-only usage of Boost.
          Hide
          pschella Pim Schellart added a comment - - edited

          A preliminary audit reveals the following boost functions / libraries in use in the stack.

          Already migrated to std equivalents
          • boost::array
          • boost::const_pointer_cast
          • boost::dynamic_pointer_cast
          • boost::enable_shared_from_this
          • boost::make_shared
          • boost::make_tuple
          • boost::math::atanh
          • boost::math::erfc
          • boost::math::fpclassify
          • boost::math::iround
          • boost::math::isfinite
          • boost::math::isinf
          • boost::math::isnan
          • boost::math::isnormal
          • boost::scoped_ptr
          • boost::shared_ptr
          • boost::static_pointer_cast
          • boost::tuple
          • boost::weak_ptr
          Todo
          • boost::bad_lexical_cast
          • boost::bind
          • boost::call_traits
          • boost::enable_if
          • boost::enable_if_c
          • boost::false_type
          • boost::int16_t
          • boost::int32_t
          • boost::int64_t
          • boost::int8_t
          • boost::is_any_of
          • boost::is_arithmetic
          • boost::is_complex
          • boost::is_const
          • boost::is_convertible
          • boost::is_integral
          • boost::is_same
          • boost::lambda
          • boost::lexical_cast
          • boost::noncopyable
          • boost::random::mt19937
          • boost::random::uniform_01
          • boost::random::uniform_int_distribution
          • boost::ref
          • boost::remove_const
          • boost::scoped_array
          • boost::tie
          • boost::true_type
          • boost::uint16_t
          • boost::uint32_t
          • boost::uint64_t
          • boost::uint8_t
          Not until C++14
          • boost::cmatch
          • boost::cregex_iterator
          • boost::make_regex_token_iterator
          • boost::match_results
          • boost::regex
          • boost::regex::perl
          • boost::regex_iterator
          • boost::regex_match
          • boost::regex_search
          • boost::smatch
          • boost::sregex_iterator
          • boost::sregex_token_iterator
          Not until C++17
          • boost::any
          • boost::any_cast
          • boost::bad_any_cast
          • boost::filesystem
          • boost::filesystem::exists
          • boost::filesystem::path
          • boost::filesystem::remove
          • boost::shared_array
          Depends on use case
          • boost::counting_iterator
          • boost::forward_traversal_tag
          • boost::intrusive_ptr
          • boost::iterator_adaptor
          • boost::iterator_core_access
          • boost::iterator_facade
          • boost::random_access_traversal_tag
          • boost::reverse_iterator
          • boost::timer
          • boost::transform_iterator
          • boost::use_default
          • boost::zip_iterator
          No std replacement
          • boost::algorithm::join
          • boost::algorithm::trim_right_copy
          • boost::apply_visitor
          • boost::archive
          • boost::archive::binary_iarchive
          • boost::archive::binary_oarchive
          • boost::archive::text_iarchive
          • boost::archive::text_oarchive
          • boost::archive::xml_iarchive
          • boost::archive::xml_oarchive
          • boost::bad_get
          • boost::binder1st
          • boost::binder2nd
          • boost::char_separator
          • boost::format
          • boost::fusion
          • boost::fusion::as_vector
          • boost::fusion::at_c
          • boost::fusion::make_vector
          • boost::fusion::push_back
          • boost::fusion::result_of::as_vector
          • boost::fusion::result_of::push_back
          • boost::fusion::vector
          • boost::fusion::vector1
          • boost::fusion::vector2
          • boost::geometry
          • boost::geometry::area
          • boost::geometry::assign
          • boost::geometry::convex_hull
          • boost::geometry::correct
          • boost::geometry::disjoint
          • boost::geometry::equals
          • boost::geometry::intersection
          • boost::geometry::model::box
          • boost::geometry::model::linestring
          • boost::geometry::model::polygon
          • boost::geometry::models::polygon
          • boost::geometry::num_points
          • boost::geometry::perimeter
          • boost::geometry::return_centroid
          • boost::geometry::return_envelope
          • boost::geometry::simplify
          • boost::geometry::sym_difference
          • boost::geometry::traits
          • boost::geometry::union_
          • boost::geometry::within
          • boost::get
          • boost::gil
          • boost::gil::channel_traits
          • boost::gil::const_iterator_type
          • boost::gil::gray16_image_t
          • boost::gil::gray16_view_t
          • boost::gil::gray16c_view_t
          • boost::gil::gray16s_image_t
          • boost::gil::gray16s_view_t
          • boost::gil::gray16sc_view_t
          • boost::gil::gray32_image_t
          • boost::gil::gray32_view_t
          • boost::gil::gray32c_view_t
          • boost::gil::gray32f_image_t
          • boost::gil::gray32f_noscale_image_t
          • boost::gil::gray32f_noscale_view_t
          • boost::gil::gray32f_noscalec_view_t
          • boost::gil::gray32s_image_t
          • boost::gil::gray32s_view_t
          • boost::gil::gray32sc_view_t
          • boost::gil::gray64_image_t
          • boost::gil::gray64_view_t
          • boost::gil::gray64c_view_t
          • boost::gil::gray64f_noscale_image_t
          • boost::gil::gray64f_noscale_view_t
          • boost::gil::gray64f_noscalec_pixel_t
          • boost::gil::gray64f_noscalec_view_t
          • boost::gil::gray64s_image_t
          • boost::gil::gray64s_view_t
          • boost::gil::gray64sc_view_t
          • boost::gil::gray8_image_t
          • boost::gil::gray8_view_t
          • boost::gil::gray8c_view_t
          • boost::gil::interleaved_view
          • boost::gil::memory_based_2d_locator
          • boost::gil::point2
          • boost::gil::subimage_view
          • boost::gil::view
          • boost::hash_combine
          • boost::make_variant_over
          • boost::math::binomial_coefficient
          • boost::math::constants::pi
          • boost::math::constants::root_two
          • boost::math::cyl_bessel_j
          • boost::math::erf_inv
          • boost::math::erfc_inv
          • boost::math::gamma_q_inv
          • boost::math::tgamma_delta_ratio
          • boost::math::tgamma_ratio
          • boost::math::unchecked_factorial
          • boost::mpl
          • boost::mpl::and_
          • boost::mpl::at
          • boost::mpl::bool_
          • boost::mpl::false_
          • boost::mpl::fold
          • boost::mpl::for_each
          • boost::mpl::if_
          • boost::mpl::int_
          • boost::mpl::negate
          • boost::mpl::range_c
          • boost::mpl::template
          • boost::mpl::transform
          • boost::mpl::true_
          • boost::mpl::vector
          • boost::multi_index
          • boost::multi_index::global_fun
          • boost::multi_index::hashed_unique
          • boost::multi_index::indexed_by
          • boost::multi_index::member
          • boost::multi_index::ordered_non_unique
          • boost::multi_index::ordered_unique
          • boost::multi_index::sequenced
          • boost::multi_index::tag
          • boost::multi_index_container
          • boost::property_tree::ptree
          • boost::property_tree::ptree::value_type
          • boost::replace_all_copy
          • boost::serialization
          • boost::serialization::access
          • boost::serialization::base_object
          • boost::serialization::make_array
          • boost::serialization::make_nvp
          • boost::serialization::void_cast_register
          • boost::static_visitor
          • boost::str
          • boost::test
          • boost::test_tools
          • boost::test_tools::predicate_result
          • boost::unit_test
          • boost::unwrap_ref
          • boost::unwrap_reference
          • boost::variant

          Where the distinction between the last two categories is a guess based on the expected amount of work required (which may turn out to be inaccurate).
          I propose to create separate tickets for items from the todo category and to consider this ticket completed when these are done.

          Show
          pschella Pim Schellart added a comment - - edited A preliminary audit reveals the following boost functions / libraries in use in the stack. Already migrated to std equivalents boost::array boost::const_pointer_cast boost::dynamic_pointer_cast boost::enable_shared_from_this boost::make_shared boost::make_tuple boost::math::atanh boost::math::erfc boost::math::fpclassify boost::math::iround boost::math::isfinite boost::math::isinf boost::math::isnan boost::math::isnormal boost::scoped_ptr boost::shared_ptr boost::static_pointer_cast boost::tuple boost::weak_ptr Todo boost::bad_lexical_cast boost::bind boost::call_traits boost::enable_if boost::enable_if_c boost::false_type boost::int16_t boost::int32_t boost::int64_t boost::int8_t boost::is_any_of boost::is_arithmetic boost::is_complex boost::is_const boost::is_convertible boost::is_integral boost::is_same boost::lambda boost::lexical_cast boost::noncopyable boost::random::mt19937 boost::random::uniform_01 boost::random::uniform_int_distribution boost::ref boost::remove_const boost::scoped_array boost::tie boost::true_type boost::uint16_t boost::uint32_t boost::uint64_t boost::uint8_t Not until C++14 boost::cmatch boost::cregex_iterator boost::make_regex_token_iterator boost::match_results boost::regex boost::regex::perl boost::regex_iterator boost::regex_match boost::regex_search boost::smatch boost::sregex_iterator boost::sregex_token_iterator Not until C++17 boost::any boost::any_cast boost::bad_any_cast boost::filesystem boost::filesystem::exists boost::filesystem::path boost::filesystem::remove boost::shared_array Depends on use case boost::counting_iterator boost::forward_traversal_tag boost::intrusive_ptr boost::iterator_adaptor boost::iterator_core_access boost::iterator_facade boost::random_access_traversal_tag boost::reverse_iterator boost::timer boost::transform_iterator boost::use_default boost::zip_iterator No std replacement boost::algorithm::join boost::algorithm::trim_right_copy boost::apply_visitor boost::archive boost::archive::binary_iarchive boost::archive::binary_oarchive boost::archive::text_iarchive boost::archive::text_oarchive boost::archive::xml_iarchive boost::archive::xml_oarchive boost::bad_get boost::binder1st boost::binder2nd boost::char_separator boost::format boost::fusion boost::fusion::as_vector boost::fusion::at_c boost::fusion::make_vector boost::fusion::push_back boost::fusion::result_of::as_vector boost::fusion::result_of::push_back boost::fusion::vector boost::fusion::vector1 boost::fusion::vector2 boost::geometry boost::geometry::area boost::geometry::assign boost::geometry::convex_hull boost::geometry::correct boost::geometry::disjoint boost::geometry::equals boost::geometry::intersection boost::geometry::model::box boost::geometry::model::linestring boost::geometry::model::polygon boost::geometry::models::polygon boost::geometry::num_points boost::geometry::perimeter boost::geometry::return_centroid boost::geometry::return_envelope boost::geometry::simplify boost::geometry::sym_difference boost::geometry::traits boost::geometry::union_ boost::geometry::within boost::get boost::gil boost::gil::channel_traits boost::gil::const_iterator_type boost::gil::gray16_image_t boost::gil::gray16_view_t boost::gil::gray16c_view_t boost::gil::gray16s_image_t boost::gil::gray16s_view_t boost::gil::gray16sc_view_t boost::gil::gray32_image_t boost::gil::gray32_view_t boost::gil::gray32c_view_t boost::gil::gray32f_image_t boost::gil::gray32f_noscale_image_t boost::gil::gray32f_noscale_view_t boost::gil::gray32f_noscalec_view_t boost::gil::gray32s_image_t boost::gil::gray32s_view_t boost::gil::gray32sc_view_t boost::gil::gray64_image_t boost::gil::gray64_view_t boost::gil::gray64c_view_t boost::gil::gray64f_noscale_image_t boost::gil::gray64f_noscale_view_t boost::gil::gray64f_noscalec_pixel_t boost::gil::gray64f_noscalec_view_t boost::gil::gray64s_image_t boost::gil::gray64s_view_t boost::gil::gray64sc_view_t boost::gil::gray8_image_t boost::gil::gray8_view_t boost::gil::gray8c_view_t boost::gil::interleaved_view boost::gil::memory_based_2d_locator boost::gil::point2 boost::gil::subimage_view boost::gil::view boost::hash_combine boost::make_variant_over boost::math::binomial_coefficient boost::math::constants::pi boost::math::constants::root_two boost::math::cyl_bessel_j boost::math::erf_inv boost::math::erfc_inv boost::math::gamma_q_inv boost::math::tgamma_delta_ratio boost::math::tgamma_ratio boost::math::unchecked_factorial boost::mpl boost::mpl::and_ boost::mpl::at boost::mpl::bool_ boost::mpl::false_ boost::mpl::fold boost::mpl::for_each boost::mpl::if_ boost::mpl::int_ boost::mpl::negate boost::mpl::range_c boost::mpl::template boost::mpl::transform boost::mpl::true_ boost::mpl::vector boost::multi_index boost::multi_index::global_fun boost::multi_index::hashed_unique boost::multi_index::indexed_by boost::multi_index::member boost::multi_index::ordered_non_unique boost::multi_index::ordered_unique boost::multi_index::sequenced boost::multi_index::tag boost::multi_index_container boost::property_tree::ptree boost::property_tree::ptree::value_type boost::replace_all_copy boost::serialization boost::serialization::access boost::serialization::base_object boost::serialization::make_array boost::serialization::make_nvp boost::serialization::void_cast_register boost::static_visitor boost::str boost::test boost::test_tools boost::test_tools::predicate_result boost::unit_test boost::unwrap_ref boost::unwrap_reference boost::variant Where the distinction between the last two categories is a guess based on the expected amount of work required (which may turn out to be inaccurate). I propose to create separate tickets for items from the todo category and to consider this ticket completed when these are done.
          Hide
          pschella Pim Schellart added a comment -

          The purpose of this review is to decide if the criteria mentioned in the comments above are enough to close this ticket after its children are merged.

          Show
          pschella Pim Schellart added a comment - The purpose of this review is to decide if the criteria mentioned in the comments above are enough to close this ticket after its children are merged.
          Hide
          pschella Pim Schellart added a comment -

          Note that all children are either done or in review now.

          Show
          pschella Pim Schellart added a comment - Note that all children are either done or in review now.
          Hide
          swinbank John Swinbank added a comment -

          We can close this as soon as all the children are done – it doesn't need further review.

          Show
          swinbank John Swinbank added a comment - We can close this as soon as all the children are done – it doesn't need further review.
          Hide
          pschella Pim Schellart added a comment -

          All children Done so this is complete.

          Show
          pschella Pim Schellart added a comment - All children Done so this is complete.

            People

            • Assignee:
              pschella Pim Schellart
              Reporter:
              swinbank John Swinbank
              Reviewers:
              John Swinbank
              Watchers:
              John Swinbank, Pim Schellart
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development

                  Agile