The source code for the IDE is released under the GNU General Public License, version 2.[5] The Arduino IDE supports the languages C and C++ using special rules of code structuring.[6] The Arduino IDE supplies a software library from the Wiring project, which provides many common input and output procedures. User-written code only requires two basic functions, for starting the sketch and the main program loop, that are compiled and linked with a program stub main() into an executable cyclic executive program with the GNU toolchain, also included with the IDE distribution.[7] The Arduino IDE employs the program avrdude to convert the executable code into a text file in hexadecimal encoding that is loaded into the Arduino board by a loader program in the board's firmware.[8] By default, avrdude is used as the uploading tool to flash the user code onto official Arduino boards.[9]