Reference   Language | Libraries | Comparison | Changes


This page lists major changes to the Arduino core, libraries, and environment. For details, see the release notes.

Changes in Arduino 1.0.1

Environment (IDE)

  • Internationalization of the IDE and translation into multiple languages (selected in preferences dialog).
  • New preference for skipping verification during upload (for increased speed).
  • Speeded up compilation by only compiling changed files. (Except for the first compilation after selecting a new board, when all files are compiled.)

Language (API)

  • Added support for the Arduino Leonardo.
  • Added Leonardo-specific Mouse and Keyboard libraries.
  • Added INPUT_PULLUP argument to pinMode() function. The INPUT mode now explicitly disables the pullup resistors.
  • Added ability to generate repeated starts in the Wire library (in master mode). Extra boolean parameters to endTransmission() and requestFrom() control whether or not to send a stop (or a repeated start instead)
  • Added Ethernet.maintain() function for renewing DHCP leases.
  • Added readString() and readStringUntil() functions to Stream, Serial, etc.

Changes in Arduino 1.0

Environment (IDE)

  • New file extension (.ino).
  • New toolbar icons: checkmark (verify) and arrow (upload). (Nicholas Zambetti)
  • New color scheme, document icon, about image (!ToDo).
  • Board name and serial port are shown in status line at the bottom of the editor. (from Wiring)
  • URLs in the sketch code are now clickable hyperlinks (issue 148) (Christian Maglie)
  • Progress bar shown during compilation and upload. (from Wiring)
  • Support for uploading sketches from within the IDE: hold shift while clicking upload or select "Upload Using Programmer" from the File menu. Select programmer from the Tools menu of the IDE.
  • Verbose output (during compilation or uploading) now enabled from within the preferences dialog.

Language (API)

  • Switching to non-blocking Serial writes with a transmit buffer.
  • Serial.flush() now waits for transmission of outgoing data rather than discarding received incoming data.
  • Reimplementation of the SoftwareSerial library to support multiple ports (!NewSoftSerial by Mikal Hart).
  • Removed Matrix and Sprite libraries.
  • Serial.print(byte) now prints the digits of the number as characters; use write() to send as a single byte.
  • write(), print(), and println() now return size_t (unsigned int) instead of void (issue 551): number of bytes written.
  • write(str) in Print is no longer virtual, so subclasses of Print or Stream can't (but also don't need to) override it.
  • Added getWriteError(), clearWriteError(), and protected setWriteError() methods to Print; use to check for, clear, and set a write error flag.
  • Removed the ability to say "client == NULL" or "client != NULL" from Ethernet library; use "if (client)" or "if (!client)" instead.
  • Reimplementation of String class (Paul Stoffregen + additional modifications).
  • Added support for Flash-based strings using the F("string") syntax.
  • Added DHCP and DNS support to the Ethernet library (integration by Adrian !McEwen).
  • Renamed Ethernet Client, Server, and UDP classes to EthernetClient, EthernetServer, and EthernetUDP to allow for simultaneous use of other networking libraries.
  • Modified UDP API:
    • beginPacket() / endPacket() for bracketing outgoing UDP packet construction
    • Inheriting from Stream, using write(), print(), and println() for UDP packet construction
    • parsePacket() for parsing incoming packets (and checking if there is one)
    • available(), read(), peek() for reading bytes of incoming packet
    • remoteIP(), remotePort() for information about incoming packet
  • Addition of IPAddress class (Adrian !McEwen).
  • Modified Wire library to inherit from Stream; i.e. to use read(), write(), print(), println(), etc. Bracket calls to those functions with beginTransmission() and endTransmission().
  • Adding support for multiple open files and directory iteration in SD card library (Limor Fried).
  • Added serialEvent() function, called automatically on reception of serial data if it exists. Also, serialEvent1(), serialEvent2(), and serialEvent3() on the Mega.
  • Added find(), findUntil(), parseInt(), parseFloat(), readBytes(), readBytesUntil(), and setTimeout() to Stream (issue 458 - Michael Margolis).
  • Updated Firmata to version 2.3 (r71): analog inputs now numbered from 14 (not 16) when used as digital pins.


  • Renamed WProgram.h to Arduino.h.
  • Pin definitions separated from the core and stored in new variants/ sub-directory. Specified by the preference in boards.txt.
  • Added macros / constants for getting information about the properties of the board (issue 490 and issue 495)


  • Updated avrdude to 5.11 (and switched to arduino programmer type from stk500).

Changes in Arduino 0023

Changes in Arduino 0022

Changes in Arduino 0021

Changes in Arduino 0020

Changes in Arduino 0019

  • Added String class.
  • Added shiftIn() function.
  • Added Serial.peek() function.
  • Added aliases for the analog input pins: A0, A1, etc.
  • Added SPI library.
  • Ethernet library now depends on the SPI library; add #include <SPI.h> to the top of sketches.

Changes in Arduino 0018

Changes in Arduino 0017

  • Environment: The code base for the Arduino development environment was largely re-written to bring it back into sync with Processing (1.0.3). The main differences include support for multiple sketch windows open simultaneously and a dedicated window for the serial monitor.

  • Icons: The icons and about images were updated.

  • The Mac OS X version of Arduino is now a .app file packaged in a .dmg.

  • Libraries: Support was added for third-party libraries in the SKETCHBOOK/libraries directory. This allows user-installed libraries to persist across upgrades of the Arduino software.

  • Servo: The servo library was rewritten to allow support for up to 12 servos (on any pins) and up to 48 on the Mega.

  • LiquidCrystal: The begin(), cursor(), noCursor(), blink(), noBlink(), display(), noDisplay(), scrollDisplayLeft(), scrollDisplayRight(), autoscroll(), noAutoscroll(), leftToRight(), rightToLeft(), and createChar() functions were added.

Changes in Arduino 0016

  • New functions for writing a string, write(str), or buffer, write(buf, len), were added to the Print, Serial, and Ethernet library Client and Server classes.

Changes in Arduino 0015

  • Support for the Arduino Mega.

Changes in Arduino 0013

  • Support for printing floats was added to the Print, Serial, and Ethernet library Client and Server classes.

  • The word type and word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(), lowByte(), and highByte() functions were added.

Changes in Arduino 0012

  • Added the Firmata library, which provides a standard protocol for serial communication.

  • Added Ethernet library.

  • Added Servo library.

  • Added LiquidCrystal library.

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.