Note that these changes are infrequently maintained and may not tell the whole story.
- Removed the
examplesdirectory andc11_lahav.cat; use the c4-corpora repository instead. act-fuzzis nowc4f;act-cis nowc4f-c.
- Delitmus aux output function maps no longer carry a
is_thread_bodykey; instead, they carry an optionaltidkey (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_valuekey for every variable in thevar_map. This follows the existinginitin 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
acttoc4f, also renaming any public libraries fromact.Xtoc4f.X. (This does not change the name of the binaries yet; they are stillact_X.)
- Added new
-state-outputflag to fuzzrunandreplaysubcommands; 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-actionsnow prints only the names and weights by default; pass-vto 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_backendhas been removed; useact-backend findinstead.
- 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_backendscript.
- New experimental command
act-config probe, which probes a machine (local or SSH) for compilers and backends, and emits anact.conffragment. (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:
x64is nowx86.64, and the.attprefix tox86no longer has any meaning. You may need to update youract.conf.
- Fuzzer action
store.make.int.singleis 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_splitmushas been removed: usec_litmus_indirectinstead.act-asmand 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 INTfor setting integer fuzzer parameters;set flag ID to BOOLfor setting Boolean fuzzer flags, andset flag ID to ratio WINS:LOSSESfor stochastically setting fuzzer flags. - New fuzzer parameters:
cap.threadsfor capping the number of threads the fuzzer is allowed to generate towards, andcap.actionsfor capping the number of actions the fuzzer performs.
- New tool
act-compile, which inherits the compiler interface fromact-c. act-c compileis nowact-compiler run.act-c list-compilersis nowact-compiler list.- New command
act-compiler info, for machine-readably querying ACT about properties of a single compiler.
- Any command that previously took
-simulatoras an argument now takes-backend. - Backend commands that take
-cand-argsnow take-carch, which behaves as-cbut 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-compilersis nowact-c list-compilers.- (And many other changes; I haven't been diligent in maintaining the changelog!)
act configureis nowact-config.- Compiler testing now only happens if one passes
-test-compilerstoact-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-readablefor pretty-printed equivalent.
- Amongst other things,
act c fuzzis nowact-fuzz run(ie a new program). - Action weight listing is now
act-fuzz list-actions.
act tool simis 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.confs 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
herdorlitmusstanza, but instead asim IDstanza. Astyle ID(whereIDisherdorlitmusinside the stanza tells ACT how to invoke and interpret the simulator. emitsis nowarch.- There is a
defaultstanza (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 litmusifyno 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, whereXisasm,asm-litmus,c, orc-litmus. (Part of this change predates this change report.)
- Almost all
actmodules are now publicly exposed asact.foo(with name changed fromFootoAct_foo.)
- New standard flag:
colour, which takesalways,never, orauto(the default), and colourises output accordingly. Currently, not a lot ofactsupports colourisation, but expect this to change. - New(ish) command:
act configure list-fuzzer-actions, which describes the fuzzer actionsactunderstands; for each, it outputs a readme and the current configured weight. This should make it easier to configure fuzzer weights.
- The
fuzz_manyscript inscripts/now takes arguments in the orderfuzz_many COUNT FILE*, with multipleFILEs supported. When given multiple files, it mutates eachCOUNTtimes, giving each a distinct filename. It now also symbolically links_fuzz_latestto the latest fuzzer directory, in a similar manner to Memalloy.
- Split
-cvarsoption into two new options:-c-globalsand-c-locals. The difference is that-c-globalsare used to buildlocationsstanzas in any emitted Litmus tests, whereas-c-localsare 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_scriptsis nowscripts, and is starting to contain things that aren't test scripts per se.
- Bugfix:
act c delitmusnow 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 howactinteracts with a full Unix environment (including working C compilers andact.confs). Currently there is only one script, which is a work-in-progress, but this will likely change. - Feature:
act c explainnow 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-cvarslater on. - Bugfix:
act c delitmusnow correctly infers global variable types from the thread functions' parameter lists. This means that global variables with non-atomicints now get the right type in the delitmusification. (#63)
- Change: in many locations where
actexpects a C-style identifier, such as Litmus identifiers and test names,actnow 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
-cvarsisn't provided. This will expand to otheractsubcommands in due course. - Note: to see the cvars set chosen, pass
-verboseto litmusify.
- Bugfix: delitmusifier no longer erroneously reverses its arguments.
- Litmusify:
-litmusnow executes litmus on the remote machine. - Added new
act toolcommand, 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
-existsflag to feed in a Litmus postcondition. (This currently has to target the sanitised Litmus variables directly; no redirection following is done yet.) - Split
act regressinto several subcommands, and include adelitmusregression 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 specstoact configure list-compilers. - Added initial support for the
litmus7tool. This currently only stretches as far as configuration stanzas and piping through thelitmusifytool. - Added experimental C language support. For now, use
explain-cto test. - Replaced the S-expression
compiler.specformat with a more human-friendly, act-specific one. Seebin/act.conffor an example of the syntax, which is similar to OpenBSD's utility config format. - Renamed
compiler.spectoact.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.