Periph 2.0.0 released

New version of Golang standalone library with breaking changes available now
29 August 2017   879

New major version 2.0.0 of Periph had been released.

What's Periph? is a standalone library with no external dependency to interface with low-level board facilities exposed by the OS or leveraged against OS’ will. It can be viewed as a lower level layer than Gobot, and yes we’re discussing to collaborate in the future!


  • No external dependencies
  • No C dependency, doesn’t use cgo
  • Explicit initialization: know what hardware is detected and what is not
  • Interfaces:
    • GPIO: both memory mapped registers and edge detection
    • I²C
    • SPI
    • 1-wire
  • Devices:
    • Output: apa102, ssd1306, tm1637
    • Sensing: bme280, bmp180, ds18b20, ir, lepton
    • Interfacing: ds248x
  • Continuously tested via gohci on:
    • BeagleBone
    • C.H.I.P.
    • ODROID-C1+
    • Raspberry Pi
    • Windows 10 VM
  • SemVer compatibility guarantee
    • Major version change (v1.0 to v2.0) may introduce breaking changes.
    • Minor version change (v1.1 to v1.2) will be backward compatible.
    • master may contain breaking changes, use dep.

What's new in version 2.0.0?

Main changes:

As part of periph’s compatibility guarantee, breaking changes can only occur on major version bump.

  • conn/gpio/gpioreg: Removed ByNumber().
  • conn/spi: Renamed Port.DevParams() to Connect() to better convey that a connected Port becomes a Conn.
  • devices: Device doesn’t embed fmt.Stringer anymore. Display and Environmental now embed Device.
  • devices/bme280: renamed to devices/bmxx80, now supporting all three of BMP180/BME280/BMP280.
  • host/pmem: Renamed Mem.Struct() to AsPOD() and made it support array and slices.

New features:

This release brings a whole set of new features:

  • conn: Added documentation about the concepts: Bus, Port and Conn.
  • conn/pin/pinreg: when mapping a physical board header via pinreg.Register(), any pin.Pin that also implementsgpio.PinIO are now automatically aliased as <board>_<pin number> in the GPIO registry conn/gpio/gpioreg.
  • devices: Added Environmental.SenseContinuous().
  • cmd/ssd1306 and devices/ssd1306: Removed dependency on… in both the command and in the device driver’s tests, making periph a library that depends only on pure stdlib, even for the executables in cmd/.
  • Added travis check to never allow a non-stdlib dependency ever again.
  • Various minor improvements: documentation, typos, better golint and go vet compliance, code coverage increase.

Learn more at official website.

NGINX to Release Unit 1.3 Beta

Developers expanded the ability to run web applications in Python, PHP, Perl, Ruby and Go
16 July 2018   110

In open access, a beta version of the NGINX Unit 1.3 application server was released. Developers continued to expand the ability to run web applications in Python, PHP, Perl, Ruby and Go. The project code is written in C and is distributed under the Apache 2.0 license.


Version 1.3 eliminates the problems with handling errors when installing HTTP connections.

Among other changes:

  • parameter max_body_size to limit the size of the body of the request;
  • new parameters for setting timeouts when setting up an HTTP connection:
         "settings": {
              "http": {
                  "header_read_timeout": 30,
                  "body_read_timeout": 30,
                  "send_timeout": 30,
                  "idle_timeout": 180,
                  "max_body_size": 8388608
  • automatic use of the Bundler where possible in the Ruby module;
  • http.Flusher interface in the module for the Go language;
  • The possibility of using characters in the UTF-8 encoding in the request headers.

The first version of the NGINX 1.1 application server was released in mid-April 2018. Under the control of NGINX Unit, several applications can be executed simultaneously in different programming languages, the startup parameters of which can be changed dynamically without the need to edit the configuration files and restart.