kmod 15
=======

- Bug fixes:
	- kmod static-nodes doesn't fail if modules.devname isn't available
	- Fix getting boolean parameter from kernel cmdline in case the value
	  is omitted
	- Fix some mkdir_p() corner cases (used in testsuite and static-nodes)

- New features:
	- kmod static-nodes creates parent directories if given a -o option
	- kmod binary statically links to libkmod - if distro is only interested
	  in the kmod tool (for example in an initrd) it can refrain from
	  installing the library
	- Add shell completion for kmod tool

kmod 14
=======

- Bug fixes:
	- Fix some format strings
	- Protect against NULL being passed around to index
	- Avoid calling syscall() with -1 when finit_module() is not available,
	  since this doesn't always work
	- Fix not being able to remove alias due to checking the module's
	  refcount
	- Minor fixes and refactors

- New features:
	- Improve libkmod documentation, particularly on how flags are dealt
	  with.
	- Remove ability to build a static libkmod
	- Add static-nodes command to kmod that parses modules.devname
	  generating output in useful formats

kmod 13
=======

- Bug fixes:
	- Add the long option --symbol-prefix option to depmod (it was absent)
	  and fix its behavior
	- Don't abort if there's a bogus line in configuration file like "alias
	  psmouse off". Some distros are carrying this since the days of
	  modutils

- New features:
	- Add support for finit_module(2). If the module is load straight from
	  the disk and without compression we use finit_module() syscall when
	  available, falling back to init_module() otherwise
	- kmod_module_get_info() also returns the signature if the module is
	  signed and modinfo uses it
	- Use secure_getenv if available
	- rmmod understands builtin modules, just like modprobe does
	- Improve compatibility with musl-libc
	- Test cases exit with success when receiving a signal if they are
	  xfail tests

kmod 12
=======

- Bug fixes:
	- Fix removing vermagic from module when told to force load a module
	- Fix removing __versions section when told to force load a module: we
	  need to mangle the section header, not the section.
	- modinfo no longer fails while loading a module from file when path
	  contains ".ko" substring

kmod 11
=======

- Improvements to testsuite:
	- Fix testsuite defining symbols twice on 32 bit systems
	- Allow to check generated files against correct ones

- New features:
	- libkmod now keeps a file opened after the first call to
	  kmod_module_get_{info,versions,symbols,dependency_symbols}. This
	  reduces signficantly the amount of time depmod tool takes to
	  execute. Particularly if compressed modules are used.
	- Remove --with-rootprefix from build system. It was not a great idea
	  after all and should not be use since it causes more harm then
	  benefits.
	- Hide --wait option on rmmod. This feature is being targeted for
	  removal from kernel. rmmod still accepts this option, but it's hidden
	  now: man page and usage() says nothing about it and if it's used,
	  user will get a 10s sleep. This way we can check and help if anyone
	  is using this feature.
	- Refactor message logging on all tools, giving proper prefix, routing
	  everything to syslog when asked for, etc.

- Bug fixes:
	- Fix parsing of modules.order when using compressed modules
	- Usage messages go to stdout instead of stderr
	- Fix memory leak in hash implementation

kmod 10
=======

- New features:
	- Read coresize from /sys if supported

	- Add flag to kmod_module_probe_insert() to apply blacklisting during
	  probe only if mod is an alias. Now modprobe uses this flag by default.
	  This is needed to fix a change in behavior regarding module-init-tools
	  and ultimately makes us loading a blacklisted module.

- Better formatting in man pages

- Add option to disable building man pages at build time

- Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries

- Re-licensing testsuite as LGPL

kmod 9
======

- Improvements to the testsuite:
	- Check for correct handling of softdep loops
	- Check for correct handling of install command loops

- Bug fixes:
	- Fix build with compilers that don't support --gc-sections
	- Handle errors when dealing with gzipped modules
	- depmod now handles errors while writing indices, so it doesn't end up
	  with a corrupted index without telling the user

kmod 8
======

- No new features, small bug fixes only.
	- Fix a bug in "modprobe -c" output: be compatible with
	  module-init-tools

	- Give a useful error message when init_module fails due to bad
	  parameter or unknown symbols

	- Fix doc generation

kmod 7
======

- Re-order dirs for configuration files to match the change in systemd and
  udev: now the priority is:
	1. /etc/modprobe.d
	2. /run/modprobe.d
	3. /lib/modprobe.d

- Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not
  allowing the user to set his preferences.

- Bug fixes:
	- Return same error codes of module-init-tools when removing modules
	  with modprobe
	- Fix builtin output in "--show-depends" when target kernel is not the
	  same of the running kernel
	- 'modprobe -r' always look at all command line arguments
	- Fix '-q' usage in modprobe

kmod 6
======

- New API in libkmod:
	- kmod_module_apply_filter(): a generic function to apply filters in a
	  list of modules. This deprecates the use of
	  kmod_module_get_filtered_blacklist()

- More tests in testsuite

- Add compatibility with uClibc again

- Lookup modules.builtin.bin to decide if a module is built in kernel

- Downgrade some log messages so we don't annoy people with useless messages

- Bug fixes:
	- Flag --ignore-loaded was not being properly handled
	- Infinite loop with softdeps
	- Infinite loop with dumb user configuration with install commands
	- Fix leak in index when there's a partial match

- Move repository and tarballs to kernel.org

kmod 5
======

- Break libkmod's API to insert a module like modprobe does. It now accepts
  extra an extra argument to print its action and acceptable flags were
  sanitized.

- Share more code between modprobe and libkmod: using the new version of
  kmod_module_probe_insert_module() it's possible to share a great amount of
  code between modprobe and libkmod

- modprobe no longer works with paths: it only accepts module names and/or
  aliases now.

- testsuite was added to repository, allowing automated tests to be run and
  easing the way bugs are reproduced.

- modprobe: when dumping configuration ('-c' option) separate config
  and indexes by adding a commented line between them.

- Fix bugs wrt normalizing aliases and module names

- Fix bug wrt inserting an alias that resolves to multiple modules: we should
  not stop on the first error, but rather continue to try loading other
  modules.

- Fix unaligned memory access in hash function, causing depmod to output wrong
  information in ARMv5

- Fix man page build and install: now they are only installed if tools are
  enabled

kmod 4
======

- New APIs in libkmod to:
	- Get configuration lists: blacklists, install commands, remove
	  commands, aliases, options and softdeps
	- Dump indexes

- Several bugs fixed in libkmod, modprobe, depmod and modinfo

- API documentation: if configure with run with --enable-gtk-doc, the API doc
  will be generated by make. Gtk-doc is required for that.

- Man pages are built, which replace man pages from module-init-tools

- 'include' and 'config' options in *.conf files were deprecated

- configure is not run by autogen.sh. Instead, a common set of options is
  printed. If you are hacking on kmod, consider using bootstrap-configure
  script.

- 'modprobe -c' works as expected now. As opposed to module-init-tools, it
  dumps the parsed configuration, not only the file contents.

kmod 3
======

- New APIs in libkmod to:
	- Get symbols from module, parsing the ELF section
	- Get dependency symbols
	- Check if resources are still valid or if libkmod must be reloaded
	- Insert module like modprobe, checking (soft-)dependencies, commands,
	  blacklist. It can run commands by itself and to call a callback
	  function.

- Support to load modules compressed with xz

- Tools are now bundled together in a single tool called kmod. It can be
  called using symlinks with the same names as tools from module-init-tools.
  E.g: /usr/bin/lsmod -> /usr/bin/kmod. With this we are aiming to complete a
  1:1 replacement of module-init-tools.

- The only missing tool, depmod, was added to kmod together with the necessary
  APIs in libkmod.

- If a program using libkmod runs for a long time, as for example udev, it must
  check if it doesn't have to re-load libkmod. A new helper function was added
  in libkmod to check if context is still valid and udev is already using it.

- An 'unaligned access' bug was fixed. So those architecture that does not
  handle unaligned access can use kmod, too.

kmod 2
======

Some bugs fixed: the worst of them was with an infinite loop when an alias
matched more than one module.

- New APIs in libkmod to:
	- Get soft dependencies
	- Get info from module files parsing ELF
	- Get modversions from files parsing ELF

- Support to load gzipped kernel modules: kmod can be compiled with support to
  gzipped modules by giving the --enable-zlib flag

- Support to forcefully load modules, both vermagic and modversion

- Support to force and nowait removal flags

- Configuration files are parsed in the same order as modprobe: files are
  sorted alphabetically (independently of their dir) and files with the same
  name obey a precedence order

- New tool: kmod-modinfo

- kmod-modprobe gained several features to be a 1:1 replacement for modprobe.
  The only missing things are the options '--showconfig' and '-t / -l'. These
  last ones have been deprecated long ago and they will be removed from
  modprobe. A lot of effort has been put on kmod-modprobe to ensure it
  maintains compabitility with modprobe.

- linux-modules@vger.kernel.org became the official mailing list for kmod

kmod 1
======

First version of kmod and its library, libkmod.

In the libkmod it's currently possible to:
	- List modules currently loaded
	- Get information about loaded modules such as initstate, refcount,
	  holders, sections, address and size
	- Lookup modules by alias, module name or path
	- Insert modules: options from configuration and extra options can be
	  passed, but flags are not implemented, yet
	- Remove modules
	- Filter list of modules using blacklist
	- For each module, get the its list of options and install/remove
	  commands
	- Indexes can be loaded on startup to speedup lookups later

Tools provided with the same set of options as in module-init-tools:
	- kmod-lsmod
	- kmod-insmod
	- kmod-rmmod
	- kmod-modprobe, with some functionality still missing (use of softdep,
	  dump configuration, show modversions)
