Libraries

Libraries are NightOS' way to share code between multiple applications.

Manifest

As libaries are only meant to share code, there manifest is a lot more simple than the applications' one as it is only made of the common fields.

The system library

The system provides a single system library with the sys::lib AID, which is built in the system and not removable. Apart from these points, it acts like a standard library. Its version is identical to the system itself, allowing applications and libraries to specify a minimum system version in their dependencies field.

System library modules

The library contains several modules (called SLM for System Library Module), which act like language namespaces to expose specific features:

  • fs : Filesystem management
  • net : Network communications
  • ipm : Inter-process management (create processes, workers, IPC, shared memory, ...)
  • gui : Graphical user interface library (relies on desktop)
  • apps : Applications management (installation, removal, ...)
  • perm : Permissions controller
  • hydre : Shell interface (run commands, ...)
  • input : Input interface (keyboard, mouse, microphone, ...)
  • sound : Sound interface
  • system : System interface (low-level changes, updates, ...)
  • sandbox : Sandboxes management (run applications in sandboxes, ...)
  • desktop : Desktop management (desktop, windows, notifications, ...)
  • hardware : Hardware management (drivers and devices)
  • i18n: Translations

System applications' libraries

Each system application also exposes a library with the sysl::<app name lowercased> AID which applications can rely on, as these applications are not removable. These are abbreviated SAL for System Application Library.