About bpm
The home for bnl packages.
bpm is the official package manager for bnl — a from-scratch interpreted language with full Bangla and English keyword support. Free, open source, and built in the open.
What it does
A registry for two kinds of packages.
Pure-bnl libraries
Drop them in deps/<name>/ and
import "name" just works.
Pure source, no compilation, runs on every platform that runs bnl.
Native plugins
Shared libraries (.dll / .so / .dylib)
built against the bnl C++ ABI. Publish once with a single manifest;
bpm resolves the right binary on install for each platform.
How it fits together
From your machine to the registry, in three steps.
-
1
Author
Write your package and declare it in
bnl.json. Runbpm publish. -
2
Consume
Other developers run
bpm install <name>and the package lands under their project'sdeps/. -
3
Resolve
The bnl runtime resolves
import "name"via a deps directory walk-up — no global state, no version conflicts.
Principles
What we care about.
Reproducibility over convenience
Every install writes a bnl.lock
pinning every direct and transitive dependency to an exact version and SHA-256 hash. Commit it. Same install, every machine, every time.
Open source, end to end
The runtime, the CLI, and the registry are all MIT-licensed and developed in the open. Fork it, mirror it, run your own — the protocol is documented.
No telemetry, no trackers
We collect what's needed to operate the registry and nothing more. No analytics scripts on the website. No usage pings from the CLI. Read the privacy policy.
Small, predictable surface
One CLI, one manifest, one lockfile. No plugins, no hooks, no yaml. If something feels magic, we got it wrong.
Project status
Early but stable.
bpm v1.0 is released and we treat the CLI surface as stable. The registry API may evolve while we add features; if it ever changes incompatibly, we'll keep the old version available for at least 6 months.
Found a bug or want to contribute? Open an issue or send a patch.