Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support 23.0 #311

Merged
merged 10 commits into from
Oct 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
28 changes: 12 additions & 16 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
os: linux

# temporarily, so that we can test with OTP versions prior to 19.x
# without a dist: line, default in travis is xenial (Ubuntu 16.04)
dist: trusty
dist: xenial

language: erlang

Expand Down Expand Up @@ -33,7 +31,7 @@ jobs:
# See the warning printed by the script to understand why this test
# has a separate otp_release specification.
- env: TEST=".travis/travis_has_latest_otp_version"
otp_release: 23.0.2
otp_release: 23.1
stage: basic

# Check dialyzer
Expand All @@ -52,11 +50,6 @@ jobs:
- env: TEST="make -C doc test"
stage: basic

# Minimal support for R16B03-1
- env: TEST="make tests-real"
otp_release: R16B03-1
stage: test

# Test website
- env: TEST="make -C docs test"
stage: website
Expand All @@ -72,8 +65,9 @@ jobs:
env:

# FLAG is used by Codecov reporter (.travis/after_success)
- TEST=".travis/maybe_cover make tests" FLAG="tests"
- TEST=".travis/maybe_cover make tests-real" FLAG="tests_real"
- TEST=".travis/run make tests-1" FLAG="tests-1"
- TEST=".travis/run make tests-2" FLAG="tests-2"
- TEST=".travis/run make tests-real" FLAG="tests_real"

otp_release:

Expand All @@ -83,20 +77,22 @@ otp_release:
# README.md and the argument given to generate_version_hrl in
# rebar.config

- 22.3
- 23.0

# Last minor version of older OTP releases

- 22.3
- 21.3
- 20.3
- 19.3
- 18.3
- 17.5
# R16B03-1 is minimally supported (see matrix section)


# Travis build steps configuration

addons:
apt:
packages:
- moreutils

cache:
timeout: 5
directories:
Expand Down
3 changes: 2 additions & 1 deletion .travis/maybe_cover → .travis/run
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail

DIR=$(dirname $(readlink -f $0))
. $DIR/travis_enable_cover_if_latest
Expand All @@ -10,4 +11,4 @@ if [ "$ENABLE_COVER" = "true" ]; then
export CONCUERROR_COVER=$TOP/cover/data
fi

$@
$@ | ts
1 change: 1 addition & 0 deletions .travis/travis_enable_cover_if_latest
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ TOP=$(readlink -f $DIR/..)

REPO_LATEST=`$DIR/get_latest_travis $TOP/.travis.yml`

ENABLE_COVER=false
if [ "$REPO_LATEST" = "$TRAVIS_OTP_RELEASE" ]; then
if [ -z ${FLAG+x} ]; then
echo "FLAG not set, so no coverage generated"
Expand Down
2 changes: 1 addition & 1 deletion .travis/travis_has_latest_otp_version
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ DIR=$(dirname $(readlink -f $0))

curl -sO https://raw.githubusercontent.com/kerl/kerl/master/kerl
chmod a+x kerl
LATEST=`./kerl update releases | tr ' ' '\n' | tail -n1`
LATEST=`./kerl update releases | grep "^..\..$" | tail -n1`
rm ./kerl

set +x
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Added
- bash_completion (#308)
- log_all option (#320)
- support for OTP 23.0 (#311)

### Removed
- support for OTP 16, OTP 17, OTP 18, and OTP 19

### Changed
- handling of demonitors (#281)
Expand Down
14 changes: 11 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,17 @@ dialyzer: $(REBAR)
CONCUERROR?=$(abspath bin/$(NAME))

.PHONY: tests
tests: bin/$(NAME)
@$(RM) $@/thediff
@(cd $@; ./runtests.py)
tests: tests-1 tests-2

.PHONY: tests-1
tests-1: bin/$(NAME)
@$(RM) tests/thediff
@(cd tests; ./runtests.py suites/ba*/src/*)

.PHONY: tests-2
tests-2: bin/$(NAME)
@$(RM) tests/thediff
@(cd tests; ./runtests.py suites/b[^a]*/src/* suites/[^b]*/src/*)

## -j 1: ensure that the outputs of different suites are not interleaved
.PHONY: tests-real
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
[![Travis][travis badge]][travis]
[![Codecov][codecov badge]][codecov]
[![Erlang Versions][erlang versions badge]][travis]

# Concuerror

Concuerror is a stateless model checking tool for Erlang programs. It can be used to systematically test programs for concurrency errors, detect and report errors that only occur on few, specific schedulings or **verify** their absence.

[Visit the website][website] for documentation, examples, tutorials, publications, and many more!

## Supported OTP Releases

[![Erlang Versions][erlang versions badge]][travis]

## How to build

* Compile : `make`
Expand Down Expand Up @@ -54,5 +57,5 @@ Details can be found in the [LICENSE][license] file.

<!-- Badges -->
[codecov badge]: https://codecov.io/gh/parapluu/Concuerror/branch/master/graph/badge.svg
[erlang versions badge]: https://img.shields.io/badge/erlang-R16B03%20to%2022.3-blue.svg
[erlang versions badge]: https://img.shields.io/badge/erlang-20.3%20to%2023.0-blue.svg
[travis badge]: https://travis-ci.org/parapluu/Concuerror.svg?branch=master
10 changes: 2 additions & 8 deletions docs/404.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ title: "Page Not Found"
description: "Page not found. Your pixels are in another canvas."
---

Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below.
## 404 Error

<script type="text/javascript">
var GOOG_FIXURL_LANG = 'en';
var GOOG_FIXURL_SITE = '{{ site.url }}'
</script>
<script type="text/javascript"
src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js">
</script>
Sorry, but the page you were trying to view does not exist.
27 changes: 14 additions & 13 deletions docs/_posts/2020-10-10-tips.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ be used to reduce the search space is different ways.
### Depth bound

The depth bound (`-d, --depth_bound`) is a limit on how many
events<sup><a name="f1">[1](#f1t)</a></sup> there can be in a single
events[^1] there can be in a single
execution of the given test. Concuerror requires test executions to
have finite length, and the depth limit is a simple way to guarantee
that every execution has a limited number of events. However, **if an
Expand Down Expand Up @@ -83,13 +83,13 @@ The possible options for scheduling bounding are
specified), which in Concuerror does **not** correspond to the
technique found in other bibliography, but at a variant which we
have named "exploration tree bounding" in the same
publication<sup><a name="f2">[2](#f2t)</a></sup>. A benefit of this
publication[^2]. A benefit of this
technique is that it is compatible with any DPOR algorithm and leads
to fairly smooth scaling of the explored search space with the
increase of the bound.

* `bpor`, as described by \[16\] in the same publication<sup><a
name="f3">[3](#f3t)</a></sup>, which is based on limiting the number
* `bpor`, as described by \[16\] in the same publication[^3],
which is based on limiting the number
of times a process can be preempted. A practical weakness of this
technique is that when a process becomes blocked *any* other process
can be scheduled without consuming bounding budget, possibly leading
Expand Down Expand Up @@ -152,14 +152,15 @@ the [suggested channels](/contact)!
#### Footnotes
{:.no_toc}

<a name="f1t">[1](#f1)</a>: As events, Concuerror considers any kind
of Erlang built-in operation that can be potentially interfering with
operations in other processes, such as the delivery of a message, the
expiration of a timeout, or writing and reading values in an ETS
table. If you are interested in a snapshot of what kind of operations
in Erlang programs can interfere, read the paper ["The shared-memory
interferences of Erlang/OTP built-ins"](/publications).
[^1]: As events, Concuerror considers any kind of Erlang built-in
operation that can be potentially interfering with operations in
other processes, such as the delivery of a message, the expiration
of a timeout, or writing and reading values in an ETS table. If
you are interested in a snapshot of what kind of operations in
Erlang programs can interfere, read the paper ["The shared-memory
interferences of Erlang/OTP built-ins"](/publications).

<a name="f2t">[2](#f2)</a>: ["Effective Techniques for Stateless Model Checking"](/publications)
[^2]: ["Effective Techniques for Stateless Model
Checking"](/publications)

<a name="f3t">[3](#f3)</a>: Same as above.
[^3]: Same as above.
16 changes: 7 additions & 9 deletions docs/download.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,17 @@ The preferred way to start concuerror is via the `bin/concuerror` escript.

Concuerror is also available via [Hex.pm](https://hex.pm/packages/concuerror).

This means that you can include it in your project using any of the
This enables you to include it in your project using any of the
building tools that support Hex.pm dependencies.

### Supported OTP Releases

Concuerror's developers are always working with the latest otp/master branch
available on Github. Concuerror is also expected to work on all OTP releases
starting from and including **R17**[^1]. We use
[Travis](https://travis-ci.org/parapluu/Concuerror) to test:
See [Supported OTP
Releases](https://github.com/parapluu/Concuerror#supported-otp-releases).
We use [Travis](https://travis-ci.org/parapluu/Concuerror) to test:

* The *two last* minor versions of the 'current' major Erlang/OTP release
* The *last* minor version of older major releases
* The *last* minor version of recent older major releases

You can also find an older version of Concuerror [here](https://github.com/mariachris/Concuerror.git).

[^1]: R16 is also tested for minimal functionality.
You can also find older versions of Concuerror
[here](https://github.com/mariachris/Concuerror.git).
5 changes: 4 additions & 1 deletion rebar.config
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{minimum_otp_vsn, "20.0"}.

{erl_opts,
[ debug_info
, warn_export_vars
Expand All @@ -14,7 +16,7 @@
{escript_emu_args, "%%! +S1 -boot start_clean -noshell -pa . -pa ebin\n"}.

{pre_hooks,
[ {compile, "priv/generate_version_hrl 22 > src/concuerror_otp_version.hrl"}
[ {compile, "priv/generate_version_hrl 23 > src/concuerror_otp_version.hrl"}
, {edoc, "priv/generate_option_docfiles doc"}
]}.

Expand Down Expand Up @@ -62,6 +64,7 @@
, getopt
, kernel
, stdlib
, syntax_tools
, tools
]}
]}.
Expand Down
6 changes: 4 additions & 2 deletions rebar.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{"1.1.0",
{"1.2.0",
[{<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.1">>},0}]}.
[
{pkg_hash,[
{<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>}]}
{<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>}]},
{pkg_hash_ext,[
{<<"getopt">>, <<"53E1AB83B9CEB65C9672D3E7A35B8092E9BDC9B3EE80721471A161C10C59959C">>}]}
].
4 changes: 0 additions & 4 deletions src/concuerror.hrl
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
-include("concuerror_otp_version.hrl").

%%------------------------------------------------------------------------------
-ifdef(BEFORE_OTP_19).
-define(join(Strings, Sep), string:join(Strings, Sep)).
-else.
-define(join(Strings, Sep), lists:join(Sep, Strings)).
-endif.
%%------------------------------------------------------------------------------
-ifdef(SENSITIVE_DEBUG).
-define(display(A), erlang:display({A, ?MODULE, ?LINE})).
Expand Down
Loading