CFEngine 3.12.1 LTS Released

Posted by:

30 Nov 2018

CFEngine 3.12.1 LTS has now been released. This release brings many stability and performance improvements to the 3.12 LTS series. It is a stable and well-tested version of CFEngine.

We wish to extend a big thanks to the ecosystem that helps make CFEngine great by reporting bugs, contributing fixes and suggesting new and improved functionality. Without you, CFEngine would not be the powerful, high performance, widely used product we all appreciate today!

We hope and think this release meets the high standards we know all our users have. That is why you chose CFEngine in the first place!

This is a good time to start thinking about updating to 3.12, as this is the best and most long-term solution available. You can read more about our supported versions here, but in short, we can highlight that:

  • CFEngine 3.10 will be supported until December 2019.
  • CFEngine 3.12 will be supported until June 2021.



CFEngine 3.12.1 has received all of the bug fixes and improvements that have been applied to CFEngine since 3.12.0 was released, and is as such a great release, with a lot of improvements. We highlight a few changes here, but you can find the full list of changes in the ChangeLog entries linked below.


Changes in CFEngine Core

In CFEngine 3.12.1 we have added support for Ubuntu 18.04. It is nice to see old and new software working together as when we are using Ubuntu 18 with Windows server 2008, and the support for more than decades-old infrastructure is one of the benefits of such a wide platform support as what CFEngine provides. You can see all the supported platforms for 3.12 here.

We have added a new binary, cf-check will be used to diagnose and remediate problems with corrupt LMDB databases. As we have seen several issues with LMDB corruption lately, this tool with make those issues a lot simpler to debug and mitigate.

A community user made us aware of a memory leak in CFEngine 3.12.0, that we have now fixed in 3.12.1. To make sure this does not happen again, we have introduced several new Valgrind and AddressSanitizer (ASAN) tests as part of our CI process. When we introduced this, we also found and fixed several other memory issues.

On Windows, we have also started using a custom cleanup function instead of atexit due to a race condition when unloading DLLs on Windows.


Changes in CFEngine Enterprise

In CFEngine Enterprise, we have done a lot of quality and stability work to make it the best possible enterprise tool. Several of the major changes we introduced in 3.12.0 has been thoroughly tested and further stabilized.

We have resolved an issue that caused problems with our High Availability functionality, so this is now working very well.  We have also updated the HA documentation, to make the steps for enabling and setting this up a bit simpler to follow. This is a very useful feature for any Enterprise-grade system, and we would be happy to talk more about how it can benefit you.

When it comes to Mission Portal, we have spent a lot of time improving the reporting interfaces and making them more efficient. We have solved an error where sometimes a scheduled report was sent as a PDF instead of a CSV. We have also made it simpler to navigate from the Inventory view to the relevant host info page. We also solved an issue that caused some custom notification scripts not to fire, fixed a bug that caused alerts not to show up in the Mission Portal Events Log on some platforms and made it possible for multiple users to create independent reports with the same name, something that was causing issues previously.

You can see a list of the issues fixed in our public Jira for 3.12.1 here. And for more details, please see the relevant ChangeLog entries:



We wrote extensively about our quality efforts in last weeks 3.13 release blog post, but it bears repeating here.

CFEngine is an enterprise product, and we have always been proud of our code quality, both with regards to the languages and patterns we use, the development team, and the end product we provide for our customers at the end of a development cycle. We have a lot of tests covering the CFEngine source code, and we think the time has come to share some of the results that we see, that make us confident in the quality of CFEngine.

We are using both Jenkins and Travis to run automated tests on all of our builds, to ensure that the quality is always high. And as we are adding new features or improving existing code, we are always adding new test cases to make sure we keep a close eye on the performance of our product.

For 3.12 we are running a base set of more than 2 000 tests on each build, resulting in 23 000 tests across all the platform combinations we support. At the time of releasing 3.12.1, all the tests we run are passing, giving us a good indication of our quality. We are fully aware that automated tests are not the only way to ensure quality, so we also spend a lot of time using our own software, both on a day to day basis, as well as executing a rigorous manual testing scheme before the release of each version of CFEngine.

We will continue to improve our test coverage and code quality and keep the community up to date with the quality metrics we are introducing.



CFEngine is not depending on many external libraries, but we do depend on a few. With 3.12.1 we have updated a few dependencies from what we used in 3.12.0 in order to get the latest security, performance and reliability improvements.

3.12.0 3.12.1
libacl 2.2.52 2.2.53
libattr 2.4.47 2.4.48
libcurl 7.59.0 7.62.0
php 7.2.6 7.2.12
postgresql 10.4 10.6
git 2.17.1 2.19.1
apache 2.4.33 2.4.35
apr 1.6.3 1.6.5
libyaml 0.1.7 0.2.1
openssl 1.1.0h 1.1.0i



If you are upgrading an existing CFEngine Enterprise installation, you can check out the upgrade documentation for 3.12 for guidelines to make the process as smooth as possible.
We are of course always happy to assist customers with upgrading! If you are a community user, you can contact sales to receive a fixed-price quote for upgrading your CFEngine infrastructure to the Enterprise version of CFEngine. We are here to help you get more out of CFEngine!


Get CFEngine 3.12.1 LTS now!

CFEngine Enterprise packages can be downloaded here or you can take a quick spin with the CFEngine Enterprise Vagrant environment for 3.12.

Community Edition is released as source codepackages, and Linux package repositories — to make installation as easy as possible!

We hope you enjoy this new release, and we are looking forward to hearing about your experience in the CFEngine Google Group!


Contribute to CFEngine

We are always interested in new contributors, and in growing the community around CFEngine. We encourage you to contribute and participate in the fun and interesting development of the CFEngine ecosystem! Do you want to start contributing but are unsure how?


No matter how you do it, we hope you get the most out of this new version of CFEngine!

Nils Christian Roscher-Nielsen