Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.22.0 #1050

Merged
merged 1 commit into from
May 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## [0.22.0] - 27 May 2024

- LLVM 17 support (by [rjaegers](https://github.com/rjaegers)) [#1045](https://github.com/mull-project/mull/pull/1045)
- Packages for Ubuntu 24.04 (by [rjaegers](https://github.com/rjaegers)) [#1048](https://github.com/mull-project/mull/pull/1048)
- Better support for universal binaries on macOS [#1038](https://github.com/mull-project/mull/pull/1038)

- [All the changes](https://github.com/mull-project/mull/pulls?q=is%3Apr+merged%3A2023-07-01..2024-05-27)

## [0.21.1] - 30 Jun 2023

- No real changes, just added Ubuntu 22.04 packages [#1015](https://github.com/mull-project/mull/pull/1015)
Expand Down Expand Up @@ -81,13 +89,13 @@ Mull switches to the new model - compiler plugin called [Mull IR Frontend](https
- Drop LLVM 7 [#936](https://github.com/mull-project/mull/pull/936)
- Drop LLVM 8 [#942](https://github.com/mull-project/mull/pull/942)
- Fix a bug in `mull-runner` with duplicated mutants from templates [#940](https://github.com/mull-project/mull/pull/940)
- Fix a bug with junk detection when the code is located in symlinked folders [#943](https://github.com/mull-project/mull/pull/943)
- Fix a bug with junk detection when the code is located in symlinked folders [#943](https://github.com/mull-project/mull/pull/943)
- [All the changes](https://github.com/mull-project/mull/pulls?q=is%3Apr+merged%3A2021-12-21..2022-01-20)

## [0.14.0] - 20 Dec 2021

- Mutants are now also extracted from dependent dynamic libraries [#903](https://github.com/mull-project/mull/issues/903) [#931](https://github.com/mull-project/mull/pull/931)
- Fixed linking by deferring object code lowering to external compiler instead of using (mostly) incorrect defaults [#929](https://github.com/mull-project/mull/pull/929)
- Fixed linking by deferring object code lowering to external compiler instead of using (mostly) incorrect defaults [#929](https://github.com/mull-project/mull/pull/929)
- Added warning if number of workers specified exceeds available CPU cores (by [Matthias Bilger](https://github.com/m42e)) [#928](https://github.com/mull-project/mull/pull/928)
- Most of the Ubuntu packages now built against the official LLVM/Clang instead of precompiled ones [#926](https://github.com/mull-project/mull/pull/926)
- [All the changes](https://github.com/mull-project/mull/pulls?q=is%3Apr+merged%3A2021-11-24..2021-12-18)
Expand Down Expand Up @@ -227,7 +235,7 @@ Actual changelog:
- 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
- Sped up junk detection by an order of magnitude #582
- [All the changes](https://github.com/mull-project/mull/pulls?q=is%3Apr+merged%3A2019-08-29..2019-12-04)

## [0.5.0] - 28 Aug 2019
Expand Down
38 changes: 21 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.14)

if (NOT MULL_VERSION)
set (MULL_VERSION 0.21.1)
if(NOT MULL_VERSION)
set(MULL_VERSION 0.22.0)
endif()

project(Mull
Expand All @@ -17,34 +17,35 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# -DRECORD_TIMING=ON
if (RECORD_TIMING)
if(RECORD_TIMING)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "\"${CMAKE_COMMAND}\" -E time")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "\"${CMAKE_COMMAND}\" -E time")
set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM "\"${CMAKE_COMMAND}\" -E time")
endif()

set (PROJECT_VERSION ${MULL_VERSION})
set(PROJECT_VERSION ${MULL_VERSION})

set (PROJECT_DESCRIPTION "Practical mutation testing for C and C++")
set (PROJECT_HOMEPAGE_URL "https://github.com/mull-project/mull")
set (PROJECT_DOCS_URL "https://mull.readthedocs.io")
set (PROJECT_SUPPORT_URL "https://mull.readthedocs.io/en/latest/Support.html")
set(PROJECT_DESCRIPTION "Practical mutation testing for C and C++")
set(PROJECT_HOMEPAGE_URL "https://github.com/mull-project/mull")
set(PROJECT_DOCS_URL "https://mull.readthedocs.io")
set(PROJECT_SUPPORT_URL "https://mull.readthedocs.io/en/latest/Support.html")

include(${CMAKE_CURRENT_LIST_DIR}/cmake/properties.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/fixtures.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/functions.cmake)

set (CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

find_package(LLVM CONFIG REQUIRED)
message("Using LLVM_CONFIG: ${LLVM_CONFIG}")
find_package(Clang CONFIG REQUIRED)
message("Using Clang_CONFIG: ${Clang_CONFIG}")

set (clang_binary_dir ${CLANG_INSTALL_PREFIX})
if (NOT clang_binary_dir)
set(clang_binary_dir ${CLANG_INSTALL_PREFIX})

if(NOT clang_binary_dir)
# Building against built tree?
set (clang_binary_dir ${LLVM_BINARY_DIR})
set(clang_binary_dir ${LLVM_BINARY_DIR})
endif()

message("Using LLVM/Clang from: ${clang_binary_dir}")
Expand All @@ -56,21 +57,22 @@ set(LIT_LLVM_PROFDATA ${clang_binary_dir}/bin/llvm-profdata)

set(MULL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})

set (MULL_CXX_FLAGS "-fPIC -fvisibility-inlines-hidden -fno-exceptions -Wunused -Wall -fvisibility=hidden")
if (NOT LLVM_ENABLE_RTTI)
set(MULL_CXX_FLAGS "-fPIC -fvisibility-inlines-hidden -fno-exceptions -Wunused -Wall -fvisibility=hidden")

if(NOT LLVM_ENABLE_RTTI)
set(MULL_CXX_FLAGS "${MULL_CXX_FLAGS} -fno-rtti")
endif()

add_subdirectory(vendor)

set (MULL_DEFINITIONS ${LLVM_DEFINITIONS})
set (THIRD_PARTY_INCLUDE_DIRS
set(MULL_DEFINITIONS ${LLVM_DEFINITIONS})
set(THIRD_PARTY_INCLUDE_DIRS
${LLVM_INCLUDE_DIRS}
${CLANG_INCLUDE_DIRS}
${CMAKE_CURRENT_LIST_DIR}/vendor/libirm/include
${CMAKE_SOURCE_DIR}/vendor
)
set (MULL_INCLUDE_DIRS
set(MULL_INCLUDE_DIRS
${MULL_SOURCE_DIR}/include
)

Expand All @@ -88,11 +90,13 @@ SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

add_subdirectory(lib)
add_subdirectory(tools)

if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
add_subdirectory(tests)
add_subdirectory(tests-lit)
add_subdirectory(vendor/googletest EXCLUDE_FROM_ALL)
endif()

add_subdirectory(vendor/libirm EXCLUDE_FROM_ALL)
add_subdirectory(vendor/spdlog EXCLUDE_FROM_ALL)
set(REPROC++ ON)
Expand Down
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ Here is the starting point: [CONTRIBUTING.md](CONTRIBUTING.md)
[Mull it over: mutation testing based on LLVM (preprint)](https://lowlevelbits.org/pdfs/Mull_Mutation_2018.pdf)

```
@INPROCEEDINGS{8411727,
author={A. Denisov and S. Pankevich},
booktitle={2018 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW)},
title={Mull It Over: Mutation Testing Based on LLVM},
year={2018},
volume={},
number={},
pages={25-31},
keywords={just-in-time;program compilers;program testing;program verification;mutations;Mull;LLVM IR;mutated programs;compiled programming languages;LLVM framework;LLVM JIT;tested program;mutation testing tool;Testing;Tools;Computer languages;Instruments;Runtime;Computer crashes;Open source software;mutation testing;llvm},
doi={10.1109/ICSTW.2018.00024},
ISSN={},
@INPROCEEDINGS{8411727,
author={A. Denisov and S. Pankevich},
booktitle={2018 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW)},
title={Mull It Over: Mutation Testing Based on LLVM},
year={2018},
volume={},
number={},
pages={25-31},
keywords={just-in-time;program compilers;program testing;program verification;mutations;Mull;LLVM IR;mutated programs;compiled programming languages;LLVM framework;LLVM JIT;tested program;mutation testing tool;Testing;Tools;Computer languages;Instruments;Runtime;Computer crashes;Open source software;mutation testing;llvm},
doi={10.1109/ICSTW.2018.00024},
ISSN={},
month={April},}
```

Expand All @@ -41,4 +41,4 @@ Hosting for precompiled packages is graciously provided by [Cloudsmith](https:/

## Copyright

Copyright (c) 2016-2022 Alex Denisov <[email protected]> and Stanislav Pankevich <[email protected]>. See LICENSE for details.
Copyright (c) 2016-2024 Alex Denisov <[email protected]> and Stanislav Pankevich <[email protected]>. See LICENSE for details.
4 changes: 2 additions & 2 deletions docs/HackingOnMull.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ LLVM
----

You need LLVM to build and debug Mull.
You can use any LLVM version between 12.0 and 16.0.
You can use any LLVM version between 12.0 and 17.0.

As of the version 0.14.0, Mull can be compiled against LLVM/Clang available
through your package manager (e.g. apt or homebrew).
Expand All @@ -95,7 +95,7 @@ The ``cmake search paths`` should point to the LLVM/Clang CMake config folders.
Some examples:

- llvm\@12 installed via homebrew on macOS: ``"/usr/local/opt/llvm@12/lib/cmake/llvm/;/usr/local/opt/llvm@12/lib/cmake/clang/"``
- llvm-12 installed via apt on Ubuntu: ``"/usr/lib/llvm-13/cmake/;/usr/lib/cmake/clang-13/"``
- llvm-12 installed via apt on Ubuntu: ``"/usr/lib/llvm-12/cmake/;/usr/lib/cmake/clang-12/"``

If you are getting linker errors, then it is very likely related to the C++
ABI. Depending on your OS/setup you may need to tweak the ``_GLIBCXX_USE_CXX11_ABI`` (0 or 1):
Expand Down
2 changes: 1 addition & 1 deletion docs/Installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Please, refer to the `Hacking on Mull <HackingOnMull.html>`_ to build Mull from
Install on Ubuntu
*****************

Mull supports Ubuntu 18.04 and 20.04.
Mull supports Ubuntu 20.04, 22.04 and 24.04.

Setup apt-repository:

Expand Down
Loading