Releases: SmingHub/Sming
5.2.0
We are happy to announce Sming version 5.2.0 - a new major release and our summer present for you.
Thanks to our great contributors and very very special thanks to @mikee47's for his fantastic work.
New features
- You can start using the latest ESP32 IDF verion 5.2 directly in your Sming projects.
- We have native 64-bit support for host builds #2823 and now you can also compile your application for Host on MacOS #2804
- Initial version of editor for Graphics library #2826. Which allows you to do cool things like creating a graphic design for your embedded application and sending the design on the actual hardware to see if it looks good.
- We have added clang-tidy support for static code analysis #2648
- There is support for Esp8266 PHY settings runtime modification #2830
- Support for clang toolchain #2798
Improvements
- Improve sample applications #2756
- Upgrade toolchains #2787
- Update littlefs from 2.4.0 -> 2.9.3 #2777
- Use physical serial port if present on WSL2 #2790
- Update Esp8266 lwip2 to upstream master #2793
- Change SparkFun_APDS9960 to submodule #2800
- Update Adafruit_GFX library #2799
- Improve FlashString portability #2796
- Update ArduinoJson6 to current 6.x release #2795
- Provide better implementation for FileStream::id() #2705
- Only esp8266 requires special handling for _F() #2699
- Fix HttpUpgrader duplicate stream de-allocation #2722
- TcpClient does not send incomplete packets. #2721
- Improvements to OtaNetwork Http upgrader #2725
- PartitionStream requires blockErase, other OTA-related improvements #2729
- Use std::make_unique #2736
- Update USB library #2737
- Provide consistent serial console interface for samples #2739
- Improve CommandProcessing library #2748
- Improve Vector and HttpHeaders iteration #2745
- Free some esp8266 RAM #2752
- Improve sample applications #2756
- Optimise FlashString iteration and indexing #2761
- Fixes to hardware config editing/display #2765
- A few DateTime tweaks #2767
- Improvements to HostEd #2768
- Make time_t size check message more helpful #2769
- SMTP Client improvements. #2802
- Update ESP32 BLE libraries, apply fixes #2847
- Extend CsvReader capabilities, move into new library #2805
- Fix delayed sending of websocket messages #2782
- Improvements to HostEd #2768
- Free some esp8266 RAM #2752
- Move CommandProcessing into Libraries #2740
Bug fixes
- Fix WSL2 physical ports for esptool #2791
- Update host lwip to current master (2.2.x) #2814
- esp8266: NMI not disabled when timer1 ISR cleared #2764
- Fix potential memory leak in TcpClient::send #2753
- Fix client Websockets (broken) #2749
- Bugfix: stale HTTP connections may get missed in cleanup #2741
- Fix esp32c3 FPU issues #2700
- Fix esp32 timer issues #2697
- Fix hw_timer1_read() for esp32 #2701
- Fix build error for IDF 5.0 #2703
- Fix bluetooth build with esp32s3 for latest IDF 4.4 #2708
- Fix esp8266 timer1 testing #2709
- Add note in documentation about behaviour of one-shot Hardware timer with Esp8266 #2713
- Fix Adafruit_GFX writeColor implementation for ESP32 #2712
- Fix Esp32 hardware timer callbacks #2716
- Fix esp32 IDF version number handling for patch releases #2707
- Fix mechanism for OTA upgrade from Sming 4.2 #2728
- Fix esp8266 bootloader building and add diagnostic tools #2734
- Fix crashing rboot #2738
- Fix building lwip2 with ENABLE_LWIPDEBUG=1 #2754
- Fixes to Url default handling and query parameters #2828
- Fix potential memory leak in TcpClient::send #2753
Changes
- Set ESP32 CONFIG_FREERTOS_UNICORE=y by default #2696
Deprecations
- Remove appveyor and travis CI compatibility. #2831
- Remove legacy esp8266 toolchain support #2794
- Deprecate old ESP IDF 4.x and 5.0 versions.
New Contributors
@acburigo made his first contribution in #2721
Full Changelog: https://github.com/SmingHub/Sming/compare/5.0.0...5.1.0
5.1.0
We are happy to announce Sming version 5.1.0 - a new major release and our present for you this Christmas.
What's Changed
New features
- Update Graphics library with Host Touch and basic control support by @mikee47 in #2679
- IOControl library updates by @mikee47 in #2680
- Feature: add support for the wokwi simulator by @slaff in #2688
- Add MPU6050 library and sample code by @xeonqq in #2655
Improvements
- Add CStringArray::join() method by @mikee47 in #2668
- Add MemoryDataStream::reset() method by @mikee47 in #2677
- Add TRange contains(TRange&) overload by @mikee47 in #2678
- Patch for TCP segment size calculation issue. by @slaff in #2658
- Switch katacoda links to killercoda by @mikee47 in #2663
- Update rp2040 pico-sdk to latest (1.5.1 with additional bugfixes) by @mikee47 in #2667
Bug fixes
- Fix CallbackTimer::start not in IRAM by @mikee47 in #2676
- Fix Rp2040 bug setting UART fifo receive level by @mikee47 in #2666
- Bugfix: Rp2040 and Host
os_timer_setfn()
can stall other timers by @mikee47 in #2672 - Fix IFS compile warnings/errors by @mikee47 in #2673
Breaking Changes
New Contributors
Full Changelog: 5.0.0...5.1.0
5.0.0
5.0.0 is our fist major release in the 5 series.
Thanks to our great contributors and special thanks to @mikee47's for his fantastic work.
What is New
It marks the beginning of some very useful and important features that have landed in Sming.
Some of these that might be interesting to you are and are listed below.
Support for RP2040 architecture
Sming 5.0.0 has support for RP2040 architecture. This means that your Sming application can run on a RP2040 board. For that you need to install the RP2040 toolchain using our installation tool. The toolchain is available for both Linux and Windows. And on Linux can be installed with the following command:
./Tools/install.sh rp2040
And then you can recompile your favorite application for this architecture using the make flag SMING_SOC=rp2040
. For example the Basic_Blink app can be compiled with the following commands:
cd $SMING_HOME/../samples/Basic_Blink
make SMING_SOC=rp2040
ESP32 support for ESP-IDF version 4.3, 4.4 and 5.0
ESP-IDF is Espressif's IoT Development Framework for ESP32 development. Upgrading to newer versions of IDF can be painful. Unless you have a Sming application. If you already have developed a Sming application for ESP32 then its upgrading it can be as simple as downloading the new IDF version and recompiling the application with that version. IDF versions are available for both Linux and Windows. On Linux version 5.0 for example can be installed using the command below:
INSTALL_IDF_VER=5.0 ./Tools/install.sh esp32
More details can be found in our documentation.
ChangeLog
New features
- Initial RP2040 networking support #2607
- Add Esp32 IDF v5.0 support #2614
- Add ESP32 support for IDF v4.4 #2612
- Add FlashIP library to support Rp2040 firmware updates #2629
- Add USB library #2623
- Initial functioning version of ESP32 HardwarePWM. #2599
- Add ARM toolchain support #2647
Improvements
- RP2040: Bypass cache when reading flash memory directly #2601
Bug fixes
- Fix Esp32 flashing #2613
- Fix SOC support checks #2610
- RP2040 fix RTC get/set time methods #2609
- ESP32 Station::isEnabledDHCP() returns incorrect value. #2604
- Fix build issues #2603
- RP2040: Fix uf2conv USB drive enumeration for linux #2602
- Esp32 Wifi Station Implementation bugfix #2600
- Fix Rp2040 IRAM issues #2640
New Contributors
@pljakobs made his first contribution in #2599
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 4.7.0..5.0.0
Thanks to everyone who helped us make this release happen!
Full Changelog: https://github.com/SmingHub/Sming/compare/4.7.0..5.0.0
4.7.0 - Xmas2
We are happy to announce Sming version 4.7.0 - Xmas2 a new major release and our present for you this Christmas :).
Thanks to our great contributors and special thanks to @mikee47's and his fantastic work.
Some of the highlights in this version
- Feature: Bluetooth Low Energy (BLE) support for Esp32 #2499
- Initial board-level configuration support #2530
- Add general UUID / GUID support #2552
- Add disk storage support (SD cards) #2584
Improvements
- Revise station configuration to support BSSID #2522
- Updated Bearssl. #2520
- Installer: More flexible Linux distribution detection. #2523
- Allow use of static and global File, Directory objects #2529
- Implement basic ESP32 deep sleep #2527
- Update System.h with info about the deep sleep mode. #2526
- Fixes for latest ESP32 SDK 4.3 #2534
- Add support for TX_DONE interrupt for ESP32 in IOControl modbus #2535
- Fix valgrind invocation when ENABLE_HOST_UARTID is defined #2537
- Add 64-bit mprintf support #2549
- Add basic C++ output streaming support #2551
- Improve HashMap memory usage, add sorting capability #2556
- Tidy up and improve Vector class memory usage #2558
- Add ESP32 task watchdog reset to flash routines #2562
- Revise Partition in-memory storage mechanism #2564
- Add Host stubs for RTC mem read/write #2588
- Remove CustomDevice, use editablePartitions() method #2572
- Add Github actions support for library CI testing #2577
Bug fixes
- Fix ObjectList inheritance #2582
- Partition method fixes #2585
- Esp32 fixes #2528
- Fix smg_uart_uninit() from blocking subsequent re-initialisation #2560
- Fix ESP32 system restart problems #2543
- Fix pulseIn() #2538
- Fix RbootUpgrader to take notice of RBOOT_RTC_ENABLED #2525
- Fix rp2040 tx done interrupt #2531
- Fix Partition == operator #2533
- Fix Ultrasonic_HCSR04 sample #2539
- Fix Storage partition issues #2548
- Catch Range::random() divide-by-zero condition, fix off-by-1 error #2559
- Fix minor filesystem bugs #2563
- Fix Uuid comparison for PROGMEM usage #2567
- Fix make[1]: cc: Command not found during clean #2568
- Newer version of GCC complain about usage of printf(string-or-var) without … #2586
- Fix issue with esp32 paths. #2580
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 4.6.0..4.7.0
Thanks to everyone who helped us make this release happen!
Full Changelog: 4.6.0...4.7.0
4.6.0
We are happy to announce Sming version 4.6.0 - a new major release.
Thanks to all contributors and especially to our core team member @mikee47's for his fantastic work.
Some of the highlights are:
- Implemented Smart Config for ESP32 #2474
- Implemented SPI for Rp2040 #2466
- Initial Rp2040 Network framework #2467
- AnimatedGIF library support #2495
More information can be found here.
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 4.5.0..4.6.0
Thanks to everyone who helped us make this release happen!
4.5.0 - codename XMAS
We are happy to announce Sming version 4.5.0 - XMAS a new major release and our present for you this Christmas :).
"M" in the codename as before is used to signify a high-quality release and X is used to signify adding additional features that allow eXtending Sming to realms far beyond a simple embedded framework
Thanks to @mikee47's and his fantastic work.
Some of the highlights in this release:
- Initial support for Rp2040 architecture #2392
- Added Kconfig support #2374
- Added MHZ19 CO2 sensor library #2415
- Added SoC configurations and SMING_SOC setting #2421
- VM: Added rBPF containers #2422
- VM: Added JavaScript VM #2432
Removal of multiple deprecated features and a lot of improvements. The complete list is given below:
New Contributors
- @alexdz18 made their first contribution in #2337
- @charlesschaefer made their first contribution in #2340
Improvements
- Change uart settings values and use enums #2387
- Rationalise compiler flags and esp32 improvements #2388
- Added support for creating Eclipse project meta files. #2390
- Updated Adafruit_BME280 to latest, add Adafruit_BusIO #2407
- Updated TwoWire class to support multiple instances #2405
- Allow partition build config to be embedded #2404. Allows file system layout to be defined directly in the hardware configuration Instead of using separate file. Intended to simplify use for minimal FWFS definitions.
- Add Basic_Templates sample with CSV reader class #2403
- Improve TemplateStream tag recognition #2400
- Updated Graphics library with support ST7789V display ... #2396
- Add library CI support #2434
- Update landing pages, plus doc fixes #2443
- Multiple documentation fixes #2453
Bug fixes
- Fix Hosted operation for Windows #2378
- clang-format-8 is optional and should not prevent the installation. #2381
- Fix for SPI debug. #2382
- WDT::alive() calls wrong function #2383
- String::replace not using memmove #2384
- Fix edge case in String::replace #2401
- Fix hwconfig option handling, add 1m, 2m hwconfig options and spiffs-2m.hw #2385
- Fix bugs in si2c twi_status() timeout and host uart/timer. #2389
- Fixes compilation of Ota library for Esp32. #2391
- Fix some codacy advisories #2393
- HttpServer: Fixed a bug with request headers not being reset. #2424
- Fix make ide-vscode for Esp32/Windows #2410
- RP2040 fixes #2402
- Cs5460 fix #2418
- OTA Deployer should exit when there is an error. #2420
- HttpServer: Fixed a bug with request headers not being reset. #2424
- Fixed bit-length bugs in Esp32 SPIClass #2438
- Fix receive interrupt bug in Esp32 uart driver #2446
- Better spelling #2444
- Fix SmingTest to handle floating-point values #2447
Changes
- Move Network-related classes into Network Component #2386
Deprecations
- Undeprecated HttpRequest::getQueryParameter and ... #2379
Breaking Changes
- Drop support for old esp8266 toolchain (UDK / esp-open-sdk) #2430
- Removed old deprecated items #2379
- Removed eclipse project files #2412. Files can be generated for any project using
make ide-eclipse
so do not need to be kept in the repository.
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 4.4.1..4.5.0
Thanks to everyone who helped us make this release happen!
Full Changelog: 4.4.1...4.5.0
4.4.1
4.4.0 - codename M32
We are happy to announce Sming version 4.4.0 - a new major release containing new features, improvements and bug fixes.
This release is code-named "M32". Where "M" and "32" stand for high-quality contributions and improved ESP32 support.
Thanks to @mikee47's and his fantastic work.
Some of the highlights in this release:
- Improved ESP32 support with support for different ESP32 variants.
- Moved from IDF v.4.1 to IDF v.4.3.
- Asynchronous Graphics Library.
- Support for LittleFS.
- Sming Host Emulator: Enabled Host access to physical COM ports.
- Sming Host Emulator: allows running the main logic in the Host emulator while running parts of the hardware dependent code directly on a real micro-controller
And a lot more. The complete list can is given below:
New features
- Added LittleFS support #2304
- Asynchronous Graphics Library #2357
- Updated ESP32 to build with IDF v4.3 #2358
- Added Ethernet support for ESP32 #2361
- Sming Host Emulator: Enabled Host access to physical COM ports #2326
- Feature: hosted - allows running the main logic in the Host emulator while running parts of the hardware dependent code directly on a real micro-controller #2305
- Feature: hosted serial #2312 - allows communication over physical communication port.
- Moved Core/Network into separate Component #2316
- IFS attribute enumeration support #2318
- FWFS Mountpoint Support #2315
- FWFS stores objectIDs as offsets #2321
- FWFS streaming filesystem backup support #2323
- Over-The-Air (OTA) for all supported architectures #2332
- HttpServer plugins #2354
- Added DISABLE_NETWORK and SDK_CUSTOM_CONFIG settings #2362
- Added verifyflash build target #2368
Improvements
- Storage, rBoot and profile editor updates #2302
- Little FS improvements and IFS revisions to support user metadata #2308
- Added support for zsh in export.sh script (#2340)
- Added support for sending streams directly from TcpClient. #2341
- Improved Websocket Connection to allow sending of huge payloads. #2342
- Added method to return a list of stations connected to an Access Point(AP). #2346
- Add SPIClass::setup method for ESP32 #2360
- ESP32 improvements for c3 and s2 variants. #2365
Bug fixes
- Fixed base64 encode length calculation to account for padding #2307
- ESP32 network fixes #2325
- Fixed Basic_IFS sample and TemplateStream #2324
- Fixed bug in StreamTransformer - ending fragment not getting sent #2317
- Fixed vscode GDB launch configuration #2319
- No-WiFi flash fixes #2353 , #2347
- Fixed ArduinoJson6 serialisation bug and update from v6.13 to v6.15.2 #2363
Deprecations
- Disabled old MqttClient calls by default. #2343
Security
- Updated axTLS to latest version. #2372
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 4.3.0..4.4.0
Thanks to everyone who helped us make this release happen!
4.3.0
We are happy to announce Sming version 4.3.0 - a new major release containing new features, improvements and bug fixes.
This release contains braking changes related to spiffs handling.
So either make sure to read our migration document or use our LTS version.
Some of the highlights in this release include:
(A)mazing highlights
Sming is powering applications in smart barbecues, unique adventure rooms, small RC cars AND satellites!
Soon Sming will be used in a popular car producer, smart coffee machines from a renown Italian producer and even matrix printers.
Stay tuned for more details coming in the next months!
Other highlights
- Partition table: The layout of flash memory has been revised and is now managed via partition table.
For more details read Storage Management documentation. - Installable File System (IFS): Sming now supports multiple filesystems via Installable File System (IFS). See Basic IFS for a demonstration.
- Over-The-Air upgrades via MQTT
- Chromecast client allowing you to control your Smart Android TV from Sming
- Updated mDNS library with support for querying
Details
New features
- Partition tables #2171 with rBoot support #2258
- Installable File System (IFS) #1579
- Added protocol buffers support using nanopb. #2217, #2233
- Provide
LinkedObject
for general use #2234 - Google-cast client #2227
- Updated mDNS library with query support #2237
- Added hardware configuration option support #2266
- Added rBoot partition support #2258
- Added graphical hardware profile editor #2274
- Library support for flatbuffers #2252
- Faster Over-The-Air upgrades via MQTT #2269
- Added support for repeated HTTP header fields #2290
Improvements
- Improved FTP server #2271
- Revise install scripts and documentation #2204
- MacOS build fixes #2212
- Added web test support to HostTests CI application #2228
- Added vscode configuration support #2231
- Updated bearssl to its latest version. #2240
- Added setMacAddress() method to Station and AccessPoint #2249
- Rewrote MDNS responder #2248
- Easier voltage reading for ESP8266. #2264
- Updated ArduinoFFT library to latest #2285
- MultiStream & StreamTransformer improvements #2288
- Sming Host Emulator: Allow control over host debug messages #2289
Bug fixes
- Fix bug in
smg_uart_set_tx()
#2210 - Replaced
toString(uint8_t)
with template to avoid unintentional truncation of values #2229 - Multiple minor fixes to documentation and samples #2239
- Python3 migration: Replaced SimpleHTTPServer with http.server #2244
- ScreenOLED_SSD1306 sample compiles also with newer compilers #2259
- Fixed publishing MQTT messages having a stream as payload. #2278
- Compilation fixes for ESP8266 EQT toolchain. #2287
- Fixed SMTP issues #2280
Breaking Changes
- Feature: mqtt connection error event #2279
The connection event handler will be called also when the connection fails. You can use thereturn_code
to check if the connection was successful or there was an error. - Upgraded to clang-format 8 #2268 for coding style.
Security
- Fixed base64 size calculations #2283
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 4.2.0..4.3.0
Thanks to everyone who helped us make this release happen and especially to mikee47 for his quality features and constant devotion!
PS: Everything except parts from the (A)mazing section is true. Happy April 1st :)
4.2.0 - codename "MK"
We are happy to announce Sming version 4.2.0 - a new major release containing new features, improvements and bug fixes. This release is codenamed "MK". Where "M" and "K" stand for high-quality major release. Thanks to @mikee47's and his fantastic work.
This release will be our new Long Term Release (LTS) which will be supported until 1st of February, 2022.
Some of the highlights in this release include:
- Starting with this version a GCC compiler version 8 or newer is highly recommended
- Initial support for ESP32
- UPnP framework coming with code generation. Translated into plain English this means that with Sming's help it is now very easy to create an application that controls a UPnP device as for example your SmartTV or printer and create devices that are discoverable in the local internet and easy to work with. As for example a new smart switch.
- Improved overall performance and memory usage
New features
- Initial support for ESP32 #2076 #2151
- UPnP framework #2115
- UPnP code generation #2154
- CS5460 Arduino library #2106, #2174
- Support command line parameters for Host applications #2134
- Added
CString
class #2112 - Add
BitSet
class template #2115 & #2131 - Core
Task
class to support co-operative multitasking #2148 - Hardware SPI library #2150
- DIAL client #2152 (Using UPnP )
- Sample demonstrating connecting to Amazon Web Services #2149
Improvements
- Revisions to SPI classes #2130
- Updated Infrared library and sample #2083
- Stream optimisations #2123
- Applied String move semantics to reduce memory re-allocations #2119
- Refactored FTP classes #2125
- Websocket: Added pong delegate support for websocket connection and resource #2156
- MqttClient revisions #2157
- HttpClient improvements.
- Added Esp32 gdbstub Component and fix Esp8266 syscall errno handling #2169
- Add iterator support for HashMap and Vector, with basic tests #2167
- Templates engine improvements: Added dataset templating support #2164
- LimitedMemoryStream: Allocates memory buffer on demand and not upfront. #2153
Bug fixes
- Fixed appveyor crashing issue and use latest MinGW #2124
Security
- Added workaround for CVE-2020-12638 #2107
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 4.1.1..4.2.0
Thanks to everyone who helped us make this release happen!