Releases: esp8266/Arduino
Releases · esp8266/Arduino
Release 3.1.2
Release 3.1.2 Notes
Second patch release (includes 3.1.1 and 3.1.0)
Core
- Fix weak assignment in flash_hal.h (#8884)
 - Remove stale patch required for older SDK releases (#8858)
 - Show 'Exception' cause and 'epc1=...' address when interrupted by Soft WDT (#8851)
 - Issue warning when reallocating String buffer too much (#8821, #8849)
 - Fix stack offset and division-by-zero origin in postmortem message (#8839)
 - IPAddress: Properly handle u8 pointers when assigning and comparing (#8818)
 
Build system
General
- Don't use -g++ or -gcc suffixes in command line arguments (#8829)
 - Log all exceptions in upload.py (#8813)
 
mkbuildoptglobals.py
- Assert python version (#8886)
 - Resolve Windows path encoding problems (#8860)
 - Fix not finding preferences.txt (#8814, #8812)
 
Libraries
- Ethernet: fix library.properties (#8880)
 - EspSoftwareSerial 8.0.1: onReceive bug fix and new namespace (#8869)
 - Make http-server less verbose in debug mode (#8850)
 - SdFat: Fix long operations triggering watchdog (#8844)
 - LowPowerDemo: Fix typo (#8841)
 - SdFat: FS HAL mode fixes & test (#8833)
 - Ticker: Safeguard for internal storage that may be changed during callback execution (#8820)
 - HTTPClient example: Fix typo (#8819)
 - Basichttpsclient example: fingerprint handled by update scripts (#8311)
 
Documentation
- Expand the hardware debugging limitations section (#8879)
 
CI
- Emulation on host: fix UDP seek&peek (#8827)
 
Release 3.1.1 Notes
Core
- Transparently manage recurrent scheduled functions in delay() (#8802)
 - Fix C builds when including coredecls.h and / or core_esp8266_features.h (#8795)
 - Typo in EAP patch (#8797)
 - Fix clang warnings related to constexpr usage (#8796)
 - Fix printf format in Updater debug messages (#8791)
 
Examples
- Remove 400b stack allocation from Advanced Web example (#8793)
 
Build system
- Also apply #8226 portable python fix to mkbuildopts script (#8804)
 - Attempt to fix elf2bin.py not always working on Windows (#8799)
 
CI
Release 3.1 Notes
Great additions
- NONOS SDK 3.0.5 (#8736, #8746, #8755, #8770)
 - Support for global build defines and options for Arduino IDE (#8504)
 - WPA2-Enterprise (#8529, #8566)
 - (experimental) Flash-size agnostic builds (#6690)
 
Additions
- DHCP custom option(s) for DhcpServer (#8582)
 - Updater lifetime callbacks (#8653)
 - Add 
WiFiClient::abort()(#8738) 
Notable changes
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - Update to EspSoftwareSerial 7.0.0 (#8781)
 - Keep Servo in the same position after re-attaching (#8753)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - mDNS - valid 
boardfor_adruino._tcpservice (#8634) - Allow longer delays for Ticker (#8625)
 - ArduinoOTA and ESP8266HTTPUpdate no longer stop all WiFiClient/WiFiUDP (#8598)
 - WiFiServer - rename available() to accept(), deprecate available() (#8419)
 - Avoid out-of-bounds reads in String (#8463, #8597)
 - Fix compilation issues and update toolchain (#8393, #8613)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - lwIP v2.1.3 + various fixes (#8319, #8596)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - I2C clock phase correction in START condition (#8383)
 - MMU functions strict aliasing fixes (#8290)
 - Add FSTools with examples of how to convert between SPIFFS and LittleFS (#7696)
 - Rename 
esp_yield()toesp_suspend(), updateesp_yield()to also callesp_schedule()(#7148) 
Breaking changes
None
Changes
SDK
- Added NONOS SDK 3.0.5 (#8736, #8770)
 - Resolve flash address issues with SDK 3.0.x (#8755)
 - Heap addendum to handle changes in NON-OS SDK 3.0.x (#8746)
 - Fix missing NONOS SDK 2.2.x 19-03-13 (#7965, #8363)
 
Core
- Fix flashinit panic not printing (#8762)
 - Fix Stream::parseFloat() (#8785)
 - Added missing DRAM fallback to pvPortCallocIram, pvPortZallocIram, and (#8765)
 - Fix pre-SDK Cache_Read_Enable for PUYA flash (#8658)
 - OTA: Updater lifetime callbacks (#8653)
 - Nice stack smashing postmortem message (#8670)
 - Ensure xPortGetFreeHeapSize reports DRAM (#8680)
 - SPI: writePattern() should not call setDataBits(0) (#8636)
 - Correctly handle unaligned address in EspClass::flashWrite u8 overload (#8605)
 - Add 
esp_is_8285(), check for ESP8285 at runtime (#8604) - Allow to use temporary strings in configTime (#8606)
 - Allow UART1 to be inverted (#8601)
 - Avoid reading past end of non-zero terminated char arrays (#8597)
 - Fix DTR offset value (#8586)
 - WString: remove 
operator==(const __FlashStringHelper*)(#8569) - Permit using the Updater _hash function, even if we don't have a signature appended to the image (#8507, #8545)
 - Test: fixing itoa implementation and clean-up of tests and test Makefile (#8531)
 - WString: unify numeric conversion and fix assignments (#8526)
 - Fix OOM print handling of NULL file pointer (#8527)
 - Heap panic / abort cleanup (#8465)
 - Heap init code improvements and updates (#8458)
 - Fix, calloc now fails on extra-large request. (#8482)
 - Flash-size agnostic builds (#6690)
 - WString: avoid writing to const storage (#8463)
 - Fix Stream::read into buffer ignoring every second byte (#8452, #8453)
 - Fix VM Address mask (#8440)
 - Import getLocalTime() from esp32/Arduino (#8413)
 - Sync umm_malloc style with upstream (#8426)
 - StreamConstPtr: disallow passing a String temporary (#8410)
 - Fix 
umm_blocks()(#8429) - Missing includes in StreamString.h (#8367)
 - Implement 
esp_yield()as a replacement fordelay(0)(#7148) - Update 
mmu_get...andmmu_set...(#8290) - Reduce build size by implementing flash string overloads for String (#8106)
 
Libraries - FS
- Update to LittleFS 2.5.1 (#8543, #8786)
 - Fix File::readString to work with binary data (#8742)
 - Add FSTools with examples of how to convert between SPIFFS and LITTLEFS. (#7696)
 - Correctly using fs:: namespace in SD & SDFS (#8493)
 - Move ESP8266SDFat library to master, not branch (#8460)
 - Fix info.usedBytes calculation giving weird result (#8445)
 - LittleFS: add overrides for Stream::send (#8386)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - Clean up SpeedTest output, avoid div-by-0 (#8340)
 
Libraries - Network
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - lwip2: cleanup logging and use newlib printf (#8769)
 - Consistent 
netif->status_callback(#8676) - Make WiFi/Ethernet interface compatible with Arduino Ethernet API (#8645)
 - Fix WiFi/Ethernet hostname management (#8626)
 - Add 
WiFiClient::abort()(#8738) - Provide 
wl_tcp_stateastcp_statealias (#8609) - Do not call tcp/udp ::stopAll() when it is not required to do so (#8598)
 - Fix lwip2 ping (#8596)
 - DHCP custom option(s) for DhcpServer (#8582)
 - lwIP on ethernet: examples (#8395)
 - Define lwIP's s32/u32 to int (#8560)
 - Update RFC 5246 URL (#8564)
 - lwIP: v2.1.3 + dhcp fixes (#8319)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - WiFi library ArduinoWiFiServer update (#8238)
 - Place deprecated attribute in front of function (#8258)
 
Libraries - WiFi
- Allow passing beacon interval to SoftAP config (#8695)
 - Optimize disconnect method in WiFiSTA class (#8760)
 - Add eraseap option to WiFi disconnect method. (#8758)
 - Allow to access 
bss_infoafter scan (#8683) - Patch eap.o memory leak (#8566)
 - Fix double-free when connecting to WPA2-Enterprise networks (#8529)
 - Initialize SoftAP DhcpServer object on demand (#8546)
 - Correctly access 
WIFI_EVENT_MODE_CHANGEevent info (#8343) - Return 
WL_WRONG_PASSWORDwhen calling begin() w/ invalid password (#8229) 
Libraries - TLS/SSL
- Don't return 
truewithWiFiClientSecureBearSSL::connected()when really disconnected (#8330) - Only check the actual used length of the hash (#8709)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - SSL examples updates (#8643)
 - Update example certs (#8642)
 - Update to latest BearSSL (#8600)
 - Delete operator=(Self&) when copy constructor is deleted (#8535)
 - Update sessions example to show speed difference (#8528)
 
Libraries - ESP8266WebServer
- Stop incorrectingly increase number of arguments when setting up arg("plain") (#8599)
 - Use String when working with Basic authentication (#8548)
 - Fix missing implementation of send stream by reference (#8533)
 - Drop inactive connection when another is waiting to improve page load time (#8216)
 - Optional ETag support, custom generator function (#8227)
 
Libraries - Wire
- Buffer length improvements (#8398)
 - Allow to override buffer length (#8390)
 - I2C clock phase correction in START condition (#8383)
 
Libraries - HTTPUpdate
- Allow passing custom HTTPClient (#8773)
 - Correct class name in readme.rst (#8751)
 - Add DEBUG payload output (#8745)
 - Add setClientTimeout() (#8740)
 - Fix missing include in OTA example (#8667)
 - Catch a possible null-dereference (#8508)
 - Allow manually setting MD5 checksum (#8204)
 
Libraries - HTTPClient
- Fix connection reuse for different URIs in ::begin (#8466)
 - Prevent empty user-agent in header (#8411)
 - Movable HTTPClient and fixing WiFiClient copy (#8237)
 - Add writeToPrint (#8056)
 - Pass authorization String by value (#8225)
 - Add 
::DELETE()(#8214) 
Libraries - ArduinoOTA
Libraries - mDNS
Release 3.1.1
Release 3.1.1 Notes
(includes 3.1.0 release notes)
Core
- Non-interruptible delay(), wait for the full duration (#8802)
 - Transparently manage recurrent scheduled functions in delay() (#8802)
 - Fix C builds when including coredecls.h and / or core_esp8266_features.h (#8795)
 - Typo in EAP patch (#8797)
 - Fix clang warnings related to constexpr usage (#8796)
 - Fix printf format in Updater debug messages (#8791)
 
Examples
- Remove 400b stack allocation from Advanced Web example (#8793)
 
Build system
- Also apply #8226 portable python fix to mkbuildopts script (#8804)
 - Attempt to fix elf2bin.py not always working on Windows (#8799)
 
CI
Release 3.1.0 Notes
Great additions
- NONOS SDK 3.0.5 (#8736, #8746, #8755, #8770)
 - Support for global build defines and options for Arduino IDE (#8504)
 - WPA2-Enterprise (#8529, #8566)
 - (experimental) Flash-size agnostic builds (#6690)
 
Additions
- DHCP custom option(s) for DhcpServer (#8582)
 - Updater lifetime callbacks (#8653)
 - Add 
WiFiClient::abort()(#8738) 
Notable changes
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - Update to EspSoftwareSerial 7.0.0 (#8781)
 - Keep Servo in the same position after re-attaching (#8753)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - mDNS - valid 
boardfor_adruino._tcpservice (#8634) - Allow longer delays for Ticker (#8625)
 - ArduinoOTA and ESP8266HTTPUpdate no longer stop all WiFiClient/WiFiUDP (#8598)
 - WiFiServer - rename available() to accept(), deprecate available() (#8419)
 - Avoid out-of-bounds reads in String (#8463, #8597)
 - Fix compilation issues and update toolchain (#8393, #8613)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - lwIP v2.1.3 + various fixes (#8319, #8596)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - I2C clock phase correction in START condition (#8383)
 - MMU functions strict aliasing fixes (#8290)
 - Add FSTools with examples of how to convert between SPIFFS and LittleFS (#7696)
 - Rename 
esp_yield()toesp_suspend(), updateesp_yield()to also callesp_schedule()(#7148) 
Breaking changes
None
Changes
SDK
- Added NONOS SDK 3.0.5 (#8736, #8770)
 - Resolve flash address issues with SDK 3.0.x (#8755)
 - Heap addendum to handle changes in NON-OS SDK 3.0.x (#8746)
 - Fix missing NONOS SDK 2.2.x 19-03-13 (#7965, #8363)
 
Core
- Fix flashinit panic not printing (#8762)
 - Fix Stream::parseFloat() (#8785)
 - Added missing DRAM fallback to pvPortCallocIram, pvPortZallocIram, and (#8765)
 - Fix pre-SDK Cache_Read_Enable for PUYA flash (#8658)
 - OTA: Updater lifetime callbacks (#8653)
 - Nice stack smashing postmortem message (#8670)
 - Ensure xPortGetFreeHeapSize reports DRAM (#8680)
 - SPI: writePattern() should not call setDataBits(0) (#8636)
 - Correctly handle unaligned address in EspClass::flashWrite u8 overload (#8605)
 - Add 
esp_is_8285(), check for ESP8285 at runtime (#8604) - Allow to use temporary strings in configTime (#8606)
 - Allow UART1 to be inverted (#8601)
 - Avoid reading past end of non-zero terminated char arrays (#8597)
 - Fix DTR offset value (#8586)
 - WString: remove 
operator==(const __FlashStringHelper*)(#8569) - Permit using the Updater _hash function, even if we don't have a signature appended to the image (#8507, #8545)
 - Test: fixing itoa implementation and clean-up of tests and test Makefile (#8531)
 - WString: unify numeric conversion and fix assignments (#8526)
 - Fix OOM print handling of NULL file pointer (#8527)
 - Heap panic / abort cleanup (#8465)
 - Heap init code improvements and updates (#8458)
 - Fix, calloc now fails on extra-large request. (#8482)
 - Flash-size agnostic builds (#6690)
 - WString: avoid writing to const storage (#8463)
 - Fix Stream::read into buffer ignoring every second byte (#8452, #8453)
 - Fix VM Address mask (#8440)
 - Import getLocalTime() from esp32/Arduino (#8413)
 - Sync umm_malloc style with upstream (#8426)
 - StreamConstPtr: disallow passing a String temporary (#8410)
 - Fix 
umm_blocks()(#8429) - Missing includes in StreamString.h (#8367)
 - Implement 
esp_yield()as a replacement fordelay(0)(#7148) - Update 
mmu_get...andmmu_set...(#8290) - Reduce build size by implementing flash string overloads for String (#8106)
 
Libraries - FS
- Update to LittleFS 2.5.1 (#8543, #8786)
 - Fix File::readString to work with binary data (#8742)
 - Add FSTools with examples of how to convert between SPIFFS and LITTLEFS. (#7696)
 - Correctly using fs:: namespace in SD & SDFS (#8493)
 - Move ESP8266SDFat library to master, not branch (#8460)
 - Fix info.usedBytes calculation giving weird result (#8445)
 - LittleFS: add overrides for Stream::send (#8386)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - Clean up SpeedTest output, avoid div-by-0 (#8340)
 
Libraries - Network
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - lwip2: cleanup logging and use newlib printf (#8769)
 - Consistent 
netif->status_callback(#8676) - Make WiFi/Ethernet interface compatible with Arduino Ethernet API (#8645)
 - Fix WiFi/Ethernet hostname management (#8626)
 - Add 
WiFiClient::abort()(#8738) - Provide 
wl_tcp_stateastcp_statealias (#8609) - Do not call tcp/udp ::stopAll() when it is not required to do so (#8598)
 - Fix lwip2 ping (#8596)
 - DHCP custom option(s) for DhcpServer (#8582)
 - lwIP on ethernet: examples (#8395)
 - Define lwIP's s32/u32 to int (#8560)
 - Update RFC 5246 URL (#8564)
 - lwIP: v2.1.3 + dhcp fixes (#8319)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - WiFi library ArduinoWiFiServer update (#8238)
 - Place deprecated attribute in front of function (#8258)
 
Libraries - WiFi
- Allow passing beacon interval to SoftAP config (#8695)
 - Optimize disconnect method in WiFiSTA class (#8760)
 - Add eraseap option to WiFi disconnect method. (#8758)
 - Allow to access 
bss_infoafter scan (#8683) - Patch eap.o memory leak (#8566)
 - Fix double-free when connecting to WPA2-Enterprise networks (#8529)
 - Initialize SoftAP DhcpServer object on demand (#8546)
 - Correctly access 
WIFI_EVENT_MODE_CHANGEevent info (#8343) - Return 
WL_WRONG_PASSWORDwhen calling begin() w/ invalid password (#8229) 
Libraries - TLS/SSL
- Don't return 
truewithWiFiClientSecureBearSSL::connected()when really disconnected (#8330) - Only check the actual used length of the hash (#8709)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - SSL examples updates (#8643)
 - Update example certs (#8642)
 - Update to latest BearSSL (#8600)
 - Delete operator=(Self&) when copy constructor is deleted (#8535)
 - Update sessions example to show speed difference (#8528)
 
Libraries - ESP8266WebServer
- Stop incorrectingly increase number of arguments when setting up arg("plain") (#8599)
 - Use String when working with Basic authentication (#8548)
 - Fix missing implementation of send stream by reference (#8533)
 - Drop inactive connection when another is waiting to improve page load time (#8216)
 - Optional ETag support, custom generator function (#8227)
 
Libraries - Wire
- Buffer length improvements (#8398)
 - Allow to override buffer length (#8390)
 - I2C clock phase correction in START condition (#8383)
 
Libraries - HTTPUpdate
- Allow passing custom HTTPClient (#8773)
 - Correct class name in readme.rst (#8751)
 - Add DEBUG payload output (#8745)
 - Add setClientTimeout() (#8740)
 - Fix missing include in OTA example (#8667)
 - Catch a possible null-dereference (#8508)
 - Allow manually setting MD5 checksum (#8204)
 
Libraries - HTTPClient
- Fix connection reuse for different URIs in ::begin (#8466)
 - Prevent empty user-agent in header (#8411)
 - Movable HTTPClient and fixing WiFiClient copy (#8237)
 - Add writeToPrint (#8056)
 - Pass authorization String by value (#8225)
 - Add 
::DELETE()(#8214) 
Libraries - ArduinoOTA
Libraries - mDNS
- Restart mDNS when network state changes (#8705)
 - Also increase # of sends when a send fails (#8641)
 - Report valid Board ID (#8634)
 - Fix timeout type (#8394)
 - Remove obsolete comments about legacy mDNS impl. (#8377)
 
Libraries - others
- Update to EspSoftwareSerial 7.0.0 (#8260, #8295, #8353, #8370, #8373, #8541, #8739, #8754, #8781)
 - Remove temporary buffer in common ConfigFile example .ino (#8298)
 - DNS Server: Add DNS forwarder to DNSServer (#7237)
 - Netbios: Use current netif address in response (#8622)
 - Servo: Keep Servo in the same position after re-attaching (#8753)
 - HTTPUpdateServer Allow external POSTS (CORS) (#6824)
 - Ticker: Allow longer delays and some internal updates (#8625)
 
Tools
- Stack decoder script (#8661)
 - Do not show python traceback when esptool fails (#8603, #8608)
 - Table output for segment size script (#8551, #8572, #8573)
 
Documentation
- Correction on Heap API available from ISR (#8708)
 - We are no longer using Travis CI (#8706)
 - Update WiFi scan docs (#8685)
 - Fix Sphinx build warnings (#8686)
 - Add missing license headers (#8630)
 - Update FS documentation (#8619)
 - Document side effects for wifi-off-at-boot (#8614)
 - Correct "list" formatting (#8610)
 - Update broken links (#8589)
 - Add documentation entry about compiler warnings (#8492)
 - Remove Python installation from OTA doc (#8417)
 - comments on Arduino flush() method (#8318)
 
Boards
- Add Wemos ESP-WROOM-...
 
Release 3.1.0
Release 3.1.0 Notes
Great additions
- NONOS SDK 3.0.5 (#8736, #8746, #8755, #8770)
 - Support for global build defines and options for Arduino IDE (#8504)
 - WPA2-Enterprise (#8529, #8566)
 - (experimental) Flash-size agnostic builds (#6690)
 
Additions
- DHCP custom option(s) for DhcpServer (#8582)
 - Updater lifetime callbacks (#8653)
 - Add 
WiFiClient::abort()(#8738) 
Notable changes
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - Update to EspSoftwareSerial 7.0.0 (#8781)
 - Keep Servo in the same position after re-attaching (#8753)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - mDNS - valid 
boardfor_adruino._tcpservice (#8634) - Allow longer delays for Ticker (#8625)
 - ArduinoOTA and ESP8266HTTPUpdate no longer stop all WiFiClient/WiFiUDP (#8598)
 - WiFiServer - rename available() to accept(), deprecate available() (#8419)
 - Avoid out-of-bounds reads in String (#8463, #8597)
 - Fix compilation issues and update toolchain (#8393, #8613)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - lwIP v2.1.3 + various fixes (#8319, #8596)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - I2C clock phase correction in START condition (#8383)
 - MMU functions strict aliasing fixes (#8290)
 - Add FSTools with examples of how to convert between SPIFFS and LittleFS (#7696)
 - Rename 
esp_yield()toesp_suspend(), updateesp_yield()to also callesp_schedule()(#7148) 
Breaking changes
None
Changes
SDK
- Added NONOS SDK 3.0.5 (#8736, #8770)
 - Resolve flash address issues with SDK 3.0.x (#8755)
 - Heap addendum to handle changes in NON-OS SDK 3.0.x (#8746)
 - Fix missing NONOS SDK 2.2.x 19-03-13 (#7965, #8363)
 
Core
- Fix flashinit panic not printing (#8762)
 - Fix Stream::parseFloat() (#8785)
 - Added missing DRAM fallback to pvPortCallocIram, pvPortZallocIram, and (#8765)
 - Fix pre-SDK Cache_Read_Enable for PUYA flash (#8658)
 - OTA: Updater lifetime callbacks (#8653)
 - Nice stack smashing postmortem message (#8670)
 - Ensure xPortGetFreeHeapSize reports DRAM (#8680)
 - SPI: writePattern() should not call setDataBits(0) (#8636)
 - Correctly handle unaligned address in EspClass::flashWrite u8 overload (#8605)
 - Add 
esp_is_8285(), check for ESP8285 at runtime (#8604) - Allow to use temporary strings in configTime (#8606)
 - Allow UART1 to be inverted (#8601)
 - Avoid reading past end of non-zero terminated char arrays (#8597)
 - Fix DTR offset value (#8586)
 - WString: remove 
operator==(const __FlashStringHelper*)(#8569) - Permit using the Updater _hash function, even if we don't have a signature appended to the image (#8507, #8545)
 - Test: fixing itoa implementation and clean-up of tests and test Makefile (#8531)
 - WString: unify numeric conversion and fix assignments (#8526)
 - Fix OOM print handling of NULL file pointer (#8527)
 - Heap panic / abort cleanup (#8465)
 - Heap init code improvements and updates (#8458)
 - Fix, calloc now fails on extra-large request. (#8482)
 - Flash-size agnostic builds (#6690)
 - WString: avoid writing to const storage (#8463)
 - Fix Stream::read into buffer ignoring every second byte (#8452, #8453)
 - Fix VM Address mask (#8440)
 - Import getLocalTime() from esp32/Arduino (#8413)
 - Sync umm_malloc style with upstream (#8426)
 - StreamConstPtr: disallow passing a String temporary (#8410)
 - Fix 
umm_blocks()(#8429) - Missing includes in StreamString.h (#8367)
 - Implement 
esp_yield()as a replacement fordelay(0)(#7148) - Update 
mmu_get...andmmu_set...(#8290) - Reduce build size by implementing flash string overloads for String (#8106)
 
Libraries - FS
- Update to LittleFS 2.5.1 (#8543, #8786)
 - Fix File::readString to work with binary data (#8742)
 - Add FSTools with examples of how to convert between SPIFFS and LITTLEFS. (#7696)
 - Correctly using fs:: namespace in SD & SDFS (#8493)
 - Move ESP8266SDFat library to master, not branch (#8460)
 - Fix info.usedBytes calculation giving weird result (#8445)
 - LittleFS: add overrides for Stream::send (#8386)
 - Update to SdFat 2.1.1 with UTF-8 support (#8355)
 - Clean up SpeedTest output, avoid div-by-0 (#8340)
 
Libraries - Network
- hostByName timeout fixes (#8787)
 - PHY status API for ethernet drivers (#8784)
 - lwip2: cleanup logging and use newlib printf (#8769)
 - Consistent 
netif->status_callback(#8676) - Make WiFi/Ethernet interface compatible with Arduino Ethernet API (#8645)
 - Fix WiFi/Ethernet hostname management (#8626)
 - Add 
WiFiClient::abort()(#8738) - Provide 
wl_tcp_stateastcp_statealias (#8609) - Do not call tcp/udp ::stopAll() when it is not required to do so (#8598)
 - Fix lwip2 ping (#8596)
 - DHCP custom option(s) for DhcpServer (#8582)
 - lwIP on ethernet: examples (#8395)
 - Define lwIP's s32/u32 to int (#8560)
 - Update RFC 5246 URL (#8564)
 - lwIP: v2.1.3 + dhcp fixes (#8319)
 - WiFiServer - 'rename' available() to accept() (#8419)
 - WiFiServer - don't inherit from Server class (#8418)
 - WiFi library ArduinoWiFiServer update (#8238)
 - Place deprecated attribute in front of function (#8258)
 
Libraries - WiFi
- Allow passing beacon interval to SoftAP config (#8695)
 - Optimize disconnect method in WiFiSTA class (#8760)
 - Add eraseap option to WiFi disconnect method. (#8758)
 - Allow to access 
bss_infoafter scan (#8683) - Patch eap.o memory leak (#8566)
 - Fix double-free when connecting to WPA2-Enterprise networks (#8529)
 - Initialize SoftAP DhcpServer object on demand (#8546)
 - Correctly access 
WIFI_EVENT_MODE_CHANGEevent info (#8343) - Return 
WL_WRONG_PASSWORDwhen calling begin() w/ invalid password (#8229) 
Libraries - TLS/SSL
- Don't return 
truewithWiFiClientSecureBearSSL::connected()when really disconnected (#8330) - Only check the actual used length of the hash (#8709)
 - Fix WiFiClientSecure 
remoteIP(),remotePort(),localIP(),localPort()functions (#8693) - SSL examples updates (#8643)
 - Update example certs (#8642)
 - Update to latest BearSSL (#8600)
 - Delete operator=(Self&) when copy constructor is deleted (#8535)
 - Update sessions example to show speed difference (#8528)
 
Libraries - ESP8266WebServer
- Stop incorrectingly increase number of arguments when setting up arg("plain") (#8599)
 - Use String when working with Basic authentication (#8548)
 - Fix missing implementation of send stream by reference (#8533)
 - Drop inactive connection when another is waiting to improve page load time (#8216)
 - Optional ETag support, custom generator function (#8227)
 
Libraries - Wire
- Buffer length improvements (#8398)
 - Allow to override buffer length (#8390)
 - I2C clock phase correction in START condition (#8383)
 
Libraries - HTTPUpdate
- Allow passing custom HTTPClient (#8773)
 - Correct class name in readme.rst (#8751)
 - Add DEBUG payload output (#8745)
 - Add setClientTimeout() (#8740)
 - Fix missing include in OTA example (#8667)
 - Catch a possible null-dereference (#8508)
 - Allow manually setting MD5 checksum (#8204)
 
Libraries - HTTPClient
- Fix connection reuse for different URIs in ::begin (#8466)
 - Prevent empty user-agent in header (#8411)
 - Movable HTTPClient and fixing WiFiClient copy (#8237)
 - Add writeToPrint (#8056)
 - Pass authorization String by value (#8225)
 - Add 
::DELETE()(#8214) 
Libraries - ArduinoOTA
Libraries - mDNS
- Restart mDNS when network state changes (#8705)
 - Also increase # of sends when a send fails (#8641)
 - Report valid Board ID (#8634)
 - Fix timeout type (#8394)
 - Remove obsolete comments about legacy mDNS impl. (#8377)
 
Libraries - others
- Update to EspSoftwareSerial 7.0.0 (#8260, #8295, #8353, #8370, #8373, #8541, #8739, #8754, #8781)
 - Remove temporary buffer in common ConfigFile example .ino (#8298)
 - DNS Server: Add DNS forwarder to DNSServer (#7237)
 - Netbios: Use current netif address in response (#8622)
 - Servo: Keep Servo in the same position after re-attaching (#8753)
 - HTTPUpdateServer Allow external POSTS (CORS) (#6824)
 - Ticker: Allow longer delays and some internal updates (#8625)
 
Tools
- Stack decoder script (#8661)
 - Do not show python traceback when esptool fails (#8603, #8608)
 - Table output for segment size script (#8551, #8572, #8573)
 
Documentation
- Correction on Heap API available from ISR (#8708)
 - We are no longer using Travis CI (#8706)
 - Update WiFi scan docs (#8685)
 - Fix Sphinx build warnings (#8686)
 - Add missing license headers (#8630)
 - Update FS documentation (#8619)
 - Document side effects for wifi-off-at-boot (#8614)
 - Correct "list" formatting (#8610)
 - Update broken links (#8589)
 - Add documentation entry about compiler warnings (#8492)
 - Remove Python installation from OTA doc (#8417)
 - comments on Arduino flush() method (#8318)
 
Boards
Build system
- PIO: Fix CPPDEFINES loop (#8744)
 - ldscripts: Fix typo in section list (#8726)
 - Add debug support for build.opt (#8637)
 - Rebuilt HAL w/latest toolchain and fixed configure (#8615)
 - PIO: Move 
_GNU_SOURCEfrom CCFLAGS to CPPDEFINES (#8579) - PIO: Improve support for hand-written asm source files (#8583)
 - platform.txt: Override python3 anon pipe encoding to utf-8 for 'tools/sizes.py' (#8570)
 - Add support for global build defines and options (#8504, #8565)
 - Table output for segment size script (#8551)
 - Properly quote paths for GCC warnings files (#8523)
 - Fix minor typo in generated comment (#8503)
 - Migrate from astyle to clang-format (#8464)
 - Minor ...
 
Release 3.0.2
Release 3.0.2 Notes
(includes 3.0.1 and 3.0.0 release notes)
Core
- Internal API: add comments and corrections (#8201)
 - String: Avoid copying past end of buffer in ::concat (#8198)
 - Call umm_init just before starting SDK (#8207)
 - Clean up use of "byte" as a type. uint8_t or (C++17) std::byte are better. (#8090)
 - Fix PRxxx printf format macros (#8222)
 
Libraries
- Update to EspSoftwareSerial bug fix release 6.12.7 (#8195)
 - Fixes failing https connections to HelloServerBearSSL (w/MMU48KIRAM) (#8206)
 - Use valid categories in library.properties of bundled libraries (#8221)
 - Netdump printf fix (#8215)
 - Fix with NO_GLOBAL_INSTANCES (#8184)
 - Make multiple FS begin calls noops() SDFS/LittleFS (#8235)
 
CI
- Copy released JSON to board URL, not new one (#8182)
 
Build system
- Make mkdir.py work under python<3.5 (#8194)
 - Certificate and public keys automatic updater (#8218)
 - Use only installed Python on Windows (#8226)
 
Board definitions
- Add wifi kit 8 to boards (#8190)
 
Release 3.0.1 Notes
Breaking Changes
- BREAKING: "i2s.h" removed, I2S library added (#8108)
 
Core
- Make String reallocation warning more descriptive (#8131)
 - Normalize core header's include guard. (#8110)
 - makeword: sync header and implementation (#8097)
 - Use optimal bundled library names (#8088) (#8098)
 - Added IRAM_ATTR to _stopPWM() so that digitalWrite() would work inside ISR. Fixes #8043 (#8044) (#8048)
 - makecorever.py: restore ARDUINO_ESP8266_GIT_VER even without .git/ (#8138)
 
IDE
Libraries - LittleFS
- Re-add mklittlefs to package.json, fixing "ESP8266 LittleFS Data Upload" (#8060)
 - Don't crash when including LittleFS.h w/no FS (#8173)
 
Libraries - SD/SDFS
- SDFS: fix AvailableForWrite: do not always return 0 when space is available (#8167)
 
Libraries - ESP8266httpUpdate
- ESP266httpUpdate: remove dead API and fix doc (#8063)
 
Libraries - ESP8266WiFi
Libraries - SoftwareSerial
- Update EspSoftwareSerial to bug fix release 6.12.6
 
Libraries - ESP8266HTTPClient
- ESP8266HTTPClient: remove old example (#8111)
 - Change protocol detection so uppercase or lowercase works (#8137)
 
Toolchain
- Update toolchain to gcc 10.3 w/patches (#8104) (#8103)
 - Update toolchain to fix pgm_read_float_unaligned (#8091)
 - Remove include and lib folders removed since 3.0.0 core (#8125)
 - Add errors on invalid/missing function return type (#8165)
 - GNU source: honoring libc requirements (#8147)
 
PlatformIO
Documentation
- Fix readthedoc python dependencies (#8166)
 - Documentation: Arduino IDE options: fix hyperlinks and format, options (#8158) (#8154)
 
CI / Release / Environment
- Add code-spell spelling checks to CI (#8067)
 - Release script: protect bash variables and add logs, major/minor/rev macro addition, BASH fix (#8074) (#8126) (#8127) (#8168)
 - Remove some no longer applicable artifacts from .gitignore (#8170)
 
Release 3.0.0 Notes
Great additions
- PoC cache configuration control (aka +16KB heap!) (#7060)
 - Hardware WDT Stack Dump Tool (#7010)
 - Update to GCC 10.2 (#7607)
 
Breaking: Deprecation - Removal
- BREAKING: httpclient: remove deprecated API (#7617)
 - BREAKING: Update Arduino.h, remove TIM_DIV265 (#7440)
 - BREAKING: Remove lwip-v1.4 specific code (#7436)
 - BREAKING: Remove axTLS from code and documentation (#7437)
 
Breaking changes summary
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - BREAKING: wifi: remove pseudo-modes for shutdown, expose 
::[resumeFrom]shutdown()(#7956) - BREAKING: Disable WiFi at boot by default (#7902, #7990, #7993)
 - BREAKING: base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING: Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - BREAKING: Upgrade to upstream newlib 4.0.0 release (64 bits time_t) (#7708)
 - BREAKING: Change servo defaults to safer defaults (#7023)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - BREAKING: Change return EEPROM.end() to bool (#7630)
 - BREAKING: Change return type of channel() (#7656)
 - BREAKING: Change return type of RSSI() (#7657)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - BREAKING: analogWriteRange 8-bit default (#7456)
 - BREAKING: HTTPClient: RequestHandler: Pass String by const reference (#6583)
 
Boot
- eboot: .RODATA, upstream uzlib, move CRC, save 112 bytes (#7844)
 - Update eboot to build with C17, not C99 standard (#7837, #7838)
 - Fix eboot crash with exception 28. ets_printf() should take pointer argument. (#7666)
 - Use 32b loads to set print strings (#7545)
 - Comment out verify step in eboot.c (#7468)
 
Core
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - ESP class should be a singleton: make all member functions static. (#8006)
 - Updated HWDT to use IRAM_ATTR instead of ICACHE_RAM_ATTR. (#8013, #8018)
 - Hardware WDT Stack Dump Tool (#7010)
 - WString: direct operator overloads instead of StringSumHelper (#7781)
 - Clean up ICACHE_RAM_ATTR in VM PR (#7924)
 - Added ESP32 compatible methods for setting/getting sleep mode (#7901)
 - Enable 128K virtual memory via external SPI SRAM (#6994)
 - Stream::send() (#6979, #7935, #7951, #7987, #7995)
 - [BREAKING] base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING - Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - OOM debug: warn about String reallocation (#7908)
 - OOM: avoid warn when calling *alloc(0) (#7909)
 - String: add missing long long operator implementations (#7888)
 - Support to reboot into UART download mode (#7854, #7897)
 - String: compatibility with 64 bits scalars (#7863)
 - Update toolchain to support std::remainder (#7849)
 - allow to set pin to OUTPUT_OPEN_DRAIN in analogWriteMode (#7841)
 - Add 24-bit mode to I2S (#7835)
 - Hexdump fix&update (#7831)
 - improve silicon aes_unwrap (#7773)
 - Supersede #3856, remove undef min/max (#7824)
 - Add stub for analogReference() (#7809)
 - UART: add yield (#7799)
 - BREAKING - Upgrade to upstream newlib 4.0.0 release (#7708)
 - Update to latest uzlib upstream (#7776, #7782)
 - i2s: adds i2s_rxtxdrive_begin(enableRx, enableTx, driveRxClocks, driveTxClocks) (#7748)
 - PoC cache configuration control (#7060, #7754, #7767, #7768, #7812, #7816, #7820, #7790)
 - Receiving no data in Updater is an error (#7729)
 - PROGMEM compatibility changes to String (#7724)
 - schedule_recurrent_function_us should be in iram (#7713)
 - Re-implement PWM generator (#7715, #7712, #7022, #7231, #7800, #7996)
 - WString: Optimize a bit (#7553)
 - Fix sntp_get_real_time prototype in header (#7707)
 - Provide String::indexOf for a char* needle (#7706)
 - Fix newlib to support <+-nn> timezone names (#7699, #7702)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - settimeofday_cb: distinguish from user or sntp (#7637)
 - Add Copyright notice to Schedule.h (#7653)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - New flash writing method with offset/memory/size alignment handling (#7514)
 - Add missing sntp_init/sntp_stop (#7628)
 - Use direct member initialization instead of ctr initialisation (#7558)
 - Prevent rewriting Updater_Signing.h if content unchanged (#7627)
 - WString: c_str() returns null pointer after move (#7611)
 - WString: mark move ctor as noexcept (#7610)
 - sntp: use one time source and fix unsynchronized sntp time stamp (#7595)
 - Add clear method to IPAddress (#7586)
 - Check also if IP is not IPADDR_NONE (#7585)
 - Fix gzip+signed OTA error (#7577)
 - new w/ OOM now aborts by defaults, or throw an exception (#7536)
 - getCpuFreqMHz(): fix when F_CPU is not defined (#7554)
 - Updater MD5 cleanup on begin (#7534)
 - Add synthetic IntegerDivideByZero exception (#7496)
 - avoid circular #include dependence for PolledTimeout (#7356)
 - base64 class uses String, adding harmless #include (#7517)
 - sys/pgmspace.h: Refactor inline asm (#7510)
 - Add SerialEvent() callback to loop processing (#7505)
 - Remove warnings when building NoAssert (#7499)
 - BREAKING - analogWriteRange 8-bit default (#7456)
 - BREAKING - Pass String by const reference [3.0] (#6583)
 
Libraries - softserial
- Maintenance release 6.12.3: better dependency declarations for Platformio (#8030)
 - EspSoftwareSerial 6.12.2: Inlining push() functions that must be in IRAM for calling from ISRs (#7986)
 - Bug-fix release 6.12.1: a documentation error was reported by a user; dropped bit-patterns that masked the stop-bit fixed. (#7938)
 - EspSoftwareSerial minor release 6.12.0 completes adaptation to new Stream::send() (#7923)
 - Minor EspSoftwareSerial release 6.11.7, for deprecated ICACHE_RAM_ATTR in upcoming ESP8266 Arduino core 3.0.0. (#7922)
 - EspSoftwareSerial, bump up Arduino library manager related files 6.11.6 (#7891)
 - Update to EspSoftwareSerial 6.11.5 (#7889)
 - EspSoftwareSerial bug-fix release 6.11.4 (#7862)
 - Update to EspSoftwareSerial 6.11.3: prepares for ESP8266 Arduino core PR 6979. (#7840)
 - EspSoftwareSerial 6.11.2: Delegate<> assign operators added. (#7815)
 - Minor EspSoftwareSerial release 6.11.1 (#7804)
 - Minor EspSoftwareSerial release 6.11.0 (#7802)
 - EspSoftwareSerial bug fix release 6.10.1: preciseDelay() could delay() for extremely long time, if period duration was exceeded on entry. (#7771)
 - EspSoftwareSerial 6.10.0: override keyword for recent Print::availableForWrite() addition (#7710)
 - EspSoftwareSerial 6.9.0: data/strings in flash alignment handling fix. Yielding during write() improvement. (#7604)
 
Libraries - FS
- Update mklittlefs executable (#7906)
 - Track creation time of ...
 
Release 3.0.1
Breaking Changes
- BREAKING: "i2s.h" removed, I2S library added (#8108)
 
Core
- Make String reallocation warning more descriptive (#8131)
 - Normalize core header's include guard. (#8110)
 - makeword: sync header and implementation (#8097)
 - Use optimal bundled library names (#8088) (#8098)
 - Added IRAM_ATTR to _stopPWM() so that digitalWrite() would work inside ISR. Fixes #8043 (#8044) (#8048)
 - makecorever.py: restore ARDUINO_ESP8266_GIT_VER even without .git/ (#8138)
 
IDE
Libraries - LittleFS
- Re-add mklittlefs to package.json, fixing "ESP8266 LittleFS Data Upload" (#8060)
 - Don't crash when including LittleFS.h w/no FS (#8173)
 
Libraries - SD/SDFS
- SDFS: fix AvailableForWrite: do not always return 0 when space is available (#8167)
 
Libraries - ESP8266httpUpdate
- ESP266httpUpdate: remove dead API and fix doc (#8063)
 
Libraries - ESP8266WiFi
Libraries - SoftwareSerial
- Update EspSoftwareSerial to bug fix release 6.12.6
 
Libraries - ESP8266HTTPClient
- ESP8266HTTPClient: remove old example (#8111)
 - Change protocol detection so uppercase or lowercase works (#8137)
 
Toolchain
- Update toolchain to gcc 10.3 w/patches (#8104) (#8103)
 - Update toolchain to fix pgm_read_float_unaligned (#8091)
 - Remove include and lib folders removed since 3.0.0 core (#8125)
 - Add errors on invalid/missing function return type (#8165)
 - GNU source: honoring libc requirements (#8147)
 
PlatformIO
Documentation
- Fix readthedoc python dependencies (#8166)
 - Documentation: Arduino IDE options: fix hyperlinks and format, options (#8158) (#8154)
 
CI / Release / Environment
- Add code-spell spelling checks to CI (#8067)
 - Release script: protect bash variables and add logs, major/minor/rev macro addition, BASH fix (#8074) (#8126) (#8127) (#8168)
 - Remove some no longer applicable artifacts from .gitignore (#8170)
 
Release 3.0.0 Notes
Great additions
- PoC cache configuration control (aka +16KB heap!) (#7060)
 - Hardware WDT Stack Dump Tool (#7010)
 - Update to GCC 10.2 (#7607)
 
Breaking: Deprecation - Removal
- BREAKING: httpclient: remove deprecated API (#7617)
 - BREAKING: Update Arduino.h, remove TIM_DIV265 (#7440)
 - BREAKING: Remove lwip-v1.4 specific code (#7436)
 - BREAKING: Remove axTLS from code and documentation (#7437)
 
Breaking changes summary
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - BREAKING: wifi: remove pseudo-modes for shutdown, expose 
::[resumeFrom]shutdown()(#7956) - BREAKING: Disable WiFi at boot by default (#7902, #7990, #7993)
 - BREAKING: base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING: Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - BREAKING: Upgrade to upstream newlib 4.0.0 release (64 bits time_t) (#7708)
 - BREAKING: Change servo defaults to safer defaults (#7023)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - BREAKING: Change return EEPROM.end() to bool (#7630)
 - BREAKING: Change return type of channel() (#7656)
 - BREAKING: Change return type of RSSI() (#7657)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - BREAKING: analogWriteRange 8-bit default (#7456)
 - BREAKING: HTTPClient: RequestHandler: Pass String by const reference (#6583)
 
Boot
- eboot: .RODATA, upstream uzlib, move CRC, save 112 bytes (#7844)
 - Update eboot to build with C17, not C99 standard (#7837, #7838)
 - Fix eboot crash with exception 28. ets_printf() should take pointer argument. (#7666)
 - Use 32b loads to set print strings (#7545)
 - Comment out verify step in eboot.c (#7468)
 
Core
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - ESP class should be a singleton: make all member functions static. (#8006)
 - Updated HWDT to use IRAM_ATTR instead of ICACHE_RAM_ATTR. (#8013, #8018)
 - Hardware WDT Stack Dump Tool (#7010)
 - WString: direct operator overloads instead of StringSumHelper (#7781)
 - Clean up ICACHE_RAM_ATTR in VM PR (#7924)
 - Added ESP32 compatible methods for setting/getting sleep mode (#7901)
 - Enable 128K virtual memory via external SPI SRAM (#6994)
 - Stream::send() (#6979, #7935, #7951, #7987, #7995)
 - [BREAKING] base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING - Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - OOM debug: warn about String reallocation (#7908)
 - OOM: avoid warn when calling *alloc(0) (#7909)
 - String: add missing long long operator implementations (#7888)
 - Support to reboot into UART download mode (#7854, #7897)
 - String: compatibility with 64 bits scalars (#7863)
 - Update toolchain to support std::remainder (#7849)
 - allow to set pin to OUTPUT_OPEN_DRAIN in analogWriteMode (#7841)
 - Add 24-bit mode to I2S (#7835)
 - Hexdump fix&update (#7831)
 - improve silicon aes_unwrap (#7773)
 - Supersede #3856, remove undef min/max (#7824)
 - Add stub for analogReference() (#7809)
 - UART: add yield (#7799)
 - BREAKING - Upgrade to upstream newlib 4.0.0 release (#7708)
 - Update to latest uzlib upstream (#7776, #7782)
 - i2s: adds i2s_rxtxdrive_begin(enableRx, enableTx, driveRxClocks, driveTxClocks) (#7748)
 - PoC cache configuration control (#7060, #7754, #7767, #7768, #7812, #7816, #7820, #7790)
 - Receiving no data in Updater is an error (#7729)
 - PROGMEM compatibility changes to String (#7724)
 - schedule_recurrent_function_us should be in iram (#7713)
 - Re-implement PWM generator (#7715, #7712, #7022, #7231, #7800, #7996)
 - WString: Optimize a bit (#7553)
 - Fix sntp_get_real_time prototype in header (#7707)
 - Provide String::indexOf for a char* needle (#7706)
 - Fix newlib to support <+-nn> timezone names (#7699, #7702)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - settimeofday_cb: distinguish from user or sntp (#7637)
 - Add Copyright notice to Schedule.h (#7653)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - New flash writing method with offset/memory/size alignment handling (#7514)
 - Add missing sntp_init/sntp_stop (#7628)
 - Use direct member initialization instead of ctr initialisation (#7558)
 - Prevent rewriting Updater_Signing.h if content unchanged (#7627)
 - WString: c_str() returns null pointer after move (#7611)
 - WString: mark move ctor as noexcept (#7610)
 - sntp: use one time source and fix unsynchronized sntp time stamp (#7595)
 - Add clear method to IPAddress (#7586)
 - Check also if IP is not IPADDR_NONE (#7585)
 - Fix gzip+signed OTA error (#7577)
 - new w/ OOM now aborts by defaults, or throw an exception (#7536)
 - getCpuFreqMHz(): fix when F_CPU is not defined (#7554)
 - Updater MD5 cleanup on begin (#7534)
 - Add synthetic IntegerDivideByZero exception (#7496)
 - avoid circular #include dependence for PolledTimeout (#7356)
 - base64 class uses String, adding harmless #include (#7517)
 - sys/pgmspace.h: Refactor inline asm (#7510)
 - Add SerialEvent() callback to loop processing (#7505)
 - Remove warnings when building NoAssert (#7499)
 - BREAKING - analogWriteRange 8-bit default (#7456)
 - BREAKING - Pass String by const reference [3.0] (#6583)
 
Libraries - softserial
- Maintenance release 6.12.3: better dependency declarations for Platformio (#8030)
 - EspSoftwareSerial 6.12.2: Inlining push() functions that must be in IRAM for calling from ISRs (#7986)
 - Bug-fix release 6.12.1: a documentation error was reported by a user; dropped bit-patterns that masked the stop-bit fixed. (#7938)
 - EspSoftwareSerial minor release 6.12.0 completes adaptation to new Stream::send() (#7923)
 - Minor EspSoftwareSerial release 6.11.7, for deprecated ICACHE_RAM_ATTR in upcoming ESP8266 Arduino core 3.0.0. (#7922)
 - EspSoftwareSerial, bump up Arduino library manager related files 6.11.6 (#7891)
 - Update to EspSoftwareSerial 6.11.5 (#7889)
 - EspSoftwareSerial bug-fix release 6.11.4 (#7862)
 - Update to EspSoftwareSerial 6.11.3: prepares for ESP8266 Arduino core PR 6979. (#7840)
 - EspSoftwareSerial 6.11.2: Delegate<> assign operators added. (#7815)
 - Minor EspSoftwareSerial release 6.11.1 (#7804)
 - Minor EspSoftwareSerial release 6.11.0 (#7802)
 - EspSoftwareSerial bug fix release 6.10.1: preciseDelay() could delay() for extremely long time, if period duration was exceeded on entry. (#7771)
 - EspSoftwareSerial 6.10.0: override keyword for recent Print::availableForWrite() addition (#7710)
 - EspSoftwareSerial 6.9.0: data/strings in flash alignment handling fix. Yielding during write() improvement. (#7604)
 
Libraries - FS
- Update mklittlefs executable (#7906)
 - Track creation time of LittleFS FS (#7873)
 - Invalid read return value fix (#7817)
 - Update to SdFat 2.0.2, speed SD access (#7779)
 - Rationalize File timestamp callback (#7785)
 - Update to LittleFS v2.3 (#7787)
 
Libraries - Network
- added ArduinoWiFiServer with send-to-all-clients functionality (#7612)
 - internal: rename ClientContext::wait_until_sent() to wait_until_acked() (#7896)
 - Added ESP32 compatible methods for setting/getting hostname (#7900)
 - AP & dhcp-server: fix uninitialized variables (#7905)
 - Netdump: Avoid UB and abort on nullptr buffer (#7822)
 - lwip2: use pvPortXalloc/vPortFree and "-free -fipa-pta" (#7793)
 - more lwIP physical interfaces (#6680)
 - Netump (#7527, #7659)
 - replace old Ethernet Arduino-library with v2, submoduled (#6812)
 
Library - WiFi
Release 3.0.0
Great additions
- PoC cache configuration control (aka +16KB heap!) (#7060)
 - Hardware WDT Stack Dump Tool (#7010)
 - Update to GCC 10.2 (#7607)
 
Breaking: Deprecation - Removal
- BREAKING: httpclient: remove deprecated API (#7617)
 - BREAKING: Update Arduino.h, remove TIM_DIV265 (#7440)
 - BREAKING: Remove lwip-v1.4 specific code (#7436)
 - BREAKING: Remove axTLS from code and documentation (#7437)
 
Breaking changes summary
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - BREAKING: wifi: remove pseudo-modes for shutdown, expose 
::[resumeFrom]shutdown()(#7956) - BREAKING: Disable WiFi at boot by default (#7902, #7990, #7993)
 - BREAKING: base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING: Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - BREAKING: Upgrade to upstream newlib 4.0.0 release (64 bits time_t) (#7708)
 - BREAKING: Change servo defaults to safer defaults (#7023)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - BREAKING: Change return EEPROM.end() to bool (#7630)
 - BREAKING: Change return type of channel() (#7656)
 - BREAKING: Change return type of RSSI() (#7657)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - BREAKING: analogWriteRange 8-bit default (#7456)
 - BREAKING: HTTPClient: RequestHandler: Pass String by const reference (#6583)
 
Boot
- eboot: .RODATA, upstream uzlib, move CRC, save 112 bytes (#7844)
 - Update eboot to build with C17, not C99 standard (#7837, #7838)
 - Fix eboot crash with exception 28. ets_printf() should take pointer argument. (#7666)
 - Use 32b loads to set print strings (#7545)
 - Comment out verify step in eboot.c (#7468)
 
Core
- BREAKING: WString: return bool instead of unsigned char (#7939)
 - ESP class should be a singleton: make all member functions static. (#8006)
 - Updated HWDT to use IRAM_ATTR instead of ICACHE_RAM_ATTR. (#8013, #8018)
 - Hardware WDT Stack Dump Tool (#7010)
 - WString: direct operator overloads instead of StringSumHelper (#7781)
 - Clean up ICACHE_RAM_ATTR in VM PR (#7924)
 - Added ESP32 compatible methods for setting/getting sleep mode (#7901)
 - Enable 128K virtual memory via external SPI SRAM (#6994)
 - Stream::send() (#6979, #7935, #7951, #7987, #7995)
 - [BREAKING] base64::encode() compat with esp32: no newlines by default (#7910)
 - BREAKING - Use IRAM_ATTR in place of ICACHE_RAM_ATTR (#7921)
 - OOM debug: warn about String reallocation (#7908)
 - OOM: avoid warn when calling *alloc(0) (#7909)
 - String: add missing long long operator implementations (#7888)
 - Support to reboot into UART download mode (#7854, #7897)
 - String: compatibility with 64 bits scalars (#7863)
 - Update toolchain to support std::remainder (#7849)
 - allow to set pin to OUTPUT_OPEN_DRAIN in analogWriteMode (#7841)
 - Add 24-bit mode to I2S (#7835)
 - Hexdump fix&update (#7831)
 - improve silicon aes_unwrap (#7773)
 - Supersede #3856, remove undef min/max (#7824)
 - Add stub for analogReference() (#7809)
 - UART: add yield (#7799)
 - BREAKING - Upgrade to upstream newlib 4.0.0 release (#7708)
 - Update to latest uzlib upstream (#7776, #7782)
 - i2s: adds i2s_rxtxdrive_begin(enableRx, enableTx, driveRxClocks, driveTxClocks) (#7748)
 - PoC cache configuration control (#7060, #7754, #7767, #7768, #7812, #7816, #7820, #7790)
 - Receiving no data in Updater is an error (#7729)
 - PROGMEM compatibility changes to String (#7724)
 - schedule_recurrent_function_us should be in iram (#7713)
 - Re-implement PWM generator (#7715, #7712, #7022, #7231, #7800, #7996)
 - WString: Optimize a bit (#7553)
 - Fix sntp_get_real_time prototype in header (#7707)
 - Provide String::indexOf for a char* needle (#7706)
 - Fix newlib to support <+-nn> timezone names (#7699, #7702)
 - BREAKING: Add Print::availableForWrite method (#7658)
 - settimeofday_cb: distinguish from user or sntp (#7637)
 - Add Copyright notice to Schedule.h (#7653)
 - BREAKING: Add Wrong Password wifi status case (#7652)
 - New flash writing method with offset/memory/size alignment handling (#7514)
 - Add missing sntp_init/sntp_stop (#7628)
 - Use direct member initialization instead of ctr initialisation (#7558)
 - Prevent rewriting Updater_Signing.h if content unchanged (#7627)
 - WString: c_str() returns null pointer after move (#7611)
 - WString: mark move ctor as noexcept (#7610)
 - sntp: use one time source and fix unsynchronized sntp time stamp (#7595)
 - Add clear method to IPAddress (#7586)
 - Check also if IP is not IPADDR_NONE (#7585)
 - Fix gzip+signed OTA error (#7577)
 - new w/ OOM now aborts by defaults, or throw an exception (#7536)
 - getCpuFreqMHz(): fix when F_CPU is not defined (#7554)
 - Updater MD5 cleanup on begin (#7534)
 - Add synthetic IntegerDivideByZero exception (#7496)
 - avoid circular #include dependence for PolledTimeout (#7356)
 - base64 class uses String, adding harmless #include (#7517)
 - sys/pgmspace.h: Refactor inline asm (#7510)
 - Add SerialEvent() callback to loop processing (#7505)
 - Remove warnings when building NoAssert (#7499)
 - BREAKING - analogWriteRange 8-bit default (#7456)
 - BREAKING - Pass String by const reference [3.0] (#6583)
 
Libraries - softserial
- Maintenance release 6.12.3: better dependency declarations for Platformio (#8030)
 - EspSoftwareSerial 6.12.2: Inlining push() functions that must be in IRAM for calling from ISRs (#7986)
 - Bug-fix release 6.12.1: a documentation error was reported by a user; dropped bit-patterns that masked the stop-bit fixed. (#7938)
 - EspSoftwareSerial minor release 6.12.0 completes adaptation to new Stream::send() (#7923)
 - Minor EspSoftwareSerial release 6.11.7, for deprecated ICACHE_RAM_ATTR in upcoming ESP8266 Arduino core 3.0.0. (#7922)
 - EspSoftwareSerial, bump up Arduino library manager related files 6.11.6 (#7891)
 - Update to EspSoftwareSerial 6.11.5 (#7889)
 - EspSoftwareSerial bug-fix release 6.11.4 (#7862)
 - Update to EspSoftwareSerial 6.11.3: prepares for ESP8266 Arduino core PR 6979. (#7840)
 - EspSoftwareSerial 6.11.2: Delegate<> assign operators added. (#7815)
 - Minor EspSoftwareSerial release 6.11.1 (#7804)
 - Minor EspSoftwareSerial release 6.11.0 (#7802)
 - EspSoftwareSerial bug fix release 6.10.1: preciseDelay() could delay() for extremely long time, if period duration was exceeded on entry. (#7771)
 - EspSoftwareSerial 6.10.0: override keyword for recent Print::availableForWrite() addition (#7710)
 - EspSoftwareSerial 6.9.0: data/strings in flash alignment handling fix. Yielding during write() improvement. (#7604)
 
Libraries - FS
- Update mklittlefs executable (#7906)
 - Track creation time of LittleFS FS (#7873)
 - Invalid read return value fix (#7817)
 - Update to SdFat 2.0.2, speed SD access (#7779)
 - Rationalize File timestamp callback (#7785)
 - Update to LittleFS v2.3 (#7787)
 
Libraries - Network
- added ArduinoWiFiServer with send-to-all-clients functionality (#7612)
 - internal: rename ClientContext::wait_until_sent() to wait_until_acked() (#7896)
 - Added ESP32 compatible methods for setting/getting hostname (#7900)
 - AP & dhcp-server: fix uninitialized variables (#7905)
 - Netdump: Avoid UB and abort on nullptr buffer (#7822)
 - lwip2: use pvPortXalloc/vPortFree and "-free -fipa-pta" (#7793)
 - more lwIP physical interfaces (#6680)
 - Netump (#7527, #7659)
 - replace old Ethernet Arduino-library with v2, submoduled (#6812)
 
Library - WiFi
- WiFi: clean up AP SSID setter & getter, support 32 chars (#7941)
 - [BREAKING] wifi: remove pseudo-modes for shutdown, expose 
::[resumeFrom]shutdown()(#7956) - [BREAKING] Disable WiFi at boot by default (#7902)
 - Added broadcastIP method to WiFiSTA class (#7899)
 - WIFI_RESUME improve speed and example (#7877)
 - WiFiServer.cpp: Fix warning (#7755)
 - update documentation example (#7697)
 - Refactor WiFi scan example (#7655)
 - BREAKING: Change return type of channel() (#7656)
 - BREAKING: Change return type of RSSI() (#7657)
 - Reduce codesize of setOutputPower (#7572)
 
Library - TLS/SSL
- Fix a warning (#8014)
 - Adding comment to ignore SSL certificate in sample code. (#7994)
 - Update Root Certificate in example (#7932)
 - Adds the method setSSLVersions() also to WiFiClientSecure in order to use that new feature. (#7925)
 - Add setSSLVersion call to SSL object (#7920)
 - Allow users to inherit and override CertStore (#7827)
 - Reduce BearSSL code size by not -O2 FSMs (#7807)
 - WiFiServerSecure: Cache SSL sessions (#7774)
 - WiFiClientSecure: use context (#7680)
 - Update to latest BearSSL as of Nov 2020 (#7732)
 - Add Stream loaders for BearSSL (#7675)
 - Catch and display SSL errors for fatal alerts (#7681)
 - Fix error when debug enabled but no port chosen (#7648)
 - Remove stray axtls refs, deprecated compat funcs (#7626)
 - Fix error message typo (#7581)
 - Update DigestAuthorization.ino (Simple example update) (#7579)
 - Update certs-from-mozilla.py (#7573, #7578)
 - Use root cert, not fingerprint for api.github.com (#7490)
 - Update FP for tls.mbed.org (#7479)
 - Change BSSL_CertStore test URL (#7370)
 - Update to BearSSL version lost in GCC10 update (#7453)
 
Library - Webserver
- ESP8266WebServer: Add variadic template version of collectHeaders() (#7296)
 - Fix header FSM in webserver, fix Windows uploads (#7805)
 - ETag support for WebServer (#7709)
 - Rewrite multipart boundary detection (#7728)
 - Fixed bug in parsing POST file uploads (#7543)
 - Fix long password validation in WebServer (#7676)
 - FIX MIME-Type for txt-suffix (#7608)
 - FIX StaticRequestHandler crashes when cache_header is null and DEBUG_ESP_CORE is enabled (#7609)
 - Avoid #includes with a surrounding namespace (#7560)
 - webserver hook: allow to handle external http protocol (#7459, #7492, #7515)
 - Made ESP8266WebServer::client() return a reference (fixes #7075) (#7080)
 - WebServer: Allow client to send many requests on the same connection (#7414)
 - we...
 
Release 2.7.4
Release 2.7.3
Release 2.7.2
Changes since 2.7.1 (to 2.7.2)
Boot
Core
- Add namespace to FS references in CertStore (#7413)
 - For UMM_CRITICAL_METRICS fixed time_stats initializer. (#7390)
 - Add a "-- CUT HERE --" marker to exception output (#7369)
 - CallbackList API: improve to facilitate executer to know the number of active callbacks (#7361)
 - umm_malloc manual merge with upstream (#7337)
 - Fix sign in configTime(tz,dst,) (#7320)
 - Bring SPIFFS up to latest version (#7276)
 - Allow non-aligned PSTR() (#7275)
 - Crypto: Add required BearSSL include in header (#7310)
 
Build system
- Use a prebuild, portable Python3 for OSX (#7348)
 - Recognize MSYS(MINGW) as Windows for toolchain get (#7358)
 - elf2bin.py objcopy cleanup (#7351)
 
Libraries
- WiFiMulti: Ability to set connect timeout in WifiMulti->run (#7420)
 - BearSSL: Add namespace to FS references in CertStore (#7413)
 - httpclient: fix error meaning (#7401)
 - EspSoftwareSerial 6.8.5: fixes parity for TX with odd word size modes (#7399, #7367, #7354)
 - Add ESP8266WebServerTemplate::enableCORS(bool _ec) (#7388)
 - SPI: abs -> std::abs and cast fixes (#7362)
 - Fix oversight for ap gw (#7366)
 - ESP8266WiFiAP: fix IP address in some cases (#7363)
 - LittleFS: Return FALSE on seek past EOF (#7324)
 - Webserver: Flash size reduction for mime-type (#7312)
 - BearSSL: Allocate stack for SigningVerifier (#7291)
 - ESP8266HTTPClient fixes (#6476)
 
Examples
- Update GitHub cert fingerprint in example (#7397)
 - Multi-client Server Sent Event (aka EventSource) demo (#7012)
 - Webserver: Graph example (#7299)
 
Documentation
- Add some pending methods to generic-class docs (#7427)
 - doc fixes for LittleFS (#7385)
 - Fix typo in readme.rst (#7379)
 - Add documentation on recovering from deep sleep with WAKE_RF_DISABLED (#7338)
 - Add FTP client/server lib link (#7336)
 - Document ESP.getMaxFreeBlockSize() != max malloc size (#7328)
 
Boards
- modwifi: I2C pin assignment fix (#7416)
 
Building on host
- emulation on host: option for FS persistence location (#7424)
 - emulation on host: FS: minor reset fix (#7417)
 - emulation on host: missing mock functions, improve host interface handling (#7404)
 - emulation on host: lwIP always receive multicast packets, enable and fix multicast udp server (#7386)
 - emulation on host: fix binding from a particular interface (#7372)
 - emulation on host: various fixes (#7355)
 
Changes since 2.7.0 (to 2.7.1)
Hotfixes
- Revert XMC changes in eboot that were causing OTA failure (#7277)
 - Revert MDNS listen the current iface causing MDNS death (#7266)
 
Core (FS)
- Deprecate SPIFFS, move examples to LittleFS (#7263)
 
Documentation
- Document USTX in USS/UxS not working as expected (#7265)
 
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.7.1
Changes since 2.7.0 (to 2.7.1)
Hotfixes
- Revert XMC changes in eboot that were causing OTA failure (#7277)
 - Revert MDNS listen the current iface causing MDNS death (#7266)
 
Core (FS)
- Deprecate SPIFFS, move examples to LittleFS (#7263)
 
Documentation
- Document USTX in USS/UxS not working as expected (#7265)
 
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)