Release 2.0
This release does not add new features compared to BenchExec 1.22, but removes several deprecated features and brings several other backwards-incompatible changes to make BenchExec more consistent and user-friendly:
- Support for Python 3.2 and 3.3 is removed, the minimal Python version is now 3.4.
Additionally,runexec
/RunExecutor
continue to support Python 2.7 until end of 2019. - Support for running benchmarks as a different user with
sudo
is removed (parameters--user
/--users
).
Use container mode as better method for isolating runs. - Container mode is enabled by default.
It can be disabled with--no-container
, but this decreases reliability of benchmarking. - If the
cpuacct
cgroup is not available, CPU-time measurements and limits are not supported. - Either container mode or the
freezer
cgroup are required to ensure protection against fork bombs. - Niceness of benchmarked process is not changed, previously it was increased by 5.
- Changes to input of
benchexec
:- The memory limit given to
benchexec
requires an explicitly specified unit. - Support for
<test>
tags,<sourcefiles>
tags, and variables named${sourcefile_*}
removed from benchmark definitions.
Use<rundefinition>
,<tasks>
, and${inputfile_*}
instead. - Variables named
${taskdef_*}
are defined only if task-definition files are used, and variables named${inputfile_*}
only otherwise.
- The memory limit given to
- Changes to
table-generator
:- A column named
memUsage
is automatically renamed tomemory
. - A column named
memory
is automatically converted to Megabytes.
Both conversions are only applied if no<column>
tags are used.
- A column named
- Changes to run-result data:
- In case of aborted or failed runs, no dummy results (e.g.,
cputime
of 0s) are present. - The memory results of
benchexec
are namedmemory
, notmemUsage
. - Memory results have the unit
B
explicitly specified.
Furthermore, units are present in all attributes of the result XML files where they were still missing. - Result item
exitcode
is removed, onlyRunExecutor.execute_run()
still returns it, but as an object instance instead of anint
.
Usereturnvalue
andexitsignal
instead.
- In case of aborted or failed runs, no dummy results (e.g.,
- Module
benchexec.test_tool_wrapper
is removed, usebenchexec.test_tool_info
instead. - BenchExec (both
benchexec
andrunexec
) terminates itself cleanly after aborting all runs if it receives one of the signalsSIGTERM
,SIGINT
(Ctrl+C), orSIGQUIT
.
Additionally, this release adds a fix for the container that is used since BenchExec 1.20 for the tool-info module. In this container, the environment variable HOME
did not point to /home/benchexec
as expected but to the user's real home directory. This broke tools like Ultimate if the /home
was configured to be hidden or read-only.
Furthermore, we declare the following features deprecated and plan on removing them for BenchExec 3.0, which is expected to be released in January 2020:
- Support for Python 2.7 and 3.4 (cf. #438)
- Support for checking correctness of run results and computing scores if task-definition files are not used (cf. #439)
Please respond in the respective issue if one of these deprecations is a problem for you.