View Source Changelog

v2.0.4 - 2024-09-08

Only Elixir 1.13 and later are supported now. There are no known issues with using earlier versions at the moment, but it's no longer regularly checked in CI.

  • Bug fixes
    • Fix compilation when Erlang has been installed to a directory with spaces

v2.0.3 - 2024-04-20

  • Improvements
    • Improve target detection so that setting MIX_TARGET when not crosscompiling does the expected thing on MacOS.
    • Explain lsb-first-related error message on some devices. @mnishiguchi

v2.0.2 - 2024-01-15

  • Bug fixes
    • Remove lazy NIF loading. There's an unexplained segfault in a small example program that uses the same strategy. Even though it wasn't reproduceable here, it's not worth the risk. Thanks to @pojiro for investigating.

v2.0.1 - 2024-01-14

  • Changes
    • Fix race condition when multiple processes load the NIF simultaneously that would cause an unnecessary crash.

v2.0.0 - 2023-11-12

Official v2.0.0 release. No changes from v2.0.0-pre.0.

v2.0.0-pre.0 - 2023-05-30

This is a major update to Circuits.SPI that removes the requirement to use Nerves or Linux. The API is almost the same and the default is to compile and use the Linux backend, so changes may not be needed.

This is a prerelease so APIs may still change before the v2.0.0 release.

  • Changes
    • Support alternative backends for different operating systems or for simulated hardware
    • Defer loading the Linux NIF until Circuits.SPI.open/2 is called

v1.4.0 - 2022-12-31

  • Changes
    • Remove Erlang convenience functions since no one used them
    • Require Elixir 1.10 or later. Previous versions probably work, but won't be supported. This opens up the possibility of using Elixir 1.10+ features in future releases.

v1.3.0 - 2022-02-21

  • Updates
    • Add transfer!/2. This function is the raising version of transfer/2. Thanks to @mnishiguchi for this.

v1.2.0 - 2022-01-23

  • Updates
    • Add the :lsb_first option to support SPI transfers that send the least significant bit first rather than the most significant one. If the bit reversal isn't supported by the hardware, a software version is used.
    • Add config/1 to return the configuration for an SPI bus reference. This is useful for checking what is actually being used.
    • Update transfer/2 to support iodata. This makes the interface more convenient since now you can prepend SPI message headers in your code without having to concatenate binaries.
    • Support full pathes being passed to SPI devices in open/2. Previously this resulted in errors, but it was easy to forget.

v1.1.0 - 2021-12-28

  • Updates

    • Add max_transfer_size/0 to return the low level maximum size that can be sent at a time. Thanks to @cocoa-xu for this.
  • Bug fixes

    • Properly mark NIF transfer function as IO bound so that the Erlang scheduler schedules it properly.

v1.0.0 - 2021-10-20

This release only changes the version number. No code has changed.

v0.1.6

This release only has doc and build output cleanup. No code has changed.

v0.1.5

  • Bug fixes
    • Add -fPIC to compilation flags to fix build with nerves_system_x86_64 and other environments using the Musl C toolchains

v0.1.4

This release doesn't functionally change any code. The only updates are to build files for consistency with other Circuits projects.

v0.1.3

  • Bug fixes
    • Fix binary handling in NIF. This fixes segfaults and other errors on Raspbian.

v0.1.2

  • Bug fixes
    • Fix file handle leak when SPI bus references were garbage collected.

v0.1.1

  • Bug fixes
    • Build C source under the _build directory so that changing targets properly rebuilds the C code as well as the Elixir code.

v0.1.0

Initial release to hex.