libstp Anniversary🎉

Exactly one year ago, we published the first beta of libstp.


Today & The future

Today we want to take a look back at the last year of libstp and the future of the library.

As some of you may know, libstp started as an effort to centralize functions used throughout varies parts of the Setup Tool stack.

It all started with the release of Setup Tool 1.7.0 and there is no end in sight.

We added a lot of functionality to libstp and made the library much more useful for developers outside of the Setup Tooling Project.

The future seems bright with libstp2 set to go stable in the next 2 months.


What did we achive?

(1882 additions and 473 deletions later (counted June 24th, 2025 1:22 pm))

🔧 Unified Package Management

  • Replaced individual package manager functions with a single packageOperation() API
  • Now supports 12+ package managers (dnf, flatpak, snap, rpm-ostree, pacman, apt, and more)
  • Cleaner, more maintainable codebase

🛡️ Enhanced Security

  • Secure password input with terminal echo disabled
  • Input validation and sanitization
  • Sandboxed script execution with restricted environments

📜 Script Execution System

  • Support for multiple shell types (bash, zsh, fish, etc.)
  • C code compilation and execution on-the-fly
  • Script metadata tracking and validation

⚙️ Configuration Management

  • Persistent configuration file support
  • Automatic path resolution (including ~ expansion)
  • Boolean config value handling

🎨 Rich Terminal UI

  • Full ncurses integration with color support
  • Interactive menu system with keyboard navigation
  • User-friendly message display system

🔍 System Information

  • Architecture detection
  • OS variant identification (Silverblue, Kinoite, etc.)
  • Real user detection in multi-user environments

The admission

Yes we know, theoretically June 17th would have been the anniversary, because the repo was created that day.

We decided to count the 25th, because that's the day the first code was added to the repo and the first beta release.


So developers?

We want to motivate developers using libstp to start their transition to libstp2, as libstp will go EOL at the end of August and libstp2 will replace it.

To give you a more stable experience and API we plan to release Beta 1 in the next 2 weeks.

We also want to invite new developers to use our library if they want to get started with C development.