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/RunExecutorcontinue to support Python 2.7 until end of 2019. - Support for running benchmarks as a different user with
sudois 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
cpuacctcgroup is not available, CPU-time measurements and limits are not supported. - Either container mode or the
freezercgroup 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
benchexecrequires 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
memUsageis automatically renamed tomemory. - A column named
memoryis 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.,
cputimeof 0s) are present. - The memory results of
benchexecare namedmemory, notmemUsage. - Memory results have the unit
Bexplicitly specified.
Furthermore, units are present in all attributes of the result XML files where they were still missing. - Result item
exitcodeis removed, onlyRunExecutor.execute_run()still returns it, but as an object instance instead of anint.
Usereturnvalueandexitsignalinstead.
- In case of aborted or failed runs, no dummy results (e.g.,
- Module
benchexec.test_tool_wrapperis removed, usebenchexec.test_tool_infoinstead. - BenchExec (both
benchexecandrunexec) 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.