Releases: SmingHub/Sming
v3.6.1
This is a minor release containing fixes, new features and coding style rules.
Coding Style Rules
- This is the first version in which we started forcing our coding style rules. The coding style rules are applied to the
SmingCore
andsamples
directories and their sub-directories. The coding style rules useclang-format
to automate the process. You should format your code changes before submitting a PR. This can be done, after installing theclang-format
application, with the command
cd $SMING_HOME
make cs
More information about the coding style and ways to integrate automatic fixes in your Eclipse IDE can be found in our Wiki page.
Features
- Added support for the DFPlayerMini ( #1408 )
Bug fixes and small improvements
- Fix to the SmtpClient default port allocation (#1409).
- Fix to the MqttClient and the allowed schemas in the connection URL (#1410).
- Removed unused or deprecated code. DrivePWM is no longer in the code. Use HardwarePWM instead. (#1423).
Automation
- Added automatic check for coding style rules
- Added automatic generation of chocolatey packages on new release (#1406).
All PRs merged in this release can be seen from here
For a complete list of changes run the following command:
git log 3.6.0..3.6.1.2
Thanks to everyone who helped us make this release happen.
v3.6.0
This is a major release containing fixes, new features and backwards-incompatible changes
Features
-
SmtpClient (#1380)
A powerful asynchronous smtp client that allows sending emails directly from ESP8266.- support for authentication (PLAIN and CRAM-MD5)
- support for faster transfer via PIPELINING
- support for attachments ( as much and as big as the remote server allows)
- support for UTF-8 text encoding
- support for sending multiple emails using the same TCP connection
- support for connection over SSL and support for STARTTLS (needs Sming to be compiled with ENABLE_SSL=1 )
-
MqttClient: changing server and port setting can be done in runtime (#1390)
-
Added support for Nextion displays. (#1389)
-
Added open collective badge and information for financial contributions. (#1398)
-
Added support for lambdas in the Timer class (#1378)
Using C++11 std::function and std::bind -
Added support for POST params and file upload via POST in the HttpClient. (#1381)
-
Exposed the remote port and ip for the connections. (#1370)
Changes
-
Improvements to the InfraRed libraries (#1318)
- Added RingBufCPP library from Aaron Wisner
- Updated IR lib sample
- Fixed sign problem with JVC send when time elapsed is bigger than JVC_RPT_LENGTH - JVC_MIN_GAP
- Reduced timer for IR sample application
- Updated IRremoteESP8266 library to latest version
-
Replaced DHT library with DHTesp. Updated the samples accordingly. (#1341)
-
Improved design for the HttpConnection. (#1386)
- (Before) By default the HttpConnection was storing all data coming back from the server. Meaning that a response body bigger than 30K will crash for sure the device.
- (Now) By default the HttpConnection stores the first 1024 bytes. Thus by default the device will not crash with big response body.
If a developer wants to use the httpclient and store more than 1024 bytes from the response, then he/she can set the response stream to be MemoryStream.
Ex: request.setResponseStream(new MemoryStream());
-
Refactored the streams (#1377)
- Moved the streams from SmingCore/Network/Http/Stream to SmingCore/Data/Stream. They will be used also in the coming SmtpClient.
- Unified the stream transformation code and added it to StreamTransformer.
- Removed deprecated method name from CircularBuffer.
- Moved common data structures from HttpCommon.h to SmingCore/Data/Structures.h
- Moved DataSourceStream, CircularBuffer and OutputStream to SmingCore/Data.
- Added username and password processing in the URL.
-
Refactored SSL validators (#1379)
- Allow creating fingerprint chain.
- Allow multiple fingerprints from the same type to be in the chain. For example public key hash and a backup public key hash for the backup private key.
- Move the fingerprinting to the TcpClient.
- Unify the private key / certificate setting for both TcpClient and TcpServer.
Migration from v. 3.5.2 or earlier
Those changes will affect your code ONLY if you use DIRECTLY in your application the following classes.
-
HttpMultipartStream
*HttpMultipartStream
is renamed toMultipartStream
*SmingCore/Network/Http/Stream/HttpMultipartStream.h
is moved toSmingCore/Data/Stream/MultipartStream.h
-
HttpChunkedStream.h
*HttpChunkedStream
is renamed toChunkedStream
*SmingCore/Network/Http/Stream/HttpChunkedStream
is moved toSmingCore/Data/Stream/ChunkedStream.h
-
DataSourceStream.h and OutputStream.h are now located in
SmingCore/Data/Stream/
.- CircularBuffer.h is moved to
SmingCore/Data/
. - URL - if you use protocol different than HTTP then the default port will be set to 0. In the previous versions the default port was always 80, no matter what the URL protocol was.
- CircularBuffer.h is moved to
-
The deprecated
TcpConnection::setSslFingerprint
is removed. UseTcpClient::pinCertificate
instead. -
TcpConnection::setSslClientKeyCert
is deprecated. UseTcpConnection::setSslKeyCert
instead. It can be used on a server to set the server certificate used for encryption, or on a client to set a client certificate used for authentication.- All SSL fingerprinting is moved to the TcpClient as it is relevant only for the client SSL connections.
- Calling multiple times
TcpClient::pinCertificate
will add multiple SSL validators. This is quite useful if you have one private key, that is currently used on the server, and another backup key, just in case the previous key gets compromised. In that case one can do the following:
MqttClient mqttClient; // ... mqttClient.pinCertificate(fingerprintPublicKeyCurrent, eSFT_PkSha256); // first fingeprint mqttClient.pinCertificate(fingerprintPublicKeyEmergencyBackup, eSFT_PkSha256); // second fingerprint
In the example above the first fingerprint will be checked. If it is valid no further checks will be done. If the first one fails then the next will be validated. If none of the fingerprints was valid then the connection will be rejected.
Fixes
All PRs merged in this release can be seen from here
For a complete list of changes run the following command:
git log 3.5.2..3.6.0
Thanks to everyone who helped us make this release happen.
v3.5.2
This is a minor release containing:
- Updated version of the third-party http_parser.
- Updated version of the third-party PWM library.
- Small memory fixes.
- Initial introduction and usage of C++11
std::function
that will eventually replace Delegates.
All PRs scheduled for this release can be seen from here
For a complete list of changes run the following command:
git log 3.5.1..3.5.2
Thanks to everyone who helped us make this release happen.
v3.5.1
Sming v3.5.1 is here. With this minor version you will have more free heap memory at your disposal and less bugs.
Some of the changes in this release:
- Unified the stream classes for better testability and reusability. (#1332) The
length()
method in the DataSourceStream classes is deprecated - MacOS compatibility issues. (#1316)
- Memory Optimization: Moved C++ vtables into IRAM, out of HEAP. In some cases increased the free heap with 3K. (#1320)
- Updated axTLS to its latest version and increased available free heap (#1329).
- Decreased the default debug messages in the network layer (#1327) as part of our effort to provide better out-of-the-box experience (#1328)
- Reorganization: Moved the tools under tools/ folder and added esptool2 as submodule as part of the better experience.
- Fix: Added linker flags to allow the use of custom crash handlers in the user code. (#1326)
- Small fix to the FreeBSD make mechanism.
- HardwareSerial: Fix for zero availableCharsCount in callback ... (#1307)
- Adds Cygwin32 build support (#1306)
- Modified libemqtt & MqttClient to allow the publishing of binary messages (#1300)
All PRs scheduled for this release can be seen from here
For a complete list of changes run the following command:
git log 3.5.0..3.5.1
Thanks to everyone who helped us make this release happen.
v3.5.0
Santa came earlier this year and we are ready with the new v3.5.0 release!
In it you will find the following new features and improvements
- Fixed
spiffs_mount
to work with rBoot(#1292) - Added method to shutdown a TcpServer (#1272).
- Added Adafruit_BME280 Library and Adafruit_Sensor support (#1286).
- Improved websocket ping and pong commands (#1270).
- Added experimental support for SDK 2.1 (#1264).
- Added experimental support for LWIP2 (#1289)
- Fixed memory leaks in the MQTT client and SSL handling.
All PRs that made it in this release can be found here:
https://github.com/SmingHub/Sming/milestone/13.
For a complete list of changes run the following command:
git log 3.4.0..3.5.0
Thanks to everyone who helped us make this release happen and especially to our first-time contributors!
You are awesome!
v3.4.0
This release contains major changes related to better compatibility with Arduino.
Changes
- Arduino compatibility improvements (#1213).
- Library code for some Arduino libraries comes directly from their source repositories (Adafruit_ST7735, Adafruit_SSD1306).
- Added dynamic recalculation of image offsets to prevent rom overlapping (#1208).
- Added Wi-Fi Protected Setup (WPS) support (#1199).
- Ram savings in axTLS (#1255).
- Simplified and improved Http Client and Http Server stream handling (#1247).
- Fixed Memory Leak in Mqtt (#1273).
- Updated Spiffs code to version 0.3.7 + fixes (##1246).
And much more. All merged PRs in this release can be seen from here
Backwards-incompatible changes
- Changed the order of Wire.begin and Wire.pins parameters to match the Arduino order (#1193).
For a complete list of changes run the following command:
git log 3.3.0..3.4.0
Thanks to everyone who helped us make this release happen.
v3.3.0
This release contains major changes related to Tcp stack, HTTP client and servers and Websocket processing.
Major Changes
- Refactored HttpClient and HttpServer. See details (#1112).
- Support for SSL session resumption in TcpConnection and TcpServer.
- Custom PWM is enabled by default.
- Multiple fixes to issues reported from Codacy's Vera++ and CppCheck reports.
And much more. All merged PRs in this release can be seen from here
Backwards-incompatible changes
- Removed deprecated Station::waitConnection. If you need to migrate see how to use WifiEvents instead
- WebSocket is renamed to WebSocketConnection to reflect better its meaning and intended use.
- Removed the tightly coupled websocket methods inside the HttpServer. You can use WebSocketResource and add it to the HttpServer resource tree to achieve the same results.
- Moved writeInit(), writeFlash(const u8 *data, u16 size) and writeEnd() methods from rBootHttpUpdate to rBootItemOutputStream.
- TemplateFileStream::setVarsFromRequest needs to be refactored completely. The current code couples TemplateFileStream to HttpRequest, which is too restrictive. TemplateFileStream::setVars method should be introduced that accepts HashMap<String,String>
- HttpRequest::getRequestMethod() is removed. Use HttpRequest::method instead.
- CommandExecutor with WebsocketConnection won't work.
For a complete list of changes run the following command:
git log 3.2.0..3.3.0
Thanks to everyone who helped us in this new release.
Release Candidate 2 for version 3.3.0.
This version includes:
- Optimizations to the Tcp stack.
- Improvements to the HttpServer connection handling.
- Fixes to the Websocket frame processing.
If there are no show-stoppers then this version will be the last RC version.
For a complete list of changes between RC1 and RC2 run the following command:
git log 3.3.0-rc1..3.3.0-rc2
Release Candidate 1 for version 3.3.0.
This version includes:
- Refactored HttpClient and HttpServer
- Support for SSL session resumption in TcpConnection and TcpServer.
- Removed deprecated Station::waitConnection.
- Custom PWM is enabled by default.
- Multiple fixes to issues reported from Codacy's Vera++ and CppCheck reports.
v3.2.0
This is a clean-up release.
Some of the main changes include
Clean-up
- Removed all code related to the Espressif bootloader. You should use rBoot as bootloader.
- Deprecated WifiStation::waitConnect (#1071, #1072). WifiStation::waitConnect will be removed in the next version and replaced with WifiEvents.
- Deprecated DriverPWM( aka Software PWM).
New features and fixes
- Improved SSL fingerprinting - added code that allows checking the fingerprint of a public key. Useful in cases where the private key is reused for certificates over longer period of time. (#1034)
- Added asynchronous AT command client ( to communicate with GSM/GPRS modules that use AT commands) (#1033)
- Switched to i2c HAL and Wire libraries from the esp8266/Arduino project. (#1061)
- Added NFC support (#1049)
- Fixed SPI mode issues (#1083)
And multiple bug fixes to the code and the documentation.
All merged PRs in this release can be seen from here
For a complete list of changes run the following command:
git log 3.1.2..3.2.0
And last but not least this release would have been possible without the help of our fantastic contributors and community members. This time we give our special thanks to Jarek Zgoda who helped us clean a lot of old code and improve existing one.