-
Added LLVM 18 support #1061
-
Introduced
mull-reporter
to handle multiple test targets and offline analysis #1072 -
Fixed ubuntu packages (missing
libclang-cpp
dependency) #1063 #1043 -
Switched from Ansible to Codespaces/devcontainers to ease development environment setup: docs
-
Better support for universal binaries on macOS #1038
-
No real changes, just added Ubuntu 22.04 packages #1015
🚨 Breaking change: Mull now exits with an error if mutants survive. Use --allow-surviving
to preserve old behavior.
-
Exit with error if mutants survive (by Vilhelm Engström) #1017
-
Removed LLVM 10, added LLVM 15 #1014
-
Removed LLVM 9 support #1009
-
Added LLVM 14 support #1007
-
Added explicit support page #1010
-
Deprecated
all
group (replaced withcxx_all
) #1008
- Fixed a phi-node miscompilation caused by
cxx_logical_and_to_or
andcxx_logical_or_to_and
#994 #998 - Improved diagnostics to track and workaround miscompilations #1000
- All the changes
- Fixed a bug when reporters crash if a source file cannot be opened #991
- All the changes
🚨 With this release, the mull-cxx
tool is removed.
- Fixed 'inconsistency in registered CommandLine options' when building against certain configs of LLVM #983
- Removed
mull-cxx
#984 - Simplified database schema for SQLite reporter #987
- All the changes
- Added a workaround to not miscompile functions that use variadic arguments #977 #978
- Fixed an issue when
mull-ir-frontend
could not find Clang's headers (such asstdarg.h
) #979 mull-runner
uses code coverage automatically #971 #967- Added tutorials on CMake and Makefile integration #980
mull-ir-frontend
andmull-runner
share the config #972- Added more debugging facilities #975 #976
- All the changes
- Added a workaround to not miscompile functions that use "jump-tables" #963
- Added module verification #964
- Added more debugging facilities #962
- Mull is using itself for testing #952
- All the changes
🚨 With this release, the mull-cxx
tool is deprecated and will be removed in the future.
Mull switches to the new model - compiler plugin called Mull IR Frontend. The tutorial showing how to use it was updated.
- Introduce Mull IR Frontend #938
- Introduce YAML-based configuration #934
- Drop LLVM 7 #936
- Drop LLVM 8 #942
- Fix a bug in
mull-runner
with duplicated mutants from templates #940 - Fix a bug with junk detection when the code is located in symlinked folders #943
- All the changes
- Mutants are now also extracted from dependent dynamic libraries #903 #931
- Fixed linking by deferring object code lowering to external compiler instead of using (mostly) incorrect defaults #929
- Added warning if number of workers specified exceeds available CPU cores (by Matthias Bilger) #928
- Most of the Ubuntu packages now built against the official LLVM/Clang instead of precompiled ones #926
- All the changes
This release happens solely due to m42e's efforts. Thank you, Matthias!
- Added patch reporter (by Matthias Bilger) #911 #587
- Added GithubAnnotations reporter (by Matthias Bilger) #917 #738
Elements
andSQLite
reports now include information about the Mull invocation (by Matthias Bilger) #921 #920- Code coverage now cuts off more unreachable mutants (by Matthias Bilger) #923
- Fixed a bug with child-process handling causing incorrect test results (by Matthias Bilger) #915
- Fixed a bug when Mull terminates when invalid regex passed to filters (by Matthias Bilger) #918 #845
- All the changes
Important note: The mull
package is now replaced with a separate package for each
supported LLVM version, e.g. mull-8
, mull-13
, etc.
The mull
package won't be updated!
Important note: The binaries mull-cxx
and mull-runner
are now named after
the corresponding LLVM version, e.g. mull-cxx-8
, mull-runner-13
, etc.
- Publish mull-${LLVM_VERSION} package instead of mull package 904
- Include LLVM version into the package/binary name 904
- Added LLVM 13 support #905
- All the changes
- Fixed segfault caused by a data race (by Matthias Bilger) #895
- Switched to
main
instead ofmaster
for the main branch #892 - Added LLVM 12 support #886
- Dropped debug output from
mull-runner
#889 - Fixed a bug leading to non-deterministic results #890 #891
- All the changes
Important note: AST-based mutations are in the works, but not yet available in the pre-built packages.
- Fixed a bug when mutants may be eliminated from the mutated program (by Yuta Saito) 863
- Fixed a bug when
test-program
vs./test-program
changed Mull behavior 868 - Fixed a multi-threading-related bug 865
- Mull uses
grep -E
compatible regular expressions 850 - Introduced
mull-runner
854 - Incremental mutation testing using
git diff
filter #833 - Dropped the package size by ~3.5-4Mb 884
- All the changes
Important note: Bintray is shutting down, so Mull moved to Cloudsmith!
- Fixed bug with incorrect mutation of intrinsics (by Yuta Saito) #libirm/24
- Fixed bug with losing calling conventions (by Yuta Saito) #834
- Fixed bug with incorrect locations of mutants in the header files 837
- Deduplicate mutants coming from inlined functions/templates #829
- Add support for not covered mutants 831
- All the changes
Important note: this release is a breaking change!
We decided to move away from JIT and because of that Mull's API has changed. Make sure you go though the first three tutorials to see the difference.
Actual changelog:
- Moved to Discord from Slack: Join Us There
- Added LLVM 11 support 789
- Added Ubuntu 20 support 789
- Moved away from JIT #798
- Removed explicit test framework support 814
- Special thanks goes to Joakim Nohlgård for bringing Boost test framework support, which is now unfortunately gone #746
- All the changes
- Implemented mutators for (almost) all C++ expressions #577
- Print total execution time (regression) #741
- Allow combined include-path + exclude-path (by Joakim Nohlgård) #747
- Fix a possible infinite loop in SourceManager (by Evan Lojewski) #748
- Add CppUTest support (by Oskari Mantere) #750
- Fix ppc64le builds (by Evan Lojewski) #751
- Added
-ld-preload
command line option (by Joakim Nohlgård) #756 - Compilation database speedup (by Joakim Nohlgård) #760
- LLVM 10 Support #761
- LLVM 3.9, 4.0, and 5.0 no longer supported #762
- Add command line option to configure timeout per test run #772
- All the changes
- Introduced online documentation https://mull.readthedocs.io/en/latest/
- Stable and nightly builds are now hosted on Bintray #676
- Ubuntu packages now can be installed/updated via
apt-get
https://mull.readthedocs.io/en/latest/Installation.html#install-on-ubuntu - Also, packages are now smaller #690
- Mull can read compilation flags from the bitcode file (
-grecord-command-line
compiler option) #663 - Improve JUnit report integration #660
- Added options to control capture of the stderr/stdout from test runs #674
- Fixed a bug with junk detection not reading compilation database correctly #679
- Revamped the logging mechanism #655
- Show warning when there is no debug information #654
- Logger has a debug option #669
- Strict mode added: treat warnings as fatal errors #673
- Work on the "white list" AST search has started #677
- All the changes
- Moved
LogicalAndToOr
andLogicalOrToAnd
toexperimental
group #638 IDEReporter
now can also show killed mutants next to survived #640- Fixed an issue with the compilation database containing relative paths #637
- Gained first proper integration tests #631
- All the changes
- Switched to libirm - generic library for LLVM mutations #566
- Started building online documentation: https://mull.readthedocs.io
- Introduce a more granular mutation operators: https://mull.readthedocs.io/en/latest/SupportedMutations.html
- Fixed compilation database parsing issue #632 #629
- Fixed gcc builds #630
- Report warning when JIT cannot resolve undefined symbol #628
- Added an option to whitelist mutants by paths (
-include-path=...
) #617 - Added
-dry-run
options #616 - Removed the old driver (
mull-driver
) #612 - Added LLVM 9 support #609
- Fixed a bug when even junk mutations were applied, resulting in a longer execution time #595
- Sped up junk detection by an order of magnitude #582
- All the changes
- Print more info when original test fails #549
- Reporting JSON to Mutation Testing Elements (initial support) #517, #507
- Introduce
-exclude-path
option to filter mutations #553 - Enable reporters configuration via
-reporters
option #555 - Junk detection for the Scalar Value mutator #557
- Junk detection for the Replace Assignment mutator #559
- All the changes
- Fixed the original value use-after-free issue #532, #536
- Automated release process on macOS #537
- Fix incorrect handling of the NSW/NUW flags #540
- Bring back abandoned sandbox approach #541, #542
- Add LLVM 9 support #544
- Include build date into the version info #546
- Include Ubuntu 18.04 into release process #547
- All the changes
- Add junk detection
- AndOrReplacement #509
- MathDiv #511
- MathMul #511
- ReplaceCall #512
- Handle edge case for AND-OR mutator #501
- Add better handling of edge cases when there is no debug information #519, #520, #524
- Print more info when Junk Detector fails to parse a file #524
- All the changes
- Add FreeBSD Package #503
- Switch back to PackageMaker on macOS #504
- Add internal target to validate mutants #500
- Lots of refactoring
- All the changes
- Initial Release
- Initial commit