github esp8266/Arduino 3.0.1
Release 3.0.1

latest releases: 3.1.2, 3.1.1, 3.1.0...
3 years ago

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

  • Update debug level list link (#8172)
  • Add missing menu.UploadTool name definition (#8153)

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

  • Fix stopAllExcept with WiFiClientSecure (#8136)
  • LwipIntfDev.h - apply static DNS config (#8076)

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

  • PIO: use CCFLAGS for -Werror (#8175) (#8092)
  • Documentation: Note about options on PIO (#8174)

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)

Don't miss a new Arduino release

NewReleases is sending notifications on new releases.