build in C++17 mode by default

* configure.ac: Activate C++17, and replace --enable-c++17 by
--enable-c++20.
* NEWS: Mention the news.
* .gitlab-ci.yml: Use C++20 for the former C++17 builds.
* HACKING, README, doc/org/compile.org, doc/org/concepts.org,
doc/org/index.org, doc/org/install.org, doc/org/tut.org,
doc/org/upgrade2.org, spot/misc/escape.hh: Adjust mentions
of C++14.
This commit is contained in:
Alexandre Duret-Lutz 2020-07-16 12:12:21 +02:00
parent a770727ee8
commit 4f23097619
12 changed files with 79 additions and 62 deletions

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#+TITLE: Compiling against Spot
#+DESCRIPTION: How to compile C++14 programs using Spot
#+DESCRIPTION: How to compile C++17 programs using Spot
#+INCLUDE: setup.org
#+HTML_LINK_UP: tut.html
#+PROPERTY: header-args:C+++ :results verbatim :exports both
@ -31,19 +31,19 @@ greetings and the Spot version:
#+RESULTS: hello-word
: Hello world!
: This is Spot 2.7.2.dev.
: This is Spot 2.9.1.dev.
To successfully compile this example program, we need a C++ compiler,
obvisously. On this page, we are going to assume that you use =g++=
(version 4.8 or later), but other compilers like =clang++= share the
(version 7 or later), but other compilers like =clang++= share the
same user interface. To successfully build the =hello= program, we
might need to tell the compiler several things:
1. The language that we use is C++14 (or optionally C++17). This
usually requires passing an option like =-std=c++14=. Note that
with version 6 of =g++= the default is now to compile C++14, so
this option is not necessary.
1. The language that we use is C++17 (or optionally C++20). This
usually requires passing an option like =-std=c++17=. Note that
with version 11 of =g++= the default will be to compile C++17, so
this option will not be necessary.
2. The C++ preprocessor should be able to find =spot/misc/version.hh=.
This might require appending another directory to the include
search path with =-I location=.

View file

@ -1025,7 +1025,7 @@ layers.
- =libbddx= is a customized version of [[https://sourceforge.net/projects/buddy/][the BuDDy library]], for
manipulating [[#bdd][BDDs]].
- =libspot= is the main library, containing a C++14 implementation of all the
- =libspot= is the main library, containing a C++17 implementation of all the
data structures and algorithms. This depends on =libddx=.
- =libspotgen= is an auxiliary library that contains functions to
generate families of automata, useful for benchmarking and testing
@ -1037,7 +1037,7 @@ layers.
SpinS or a patched version of DiVinE, but you have to install
those third-party tools first. See [[https://gitlab.lrde.epita.fr/spot/spot/blob/next/tests/ltsmin/README][=tests/ltsmin/README=]]
for details.
- In addition to the C++14 API, we also provide Python bindings for
- In addition to the C++17 API, we also provide Python bindings for
=libspotgen=, =libspotltsmin=, =libbddx=, and most of =libspot=.
These are available by importing =spot.gen=, =spot.ltsmin=, =bdd=,
and =spot=. Those Python bindings also includes some additional

View file

@ -1,11 +1,11 @@
# -*- coding: utf-8 -*-
#+TITLE: Spot: a platform for LTL and ω-automata manipulation
#+DESCRIPTION: Spot is a library and tool suite for LTL and ω-automata
#+KEYWORDS: Spot,C++14,library,platform,framework,tool-suite,LTL,PSL,omega-automata
#+KEYWORDS: Spot,C++17,library,platform,framework,tool-suite,LTL,PSL,omega-automata
#+INCLUDE: setup.org
#+HTML_HEAD_EXTRA: <style>#org-div-home-and-up { display: none; }</style>
Spot is a C++14 library for LTL, ω-automata manipulation and model
Spot is a C++17 library for LTL, ω-automata manipulation and model
checking. It has the following notable features:
- Support for [[file:concepts.org::#ltl][LTL]] (several syntaxes supported) and

View file

@ -19,8 +19,8 @@ successful development build]].
** Requirements
Spot requires a C++14-compliant compiler. =g++= 5.0 or later, as well
as =clang++= 3.5 or later should work.
Spot requires a C++17-compliant compiler. =g++= 7.0 or later, as well
as =clang++= 5.0 or later should work.
Spot expects a complete installation of Python (version 3.3 or later).
Especially, Python's headers files should be installed (the package to
@ -91,7 +91,7 @@ our [[https://www.lrde.epita.fr/repo/debian.gpg][GPG key]]. Its fingerprint is
9E74 44F2 A84A=, if you want to verify it.
The package =spot= contains the [[file:tools.org][command-line tools]]. =libspot-dev=
contains the header files if you plan to use Spot in a C++14
contains the header files if you plan to use Spot in a C++17
program. =spot-doc= contains some html (including these pages) and pdf
documentation. Finally =python3-spot= contains some Python bindings
(this package also installs some ipython notebooks that you can use as

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#+TITLE: Code Examples
#+DESCRIPTION: Directory of code examples for using Spot in C++14, Python, and shell.
#+DESCRIPTION: Directory of code examples for using Spot in C++17, Python, and shell.
#+INCLUDE: setup.org
#+HTML_LINK_UP: index.html

View file

@ -17,10 +17,10 @@ experience of updating a couple of projects that are using Spot.
* Overview of the changes
Let's begin by just trying to summarize what has changed between
Spot 1.2.6 and Spot 2.0, just to get an idea of what will need to be
Spot 1.2.6 and Spot 2.x, just to get an idea of what will need to be
updated.
1. [[#cpp14][Spot now compiles using the C++14 standard]]. Compliant compiler
1. [[#cpp17][Spot now compiles using the C++17 standard]]. Compliant compilers
are sufficiently widespread now that this should not be an issue.
2. The layout of the source-tree and the layout of the installed
@ -83,22 +83,20 @@ experience of updating a couple of projects that are using Spot.
numbered. Many algorithms have been rewritten on top of this
=twa_graph= class, and this simplified them a lot.
* Upgrading to C++14
* Upgrading to C++17
:PROPERTIES:
:CUSTOM_ID: cpp14
:CUSTOM_ID: cpp17
:END:
Because Spot now relies on C++14 features, programs that use Spot
Because Spot now relies on C++17 features, programs that use Spot
should at least be compiled using this version (or a later one) of
the language.
Before the =g++= 6.0, the default C++ standard used was C++98, and
enabling C++14 is usually done by passing the option =-std=c++14=.
In =g++= 6.0 the default C++ standard used is C++14, so passing
=-std=c++14= is not necessary.
This is usually done by passing the option =-std=c++17= to =g++= or
=clang++=.
Upgrading from C++98, C++03 or C++11 to C++14 should be relatively
smooth as the language is /mostly/ backward compatible.
Upgrading from C++98, C++03, C++11, or C++14 to C++17 should be
relatively smooth as the language is /mostly/ backward compatible.
* Upgrading =#include= directives
:PROPERTIES: