Sming Versions Save

Sming - powerful open source framework simplifying the creation of embedded C++ applications.

4.1.0

4 years ago

We are happy to announce Sming version 4.1.0 - a new major release containing new features, improvements and bug fixes. Some of them are listed below:

New features

  • No-WiFi build option #2004 - get more resources if your application is not using WIFI.
  • Multiple SSL adapters based on axTLS and BearSSL. #1999
  • Added basic Crypto support library #2014
  • Updates framework to build using GCC 9.2.0 toolchain for C++17. #1825
  • Modbus master #1992
  • Implemented Small String Optimisation (SSO). #1951
  • Webcam stream and sample webcam web server. #1981
  • Allow HTTP connections to ignore rejected body content #1928

Improvements

  • Some improvements to multipart parser #2007
  • Update ArduinoJson to 6.13.0 #1979
  • Added precaching from Arduino for ESP8266. #1965
  • Add support for 'Expect: 100-continue' in HTTP server. #1931
  • Upgrade to FlashString Library #1974, #2013

Bug fixes

  • Updated mqtt-codec to allow publish messages without payload. #1976
  • HttpConnection freed twice. #1938
  • Hangs at startup when custom heap enabled. #1996
  • Fix issues reported by valgrind #2017

Breaking changes and Migration

All PRs scheduled for this release can be seen from here

For a complete list of changes run the following command:

git log 4.0.0..4.1.0

Thanks to everyone who helped us make this release happen!

4.0.0

4 years ago

This is a major new version of Sming Framework. If your application was based on older version of Sming you should read the migration guide. We also provide 3.8.x LTS version - currently 3.8.1 for those that haven't had the time to upgrade yet. The LTS version will be supported until 1st of April, 2020.

Below you will find an impressive list of new features, improvements and bug-fixes in Sming 4.0.0.

New features

  • Initial support for multiple architectures. At the moment ESP8266 and Host with ESP32 coming soon. ( #1675 )
  • Modular build system ( #1724 ). Beware of changed behaviour when using environmental variables ( #1758 ).
  • Host Emulator (#1692)
  • Added support for both ArduinoJson version 6 and 5 ( #1752 ). The default version is now version 6.
  • New documentation system based on sphinx ( #1766 ). The new documentation is located at https://sming.readthedocs.io/en/latest/.
  • Clock framework and Polled Timers ( #1821 )
  • Integrated libsodium v1.0.18 as a component ( #1797)
  • Added support for time zones and sunrise/sunset calculation #1840
  • File upload support in the HttpServer. #1792
  • I2S driver + Basic Audio sample (#1862).
  • RingTone Player sample plus libraries (#1864).
  • Added support for BME280 and MCP23008 arduino libraries. #1763
  • Initial CAN Bus support. #1646
  • Added malloc_count Component to track heap usage #1743
  • Enforced C11 standard #1695

Improvements

  • WiFi improvements ( #1812, #1802 )
  • Unified Callback Timer API ( #1831 )
  • Updating internal SDK to NON-OS version 3.0.1. ( #1832 )
  • BodyParser improvements. ( #1823, )
  • Fixed Esp8266 partitions, added 8Mbyte and 16Mbyte device support #1800
  • Decreased latency in MqttClient publishing. Latency is less than 1ms. #1761
  • Fixed custom heap #1745
  • Updated servo library and sample (#1870).
  • Updated ArduinoJson6 to current version 12.0 (#1885).
  • Improvements to the tcp connection handling and axTLS.

Breaking Changes

  • For Architecture:Esp8266 only NON-OS SDK version 3.0.1 is officially supported (#1878).

Bug fixes

  • Fixed array bounds issue detected via GCC-8 on Host build #1709
  • Fixed memory leak in MqttClient #1742
  • Fixed UpdServer_Echo. #1775

All PRs that were merged in this release can be seen from here

For a complete list of changes run the following command:

git log 3.8.0..4.0.0

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

3.8.1

4 years ago

Sming version 3.8.1 is a minor update to the previous 3.8.0 version. 3.8.x releases are our Long Term Support (LTS) releases. 3.8.x will be supported until 1st of April, 2020. It is for those who have not had the time to migrate their application to Sming 4.0.0.

This release contains stability improvements and bug fixes. There are no new features. If you want to have the latest and greatest features from our develop branch we highly recommend migrating to Sming 4.0.x due to its major improvements in build system, platform support, performance, security and code quality.

All PRs that were merged in this release can be seen from here For a complete list of changes run the following command:

git log 3.8.0..3.8.1

Thanks to everyone who helped us make this release happen!

4.0.0-rc4

4 years ago

This is the fourth and most probably the last pre-release for the upcoming 4.0.0 version of Sming Framework. It contains mainly improvements and bug-fixes.

Improvements

  • Improved the automatic release process
  • Bugfixes for RELEASE builds
  • Fixing issues reported by Coverity in our Sming/Core code. (#1917, #1916, #1913)
  • Bugfix for using SPIFF in slots other than 0 (#1923).

Deprecations

  • Deprecated DNSServer. Use DnsServer instead. (#1915)

For a complete list of changes run the following command:

git log 4.0.0-rc3..4.0.0-rc4

4.0.0-rc3

4 years ago

This is the third pre-release to prepare you for the upcoming 4.0.0 version of Sming Framework. It contains mainly improvements and bug-fixes.

The biggest change in terms of release deployments is that the code of the submodules will NOT be included in the master repository. An archive of the patched submodules will be attached as an asset to every new release.

For a complete list of changes run the following command:

git log 4.0.0-rc2..4.0.0-rc3

4.0.0-rc2

4 years ago

This is the second pre-release to prepare you for the upcoming 4.0.0 version of Sming Framework. Below you will find a list of new features, improvements and bug-fixes in comparison to version 4.0.0-rc1 .

New features

  • I2S driver + Basic Audio sample (#1862).
  • RingTone Player sample plus libraries (#1864).

Improvements

  • Updated servo library and sample (#1870).
  • Updated ArduinoJson6 to current version 12.0 (#1885).
  • Improvements to the tcp connection handling and axTLS.

Breaking Changes

  • For Architecture:Esp8266 only NON-OS SDK version 3.0.1 is officially supported (#1878).

4.0.0-rc1

4 years ago

This is a pre-release to prepare you for the upcoming 4.0.0 version of Sming Framework. Below you will find an impressive list of new features, improvements and bug-fixes.

New features

  • Initial support for multiple architectures. At the moment ESP8266 and Host with ESP32 coming soon. ( #1675 )
  • Modular build system ( #1724 ). Beware of changed behaviour when using environmental variables ( #1758 ).
  • Host Emulator (#1692)
  • Added support for both ArduinoJson version 6 and 5 ( #1752 ). The default version is now version 6.
  • New documentation system based on sphinx ( #1766 ). The new documentation is located at https://sming.readthedocs.io/en/latest/.
  • Clock framework and Polled Timers ( #1821 )
  • Integrated libsodium v1.0.18 as a component ( #1797)
  • Added support for time zones and sunrise/sunset calculation #1840
  • File upload support in the HttpServer. #1792
  • Added support for BME280 and MCP23008 arduino libraries. #1763
  • Initial CAN Bus support. #1646
  • Added malloc_count Component to track heap usage #1743
  • Enforced C11 standard #1695

Improvements

  • WiFi improvements ( #1812, #1802 )
  • Unified Callback Timer API ( #1831 )
  • Updating internal SDK to NON-OS version 3.0.1. ( #1832 )
  • BodyParser improvements: ( #1823, )
  • Fixed Esp8266 partitions, added 8Mbyte and 16Mbyte device support #1800
  • Decreased latency in MqttClient publishing. Latency is less than 1ms. #1761
  • Fixed custom heap #1745

Bug fixes

  • Fixed array bounds issue detected via GCC-8 on Host build #1709
  • Fixed memory leak in MqttClient #1742
  • Fixed UpdServer_Echo. #1775

All PRs that were merged in this release can be seen from here

3.8.0

5 years ago

We are happy to announce Sming version 3.8.0 - a new major release containing new features, improvements and bug fixes. This release is codenamed "Double M". Where "M" stands for high-quality major release. Thanks to @mikee47's and his fantastic work.

Some of the highlights in this release include:

  • a new WIFI Sniffer.
  • better live debugging support with support for GDB Host I/O and File I/O extensions.
  • better UART support
  • a new OS Message Interceptor that is helping the discovery of problems reported from the underlying system.
  • better SSL handling.
  • network improvements to FTP, Websocket, HTTP and MQTT protocols.
  • fixed formatting ranges on SPIFFS creation

A longer list with more details and merged PR is given below.

New features

  • Interceptor for system messages #1613
  • Introduce ObjectMap #1638
  • Add optional deferMillis parameter to System::restart() #1611
  • Expand SSLSessionId structure to manage allocated memory. #1614
  • Adafruit_SSD1306 library add support for 64 × 48 pixels OLED Shield #1622
  • WifiSniffer #1647

Improvements

  • GDB and exception handling improvements. #1655
  • A couple of general additions to uart driver for reporting error status and handling line breaks #1655
  • Better handling of out-of-memory issues in axTLS #1651
  • Add support for escaped URLs #1642
  • Refactor Ftp classes #1633
  • WebsocketConnection improvements #1632
  • DateTime fixes & improvements #1625
  • Add HttpClientConnection class #1624
  • Improve memory management of SSL fingerprint data #1618
  • Http connection base improvements #1601
  • Improvements to the ssl structure management #1600 #1606
  • General tidy of Netutils module #1599
  • HttpServer_Websockets sample: wait 1 second before calling server.shutdown() #1598
  • TCP improvements #1595
  • StreamTransformer improvements #1593
  • Change use of ReadWriteStream* to IDataSourceStream* where appropriate #1588
  • Change fileSetContent() to return a result #1657

Bug fixes

  • Fixes to the SPIFFS size calculation. #1653
  • Fix map() bug in WMath.cpp #1636
  • Fix: HttpConnection memory leak #1639
  • Fix: HardwareSerial interrupt callback code not in IRAM #1610
  • Fix mqtt fifo memleak #1612
  • Fix file stream size tracking #1608
  • Fix signed/unsigned bug introduced in #1599 and highlighted by codacy #1605
  • MqttClient memory leak #1594
  • Updated the mqtt-codec version with fixes to the remaining length cal… #1591
  • Revert to default MAC string format for getMAC method... #1584 #1583
  • Do not flash blankfs.bin if SPIFFS is disabled #1586
  • Fix for the compilation of esp-gdbstub with SDK 3.0.0 in strict mode. #1582
  • MqttClient bugfix: payloadStream discarded #1587
  • SPIFFS updated to its latest version #1664

Coding style

  • Ensure all core code has standard header and consistent guard naming #1630
  • Enforce code deprecation and virtual methods #1629
  • Coding style changes: deprecated and override #1620
  • Switched to clang-format v6 #1589

All PRs that were merged in this release can be seen from here For a complete list of changes run the following command:

git log 3.7.1..3.8.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!

3.7.0

5 years ago

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!

3.6.1

5 years ago

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.