Sming Framework v3.7.0 - codename "M" is officially released

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!

Written on November 18, 2018