|Original author(s)||Tecgraf/PUC-Rio in collaboration with Petrobras|
3.30 / 30 July 2020
|Type||Software development kit|
The IUP Portable User Interface is a computer software development kit that provides a portable, scriptable toolkit to build graphical user interfaces (GUIs) using the programming languages C, Perl, Lua, Nim and Zig, among others. This allows rapid, zero-compile prototyping and refinement of deployable GUI applications.
IUP's purpose is to allow programs user interface to run in different systems in unmodified form.
It provides this ability by binding Lua with its C/C++ code, or simply writing C to the application programming interface (API). It handles user interface elements by using native controls provided by native APIs, such as Windows API in Windows, GTK+ in Linux, and Motif-LessTif in older Unices. It also provides some custom developed controls using graphics APIs such as CD - Canvas Draw or OpenGL.
IUP's distinguishing features include:
The Lua scripting is done by binding Lua and IUPLua in (at least) a small C program called a host application. This program creates a Lua state, passes the Lua state to IUPLua for initialization, and then opens and executes a Lua script against the Lua state. Or, the entire IUP state can be dynamically loaded via use of a Lua
package.loadlib of IUPLua.
The script(s) can later be compiled with the Lua compiler if needed.
Support for UTF-8 was added to the Windows target in November 2013 with the release of version 3.9. 
IUP is liberally-licensed for free use, modification, sale, and redistribution under the MIT license.
IUP has been in development at least since the 1.8 version issued in 1998. It was begun in collaboration with Petrobras.