m3m0r7/pnl

PHP native-library extension manager: FFI runtime SDK plus the pnl/pnlx CLI built from the bundled Rust sources on install.

Maintainers

Package info

github.com/m3m0r7/pnl

Language:Rust

pkg:composer/m3m0r7/pnl

Transparency log

Statistics

Installs: 21

Dependents: 0

Suggesters: 0

Stars: 8

Open Issues: 0

v0.6.0 2026-06-22 13:37 UTC

README

日本語版

pnl makes it easy to use C libraries from PHP. It installs library "packages", finds the C library and headers already on your machine, generates PHP wrappers, and exposes everything through the Pnlx PHP SDK — think Composer, but for C libraries.

pnl init
pnl search 'lib*'    # browse available packages (default repo + your own)
pnl install libc
pnl list 'lib*'      # show what you have installed

See the Quick Start to call C printf from PHP in a minute.

Table of Contents

Documentation

  • Overview — What pnl is, how it works, and project status.
  • Quick Start — Call C printf from PHP in a few commands.
  • Installation — Requirements and building/installing the binaries.
  • Configuration — Project layout and writing pnl.json.
  • Install Sources — URLs, paths, bare names, archives, and native discovery.
  • Commandspnl and pnlx command reference.
  • PHP Usage — Loading extensions and the generated files.
  • Development — Validation, testing, and the JSON schemas.

The official default package repository is https://github.com/m3m0r7/pnl-packages, which publishes a repository-index.json so pnl search can browse it without cloning. A repository may also expose short aliases (e.g. sdllibsdl), so pnl install sdl resolves to the referenced package. The built-in endpoints can be overridden per project — see Configuration.

The generated PHP SDK loads itself through its own autoloader (@pnlx/autoload.php), so it runs without a Composer autoloader at runtime.

License

This repository is currently marked as MIT in composer.json. The bundled C libraries keep their own upstream licenses; see the package manifests and READMEs at https://github.com/m3m0r7/pnl-packages.