[Libwebsockets] lws v4.0 released
Andy Green
andy at warmcat.com
Fri Mar 6 12:27:49 CET 2020
Hi -
v4.0.0 is tagged out and v4.0-stable created.
https://libwebsockets.org/git/libwebsockets/tree?h=v4.0-stable
Master has been under MIT license for several months, but this is the
first stable release under MIT.
There's a number of new features and improvements as listed in the
changelog, some of them are pretty cool:
v4.0.0
======
- NEW: Lws is now under the MIT license, see ./LICENSE for details
- NEW: GLIB native event loop support, lws + gtk example
- NEW: native lws MQTT client... supports client stream binding like
h2 when
multiple logical connections are going to the same endpoint over
MQTT, they
transparently and independently share the one connection + tls tunnel
- NEW: "Secure Streams"... if you are making a device with client
connections
to the internet or cloud, this allows separation of the communications
policy (endpoints, tls cert validation, protocols, etc) from the
code, with
the goal you can combine streams, change protocols and cloud
provision, and
reflect that in the device's JSON policy document without having to
change
any code.
- NEW: lws_system: New lightweight and efficient Asynchronous DNS resolver
implementation for both A and AAAA records, supports recursive (without
recursion in code) lookups, caching, and getaddrinfo() compatible
results
scheme (from cache directly without per-consumer allocation). Able to
perform DNS lookups without introducing latency in the event loop.
- NEW: lws_system: ntpclient implementation with interface for setting
system
time via lws_system ops
- NEW: lws_system: dhcpclient implementation
- NEW: Connection validity tracking, autoproduce PING/PONG for
protocols that
support it if not informed that the connection has passed data in both
directions recently enough
- NEW: lws_retry: standardized exponential backoff and retry timing based
around backoff table and lws_sul
- NEW: there are official public helpers for unaligned
de/serialization of all
common types, see eh, lws_ser_wu16be() in
include/libwebsockets/lws-misc.h
- NEW: lws_tls_client_vhost_extra_cert_mem() api allows attaching
extra certs
to a client vhost from DER in memory
- NEW: lws_system: generic blobs support passing auth tokens,
per-connection
client certs etc from platform into lws
- NEW: public helpers to consume and produce ipv4/6 addresses in a
clean way,
along with lws_sockaddr46 type now public. See eg, lws_sockaddr46-based
lws_sa46_parse_numeric_address(), lws_write_numeric_address()
in include/libwebsockets/lws-network-helper.h
- Improved client redirect handling, h2 compatibility
- NEW: lwsac: additional features for constant folding support
(strings that
already are in the lwsac can be pointed to without copying again),
backfill
(look for gaps in previous chunks that could take a new use size), and
lwsac_extend() so last use() can attempt to use more unallocated
chunk space
- NEW: lws_humanize: apis for reporting scalar quanties like 1234 as
"1.234KB"
with the scaled symbol strings passed in by caller
- NEW: freertos: support lws_cancel_service() by using UDP pair bound
to lo,
since it doesn't have logical pipes
- NEW: "esp32" plat, which implemented freertos plat compatibility on
esp32, is
renamed to "freertos" plat, targeting esp32 and other freertos platforms
- NEW: base64 has an additional api supporting stateful decode, where
the input
is not all in the same place at the same time and can be processed
incrementally
- NEW: lws ws proxy: support RFC8441
- NEW: lws_spawn_piped apis: generic support for vforking a process
with child
wsis attached to its stdin, stdout and stderr via pipes. When
processes are
reaped, a specified callback is triggered. Currently Linux + OSX.
- NEW: lws_fsmount apis: Linux-only overlayfs mount and unmount
management for
aggregating read-only layers with disposable, changeable upper layer fs
- Improvements for RTOS / small build case bring the footprint of lws
v4 below
that of v3.1 on ARM
- lws_tokenize: flag specifying # should mark rest of line as comment
- NEW: minimal example for integrating libasound / alsa via raw file
- lws_struct: sqlite and json / lejp translation now usable
libwebsockets.org and warmcat.com serve entirely from lws and dogfood
master lws all the time, they're also running v4.0.0 at the moment.
-Andy
More information about the Libwebsockets
mailing list