Releases: esp8266/Arduino
Releases · esp8266/Arduino
Release 2.7.0
Changes since 2.6.3 (to 2.7.0)
Breaking Changes
None
Great additions
Core
- Added missing "if (umm_heap == NULL) {..." to umm_free_heap_size_lw (#6929)
- Code size optimisations for ESP.getFullVersion() (#6936)
- I2C: allow clocks below 100KHz (#6934)
- Reduce mem footprint of ESP.getResetInfo() (#7030)
- Code size optimisation of ESP.getResetReason() (#7029)
- Low-Power demo (#6989)
- Fix WMath's map() implementation for inverse/round-trip mapping (#7027)
- Fix optimistic_yield to not yield on each call after x µs (#6804)
- Updated stack offsets for postmortem stack dump (#7066)
- Corrected stack start and end in stack_thunk_dump_stack() (#7085)
- configTime(tzsec,dstsec,): fix UTC/local management (#6993)
- dtostrf: round fix (#7068, #7093)
- simple TZ api: bypass sprintf/sscanf (= do not use 7KB flash) (#7109)
- Pull GPIO initialization into its own 'weak' function. (#7044)
- Attribute
__real_system_restart_local()
as(noreturn)
(#7167) - Move floating point from libgcc out of IRAM (#7180, #7188)
- Tone: extend to 20KHz (#7179)
- Add CryptoInterface library (#6961, #7252)
- Fix for MD5 leak bug (#7197, #7208)
- Use F_CPU if (?) CPU frequency switch is compile-time only (#6833)
- expose setTZ() (#7234)
- XMC flash support - WIP (#6725)
- Allow waveforms to be specified in clock cycles (#7211)
- Waveforms: cherry pick nice changes from ongoing #7122 (#7218)
- Allow stopWaveform to stop timed-out waveforms (#7236)
- Hold transmitter in reset during rate change (#7248)
- Fix minor GCC10 static analyzer warnings (#7255)
Core (FS)
- Skip . and .. on LittleFS::dir::rewind() (#6959)
- Only update LittleFS timestamp when opened write (#6956)
- Update LittleFS to latest upstream head (#6986)
- Add SDFS::Dir::fileTime callback (#6985)
- Add LittleFS support to ESP8266WebServer.serveStatic() (#6987)
- Fix boolean/logical & mixup in LittleFS open (#6996)
- Add fileCreation/getCreation create-time accessors (#7000)
- Improve LittleFS support (#7071)
- Update to LittleFS v2.2.0 (#7240)
Network (Core, Library/ESP8266WiFi)
- lwip2: no more git sub-sub-module deps, faster checksum, backlog limitation and other fixes (#6887)
- Fix/enable UDP packet reassembly (#7036, #7132)
- SNTP: backport espressif sntp api for lwip2 (#7097)
- TCP: fixes backlog limit handling, and allows ephemeral TCP connections (#7096)
- lwip2 update: stop dhcp when interface goes down (#7114)
- Fix UDP send to IPv6 link local addresses (#6541)
- Fix TCP send to IPv6 link local addresses (#7207)
- Updating _port to really used port and made _port accessible (#7003)
- Make DNS resolution order selectable during runtime or compile time (#6865)
- WiFi: ARP gratuitous API for wifi station mode (#6889, #7203)
- fix null pointer call from WiFiClient::localIP() to IPAddress (#7221)
Library - ESP8266WiFi (SSL/TLS)
- Update BearSSL, increase SSL stack (#6980)
- Remove memory leak on multiple calls to initCertStore (#7021)
- Update to latest BearSSL (#7098)
- Abort if BearSSL stack allocation fails (#7152)
Flashing - OTA - Updater
- Allow GZIP compressed flash updates (#6820)
- Add documentation for compressed OTA, fix bug (#6924)
- Add a CRC32 over progmem and ESP.checkFlashCRC (#6566)
- Fix Updater potential overflow, add host tests (#6954)
- allow ".bin.gz" filter in HTTP updater file selector (#7026)
- Updater: prevent closing webserver (option) (#6969)
- Use 2nd stack for update signature verification (#7149)
- Fix espota completion success/fail check (#7204)
Library - SoftwareSerial
Library - ESP8266WebServer
- PROGMEM footprint cleanup for responseCodeToString (#6950)
- Fix search order for index.htm(l)(.gz) files (#7069)
- Add Uri with support for regexUri and globUri (#6696)
- Add flash helper constructor to Uri (#7105)
- Expose webserver's chunk api (#7134)
- Make getContentType available for 3rd party usage (#7254)
Library - ESP8266HTTPClient
- Reduce temporary string creation in HTTPClient::sendHeader (#6937)
- Move a couple larger strings from rodata to flash (#6976)
- clear _canReuse in setUrl if its not a local redirect (#7039)
- Fixes large payload issues for sendRequest (#7051)
- Better follow redirection for
HTTPClient
(#7157)
Library - mDNS
- Update LEAmDNS.cpp (fix issue #6982) (#7025)
- use STA as default interface in mDNS (#7042)
- Additions to UdpContext needed for LEAmDNS2 (#7048)
- mDNS: protect MDNSResponder::queryService against misuse (#7216)
- Add isRunning getter to check is ::begin already called (#7219)
- Changing listen to listen the current iface only instead of 0 (#7217)
Library - Servo
- Define MAX_SERVOS to 12, like original Servo.h (#6999)
Libraries
- Various String handling cleanups (Libraries&Core) (#6945)
- Set a value for SSDP notify interval (#7110)
Documentation
- Installation guide for PlatformIO (#7142)
- Fix RST links for PlatformIO (#7143)
- (STA) Fixed misplacement of back quotes (#7247)
CI
- Fix Windows CI build (#6927)
- fix CI: switch to python3 for pio (#7035)
- update to new prebuilt win sed version (#7062)
- Switch espressif8266 platform to development branch in PlatformIO build (#7170)
- fix style checking: (#7222)
Examples
- CaptivePortal: improve HTML quality (#7227)
- ESP8266WebServer: Revamp of the FSBrowser and SDWebServer examples (#7182)
Boards
- Made changes to include "ESP8266_" with ITEAD board names,
{build.board}
, (#7024) - Add support for eduino wifi (#6554)
- Add 2MB obtion to 8285 generic board (#7163)
- esp8285: properly initialize free gpio as input (#7165)
Build System
- Add back mklittlefs for linux32 target (#7011)
- Use a python3 script to call python3 (#6960)
- boards.txt.py: Use correct file name when writing (#7018)
- PIO: Allow using custom linker scripts (#7078)
- package builder: updates for alpha releases (#7088)
- Switch espressif8266 platform to development branch in PlatformIO build (#7170)
- Use F_CPU if (?) CPU frequency switch is compile-time only (#6833)
Device tests
Boot
Building on host
- host build: optimistic_yield() wrongly delays() instead of avoiding excessive yields (#6802)
Release 2.6.3
Changes since 2.6.2 (to 2.6.3)
Breaking Change
none
eboot
Core
- I2C: put inline helpers in IRAM for slave ISRs (#6898)
- Add hh (byte) format for printf and scanf (#6896)
- sntp callback: use a recurrent schedule function (#6888)
- Use 128B chunks instead of 1B writes in Print::print(FlashStringHelper) (#6893)
- updater: Only set flashmode byte when uploading an executable (#6891)
- sdk:22x-191122 (optional, non default) (#6879)
- removed TWI_CLOCK_STRETCH_MULTIPLIER (#6867)
- added clock stretch yield, [issue 2162] fixed twi::status (#6860)
- sntp: fix conflict with pre-included Arduino.h (#6853)
Libraries
- udp: limit buffer depth (#6895)
- Fix sending headers in #send_P(int, PGM_P, PGM_P, size_t) (#6881)
- EspSoftwareSerial 6.4.0: Non-parity modes save 56 bytes of heap memory (#6882)
- Webserver: Handle HEAD requests for static files correctly (#6837)
- Webserver: fix sending char* (#6878)
- Remove user_interface.h from gdbstub includes (#6862)
Documentation
- Update PROGMEM.rst (#6872)
Examples
- POST http client example (#2704)
Boards
- fix NodeMCU v1.0 board option "Builtin Led" (#6905)
Build System
- fix device tests (#6861)
Release 2.6.2
Changes since 2.6.1 (to 2.6.2)
Breaking Change
Arduino IDE FS plugin must be updated (#6807)
Build System
- switch to firmware 2.2.x-190703 by default (#6826)
eboot
- Move eboot_command_clear to after firmware copy (#6823)
Core
- HWSerial: uninitialized stack object can have unintended bad values (#6846)
- [BREAKING] Update FS plugin info for python3 compat (#6807)
- FS upload: Make upload.py compatible with existing FS upload (#6788)
- configTime: reset artificial timezone when using newlib (#6828)
- Implement invert for HardwareSerial (#6816)
- Mark esp_schedule IRAM_ATTR to make it ISR safe (#6809)
- Weak binding lessens version dependency between ESP8266 and MT library CoopTask. (#6790)
- Add stdint, move headers up in core_features.h (#6793)
Libraries
- HTTPClient: Allow for POSTs larger than a few 100 bytes (#6800, #6830)
- HTTPClient: fix in beginInternal() (#6786)
- WiFi: use wificlient.available() where relevant (#6827)
- EspSoftwareSerial: ctor/begin() compatibility to AVR/ESP8266/ESP32 (#6814)
- BearSSL: Expand BSSL stack (#6819)
- Add callbacks for ESP8266HTTPUpdate (#6796)
- Add const char* content to ESP8266WebServer::send() (#6797)
- WebServer: Only add "l" to XX.htm URLs if XX.html exists (#6794)
- SSDP: add
schema(Print &) const
(#6798) - WiFiClient: Fix typo in mode timeout loop (#6801)
- Update SdFat to not undefine F() macro (#6787)
Documentation
- Add/unify comments for target and source sites of async scheduling via delay()/esp_yield()/esp_schedule() (#6780)
- Change Sphinx version to latest (#6817)
Emulation on host
- Using clockCyclesPerMicrosecond() in host build fails (#6844)
- F_CPU is available and is 80000000 (#6841)
Examples
Release 2.6.1
Changes since 2.6.0 (to 2.6.1)
Breaking Changes
none
Build System
- esptool.py: single command for erasing and flashing (#6765)
- release script: remove makecorever.py call in released version (#6747)
Core
- Fix issue with functions scheduled from scheduled functions (#6770)
- Update String::concat(char*, len) to allow non null-term strings (#6754)
- Update to LittleFS 2.1.3 (#6757)
- WString explicit converters to reduce Flash size (#6759)
- Add
ipv4_addr_t
for espconn/LwIP1.4 compat (#6740)
Libraries
- Minimize header use, move Ticker function definitions into cpp file (#6496)
- EspSoftwareSerial release 6.1.1, "9bit" support (#6761)
- Updated EspSoftwareSerial brings backward compatibility for ctor/begin() pair (only for the common cases with complete default argument use) (#6746)
Boards
Documentation
Release 2.6.0
Changes since 2.5.2 (to 2.6.0)
Breaking Changes
- SoftwareSerial constructor - will be fixed in 2.6.1
Great additions
- Ets intr lock nest (#6484)
This great fixing PR has - among others - closed the old infamous #2330 - Add LittleFS as an optional filesystem w/subdirectories, API compatible w/SPIFFS and SDFS
(but not on-flash-format compatible) (#5511)
Build System
- Update esptool reset method (#6429)
- Fix Python3 errors for device tests (#6670)
- Dynamically find the Python3 dir on Windows (#6646)
- esptool-2.7 (#6634)
- CI: trusty (u14.04) -> bionic (u18.04) (#6627)
- remove esptool.py --trace option (#6606)
- prepare alpha channel release builder (#6512)
- Move all PSTRs to own section, allow string dedup (#6565)
- use arduino IDE stable in CI (#6572)
- Add 20/26MHz Flash frequencies for slow/cheap flash chips on the Generic ESP board (#6552)
- Add segment size printout to standard build process (#6525)
- Fix tool name to point to proper JSON entry (#6513)
- Run makecorever.py before specific prebuild hooks. (#6504)
- Add Win32 build to CI system (#6493)
- Add OSX build to CI, fix OSX builds (#6492)
- Fix the python3 directory so scripts work on Win32 (#6472)
- Move all scripts and documentation to Python3 (#6378)
- fix arduino builder command line (#6461)
- Prevent rewriting core_version.h if content unchanged (#6414)
- esptool: 3M-baud serial upload speed (#6399)
- Move to -std=g++11 from -std=c++11 (#6339)
- Upgrade to 2.5.0-4 toolchain w/improved pgm_read_x, C++ exceptions (#6273)
- Clean tools key of obsolete version on next release (#6258)
- esptool.py: disable 9600bauds in menu for flash upload serial speed (#6292)
- Prepare signing before sketch is compiled (#6287)
- Refactored to avoid compiler warning (#6278)
- Make SPIFFS be an integer number of blocks (#5989, #6537)
- Updater signature validation - format incompatible w/RFC8017 (#6250)
- Fix device test environment variables (#6229)
- Expand gitignore to cover files created by Visual Micro (#6231)
- Update mklittlefs to match library (#6230)
- filter weird characters from esp output to python (#6226)
- Add some more CI tests for String::replace (#6193)
- IDE menu info: change SPIFFS -> FS and show max OTA size (#6159)
- emulation on host updates (#6210, #6211, #6248, #6327, #6342, #6507)
Core
- Add missing time.h include, use relative include path on time.h includes (#6730)
- Save 16 bytes RAM by placing esp8266_gpioToFn (core_esp8266_wiring_digital.cpp) array in PROGMEM (#6703)
- precache() - preload code into the flash cache (#6628, #6674)
- Double I2C read in one transaction skips a clock pulse (#5528) (#6654)
- Move cont_run/cont_yield out of IRAM (#6617)
- NTP-TZ-DST example: list SNTP servers (#6611)
- Remove duplication and incompatible declarations in sntp.h (#6610)
- cleanups in ESPClass (#6608)
- Cleanup base64::encode functions (#6607)
- use a scheduled function for settimeofday_cb (#6600)
- Fix pgm_read_float_unaligned macro (#6593)
- Base64::encode : const correctness / String by reference passing (#6581)
- Replace ASM block w/C macro for PSTR (#6577)
- Speed up empty String creation slightly (#6573)
- const correctness / String by reference passing cleanups (#6571)
- Remove duplicated sha1 implementation (Fixes #6568) (#6569)
- Add typedef for putc1, fn_putc1_t. (#6550)
- Add time to filesystem API (#6544)
- Add memmove_P, use it in String to ensure F() safety (#6514)
- Support FS update in two steps (#6505)
- Add ::updateBaudRate(unsigned long baud) to change the baudrate after begin was called (#6494)
- Update UART selection for Boot ROM ets_putc, when debug port is selected. (#6489)
- Wakeup delayed scheduling (#6485)
- Inline ESP::getCycleCount() to make it safe to call from ISRs (#6477)
- move timer functions to iram (#6466)
- Allow Print::println() to work with PROGMEM strings (#6450)
- Update core with upstream umm_malloc (#6438)
- Remove ROM routines from libc.a, save progmem (#6432)
- Fix reverse dependency core Updater -> library ESP8266WiFi (#6398)
- ensure consistency for gdb hooks signatures (#6391)
- Uncouple uart from GDBStub library (#6390)
- fix _min and _max macros (#6374)
- time: import IANA timezone definitions, expose SNTP API (#6373)
- Refactor HardwareSerial.cpp for consistent use of PolledTimeout (#6371)
- wstring: fix concatenation from flash (#6368)
- enable puya support by default (can be disabled with -DPUYA_SUPPORT=0) (#6362, #6619)
- Preserve prior bitrate for I2S begin (#6349)
- Add a FS::check() optional method (#6340)
- tools: fixed bug to select signed bin (#6334)
- exceptions: optionally enforce c++ standards (#6333)
- Reduce the IRAM usage of I2C code by 600-1500 bytes (#6326)
- Clear updater state on any error (#6325)
- Add
using fs::SPIFFSConfig
to FS.h (#6324) - Don't throw exceptions from operator new by default (#6312)
- Make delay() and loop_end() weak functions (#6306)
- Added memory fence to xt_rsil() (#6301)
- Fix for future GCC 9.1 warnings (except Ticker.h, gdbstub) (#6298)
- Create (set/is)empty methods for String class (#6293)
- Fix raise_exception() (#6288)
- proposed umm_malloc improvements (#6274)
- Clean up code to build under GCC7, fix pgm_read_unaligned (#6270)
- Clean up trivial gcc -wextra warnings (#6254)
- using std::nothrow instead of malloc (#6251)
- Do not call yield() from timedRead() or timedPeek() when _timeout is set to 0. (#6242)
- Put InterruptLock (from interrupts.h) into namespace esp8266 to fix now and future (#6225)
- Move umm_malloc back to IRAM (#6161)
- Make SSO support \0s, use memmove, add test (#6155)
- Add FS::info64 call for filesystems > 4GB (#6154)
- Bugfix: attach interrupt (#6049) (#6048)
- add regular scheduled functions (#6039, #6137, #6147, #6158, #6214, #6228, #6233)
- Implementation of a generic CallBackList (#5710)
- Serial.flush modification (#5293)
Style
SDK
Boards
- board filter support (+ iTead sonoff, ESP-Mx boards) (#6643)
- Adds SparkFun Blynk Board (#6713)
- Fix espduino verbose upload (#6426)
- Allow use of LED16 for generic boards (#6343)
Library - ESP8266WiFi
- Add wait loop at the end of WiFi::mode (+refactor can_yield) (#6721)
- ClientContext: restore use of two different pending booleans for connect and write #6483
- standardizes processing of _delaying in lwIP callbacks (remove assert) (#6460)
- lwIP-1.4: use fixed locking functions (#6455)
- ClientContext: break timeout delays also on error while writing or connecting (#6454)
- new network feature: NAPT (widely known as NAT) (#6360)
- Experimental: add new WiFi (pseudo) modes: WIFI_SHUTDOWN & WIFI_RESUME (#6356)
- udp remote pbuf helper: honor fragmented packets (#6222, #6263)
- TCP connect and send delay fix (#6213)
- lwip2: fix setting static ip address (#6194)
- Add timeout to STA::waitForConnectResult (#5371)
- added public cleanAPlist() function (#4107)
Library - ESP8266WiFi (SSL/TLS)
- Fix WiFiClientSecure::available() blocking on dropped connections (#6449)
- Set method _connectSSL as protected (#6424)
- SSL: Fix Crash with basic ciphers (#6402)
- Update to latest BearSSL (#6337)
- SSL: Add a dump of received FP and CERT when in debug mode (#6300)
- Update axtls libs with fix for #6260 (#6262)
- Fix mixup with boolean/bitwise or for BSSL probing (#6252)
- Add an EC keyed certificat to BearSSL Server example (#6202)
- Obey the BASIC_SSL request for TLS servers (#6187)
- Added BR_OPT_NO_RENEGOTIATION flag to forbid TLS renegotiation (#6165)
- 64 bytes more free by moving DES init constants to flash (#6160)
- Save 484 bytes of heap foe BSSL applications (#6157)
- Add basic canary check to BSSL stack thunk (#6156)
- Expand BSSL stack to 5750 bytes (#6153)
- Make CertStore natively use File interface (#6131)
Library - ESP8266WebServer
- Fix trivial extra "\n" on web update success (#6350)
- Add HTTP_HEAD to HTTPMethod and parse it (#6413)
- Add plain char* signatures WebServer::sendContent (#6341)
- webserver: restore legacy request handler (#6321)
- allow for authentication with H(A1) with example (#6020)
- Convert ESP8266WebServer* into templatized model (#5982)
- fallback onto index.html if index.htm fails (#2614)
- POST web server example (#2705)
Library - ESP8266HTTPClient
- Fix build with -DHTTPCLIENT_1_1_COMPATIBLE=0 (#6597)
- Fix setURL() handling of path-only parameters (#6570)
- BasicHttpsClient: Updated demo certificate fingerprint (#6462)
- Bugfix/esp8266 http client (#6176)
- Infinite loop while passing File(FS.h) resolved (#5038)
- Added possibility of sending POST with empty payload (#4275)
Library - mDNS
- fix legacy unicast responses (#6613)
- Clean up remaining non-LeaMDNS diffs from gcc4.8 to gcc7.2 (#6279)
- fix random crash on startup (#6261)
- restriction to a single interface (#6224)
Library - SPI
- Set SPI_HAS_TRANSACTION to 1 (#6591)
- Spi slave improvments (#6580)
- SPI: wrong value for setFrequency() (#6409)
Library - Ticker
- Ticker: Fix callback casting. (#6282)
- Ticker: Use placement new for ETSTimer - no heap fragmentation (#6164)
- The use of bind in Ticker.h is prone to type inference failure (#6129)
Libraries
- EspSoftwareSerial release 5.4.0 with performance/error rate improvement in TX (#6722)
- Update EEPROM.cpp (#6556, #6599)
- Put more string literals into PROGMEM (#6588)
- add or improve some debug messages (#6508)
- OTA: fixed no "OK" ACK for Signed Update (#6351)
- FS: Update LittleFS/SdFat to current project head (#6345)
- ConfigFile: Updated Example to use ArduinoJson6 (#6203)
- DNSServer: Add support for newer mobile OS changes. (#5529)
- ESP8266HTTPUpdate: Added Chip ID in...
2.5.2
Changes since 2.5.1 (to 2.5.2)
Core
- Add explicit Print::write(char) (#6101)
Build system
- Fix typo in elf2bin for QOUT binary generation (#6116)
- Support PIO Wl-T and Arduino -T linking properly (#6095)
- Allow *.cc files to be linked into flash by default (#6100)
- Use custom "ElfToBin" builder for PIO (#6091)
- Fail if generated JSON file cannot be read (#6076)
- Moved 'Dropping' print from stdout to stderr in drop_versions.py (#6071)
- Fix PIO issue when build environment contains spaces (#6119)
Libraries
- Remove deadlock when server is not acking our data (#6107)
- Bugfix for stuck in write method of WiFiClient and WiFiClientSecure until the remote peer closed connection (#6104)
- Re-add original SD FAT info access methods (#6092)
- Make FILE_WRITE append in SD.h wrapper (#6106)
- Drop X509 after connection, avoid hang on TLS broken (#6065)
2.5.1
Changes since 2.5.0 (to 2.5.1)
Breaking changes
- Hardware SPI: unswap mode 2 and 3 for portability (#5948)
- Revert to nonos-sdk 2.2.1, new sdk-switching option in IDE menu for generic board only (#5763)
Great Additions
- SD Filesystem compatible with 8266 File, using latest SdFat (#5525, #5861)
- Unification of SPIFFS and SD, into single compatible FS, File, and Dir objects (#5525)
- Use esptool.py to handle sketch upload, make python available on Windows, too (#5635)
- Small String Optimization (SSO) (#5690)
Documentation
- Clarify analog output doc for pwm limits (#6051)
- Upgrade to https: serving for JSON, links in docs (#5992)
- Added notice to update submodules to test README (#6008)
- Add note about needing 0.4 esp8266fs uploader (#5976)
- UDP: Correct out of bounds condition and remove an unnecessary cast (#5924)
- submodules: git command for updating (#5882)
- Update adruino link in platform.txt (#5900)
Core
- Use "bool" for "boolean" type (#5693)
- Migrate configTime() to use sntp_set_timezone_in_seconds() to correctly allow timezone spec in seconds without rounding (#5835)
- Test for StreamString SSO bug (#6035) (#6041)
- Fix StreamString SSO bug (#6035)
- Use original ESP8266-specific speeds for SPI speeds (#6023)
- restore proper arduino Client:: & Wire:: API (#5969)
- ISR code must be in ICACHE_RAM (#6002)
- ISR: check for address in IRAM (#5995)
- Add String::toDouble from upstream Arduino core (#5986)
- Unaligned access support for pgm_read_word/dword (#5692)
- Make SPIFFS garbage collection publicly available (#5944)
- Fix String.replace overlapping strcpy (#5966)
- Split IRAM into 2 linker sections to move std::fcn to IRAM (#5922)
- Hardware SPI: unswap mode 2 and 3 for portability (#5948)
- polledTimeout: add option to use CPU count instead of millis() (#5870)
- use static_assert to check on fw structure changes over updates (#5937, #5939)
- Fix String::replace() garbage at end of string (#5897)
- fix DEBUG macros (all stringsin flash) (#5728)
- Fix Serial.write(0) overloading (#5878)
- SD Filesystem compatible with 8266 File, using latest SdFat (#5525, #5861)
- const for Ticker::active() (#5850)
- Remove redundant check for zero size SPIFFS partition (#5841)
- Implement sntp_get|set_timezone_in_seconds() (#5828)
- Fix repaintable stack calculation (#5821)
- Revert to nonos-sdk 2.2.1, new sdk-switching option in IDE menu for generic board only (#5763)
- prepare allman style (#5774)
- fix UdpContext::(connect,listen) signature by using IPAddress (#5742)
- Small String Optimization (#5690)
- Fix pgm_read_ptr() (#5735)
- Use "bool" for "boolean" type (#5693)
SSL-TLS:
- Fix MFLN probe and allow returning whether MFLN succeeded or not after a connection. (#6000)
- BearSSL Max Fragment Length Negotation and Node.js server (#5929)
- example: Fix the changed structure of the input file (#5891)
- Add OOM check and debug message in CertStore (#5820)
- Add debug messages on BSSL errors (#5723)
- New menu option to minimize BearSSL ROM with only RSA (#6006)
Libraries: MDNS
- MDNS Callback setting needs std::bind parameter by reference instead of by value (#6037)
- Fix OTA in AP mode (#5894)
- LEAmDNS: remove implicit debug statements (#5895)
Libraries: WiFi
- WiFi: fix switching to static address after WiFi.begin() with lwip2 (#6026)
- udp: restore correct address/port when parsing packet (#6011)
- reenable ARP queuing in lwIP2 (#5978)
- lwIP-v2: new patch to randomize tcp source ports (#5906)
- bugfix: restore WiFi::setSleepMode functionality with sdk-2.2.x (#5919)
- Fix SSID reporting for 32-char SSIDs (#5889)
- Allow to disable DHCP gateway offer when set up of AP. (#4421)
- lwip2: ipv6: fix udp_new() #5744 (#5752)
- UdpContext::setMulticastInterface(): fix for IPv6 (#5743)
Libraries:
- SPISlave: Fix spi slave timing (#6022)
- Fix ssdp (#5750)
- optionally allow redirects on HTTPClient & OTA updates (#5009)
- OTA: Add progress callback to Updater class. (#5754)
- Fix hardcoded dependency of ArduinoOTA on mDNS (#5768)
- change ESP8266WebServer::send_P to function the same as ::send (#5507)
- Honor timeout in HTTPClient (#6056)
Examples
- Fix example DigestAuthorization.ino: Fix WiFiClient vs. HttpClient declaration order (#6029)
- Fix example StreamHttpClient.ino: Fix WiFiClient vs. HttpClient declaration order (#6030)
Emulation on Host:
- Various fixes (#5764, #5765, #5766, #5771, #5772, #5802, #5809, #5840, #5829, #5994, #6013)
- emulation on host: Add full UART driver emulation. (#5785)
Submodules:
- SoftwareSerial: version 5.0.4 (#5965, #5977, #5993, #5981)
- SoftwareSerial: fix for inverse logic mode (#5972)
Boards:
- boards: Invent One: fix analog pin (#5741)
Build system, Toolchain & Newlib
- Fix default git version for non git users (#6044)
- git clean honors .gitignore, tools downloaded by tools/get.py in place (#6036)
- PlatformIO: generate core_version.h when using feature/stage (#5917)
- Fix boards-manager install issues on Linux and Windows (#5898)
- Fix crash in certain PMEM printf format parsing (#5968)
- fix boards.txt.py with python3 (#5887)
- add optional espressif fw nonos-sdk 2.2.x (19.03.13) (#5873)
- Adjust python module search path to avoid picking up pre-existing pyserial/esptool instead of one under tools/ (#5854)
- PlatformIO: Append FLASHMODE_* macro (#5813)
- Make signing.py Python2.6+ and Python3+ compat (#5807)
- PlatformIO: Make exceptions off by default #5538 (#5814)
- Clean up uploader.py, use implied paths (#5805)
- Use Pythonic way of calling esptool, avoid fork(#5797)
- Use local copy of python distro to include a subdir (#5796)
- Use esptool.py to handle sketch upload, make python available on Windows, too (#5635)
- Move __PRETTY_FUNCTION__ to progmem (#5758)
- msys2 support for tools/get.py (#5751)
- Wrap get.py's "if __name__ == '__main__':" into a function so it can be externally called (#4475)
- Move .C to .CPP in the code (#5696)
2.5.0
Changes since 2.4.2 (to 2.5.0)
Breaking change
- Arduino FQBN has changed since release 2.4.2 (issue #5572)
- SSL/TLS API (BearSSL)
Great additions
- overall stability and performance improvements
- modern SSL/TLS with BearSSL (now default)
- new mDNS library rewrite (aka LEA version is default)
- nonos-SDK pre-3.0.0 (#5210)
- C++ Exceptions (experimental, not enabled by default)
- newlib update (fixes + *printf accepts fmt and args from flash)
- IPv6 support
- sketch execution on mock Arduino environment on host computer (experimental)
Core
- Improved readString() for File (#5445)
- stop lwIP dhcp client when WiFi goes off. (#5703)
- Fix pgm_read_float() macro definitions (#5666)
- Release buffer/cache on SPIFFS.end() (#5651)
- GDB support w/new toolchain and UART driver (#5559)
- hardwareSerial: add missing include (#5648)
- Changed I2C buffer from 32 to 128 bytes to match Espressif's ESP32 Arduino core (#3576)
- Remove broken ltoa/ultoa, call itoa/utoa (#5625)
- Make waveform generator a NMI to run always, increase accuracy (#5578)
- Remove interrupt disable around flash operations (#5577)
- Make exceptions off by default (#5538)
- Rewrite PUYA patch to be more universal and mem friendly. (#5504)
- Increase free IRAM (#5499)
- better compatibility for IPAddress changes with external libraries (#5438)
- Make exceptions a configurable menu (#5434)
- Use Python JSON to format packages.json file (#5429)
- Fix pgmspace 32-bit read macros (#5425)
- fix inconsistent block size for spiffs in board.txt. and ld files (#5412)
- Split AddrList into object-iterator-container components (#5410)
- weak hook preinit() #2111 #2133 #2136 (#5395)
- fix espconn and err_t (#5392)
- Pass string objects by reference (#5378)
- Fix rtc mem bounds check (#5372)
- Check for WEP when setting authmode (#5364)
- i2s can send now buffers (#5349)
- cleanup/unify flash sector size define value (#5327)
- deprecate RTC_REG macros in favor of TIMER_REG macros (old typo in macro names) (#5326)
- Only stop waveforms actually running in ISR (#5308)
- Use "PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY" as default lwIP profile for @platformio (#5305)
- Add missing decrement operator to I2C clockCount (#5292)
- Fix arg type in Wire to size_t (#5289)
- constexpr helpers to identify core version (#5269)
- Allow override of macros in core_version.h (#5268)
- fix md5 comparison (#5265)
- fix SPIFFS when not enabled in build options (#5249)
- Make stopWaveform call interrupt callable (#5248)
- I2C slave support (originally by bjoham) (#5226)
- Add stack repainting call to ESP class (#5221)
- Fix led-pin in updater, also no need to backup LED state (#5217)
- Update to the last version of nonos-sdk V2, WiFi addons (#5210)
- PolledTimeout Class for wrapping millis() loops (#5198)
- cleanly restore spiffs data in boards.txt (#5195)
- IPv6 and major IPAddress changes (#5136)
- Allow GPIO 9 and 10 for waveform generation (#5055)
- Consolidate .iram.text matcher in linker to wildcard matcher (#4356)
- implement EspClass::getFreeContStack method (#5133)
- restore SPIFFS symbols when null-sized (#5122)
- Make unique sections for ICACHE_* variables (#5117)
- metric for heap fragmentation (#5090)
- revert e02932f (#619 works now without it) (#5056)
- Add instantly option to deepSleep (#5052)
- Move some exception strings to PROGMEM (#5050)
- Enclose PROGMEM segment names in quotes (#5049)
- Move all PROGMEM to their own section (#5048)
- Fix iostream related issues (#5047)
- uart: BW improvements (#4620)
Library - mDNS
- Functional update, host and service probes (#5653)
- LEAmDNS fixes #3 (#5689)
- Undo move of keywords.txt and readme.rst for ESP8266mDNS library (#5495)
- LEAmDNS Fixes (#5641, #5619, #5563)
- Update mDNS examples to use HTTP Server instead of TCP Server (#5589)
- use newlib api in new mDNS, fix host using mDNS (#5545)
- mDNS: Add support for String arg to begin() (#5542)
- LEAmDNS - Multicast DNS Responder rewrite (#5442)
Library - ESP8266WiFi
- Add capability to have light static DHCP lease (#5594)
- dynamic WiFi.hostname("newname") (#5652)
- decorate as override virtual methods in WiFiUDP (#5637)
- WiFiClient::remoteIP: fix nullptr crash (#5634)
- turn off random delay before sntp request (#5567)
- fix dhcp6 in upstream lwIP (#5560)
- fixes for IPv6, added in CI (#5557)
- add 1 more IPAddress constructor for IPv6 (#5551)
- Add support for String args to softAP and begin (#5295)
- let lwIP route packets, do not let SDK teaching how to do so (#5526)
- in sta mode, empty passphrase should not use secure auth mode (#5516)
- Implement for ssid a similar approach as for passphrase (#5411)
- Move WiFi debug messages to PMEM (#5388)
- Check if AP exists before adding it (#5373)
- Check for WEP when setting authmode (#5364)
- Set authmode if passphrase is provided (#5317)
- Fix: WiFiClient::flush() yields but can be called from events (#5254)
- Add cryptographically signed update support (#5213)
- WiFi: improve WiFiClient(Basic) examples (#5197)
- ClientContext: restore TCP PuSH flasg when needed (#5176)
- fix: tcp_output() should always be called after tcp_write(), does not break nagle (+ doc) (#5172)
- Fix TCP race condition, remove fixed delay in CC (#5167)
- automatically WiFiClient::flush before ::stop (#5135)
- read all lines from slow servers (#5113)
- ClientContext (tcp) updates (#5089)
Library - ESP8266WiFi (SSL/TLS)
- Fix memory related issues w/BearSSL server/client (#5706)
- Fix BearSSL Server WDT (#5702)
- Update to latest BearSSL code. (#5669)
- Silently eat \rs in PEM decoder in BearSSL (#5598)
- Update to latest BearSSL w/EC25519 fix (#5468)
- fix compilation error - can't find axTLS::WiFiServerSecure (#5407)
- Don't clear authentication options on a ::stop (#5386)
- Remove obsolete BSSL debug print routines (#5368)
- Deprecate axTLS, update examples (#5366)
- Move BearSSLHelpers into BearSSL namespace (#5315)
- Patch axTLS CVEs and fix CA verification (#5270)
- Add warning when no authenticator, drop verify() (#5205)
- Add BearSSL::setFingerprint(char* fp) (#5204)
- Really free stack after last BearSSL obj destroyed (#5185)
- Move BearSSL _cipher* init to _clear() for consistency (#5178)
- Clear cipher list on server creation, fix crash (#5171)
- Move BearSSL from STACK_PROXY to a real, thunked 2nd stack (#5168)
- Add SSL Session capability to speed reconnections (#5160)
- Allow cipher specification for BearSSL (#5151)
- Move SSLContext to its own header (#5121)
- Update axTLS to e634adf (#5125)
- Fix connection options and update github pubkey (#5120)
- Add WiFiClient parameter to HTTPClient (#4980)
Library - ESP8266WebServer
- update HTTPCLIENT_1_1_COMPATIBLE (#5389)
- fix http parsing (#5262)
- Fix webserver unresponsiveness (#5259)
- Improved parameter validation (#5256)
- fix parseArgument #2 (#5252)
- fix typo (#5189)
- Added naive content length to upload struct (#5142)
- Expose post args during upload (#4935)
Library - ESP8266HTTPClient
- Save 2.3K in HTTPClient debug mode by PSTR (#5387)
- Bugfix/esp8266 http client (#5250)
- ESP8266httpClient crash-on-destructor bugfix (#5220)
- Update api.github.com certificate signature (#5145)
- ESP8266HTTPClient: allow getString() more than once (#5091)
- Support for concatenation of headers (#4864)
Other Libraries
- Update ArduinoOTA and examples with MDNS.update() calls (#5494)
- DNS: CaptivePortalAdvanced example: Fix compatibility with Android (#5069)
- Wire Examples based on AVR ones of the same name (#5713)
- SPI: Allow unaligned input/output to SPI::transferBytes (#5709)
- Release referenced resources in the destructor for ESP8266SSDP (#5607)
- Rework DNSServer to be more robust (#5573)
- Fix negative SPIFFS size (#5522)
- Webserver: some clients were not able to authenticate using DIGEST_AUTH (#5506)
- OTA (espota.py) (#5454)
- Add SD.end() method, including arg to leave SPI up (#5402)
- (SSDP) usn and udn differences cause issues with smarthings (#5401)
- Fix debug provision for DNSServer (#5329)
- Update ESP8266HTTPUpdateServer library (#5297)
- examples code cleanup (#5290)
- Dns server cleanup (#5194)
- Add missing keywords.txt files to bundled libraries (#5183)
- WiFi Mesh Update 2.1 (#5157)
- Create library.properties (#5129 #5128 #5127 #5119)
- Fix min and max for Servo library (#5064)
- Hash: make actual SHA1 result and comment consistent (#5057)
- Implementation of Functional and Scheduled option in Ticker lib (#5030)
- CaptivePortalAdvanced: Change debug print to println (#5000)
- SD: Implement readBytes (#4931)
Build system, Toolchain & Newlib
- Update to toolchain 2.5.0-3 JSON (#5502)
- Move libstdc++-nox out of IRAM (#5492)
- fix lwip selection in tests/device Makefile (#5643)
- Split common.sh into separate scripts for each job (#5569)
- make CI starts with (longer) PIO jobs, also move (shorter) host job later (#5599)
- Add Linux i686 (32bit) architecture toolchain (#5586)
- Speed up CI builds with caching hacks (#5539)
- emulation on host: fixes and updates (#5537, #5633, #5605)
- Update to Newlib c0f3596 with regexp/fnmatch (#5457)
- Update toolchain and bins to 2.5.0-2 autobuild(#5441)
- Add 64-bit %ll printf format support (#5435)
- Add in Win64 pointers to Win32 tools (#5427)
- Add %z and %x to printf backend (#5424)
- Enable exceptions, update to optimized newlib, migrate to new toolchain (#5376)
- Move ICACHE_* to unique sections, local LD scr...
2.5.0-beta3
Breaking change
- Arduino FQBN has changed since release 2.4.2 (issue #5572)
Core
- Fix pgm_read_float() macro definitions (#5666)
- Release buffer/cache on SPIFFS.end() (#5651)
- GDB support w/new toolchain and UART driver (#5559)
- hardwareSerial: add missing include (#5648)
- Changed I2C buffer from 32 to 128 bytes to match Espressif's ESP32 Arduino core (#3576)
- Remove broken ltoa/ultoa, call itoa/utoa (#5625)
- Make waveform generator a NMI to run always, increase accuracy (#5578)
- Remove interrupt disable around flash operations (#5577)
- Make exceptions off by default (#5538)
- Rewrite PUYA patch to be more universal and mem friendly. (#5504)
Library - ESP8266WiFi (SSL/TLS)
Library - ESP8266WiFi
- Add capability to have light static DHCP lease (#5594)
- dynamic WiFi.hostname("newname") (#5652)
- decorate as override virtual methods in WiFiUDP (#5637)
- WiFiClient::remoteIP: fix nullptr crash (#5634)
- turn off random delay before sntp request (#5567)
- fix dhcp6 in upstream lwIP (#5560)
- fixes for IPv6, added in CI (#5557)
- add 1 more IPAddress constructor for IPv6 (#5551)
- Add support for String args to softAP and begin (#5295)
- let lwIP route packets, do not let SDK teaching how to do so (#5526)
- in sta mode, empty passphrase should not use secure auth mode (#5516)
Library - mDNS
- LEAmDNS Fixes (#5641, #5619, #5563)
- Update mDNS examples to use HTTP Server instead of TCP Server (#5589)
- use newlib api in new mDNS, fix host using mDNS (#5545)
- mDNS: Add support for String arg to begin() (#5542)
Other Libraries
- Release referenced resources in the destructor for ESP8266SSDP (#5607)
- Rework DNSServer to be more robust (#5573)
- Fix negative SPIFFS size (#5522)
- Webserver: some clients were not able to authenticate using DIGEST_AUTH (#5506)
Build system, Toolchain & Newlib -
- fix lwip selection in tests/device Makefile (#5643)
- Split common.sh into separate scripts for each job (#5569)
- make CI starts with (longer) PIO jobs, also move (shorter) host job later (#5599)
- Add Linux i686 (32bit) architecture toolchain (#5586)
- Speed up CI builds with caching hacks (#5539)
- emulation on host: fixes and updates (#5537, #5633, #5605)
Boards
- generic esp8266 board: Use flash mode DOUT by default, in place of QIO (#5601)
Documentation
2.5.0-beta2
Changes since 2.5.0-beta1:
Core
- Increase free IRAM (#5499)
Library - mDNS
- Undo move of keywords.txt and readme.rst for ESP8266mDNS library (#5495)
Library - ArduinoOTA
- Update ArduinoOTA and examples with MDNS.update() calls (#5494)
Build system, Toolchain & Newlib
Package Builder
- Keep signing commands in platform.txt on release (#5491)
Documentation
- Update release instructions README.md (#5482)