Skip to content

Releases: SmingHub/Sming

v3.7.0 - codename "M"

17 Nov 20:29
Compare
Choose a tag to compare

This is a major release containing new features, fixes and breaking changes. This is a very important new release as it marks the start of polishing the existing components, improving their quality and paving the way for version 4.

This release is codenamed "M" which might stand for Mini, Maxi or @mikee47 - our new top contributor who made a lot of changes in this release that led to substantial list of improvements and more free memory heap for your applications based on Sming Framework.

This release is worth trying! And the next one is promising to be even better :).

Without further ado here are some of the highlights ( full list is here ):

New features

  • Allowed the use of multiple DS18S20 sensors #1440.
  • Experimental support for SDK 3.0 for rBoot apps. #1470
  • Added TM1637 7-segment led display library #1512

Improvements

  • Optimised HashMap to use pass-by-reference where possible. #1455
  • Improved uri escaping / unescaping #1457
  • More free heap due to moving constant data in flash #1438 #1459
  • Improvements to the String class and added support for binary strings #1437. Revised SplitString #1508
  • HttpHeaders #1461 #1463. HttpRequest improvements and HttpParams as a separate module #1498
  • Rewritten flashmem driver to cope with misaligned RAM buffers #1490
  • Upgrades to the serial port driver #1493
  • Various improvements to NtpClient class #1482
  • Updated AxTLS with fixes related to CVE-2018-16150 and CVE-2018-16149 #1506
  • Streaming support for flash data. Changes to FileStream class #1510
  • Fixed Basic_WebSkeletonApp body parsing #1516

Refactoring

  • Stream classes #1488, #1496
  • Refactored TemplateFileStream class using TemplateStream #1500
  • Refactored websocket client and server #1514
  • Refactored http connections for better code reuse #1515

Deprecations

  • As per our poll results: Deprecate non-rBoot apps #1513
  • Hardware_Timer is deprecated. You should use HardwareTimer instead
  • HttpResponse::hasHeader() - this method is deprecated since quite some time and will be removed in the next version.

Breaking Changes

  • SystemClock::now() returns time_t instead of DateTime.

If you use Websocket functionality make sure to read the notes below.

  • Renamed Websocket related types, classes and methods. We used to have WebSocket and Websocket. From now on only Websocket will be used. Example WebsocketConnection::getActiveWebSockets is now WebsocketConnection::getActiveWebsockets.

  • WebsocketConnection
    Renamed the method making the binding to a http server socket to be called bind.

  • WebsocketClient
    All methods starting with setWebSocket are shortened to set. Example: setWebSocketMessageHandler is renamed to setMessageHandler.

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.1.2..3.7.0

Thanks to everyone who helped us make this release happen and especially to @mikee47 for working so hard on multiple improvements and bug fixes!

v3.6.1

06 Aug 09:53
Compare
Choose a tag to compare

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 and samples directories and their sub-directories. The coding style rules use clang-format to automate the process. You should format your code changes before submitting a PR. This can be done, after installing the clang-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

15 Jun 08:16
Compare
Choose a tag to compare

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 to MultipartStream
    * SmingCore/Network/Http/Stream/HttpMultipartStream.h is moved to SmingCore/Data/Stream/MultipartStream.h

  • HttpChunkedStream.h
    * HttpChunkedStream is renamed to ChunkedStream
    * SmingCore/Network/Http/Stream/HttpChunkedStream is moved to SmingCore/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.
  • The deprecated TcpConnection::setSslFingerprint is removed. Use TcpClient::pinCertificate instead.

  • TcpConnection::setSslClientKeyCert is deprecated. Use TcpConnection::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

  • Fixes to the postParams unescaping (#1402)
  • Fixes to the IR Library. (#1373)

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

02 May 08:38
Compare
Choose a tag to compare

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

05 Mar 16:37
Compare
Choose a tag to compare

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

08 Dec 15:34
Compare
Choose a tag to compare

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

06 Nov 13:27
Compare
Choose a tag to compare

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

26 Jul 14:12
Compare
Choose a tag to compare

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.

21 Jul 09:26
Compare
Choose a tag to compare
Pre-release

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.

13 Jul 11:37
Compare
Choose a tag to compare
Pre-release

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.