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
- 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)
- webserver: do not count "plain" in argument list (#6768)
- webserver: string optimization (#7446)
Libraries - others
- Resolve "PWM-locked" / "phase-locked" waveform merge leftover in Servo lib (#7978)
- Add I2S class support (#7874)
- At MDNS.end() also release services (#7859)
- AVRISP: Prevent nullptr dereference on OOM (#7823)
- HTTPClient: fix error handling (#7811)
- LEAmDNS: one instance for all interfaces (#7786 - #7540 #7615 #7636 #7640)
- Add the missing 'rename' method wrapper in SD library. (#7766)
- Update to ESP8266HTTPClient.cpp for no Content-Length (#7691)
- BREAKING: Change servo defaults to safer defaults (#7023)
- Hook up custom timestamp proc for SD/SDFS (#7686)
- BREAKING: Change return EEPROM.end() to bool (#7630)
- httpclient: remove deprecated API (#7617)
- Avoid float-double-conversion (#7559)
- Use direct member initialization instead of ctr initialisation (#7556)
- Basic authentication with ESP8266httpUpdate (#7190)
Documentation
- doc: analogRead must not be called to frequently with WiFi is on (#7981)
- comments in
ClientContext::connect()
(#7961) - Fix typo in EEPROM debug message (#7934)
- Fix link to ESP8266 NonOS SDK (#7914)
- Update a02-my-esp-crashes.rst (#7739)
- Clarified implementation of the signed OTA implementation (#7736)
- Specify where Additional Boards Manager URLs is (#7733)
- update documentation example (#7697)
- Revive a dead link (#7679)
- Update OTA HTTP Server Header Information (#7633)
- Pull deprecated axtls link (#7624)
- Update README.md (#7623)
- Update path of gdb (#7603)
- Fixup weird combination of oneline/multi line comments (#7566)
- Fix spelling typo under doc/faq (#7538)
- doc: gcc handles duplicate literal strings (#7531)
- Fix and add details to Serial doc (#7521)
- Fix spelling typos in files under doc/esp8266wifi (#7520)
- Typo (#7502)
- Mention OTA Update class blocks flash mode changes (#7321)
- Fix spelling typos in readme.rst (#7447)
- Grammar fixes (#7441)
CI
- Fix ESP8266SdFat architecture, Windows CI (#7866)
- upgrade arduino in CI (#7716)
- Use smarter cache key, cache Arduino IDE (#7791)
- Remove Travis-CI configuration (#7674)
- Allow test framework to use cores/esp8266/Arduino.h directly (#7377)
- ci: apt update (#7596)
- Properly replace toolchain in PlatformIO CI script (#7580)
- PIO: Delete owner field (#7563)
- Add CI test for eboot build (#7546)
- Update PIO CI to be less chatty, fix CI fail (#7530)
- CI: on host: force 64 bit mode like
make -j2 CI
implicitly does (#7513) - Add valgrind mocked test to CI (#7501)
- Clean up minor warnings from LGTM.com (#7500)
- Small update to ease manual release generation (#7467)
- Fix typo in platform.txt causing device test fails (#7463)
- Transition from TravisCI to GitHub CI (#7444)
- Fix spelling typos in files under packages dir (#7439)
- Remove wget dump during CI (#7438)
Build options
- board manager: wemos d1 clones: new entry with menus for flash mode and flash freq (#7989)
- board manager: + Agrumino lemon v4 (#7883)
- Fix improper GENERIC board IDs (#7839)
- boards.txt: sort by displayed name (#7670)
- add sdk options to "generic esp8285 module" (#7550)
Build system
- Update board-specific defines (#7875)
- Add a check for all URLs in the package file (#7848)
- Fix typo in 32-bit Windows package JSON (#7847)
- PIO: Dynamically configure exceptions support (#7834)
- platform.txt: instruct GCC to perform more aggressive optimization (#7770)
- makecorever.py: Hide GIT error messages. Fixes #7744 (#7745)
- Normalize platform.txt pattern numbers (#7752)
- Fix platform.txt issue for Windows (#7750)
- Update to pyserial 3.5, esptool 3.0 (#7737)
- Added GZipped OTA support in elf2bin and PlatformIO (#7727)
- Use -std=gnu17 instead of -std=c17 for GCC and test (#7588)
- Compile failure fix with FS_NO_GLOBALS flag (#7685)
- Update to GCC 10.2 (#7607)
- Upgrade to GCC 10.1 toolchain (#6294)
Emulation on host
- minor host fix found while compiling arduinoJson (#8009)
- emulation on host: millis()/micros() now start at 0 (#7810)
- mock: +hexdump() from debug.cpp (#7789)
- emulation on host: makefile rework: only one build dir (#7738, #7740, #7741)
- emulation on host makefile update, allowing to pass more options (#7552)