From 5dd20b38dd0a8dde10eaf39dbce6e3797ec89acc Mon Sep 17 00:00:00 2001 From: Francesco Biscani Date: Fri, 15 Jan 2021 23:51:03 +0100 Subject: [PATCH] Various doc updates. --- CMakeLists.txt | 4 ++++ README.md | 4 ++-- doc/install.rst | 26 ++++++---------------- include/obake/detail/xoroshiro128_plus.hpp | 7 ++---- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f18be59ee..32e7df2b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,6 +294,10 @@ target_compile_features(obake PUBLIC cxx_std_20) # Ensure vanilla C++ is being used. set_property(TARGET obake PROPERTY CXX_EXTENSIONS NO) if(YACMA_COMPILER_IS_MSVC) + # NOTE: older abseil versions have a problem on MSVC + # when using C++20: + # https://github.com/abseil/abseil-cpp/issues/649 + # Hopefully we can eventually remove this. target_compile_definitions(obake PUBLIC -D_HAS_DEPRECATED_RESULT_OF=1) endif() diff --git a/README.md b/README.md index 65b8dcf67..5b293943b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![language](https://img.shields.io/badge/language-C%2B%2B17-red.svg?style=for-the-badge) +![language](https://img.shields.io/badge/language-C%2B%2B20-green.svg?style=for-the-badge) [![Linux Build Status](https://img.shields.io/circleci/project/github/bluescarni/obake/master.svg?style=for-the-badge)](https://circleci.com/gh/bluescarni/obake) [![Windows Build Status](https://img.shields.io/appveyor/ci/bluescarni/obake/master.svg?logo=appveyor&style=for-the-badge)](https://ci.appveyor.com/project/bluescarni/obake) [![OSX Build Status](https://img.shields.io/travis/bluescarni/obake/master.svg?logo=travis&style=for-the-badge)](https://travis-ci.org/bluescarni/obake) @@ -13,7 +13,7 @@ > Literally, the terms mean a thing that changes, referring to a state of transformation > or shapeshifting. -obake is a C++17 library for the symbolic manipulation of sparse polynomials +obake is a C++20 library for the symbolic manipulation of sparse polynomials and other closely-related mathematical objects (e.g., truncated power series, Poisson series, etc.). obake is the successor of the [piranha](https://github.com/bluescarni/piranha) project. diff --git a/doc/install.rst b/doc/install.rst index 179a9c4fb..617832b2d 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -25,23 +25,22 @@ obake also depends on other libraries for optional features: Installation from source ------------------------ -obake is written in `C++17 `_, +obake is written in `C++20 `_, and thus it requires a fairly recent compiler with robust support for modern C++ idioms. The following compilers are regularly tested in obake's continuous integration setup: -* GCC 7 and 8 on Linux (Ubuntu bionic and cosmic), -* Clang 6 and 7 on Linux (Ubuntu bionic and cosmic), +* GCC 9 on Linux (Ubuntu Focal), * Visual Studio 2019 on Windows, -* Clang + Visual Studio 2017 on Windows +* Clang 11 + Visual Studio 2017 on Windows (via the ``clang-cl`` driver), -* Clang 9 on OSX. +* Clang 11 on OSX. See also the :ref:`compiler and platform specific notes `. In order to install obake from source, `CMake `_ is -required (at least version 3.8). After downloading and unpacking obake's +required (at least version 3.12). After downloading and unpacking obake's source code, go to obake's source tree, create a ``build`` directory and ``cd`` into it. E.g., on a Unix-like system: @@ -117,7 +116,7 @@ If enabled, the test suite can be executed with the command: Troubleshooting ^^^^^^^^^^^^^^^ -By far, the most common problem when compiling obake is the detection +The most common problem when compiling obake is the detection of the dependencies. On Linux systems, generally speaking, the best way of installing the @@ -156,20 +155,9 @@ Visual Studio: with the ``NOMINMAX`` and ``WIN32_LEAN_AND_MEAN`` definitions, and, if supported, with the ``/permissive-`` compiler flag. -GCC: - -* Due to a compiler bug, when using GCC 7 obake's customisation points - do not have any ``noexcept`` specifier. - -Clang: - -* Due to a compiler bug, Clang 8.0.0 may fail to compile obake's - test suite with debugging information. The issue appears to have been - rectified in Clang 8.0.1. - OSX: -* On OSX, only the most recent versions of Xcode (i.e., Xcode 9 or later) +* On OSX, only the most recent versions of Xcode are capable of compiling obake. As an alternative to Xcode, one can install a more modern compiler toolchain using package managers such as `Conda `_ or diff --git a/include/obake/detail/xoroshiro128_plus.hpp b/include/obake/detail/xoroshiro128_plus.hpp index c95bd6a6d..faa81edae 100644 --- a/include/obake/detail/xoroshiro128_plus.hpp +++ b/include/obake/detail/xoroshiro128_plus.hpp @@ -82,11 +82,8 @@ struct xoroshiro128_plus { } // Cast back to the original type. - // NOTE: in case Int is signed, this operation is - // implementation-defined up to C++20, and from C++20 - // this follows the rules of two's complement arithmetic. - // In practice, all implementations follow two's complement - // even before C++20. + // NOTE: since C++20 this follows the rules of + // two's complement arithmetic. return static_cast(u_retval); }