This is a pre-release in preparation for release 2.4.0. It comes with many fixes accumulated over the past year, and includes many new features.
This is the list of changes compared to 2.3.0.
Core
- Const-correctness for MD5Builder (#3222)
- detect division by zero in map() to prevent exceptions (#2397)
- digitalWrite and digitalRead cancel analogWrite enabled on a pin (#2328)
- Fix incorrect usage of memset() in PWM code which leads to incomplete initialization of struct
- Fix libb64 decoder (#2883)
- Force core_version to be added to compiled binary
- Prevent divide by zero error causing tone() to crash (#2780)
- progmem: replace C version of pgm_read_{word,byte} with assembly
- SPIFFS: fix unaligned read in HAL (#3261)
- Add Arduino File standard seek call
- Add support to Print::printf for printing from flash (#2266)
- Allow global object instances be switched off with defines (#2344)
- Base64: add option to disable any newlines in output (#3208)
- Enable floating point formatting in sprintf/sscanf (#1179)
- Updated String library to use C++11 iterators. (#2267)
- Use libc from newlib (#1752)
- move libstdc++ to flash (#2804)
- Link ESP-NOW library
ESP8266mDNS:
- Fix link list bug (#2347)
- Fix crash in mDNS destructor (#2389)
- Optimize MDNS to prevent overflow and endless loop (#2333)
- Improve compliance with DNS-SD RFC6763 (#3145)
- Support AP and STA interfaces at the same time
- Support multiple interfaces in query code
- Use the provided IP in the mDNS begin method (#2349)
OTA
- Updater: fail if there is not enough space to fit the new firmware (#2405)
- ArduinoOTA: forward errors from Update.begin to espota.py
- Add getCommand() api for OTA update type (#2259)
- Updater: check boot mode before starting update
- Add support for hashed OTA password (#2292)
- Exposed sketch MD5 through HTTP headers (#2236)
ESP8266WebServer
- Fix missing separator between get and post arguments (#2222)
- Fix plain post content containing special chars being parsed as arguments (#2241)
- Fix urlDecode points (#2212)
- Match headers using equalsIgnoreCase (#2474)
- Allow for overridable value for HTTP_UPLOAD_BUFLEN
- Add chunked encoding support (#2199)
- Add application/json content type
ESP8266HTTPClient
- Add PUT Request to HTTP Client (#2310)
ESP8266WiFi
- WiFi: add SoftAPModeProbeRequestReceived event handler (#2917)
- Set DHCP subnet correctly for softAP (#2648)
- Use WIFI_STA in WiFiClient-examples
- Optimize WifiClient::write performance (#2177)
- WiFiClient: add support for connect and write timeout (#1420, #3247, #2120)
- WiFiClientSecure: add example of setCACert/verifyCertChain (#1851)
- WiFiClientSecure: Add support for CA root cert verification
- WiFiClientSecure: match CN and SANs ignoring case (#2978)
- Allow usage of byte arrays to set RootCAs (#2968)
- Add onComplete event handler support for the asynchronous network scanning. (#2287)
New features
- Add an LLMNR responder implementation (#2880)
- Implement Async NBNS (NetBIOS) name resolution for Windows (#2275)
- Implement Serial RX Buffer (#2239)
- Initial SPI Slave implementation and examples (#2234)
- Add support for HSPI overlap mode (#1062)
Documentation
- Documentation is now hosted on readthedocs.org
- Initial release of FAQ / Troubleshooting section (#2207)
- Documenting of ESP.getFlashChipRealSize() (#2210)
- Use stable documentation of PlatformIO (#2337)
- ESP8266WiFi library documentation (#2388)
- Add PROGMEM docs
- Add instructions how to re-enable DHCP (#2600)
- Add a section on filesystem limitations (#2858)
Upstream dependencies
- axTLS: update to 2.1.2 (includes TLS 1.2 support)
- Update SDK to 2.0.0
Boards
- Host toolchains on Github
- Addition of gen4-IoD Range boards (#3202)
- Arduino boards with ESP8266 (#3121)
- Add 1M (No SPIFFS) board option (#3203)
- Update keywords.txt for coloring syntax (#2892)
Documentation for 2.4.0-rc1
Documentation for this pre-release is hosted on readthedocs.org:
http://arduino-esp8266.readthedocs.io/en/2.4.0-rc1/
Obtaining 2.4.0-rc1 pre-release
To install this pre-release using boards manager, follow the instructions, with the package URL replaced with the following one:
https://github.com/esp8266/Arduino/releases/download/2.4.0-rc1/package_esp8266com_index.json