Commit edf08b19 authored by Tomas Krizek's avatar Tomas Krizek

meson: doc/migration - document significant changes

parent 97547291
Knot Resolver 3.x.y (2019-0m-dd)
Knot Resolver 4.0.0 (2019-0m-dd)
Incompatible changes
- libknot >= 2.7.6 is required
- see migration guide:
- meson build system is now used for builds (!771)
- build with embedded LMBD is no longer supported
- default modules dir location has changed
- DNSSEC is enabled by default
- upstream packages for Debian now require systemd
......@@ -11,6 +17,7 @@ Improvements
- hints module: allow configuring the TTL and change default from 0 to 5s
- policy module: policy.rpz() will watch the file for changes by default
- packaging: lua cqueues added to default dependencies where available
- systemd: service is no longer auto-restarted on configuration errors
.. _build:
Building from sources
......@@ -233,6 +235,8 @@ It's also possible to make a development snapshot tarball:
$ ./scripts/
.. _packaging:
......@@ -14,6 +14,7 @@ and it provides a state-machine like API for extensions.
.. _upgrade-from-3-to-4:
Upgrade from 3.x to 4.x
* DNSSEC validation is now turned on by default. If you need to disable it, see
* In case you are using your own custom modules, move them to the new module
location. The exact location depends on your distribution. Generally, modules previously
in ``/usr/lib/kdns_modules`` should be moved to ``/usr/lib/knot-resolver/kres_modules``.
Packagers & Developers
* Knot DNS >= 2.8 is required.
* meson >= 0.46 and ninja is required.
* meson build system is now used for compiling the project. For instructions, see
the :ref:`build`. Packagers should pay attention to section :ref:`packaging`
for information about systemd unit files and trust anchors.
* Embedding LMDB is no longer supported, lmdb is now required as an external dependency.
* Trust anchors file from upstream is installed and used as default unless you
override ``keyfile_default`` during build.
Module changes
* Default module location has changed from ``{libdir}/kdns_modules`` to
``{libdir}/knot-resolver/kres_modules``. Modules are now in the lua namespace
* ``kr_straddr_split()`` API has changed.
Upgrade from 2.x to 3.x
* ``hints.use_nodata(true)`` by default.
* In case you wrote custom Lua modules, please consult :ref:`significant-lua-changes`.
* Removed modules: ``cookie`` (temporarily) and ``version`` (permanently).
Packagers & Developers
* Knot DNS >= 2.7.2 is required.
* cache: fail lua operations if cache isn't open yet (!639)
By default cache is opened *after* reading the configuration,
and older versions were silently ignoring cache operations.
Valid configuration must open cache using `` or `cache.size =`
before executing cache operations like `cache.clear()`.
Modules changes
* New layer was added: ``answer_finalize``.
* ``kr_request`` keeps ``::qsource.packet`` beyond the ``begin`` layer.
* ``kr_request::qsource.tcp`` renamed to ``::qsource.flags.tcp``.
* ``kr_request::has_tls`` renamed to ``::qsource.flags.tls``.
* ``kr_zonecut_add()``, ``kr_zonecut_del()`` and ``kr_nsrep_sort()`` changed
parameters slightly.
......@@ -108,7 +108,7 @@ This is only passive processing of the incoming answer. If you want to change th
struct kr_request *req = ctx->req;
struct kr_query *qry = req->current_query;
/* Query can be satisfied locally. */
if (can_satisfy(qry)) {
/* This flag makes the resolver move the query
......@@ -278,6 +278,8 @@ As described in the layers, you can not only retrieve information about current
.. _bindings:
.. _significant-lua-changes:
Significant Lua API changes
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment