[Libwebsockets] v4.1.0-rc1

Andy Green andy at warmcat.com
Mon Jul 13 16:34:59 CEST 2020

Hi -

In an effort to get a better .0 release I thought I would try something 
new this time, there's a v4.1.0-rc1 tagged out.

There's still some minor changes expected in the next week or so but 
this should broadly be what v4.1.0 will look like.  The changelog

  - NEW: travis / appveyor / bintray are replaced by Sai
    https://libwebsockets.org/sai/ which for lws currently does 167 
builds per
    git push on 16 platforms, all self-hosted.  The homebrew bash 
scripts used
    to select Minimal examples are replaced by CTest.  Platforms currently
    include Fedora/AMD/GCC, Windows/AMD/mingw32, Windows/AMD/mingw64, 
    aarch64/LLVM, esp-idf (on WROVER-KIT and HELTEC physical boards), 
    RISCV (on QEMU)/GCC, CentOS8/AMD/GCC, Gentoo/AMD/GCC, Bionic/AMD/GCC,
    Linkit 7697, Focal/AMD/GCC, Windows (on QEMU)/AMD/MSVC,
    Focal/aarch64-RPI4/GCC, iOS/aarch64/LLVM and OSX/AMD/LLVM.

  - NEW: The single CMakeLists.txt has been refactored and modernized 
into smaller
  CMakeLists.txt in the subdirectory along with the code that is being 
  for build by it.  Build options are still listed in the top level as 
  but the new way is much more maintainable.

  - NEW: Captive Portal Detection.  Lws can determine if the active default
  route is able to connect to the internet, or is in a captive portal type
  situation, by trying to connect to a remote server that will respond in an
  usual way, like provide a 204.

  - NEW: Secure streams: Support system trust store if it exists
                         Build on Windows
                         Support lws raw socket protocol in SS
                         Support Unix Domain Socket transport

  - NEW: Windows: Support Unix Domain Sockets same as other platforms

  - NEW: Windows: Build using native pthreads, async dns, ipv6 on MSVC

  - NEW: lws_struct: BLOB support

  - NEW: lws_sul: Now provides two sorted timer domains, a default one as
  before, and another whose scheduled events are capable to wake the 
system from suspend

  - NEW: System Message Distribution: lws_smd provides a very 
lightweight way
  to pass short messages between subsystems both in RTOS type case where the
  subsystems are all on the lws event loop, and in the case participants 
are in
  different processes, using Secure Streams proxying.   Participants 
register a bitmap
  of message classes they care about; if no particpant cares about a 
particular message,
  it is rejected at allocation time for the sender, making it cheap to 
provide messages
  speculatively.  See lib/system/smd/README.md for full details.

  - NEW: lws_drivers: wrappers for SDK driver abstractions (or actual 
                  See lib/drivers/README.md, example implementations
                      - generic gpio
                      - generic LED (by name)    lib/drivers/led/README.md
                      - generic PWM, sophisticated interpolated table
                                     sequencers with crossfade
                      - generic button (by name), with debounce and 
press classification
                                        emitting rich SMD click, 
long-click, double-click,
                                        down, repeat, up JSON messages
                      - bitbang i2c on generic gpio (hw support can use same
                                        abstract API)
                      - bitbang spi on generic gpio (hw support can use same
                                        abstract API)
                      - generic display object, can be wired up to 
                                   drivers that hook up by generic i2c 
or spi,
                                   generic backlight PWM sequencing and
                                   blanking timer support
                      - generic settings storage: get and set blobs by name
                      - generic network device: netdev abstract class with
                                                WIFI / Ethernet 
                                                using underlying SDK APIs;
                                                generic 80211 Scan 
                                                and credentials handling via
                      This is the new way to provide embedded platform
                      functionality that was in the past done like

  - NEW: Security-aware JWS JWT (JSON Web Tokens) apis are provided on 
top of the existing
  JOSE / JWS apis.  All the common algorithms are available along with some
  high level apis like lws http cookie -> JWT struct -> lws http cookie.

  - REMOVED: esp32-helper and friends used by esp32-factory

  - REMOVED: generic sessions and friends now JWT is provided


covers the major things but there are 216 patches fixing bugs and 
hopefully generally improving things.

You can get it

$ git clone https://libwebsockets.org/repo/libwebsockets


$ git clone https://github.com/warmcat/libwebsockets


$ git checkout refs/tags/v4.1.0-rc1

If you care about released version quality for your purposes, please 
take a few minutes to try this out and report problems that are coming 
so they can get looked at in the next days.

Since v4.0 the SaaS CI is replaced with self-hosted Sai and testing 
using CTest, even on Windows and esp32 physical platforms now.  But it's 
no substitute for users kicking the tires.


More information about the Libwebsockets mailing list