Skip to content

Commit 96a586f

Browse files
authored
Prepare release of ReBench 1.3.0 (#284)
2 parents 14e4c83 + 0ecbbcb commit 96a586f

File tree

4 files changed

+117
-15
lines changed

4 files changed

+117
-15
lines changed

CHANGELOG.md

+109-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,105 @@
22

33
## [Unreleased]
44

5+
## [1.3.0] Env Vars part of RunId, and Support for Machine-Specific Settings - 2025-02-03
6+
7+
This release has three major changes that will affect how ReBench interprets configurations,
8+
and a change for `denoise` that requires an update of the `sudoers` file.
9+
10+
### 1. "Run" identity is now based on all details, e.g. also env vars (#271)
11+
12+
This change can affect the number of different runs ReBench identifies.
13+
Until now, the identity of a "run" was based on the command line generated from the
14+
configuration. However, this meant, we could not distinguish between runs
15+
with for instance different environment variables.
16+
From now on, the identity of runs is based on all details of the configuration,
17+
which may mean that configuration files may result in more distinct runs
18+
than they did previously.
19+
20+
### 2. Build commands are combined and run as a single shell script (#269)
21+
22+
The `build:` key takes a list of commands, which are now combined into a single
23+
shell script. Previously, each command was run separately.
24+
Since we avoid executing the same command multiple times,
25+
treating commands separately led to confusing results and was not very useful.
26+
By combining the commands into a single script, identifying redundant script
27+
execution leads to more predictable results.
28+
29+
### 3. Support for machine-specific settings (#272)
30+
31+
A new lowest-priority configuration level is introduced, which is meant to define
32+
machine-specific settings. This can be useful, for instance for settings like this:
33+
34+
```yaml
35+
machines:
36+
smaller-machine:
37+
cores: [1, 2]
38+
larger-machine:
39+
cores: [1, 2, 4, 8]
40+
```
41+
42+
These settings are combined into a configuration based on the usual rules.
43+
So, if a benchmark suite or a benchmark give specific values for `cores:`, these
44+
have higher priority. However, one would likely use it, avoiding
45+
benchmark-specific values.
46+
47+
When executing ReBench on the corresponding machine, these settings can be
48+
selected with the `-m` option. Thus, the larger machine configuration is used
49+
when running:
50+
51+
```bash
52+
rebench -m larger-machine rebench.conf
53+
```
54+
55+
### 4. `rebench` uses `denoise.py` directly as script (#281)
56+
57+
Previously, we used the `rebench-denoise` script that is automatically created
58+
during the setup process. However, this required a setup where ReBench was
59+
installed so that the root user had access to it with a proper `PYTHONPATH`.
60+
To avoid issues with setup, avoid having to pass `PYTHONPATH` through `sudo`,
61+
and to make the use of denoise more robust, we changed `denoise.py` so that it
62+
can be used directly as a script by ReBench.
63+
64+
In practice, the means, it's likely that the `sudoers` file will need to be
65+
updated to point to the `denoise.py` script directly. ReBench will output the
66+
path to the script when it is not able to use it directly.
67+
68+
69+
### Other Minor Changes
70+
71+
#### Features
72+
- add support for ReBenchDB API Version 2 (#236)
73+
- expand `~` in paths, right before invocation (#240, #283)
74+
- add summary for columns where all values are the same (#256)
75+
- show `env` in debug output (#280)
76+
77+
#### Changes
78+
- make output for currently running benchmark more compact (#237)
79+
- invoke denoise with absolute path to avoid need for having it on a secure_path (#238, #273)
80+
- rename the machines variable/filters to a tags variable/filter (#264)
81+
- support Python 3.13 as latest version, drop support for Python 3.8 (#268)
82+
- reduce number of git invocations to get source information (#275)
83+
- distinguish `rebench` return codes for different errors (#282)
84+
85+
#### Bug Fixes
86+
- added missing machine column heading for summary table (#246)
87+
- behave more gracefully on bare-bone setup, e.g. without git (#245)
88+
- raise error in `TimeAdapter` to match other adapters (#254)
89+
- make profiling with `perf` more robust (#255)
90+
- make denoise more robust to absent tools and running as root with a user-level installation (#260)
91+
- fix handling of ctrl-c interrupts (#262)
92+
- avoid unnecessary warning about data reporting, when no data is to be reported (#277)
93+
94+
#### Development
95+
- use black formatting (#267)
96+
- use mypy type checking and add some annotations (#270)
97+
- use `pip install —editable` in CI to avoid incorrect coverage reporting (#279)
98+
- add testing on Rocky Linux with integration test (#282)
99+
100+
Thanks to @antonzhukovin, @vext01, and @martinmcclure for their contributions!
101+
102+
**Full Changelog**: https://github.com/smarr/ReBench/compare/v1.2.0...v1.3.0
103+
5104
## [1.2.0] Custom Gauge Adapters - 2023-08-06
6105

7106
The main feature of this release is the new support for custom
@@ -20,7 +119,7 @@ Other new features:
20119
- make the current invocation accessible in the command as `%(invocation)s` (#230)
21120

22121
Other changes:
23-
- fix bug where `'None'` instead of `null` was reported to ReBenchDB (#232)
122+
- make sure `null` is not reported as `'None'` to ReBenchDB (#232)
24123
- fix handling of environment variables when sudo is used (#210)
25124
- try `gtime` from MacPorts as alternative `time` command on macOS (#212)
26125
- update py-cpuinfo to work on macOS with ARM-base CPUs (#212)
@@ -29,6 +128,8 @@ Other changes:
29128

30129
Thanks to @naomiGrew for the contributions!
31130

131+
**Full Changelog**: https://github.com/smarr/ReBench/compare/v1.1.0...v1.2.0
132+
32133
## [1.1.0] Denoise - 2023-02-21
33134

34135
This release focuses on reducing the noise from the system (#143, #144).
@@ -68,9 +169,9 @@ Other notable improvements:
68169
- make gauge adapter names in configurations case-insensitive (#202)
69170
- improve documentation (#197, #198)
70171
- use PyTest for unit tests (#192)
71-
172+
72173
**Full Changelog**: https://github.com/smarr/ReBench/compare/v1.0.1...v1.1.0
73-
174+
74175

75176
## [1.0.1] - 2020-06-23
76177

@@ -83,7 +184,7 @@ This is a bug fix release.
83184

84185
This is the first official release of ReBench as a "feature-complete" product.
85186
Feature-complete here means, it is a tried and tested tool for benchmark
86-
execution. It is highly
187+
execution. It is highly
87188
[configurable](https://rebench.readthedocs.io/en/latest/config/),
88189
[documented](https://rebench.readthedocs.io/en/latest/),
89190
and [successfully used](https://github.com/smarr/ReBench#use-in-academia).
@@ -136,7 +237,7 @@ Thank you!
136237
- added testing of Python 3.7 (#121) and ruamel.yaml (#123)
137238
- ensure config is YAML 1.2 compliant (#123)
138239
- added support for ReBenchDB (#129, #130)
139-
240+
140241
- fixed issues with error reporting (#128)
141242
- fixed handling of input size configuration (#117)
142243

@@ -145,7 +246,7 @@ Thank you!
145246
- added `--setup-only` option, to run one benchmark for each setup (#110, #115)
146247
- added `ignore_timeout` setting to accept known timeouts without error (#118)
147248
- added `retries_after_failure` setting (#107, #108)
148-
249+
149250
- fixed data loading, which ignored warmup setting (#111, #116)
150251
- fixed how settings are inherited for follow documentation (#112, #113)
151252
- fixed message for consecutive failures (#109)
@@ -219,7 +320,8 @@ Thank you!
219320
- [0.6.0] - 2014-05-19
220321
- [0.5.0] - 2014-03-25
221322

222-
[Unreleased]: https://github.com/smarr/ReBench/compare/v1.2.0...HEAD
323+
[Unreleased]: https://github.com/smarr/ReBench/compare/v1.3.0...HEAD
324+
[1.3.0]: https://github.com/smarr/ReBench/compare/v1.2.0...v1.3.0
223325
[1.2.0]: https://github.com/smarr/ReBench/compare/v1.1.0...v1.2.0
224326
[1.1.0]: https://github.com/smarr/ReBench/compare/v1.0.1...v1.1.0
225327
[1.0.1]: https://github.com/smarr/ReBench/compare/v1.0.0...v1.0.1

docs/config.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -580,14 +580,14 @@ A list of commands/strings to be executed by the system's shell.
580580
They are intended to set up the system for benchmarking,
581581
typically to build binaries, compiled archives, etc.
582582

583-
Each command is executed once before any benchmark that depends on it
584-
is executed. If the `location` of the suite is set, it is used as
583+
The list of command is combined into a single shell script, which
584+
is executed once before any benchmark that depends on it
585+
runs. If the `location` of the suite is set, it is used as
585586
working directory. Otherwise, it is the current working directory of ReBench.
586587

587-
`build:` is a list of commands to allow multiple suites and executors to depend on the
588-
same build command without executing it multiple times.
589-
For this purpose, build commands are considered the same when they have the
590-
same command and location (based on simple string comparisons).
588+
When multiple suites and executors depend on lists of commands,
589+
where the combined script is identical, and to be executed in the same location,
590+
the script is executed only once.
591591

592592
Commands are executed with an environment managed by ReBench.
593593
The environment starts empty, but can be added to using the [`env`](#env) directive.

docs/release.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
This list is supposed to make sure we do not forget any important steps during
44
release.
55

6-
1. Check and update issue tracker for issues associated with current milestone
6+
1. Check and update issue tracker for issues that should be included in the release.
77

88
2. Make sure all desired changes are merged with `master`.
99

rebench/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.3.0.dev2"
1+
__version__ = "1.3.0"

0 commit comments

Comments
 (0)