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 script (#5150)
- Add full debug builds for all tests (#5146)
- build: place generated ld script into build directory (#5043)
- Automatic stack location selection (SYS or HEAP), enable per library AR-chive in arduino build system (#5018)
- Switch to isolated build flags per framework (#5028)
Package builder
- Keep signing commands in platform.txt on release (#5491)
- package: add version to board package name (#5046)
- Minor fixes for #4999 (#5003)
Upstream dependency - BearSSL
- Update BearSSL to latest toolchain (#5449)
- Update to BearSSL 0.6+ release, add AES_CCM modes (#5164)
Upstream dependency - lwIP-v2
- lwip2: 3 sntp servers, autoip (169.254), esp-ping, espconn (#5444)
- update to lwIP-2.1.0: partial SACK support by default (de-selectable in menu) (#5126)
Documentation
- Update conf.py from git tag, fix sphinx warnings (#5716)
- Update release instructions README.md (#5482)
- Update conf.py (#5518)
- Correct 'git submodule' syntax (#5654)
- Correct link to Arduino Board Manager info (#5650)
- Add fix for SoftwareSerial submodule errors to documentation (#5602)
- Add specific instructions for breaking changes (#5581)
- clarify some points, add links, add doc/conf.py (#5519)
- Mention eboot use of rtc memory (#5439)
- Add doc for ESP8266WebServer (#5400)
- documentation: add quick links (#5391)
- document wificlient loop (#5355)
- Update generic-class.rst (#5338)
- Fix doc for ESP8266WiFi (#5325)
- Update libraries.rst with ESP-NOW (#5322)
- typo fix (#5319)
- Add BearSSL documentation (#5311)
- Add missing decrement operator to I2C clockCount (#5292)
- Update debugging.rst (#5234)
- Fix Readme Link (#5215)
- Add BearSSL license info to README.md (#5211)
- Revert "Wrong directory for installation??" (#5199)
- fix doc link (#5190)
- Make softAP documentation state the correct min value (0) for the max_connection argument. (#5165)
- Wrong directory for installation?? (#5163)
- Require sphinx 1.7 due to bugs with new v1.8 (#5132)
- Fix formatting of bullet lists (#5098)
- Update a05-board-generator.rst (#5093)
- Update readme.rst (#5092)
- Soft-AP documentation update (#5088)
- Format lists for readability (#5082)
- doc: improve WiFi.persistent documentation (#5081)
- Analog input voltage can be 3.3V (#5020)
Boards
- XinaBox CW01: DIO flash mode (#5720)
- generic esp8266 board: Use flash mode DOUT by default, in place of QIO (#5601)
- ESPectro Core board support (#5419)
- Added 2M generic boards (#5404)
- support new board (invent one) (#5286)
- Fix NUM_ANALOG_INPUTS for Amperka WiFi slot (#5219)
- Fix boards.txt.py compatible with python3 (#4998)
- Update ESPduino pin definitions (#4828)
Tests / CI
- device test updates (ping, test_millis_mm) (#5455)
- fix device test test_http_server (#5414)
- Split PIO job into even and odd builds (#5405)
- Move from container to VM per Travis requirements (#5367)
- Class mocks for sketch emulation on host (#5342)
- Fix device/test_http_client tests (#5309)
- reduce git load in travis (#5490)
- ci: fix checking CI_GITHUB_API_KEY, refactoring (#5496)
- ci: use travis jobs to structure the CI flow