libgpiod v1.4.5
===============

Bug fixes:
- fix event timestamp calculation on 32-bit architectures in C++ bindings
- fix incorrect object size of gpiod.LineBulk in Python bindings
- fix a crash in Line.request() when it's called without keyword arguments

libgpiod v1.4.4
===============

Bug fixes:
- make gpiod_line_get_value_bulk() work for bulks of lines requested for
  events, not only those requested for values

libgpiod v1.4.3
===============

Bug fixes:
- relax gpiod_chip_open() for symbolic links

libgpiod v1.4.2
===============

Bug fixes:
- fix the major:minor number comparison between the device and sysfs
- drop noexcept from direction() and active_state() in C++ bindings
- fix a segfault when calling Line.request() in Python bindings

libgpiod v1.4.1
===============

Bug fixes:
- fix GCC8 warnings when building python bindings
- fix a bug in gpioinfo where lines used by the kernel without any consumer
  string were reported as unused
- fix a bug in line::event_get_fd() in C++ bindings where the exception
  wouldn't be throws in error cases due to a missing 'throw' keyword
- fix a couple bugs in the test-suite
- disable a failing assertion in the test-suite that stopped working after
  linux v5.2.7

libgpiod v1.4
=============

New features:
- updated the testing framework to work with linux v5.1 in which the debugfs
  interface of the GPIO testing module changed in a backward incompatible way
- factored out the code controlling the GPIO testing module into a separate
  shared library that may be reused by future testing executables for different
  language bindings
- removed the --enable-install-tests build option and the make check target as
  they were redundant, subsequently tests are now installed as a normal program
  whenever they're enabled with --enable-tests

Improvements:
- removed unnecessary std::move calls from C++ bindings
- added the explicit keyword to bool() operators in C++ bindings

Bug fixes:
- fix out of source build of man pages

libgpiod v1.3
=============

New features:
- the gpio-tools now have automatically generated (using help2man) man pages
  that are bundled with the release tarball
- support a singular 'default_val' argument in Line.request() in python
  bindings
- the test executable can now be installed to the bindir along with the
  gpio-tools and the testing framework will look for the binaries in standard
  locations if it's not run from the top source directory
- gpiomon now supports line buffered output

Improvements:
- tweaks to the C API documentation
- treewide unification of the naming of local variables
- extended helptest in gpioset (explanation of the way the character device
  works aimed at reducing user confusion when a GPIO line reverts to its
  default value after gpioset exits)
- the source directories have been rearranged and the src/ directory was
  dropped, lib/ and tools/ now live in the top source directory
- minor coding style fixes in python bindings, ctxless functions and tools
- automatically generated documentation is now removed by 'make clean'
- all Makefiles now use top_builddir instead of relative paths
- code shrink in configure.ac
- add a brief section about API documentation to README

Bug fixes:
- fix a segfault causing bug in C++ bindings
- make bitset_cmp::operator() const as this is required by C++17
- ignore 'remove' events from udev in the testing framework
- don't segfault on num_lines = 0 in ctxless functions

libgpiod v1.2
=============

New features:
- new contextless event monitor that should replace the previous event loop
  which caused problems on hardware that doesn't allow to watch both rising
  and falling edge events
- port gpiomon to the new event monitor
- deprecate event loop routines

Improvements:
- many minor improvements and tweaks in the python module
- new test cases for python bindings
- add much more detailed documentation for python bindings
- coding style improvements in gpio-tools
- remove unicode characters from build scripts
- improve the help text messages in gpio-tools
- make gpiod_chip_open() and its variants verify that we're really trying to
  open a character device associated with a GPIO chip

Bug fixes:
- fix memory leaks in python bindings
- fix a memory corruption bug in python bindings
- fix the default_vals argument in line request implementation in python
  bindings
- fix a compilation warning in python bindings
- fix gpiod_Chip_find_lines() for nonexistent lines (python bindings)
- add a missing include in C++ bindings examples
- correctly display the version string in gpio-tools

libgpiod v1.1
=============

New features:
- add object-oriented C++ bindings
- add object-oriented Python3 bindings
- add several new helpers to the C API

Improvements:
- start using separate versioning schemes for API and ABI
- use SPDX license identifiers and remove LGPL boilerplate
- check for unexpanded macros in configure.ac

Bug fixes:
- include Doxyfile in the release tarball
- fix the implicit-fallthrough warnings
- make tests work together with gpio-mockup post v4.16 linux kernel
- use reference counting for line file descriptors
- correctly handle POLLNVAL when polling for events
- fix the copyright notice in tools

libgpiod v1.0
=============

NOTE: This is a major release - it breaks the API compatibility with
      the 0.x.y series.

New features:
- remove custom error handling in favor of errnos
- merge the two separate interfaces for event requests and regular line
  requests
- redesign the simple API
- change the prefix of the high-level API from 'simple' to 'ctxless' (for
  contextless) which better reflects its purpose
- redesign the iterator API
- make use of prefixes more consistent
- rename symbols all over the place
- various minor tweaks
- add support for pkg-config

Improvements:
- add a bunch of helpers for line requests
- split the library code into multiple source files by functionality
- re-enable a test case previously broken by a bug in the kernel

Bug fixes:
- correctly handle signal interrupts when polling in gpiod_simple_event_loop()
- fix the linking order when building with static libraries
- pass the correct consumer string to gpiod_simple_get_value_multiple() in
  gpioget
- fix a line test case: don't use open-drain or open-source flags for input
  mode
- fix the flags passed to ar in order to supress a build warning
- set the last error code in gpiod_chip_open_by_label() to ENOENT if a chip
  can't be found
- fix checking the kernel version in the test suite
- fix various coding style issues
- initialize the active low variable in gpiomon

libgpiod v0.3
=============

New features:
- gpiomon can now watch multiple lines at the same time and supports custom
  output formats which can be specified using the --format argument
- testing framework can now test external programs: test cases for gpio-tools
  have been added

Improvements:
- improve error messages
- improve README examples
- configure script improvements

Bug fixes:
- use correct UAPI flags when requesting line events
- capitalize 'GPIO' in error messages in gpioset, gpioget & gpiomon
- tweak the error message on invalid arguments in gpiofind
- don't ignore superfluous arguments and fix the displayed name for falling
  edge events in gpiomon

libgpiod v0.2
=============

New features:
- relicensed under LGPLv2.1
- implemented a unit testing framework together with a comprehensive
  set of test cases
- added a non-closing variant of the gpiochip iterator and foreach
  macro [by Clemens Gruber]
- added gpiod_chip_open_by_label()

Improvements:
- Makefiles & build commands have been reworked [by Thierry Reding]
- documentation updates
- code shrinkage here and there
- coding style fixes
- removed all designated initializers from the header for better standards
  compliance

Bug fixes:
- fix the return value of gpiod_simple_event_loop()
- don't try to process docs if doxygen is not installed
- pass the O_CLOEXEC flag to open() when opening the GPIO chip device file
- include <poll.h> instead of <sys/poll.h> in gpioset
- fix a formatting issue in gpioinfo for chips with >100 GPIO lines
- fix a bug when requesting both-edges event notifications
- fix short options in gpiomon (short opt for --silent was missing)
- correct the kernel headers requirements in README
- include <time.h> for struct timespec
- include <poll.h> instead of <sys/poll.h>
- detect the version of strerror_r()

libgpiod v0.1
=============

First version of libgpiod.

It's currently possible to:
- get and set the values of multiple GPIO lines with a single function call
- monitor a GPIO line for events
- enumerate all GPIO chips present in the system
- enumerate all GPIO lines exposed by a chip
- extract information about GPIO chips (label, name, number of lines)
- extract information about GPIO lines (name, flags, state, user)

Tools provided with the library are:
- gpioget - read values from GPIO lines
- gpioset - set values of GPIO lines
- gpiodetect - list GPIO chips
- gpioinfo - print info about GPIO lines exposed by a chip
- gpiomon - monitor a GPIO line for events
- gpiofind - find a GPIO line by name
