Университетский колледж Осло и Акерсхуса открыл исходные тексты исследовательского проекта IncludeOS, в рамках которого развивается специализированное ядро (unikernel), позволяющие запускать приложения, написанные на языке С++, непосредственно поверх гипервизора, без применения дополнительных прослоек и окружения операционной системы. Код открыт под лицензией Apache 2.0.
IncludeOS предоставляет минимальное необходимое самодостаточное окружение, которое взаимодействует непосредственно с гипервизором и предоставляет загрузчик, ядро, минимальный набор библиотек и модулей, достаточный для выполнения кода на языке С++, написанный с использованием стандартной библиотеки классов. Окружение компонуется с предназначенным для выполнения приложением и оформляется в виде загрузочного образа виртуальной машины, образуя готовый облачный сервис. Из систем виртуализации, в которых могут работать подобные окружения, поддерживаются KVM/Linux, VirtualBox и Bochs.
Суммарный размер библиотек и компонентов операционной системы составляет всего 693 Кб. Нагрузка на CPU при работе экспериментального DNS-сервера, построенного на базе IncludeOS, оценивается в 5-20% по сравнению с запуском того же исполняемого файла в обычной гостевой системе. Поддерживается сборка программ, написанных с использованием спецификаций C++11/14, и пригодных для компиляции с использованием Сlang 3.6 с libc++ от проекта LLVM, или программ на языке Си, которые могут быть собраны с библиотекой newlib от компании Red Hat. Для организации сетевого взаимодействия применяется драйвер Virtio, DHCP-клиент и собственный TCP/IP-стек, который предоставляет набор возможностей, достаточный для работы HTTP- и DNS-серверов.
Предназначенное для выполнения в окружении IncludeOS приложение создаётся с соблюдением определённых требований, например, применяется напоминающая по стилю Node.js неблокирующая система callback-вызовов, вместо main указывается OS::start. Программа компилируется при помощи утилиты vmbuild в один исполняемый файл, который объединяет в себе ядро, загрузчик, статически скомпонованные библиотеки и само приложение. Программа выполняется на нулевом кольце защиты процессора (ring 0) в общем адресном пространстве (одна программа-сервис на одно окружение).
IncludeOS пока позиционируется как рабочий прототип, который не поддерживает все запланированные возможности, например, сетевой стек не поддерживает IPv6, а набор библиотек не включает средств для запуска многопоточных программ. Из планов на будущее отмечается поддержка TLS, RESTful API, поддержка интеграции БД SQLite и MongoDB, возможность использования модулей и подготовка пакетного менеджера, поддержка IPv6 и доведение IPv4-стека до полноценного вида.