Note that these changes are infrequently maintained and may not tell the whole story.
- Removed the
examples
directory andc11_lahav.cat
; use the c4-corpora repository instead. act-fuzz
is nowc4f
;act-c
is nowc4f-c
.
- Delitmus aux output function maps no longer carry a
is_thread_body
key; instead, they carry an optionaltid
key (containing an integer thread ID) which is defined if and only if the thread is a thread body. Use this instead of parsing the thread ID from the function name.
- Delitmus aux output now carries an extra, optional
initial_value
key for every variable in thevar_map
. This follows the existinginit
in the litmus header, but also includes any initialised value for local variables. (Local variable initialisers are still not yet translated by the delitmusifier into assignments, but this may be added as an option later.)
- Renamed the OPAM package from
act
toc4f
, also renaming any public libraries fromact.X
toc4f.X
. (This does not change the name of the binaries yet; they are stillact_X
.)
- Added new
-state-output
flag to fuzzrun
andreplay
subcommands; this dumps a human-readable representation of the final fuzzer state to the named file. - Made the Litmus test parser/abstractor handle threads with zero parameters correctly.
- Removed backend support, because it is or will be subsumed by the tester project.
- Many more changes since Feb that I forgot to keep a changelog for.
- New command
act-c dump-stats
, which dumps some integer statistics about a Litmus test.
- New actions
program.label
(tentative title), which adds random labels, andflow.dead.goto
, which adds deadcode GOTOs to them. act-fuzz list-actions
now prints only the names and weights by default; pass-v
to get the original behaviour.- Added an example set of Memalloy outputs, mainly for use on systems (cough cough Raspberry Pi) where Memalloy can't run.
- New action
mem.fence
, which adds random memory fences.
get_a_backend
has been removed; useact-backend find
instead.
- New command
act-backend find
, which takes a style ID and zero or more machines, and returns the first viable backend with that style in the combination of given and default machines (in order of specification). This will eventually replace theget_a_backend
script.
- New experimental command
act-config probe
, which probes a machine (local or SSH) for compilers and backends, and emits anact.conf
fragment. (Note that this is not yet used bymake_test
; it needs a bit more work first.) - New
ppc
(PowerPC) architecture identifier. - Architecture identifiers have changed:
x64
is nowx86.64
, and the.att
prefix tox86
no longer has any meaning. You may need to update youract.conf
.
- Fuzzer action
store.make.int.single
is nowstore.make.int.normal
. - New fuzzer action
store.make.int.dead
, which behaves asstore.make.int.normal
, but only fires inside dead code blocks and does not respect dependency/known-value information.
obj_splitmus
has been removed: usec_litmus_indirect
instead.act-asm
and all of its traces in the other ACT subsystems and scripts have been removed per #171. If anyone requires these, please discuss a plan going forward with the ACT maintainers.
- New command
act-config dump
, which emits the current configuration in pretty printed form to stdout. - New fuzzer config stanzas:
set param ID to INT
for setting integer fuzzer parameters;set flag ID to BOOL
for setting Boolean fuzzer flags, andset flag ID to ratio WINS:LOSSES
for stochastically setting fuzzer flags. - New fuzzer parameters:
cap.threads
for capping the number of threads the fuzzer is allowed to generate towards, andcap.actions
for capping the number of actions the fuzzer performs.
- New tool
act-compile
, which inherits the compiler interface fromact-c
. act-c compile
is nowact-compiler run
.act-c list-compilers
is nowact-compiler list
.- New command
act-compiler info
, for machine-readably querying ACT about properties of a single compiler.
- Any command that previously took
-simulator
as an argument now takes-backend
. - Backend commands that take
-c
and-args
now take-carch
, which behaves as-c
but supplies a hint as to the underlying architecture. This makes it possible to run Litmus7 in C mode.
- New command,
act-machine xrun
, whose sole purpose is to copy a binary to a remote machine and run it.
act-config list-compilers
is nowact-c list-compilers
.- (And many other changes; I haven't been diligent in maintaining the changelog!)
act configure
is nowact-config
.- Compiler testing now only happens if one passes
-test-compilers
toact-config list-compilers
.
- State observation comparing is now available at
act-state compare
. It does NOT perform normalisation of the two state sets --- this must be done externally (a tool for doing this using delitmus will appear eventually). - State observation comparison results come as JSON by default; pass
-human-readable
for pretty-printed equivalent.
- Amongst other things,
act c fuzz
is nowact-fuzz run
(ie a new program). - Action weight listing is now
act-fuzz list-actions
.
act tool sim
is nowact backend run
, in anticipation of a cross-board rename.- New command
act backend parse
, which parses the output of a configured simulator and outputs an observation record as a JSON file.
- New command
act c compile
, for compiling single files without testing or litmusifying them.
- The structure of
act.conf
s has changed drastically. The key points are:- Compilers, simulators, and other such potentially-remote tools are now nested inside machines, and referred to by the concatenation of the machine ID and element ID.
- Simulator configuration no longer takes a
herd
orlitmus
stanza, but instead asim ID
stanza. Astyle ID
(whereID
isherd
orlitmus
inside the stanza tells ACT how to invoke and interpret the simulator. emits
is nowarch
.- There is a
default
stanza (for specifying which architecture, compiler, machine, etc. to try by default), but it isn't yet usable. Hooking this up to the resolution systems is future work.
- Bugs and oddities caused by the above changes are currently being ironed out.
act asm litmusify
no longer supports piping through a simulator. Running a simulator on a single litmus test using its simulator ID will become a separate feature later on.- File type overrides are now of the form
-file-type X
, whereX
isasm
,asm-litmus
,c
, orc-litmus
. (Part of this change predates this change report.)
- Almost all
act
modules are now publicly exposed asact.foo
(with name changed fromFoo
toAct_foo
.)
- New standard flag:
colour
, which takesalways
,never
, orauto
(the default), and colourises output accordingly. Currently, not a lot ofact
supports colourisation, but expect this to change. - New(ish) command:
act configure list-fuzzer-actions
, which describes the fuzzer actionsact
understands; for each, it outputs a readme and the current configured weight. This should make it easier to configure fuzzer weights.
- The
fuzz_many
script inscripts/
now takes arguments in the orderfuzz_many COUNT FILE*
, with multipleFILE
s supported. When given multiple files, it mutates eachCOUNT
times, giving each a distinct filename. It now also symbolically links_fuzz_latest
to the latest fuzzer directory, in a similar manner to Memalloy.
- Split
-cvars
option into two new options:-c-globals
and-c-locals
. The difference is that-c-globals
are used to buildlocations
stanzas in any emitted Litmus tests, whereas-c-locals
are only used to inform the sanitiser which symbols are variables.
- Feature: Ongoing work on building a C11 litmus test mutator (or
'fuzzer'). See
act c fuzz
. Currently in a heavily experimental state. - Change:
unix_test_scripts
is nowscripts
, and is starting to contain things that aren't test scripts per se.
- Bugfix:
act c delitmus
now properly handles removing dereferences from global variables (or, at least, does so more properly than before). (#64)
- Feature: started bundling a series of shell scripts for
semi-automated testing of
act
. These complement the automated tests, and are intended for checking howact
interacts with a full Unix environment (including working C compilers andact.conf
s). Currently there is only one script, which is a work-in-progress, but this will likely change. - Feature:
act c explain
now takes an optional flag-dump-cvars
, which causes it to emit the list of C variables that it found in the input. This is useful for passing to-cvars
later on. - Bugfix:
act c delitmus
now correctly infers global variable types from the thread functions' parameter lists. This means that global variables with non-atomicint
s now get the right type in the delitmusification. (#63)
- Change: in many locations where
act
expects a C-style identifier, such as Litmus identifiers and test names,act
now automatically does validation to make sure that the identifier is indeed a proper C identifier string. This may cause intermittent breakages.
- Feature: litmusify now automatically finds the set of C variables
when run on a C/litmus file (not plain C) and
-cvars
isn't provided. This will expand to otheract
subcommands in due course. - Note: to see the cvars set chosen, pass
-verbose
to litmusify.
- Bugfix: delitmusifier no longer erroneously reverses its arguments.
- Litmusify:
-litmus
now executes litmus on the remote machine. - Added new
act tool
command, which will eventually allow free-form running of the various tools act wraps. Currently it supports herd (act tool herd
), but doesn't do anything special. - Litmusify: added
-exists
flag to feed in a Litmus postcondition. (This currently has to target the sanitised Litmus variables directly; no redirection following is done yet.) - Split
act regress
into several subcommands, and include adelitmus
regression test set. - New
act c delitmus
, which tries to convert a C/Litmus test into compileable C11. There is also anact c explain
, but at this stage it's fairly pointless. - New
act configure list-predicates
, which describes the languages accepted by the filtering predicate commands. - Moved
act specs
toact configure list-compilers
. - Added initial support for the
litmus7
tool. This currently only stretches as far as configuration stanzas and piping through thelitmusify
tool. - Added experimental C language support. For now, use
explain-c
to test. - Replaced the S-expression
compiler.spec
format with a more human-friendly, act-specific one. Seebin/act.conf
for an example of the syntax, which is similar to OpenBSD's utility config format. - Renamed
compiler.spec
toact.conf
-- this should help users spot the change in format, as well as being more indicative of what the file is. - Changelog starts here.
This changelog started on 2018-12-19, and doesn't contain any changes made prior to that date.