Skip to content

Commit 35ed12f

Browse files
committed
v2.0.0 release
1 parent 995358e commit 35ed12f

File tree

2 files changed

+27
-70
lines changed

2 files changed

+27
-70
lines changed

CHANGELOG.md

Lines changed: 26 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,42 @@
11
# Changelog
22

3-
## v2.0.0-pre.6 - 2024-1-9
3+
## v2.0.0 - 2024-01-11
44

5-
This release only has naming changes and documentation updates.
5+
This is a major update to Circuits.GPIO that modernizes the API, restricts usage
6+
to Nerves and Linux, and updates the Linux/Nerves backend to the Linux GPIO cdev
7+
interface.
68

7-
* Changes
8-
* Rename `t:gpio_info/0` to `t:identifiers/0`, `t:gpio_status/0` to `t:status/0`
9-
and `info/1` to `backend_info/1`. This hopefully removes confusion between
10-
the 3 informational types and functions.
11-
12-
## v2.0.0-pre.5 - 2024-1-8
13-
14-
* Changes
15-
* `t:gpio_info/0` now only contains static information so that it's easier to
16-
cache. Caching reduces open time from 2-3ms to 100us on an RPi Zero, so it's
17-
a decent improvement for apps that set a lot of GPIOs on boot.
18-
* Add `t:status/0` and `status/1` to get runtime information about
19-
GPIOs. It's currently populated with GPIO consumer info, direction and pull
20-
mode. It could certainly have more added in the future.
21-
* Add `write_one/3` and `read_one/2` convenience methods to simplify one-off
22-
and IEx prompt usage. These open and close GPIO references behind the scenes
23-
and reduce the code that you need to write to avoid exclusively holding on
24-
to references.
25-
* Make all error returns consistent. If an unknown errno is caught, its value
26-
is returned so that a better error message can be added.
27-
* Demote the `Circuits.GPIO.Info` struct to just a map so that backends can
28-
add additional informational fields. The type to use is `t:gpio_info/0`.
29-
* Various bug fixes and code cleanup
30-
31-
## v2.0.0-pre.4 - 2024-1-5
32-
33-
This release is looking really close to the final prerelease. Please provide
34-
feedback soon if there are issues.
9+
It is mostly backwards compatible with Circuits.GPIO v1. Please see `PORTING.md`
10+
for upgrade instructions.
3511

36-
* Changes
37-
* Add `Circuits.GPIO.gpio_spec?/1` and `Circuits.GPIO.is_gpio_spec/1` to
38-
support sanity checking GPIOs when parsing config options in user code.
39-
* Documentation updates
40-
41-
## v2.0.0-pre.3 - 2024-1-1
42-
43-
* Changes
44-
* Add Circuits.GPIO.line_info/2 to simplify getting information about a GPIO
45-
* Add consumer information to the line information and change the label to
46-
just be the label rather than a tuple that contains the controller. This
47-
matches better to what would normally be passed to `Circuits.GPIO.open/3`
48-
* Add more information to the diagnostics report to simplify debugging
49-
* Add a read performance measurement to the diagnostics report
50-
51-
## v2.0.0-pre.2 - 2023-12-30
52-
53-
* Changes
54-
* Fix Beaglebone workaround issues
55-
* Add Circuits.GPIO version to diagnostics and simplify
12+
* New features
13+
* Support alternative backends for different operating systems or for
14+
simulated hardware. The Linux cdev backend can be compiled out.
5615

57-
## v2.0.0-pre.1 - 2023-12-29
16+
* `Circuits.GPIO.open/3` is much more flexible in how GPIOs are identified.
17+
Specifying GPIOs by number still works, but it's now possible to specify
18+
GPIOs by string labels and by tuples that contain the GPIO controller name
19+
and index. See `t:gpio_spec/0` and the `README.md` for details.
5820

59-
This is a major update over pre.0 that has a significant upgrade to the backend
60-
for Nerves and Linux users.
21+
* List out available GPIOs with `Circuits.GPIO.enumerate/0`. Other helper
22+
functions are available for getting more information about each GPIO too.
6123

62-
* Changes
63-
* Replace the Linux sysfs backend with one that uses the Linux cdev interface
64-
* Add workaround for reordering of GPIO controllers on Beaglebones with Linux
65-
5.15 and later.
66-
* Add `Circuits.GPIO.Diagnostics` to simplify testing runtime capabilities
67-
* Support pull modes on all targets that support them instead of only
68-
Raspberry Pis
69-
* Many documentation updates
24+
* Specify pull modes in general rather than only Raspberry Pis on Linux and
25+
Nerves
7026

71-
## v2.0.0-pre.0 - 2023-05-30
27+
* Easily do one-off reads and writes with `Circuits.GPIO.read_one/2` and
28+
`Circuits.GPIO.write_one/3`
7229

73-
This is a major update to Circuits.GPIO that removes the requirement to use
74-
Nerves or Linux. The API is almost the same and the default is to compile and
75-
use the Linux backend, so changes may not be needed.
30+
* Improved performance on Nerves and Linux; kernel-applied timestamping of
31+
GPIO input events
7632

77-
This is a prerelease so APIs may still change before the v2.0.0 release.
33+
* Add `Circuits.GPIO.Diagnostics` to automate runtime testing
7834

7935
* Changes
80-
* Support alternative backends for different operating systems or for
81-
simulated hardware
82-
* Defer loading the Linux NIF until `Circuits.GPIO.open/2` is called
36+
* More consistent error returns. Unexpected errors return `{:errno, value}`
37+
tuples to help correlate errors to low level docs
38+
* Deferred loading of the NIF to simplify debugging of GPIO backends.
39+
Segfaults crash on first use of `Circuits.GPIO` rather than on load.
8340

8441
## v1.1.0 - 2022-12-31
8542

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule Circuits.GPIO.MixProject do
22
use Mix.Project
33

4-
@version "2.0.0-pre.6"
4+
@version "2.0.0"
55
@description "Use GPIOs in Elixir"
66
@source_url "https://github.com/elixir-circuits/circuits_gpio"
77

0 commit comments

Comments
 (0)