Version 3.1.0 is released!
This is a feature and bug fix update.
Version 3.0.0 is released!
This is a breaking changes major version bump, refactoring many APIs based on the learnings made in the past year, acquired hindsight by fine tuning drivers and feedback from users.
We do not take breaking users lightly!
Every single breaking change was done thoughtfully. We consider users have the right for an explanation why their time is spent on this, so this document lists the rationale for every single breaking change.
Version 2.3.0 is released!
This is a feature and user improvement update with new packages in preparation
for v3. This is the last v2 release (for real!). As of now, the
v3 branch has
been merged into
master so if you
go get periph, you will get the v3
changes, not v2.3.0.
Periph just gained super powers (in the literal sense) to enable increasing or decreasing the power push on the GPIO pads. This will be available in the next release.
There are 2 output functions that can adjusted:
The broadcom processor has flags to configure the physical properties of the GPIO pads. periph’s bcm283x driver now expose a function to configure these. The driver also gained the ability to disable input hysteresis but this is for another post.
The program (attached at the end of this post) runs 4 pulses in 4 different GPIO pad configurations:
The default is 8mA with slew unlimited.
This screenshot was taken without any load, e.g. nothing connected to the pins except the oscilloscope itself:
Version 2.2.0 is released!
This is a polish and features update. I know a v3 was promised but we decided to punt on breaking changes since there was too much great stuff to bake into the v2 branch.
The challenge is that first, I’m cheap, and second, I needed it to run tests on my Raspberry Pis, macOS and Windows machines without any maintenance, both before and after accepting PRs.
On one Sunday afternoon in November 2016, I hacked up what eventually became gohci.
Have you found incoherences in the APIs? Does an interface-specific registry needs refactoring or is hard to use? Is a device driver missing options? We are now planning v3 to polish the APIs. This is a major release which will permit small breaking changes, as defined by the compatibility guarantee.
Now is the time to report these issues and voice your opinion! Please file a bug or reach out on #periph on the Gophers slack. You can find the slack invite on the top right of this page.
It is slated for around Q1 of 2018. It is not an hard date, we will release once we feel we reached the desired polish level. You can view the currently slated changes via the API breaking label.
One of the key design goal of periph.io is to be as fast as possible while exposing a simple API. For GPIO pins, this means having reliable low latency in the happy path.
In this article, we’ll describe how we:
Are we fast yet?
Version 2.1.0 is released!
This is a polish, features and performance update. It includes a 25x (!) GPIO performance improvements, a nice slew of new features and no breaking change.
Version 2.0.0 is released! It is a major version bump because it contains breaking changes that may require user code changes.
The idea of the project came up in early 2016 as I
(Marc-Antoine) was working on a work-in-progress
(WIP) project named dlibox but only in the
summer of 2016 I saw that there was real value into making the Hardware
Abstraction Layer (HAL) a real project. The working name of the project was
pio but everyone agreed it was a bad name. :)