npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@blueshift-gg/sbpf-assembler

v0.1.8

Published

Assembler to assemble and link sbpf assembly to bytecode

Readme

Table of Contents

sbpf

ci codecov

A simple scaffold to bootstrap sBPF Assembly programs.

Installation

cargo install --git https://github.com/blueshift-gg/sbpf.git

Usage

To view all the commands you can run, type sbpf help. Here are the available commands:

  • init: Create a new project scaffold.
  • build: Compile into a Solana program executable.
  • deploy: Build and deploy the program.
  • test: Test the deployed program.
  • e2e: Build, deploy, and test a program.
  • clean: Clean up build and deploy artifacts.
  • disassemble: Disassemble a Solana program executable.
  • debug: Debug an sBPF assembly program.
  • help: Print this message or the help of the given subcommand(s).
Usage: sbpf <COMMAND>

Commands:
  init         Create a new project scaffold
  build        Compile into a Solana program executable
  deploy       Build and deploy the program
  test         Test deployed program
  e2e          Build, deploy and test a program
  clean        Clean up build and deploy artifacts
  disassemble  Disassemble a Solana program executable
  debug        Debug an sBPF assembly program
  help         Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Command Details

Initialize a Project

To create a new project, use the sbpf init command. By default, it initializes a project with Rust tests using Mollusk. You can also initialize a project with TypeScript tests using the --ts-tests option.

sbpf init --help
Create a new project scaffold

Usage: sbpf init [OPTIONS] [NAME]

Arguments:
  [NAME]  The name of the project to create

Options:
  -t, --ts-tests  Initialize with TypeScript tests instead of Mollusk Rust tests
  -h, --help      Print help information
  -V, --version   Print version information
Examples
Create a new project with Rust tests (default)
sbpf init my-project
Create a new project with TypeScript tests
sbpf init my-project --ts-tests

After initializing the project, you can navigate into the project directory and use other commands to build, deploy, and test your program.

Disassembler

The disassembler converts a Solana program executable (ELF) into human-readable sBPF assembly.

sbpf disassemble <FILENAME>

Debugger

The debugger provides an interactive REPL for stepping through sBPF assembly programs.

Debug an assembly file:

sbpf debug --asm <FILENAME>

Debug an ELF file:

sbpf debug --elf <FILENAME>

Input:

To debug programs that require input, the debugger accepts a JSON file (or JSON string) containing the instruction being executed and the accounts involved. Pass it using the --input flag:

sbpf debug --asm src/my-program/my-program.s --input input.json

The JSON should contain the following information:

  • instruction: The instruction to execute, including the program ID, account metas, and instruction data.
  • accounts: The account states. The data field in each account and instruction should be base58 encoded.

Example:

{
  "instruction": {
    "program_id": "78ycAjmvvq2Xjz6mBgGTsuHHNVADZ75NWgXKPY8wvF2s",
    "accounts": [
      {
        "pubkey": "3JF3sEqM796hk5WFqA6EtmEwJQ9quALszsfJyvXNQKy3",
        "is_signer": true,
        "is_writable": false
      },
      {
        "pubkey": "11157t3sqMV725NVRLrVQbAu98Jjfk1uCKehJnXXQs",
        "is_signer": false,
        "is_writable": true
      }
    ],
    "data": "8AQGAut7N95oMfV99bhRZ"
  },
  "accounts": [
    {
      "pubkey": "3JF3sEqM796hk5WFqA6EtmEwJQ9quALszsfJyvXNQKy3",
      "owner": "11111111111111111111111111111111",
      "lamports": 1000000000,
      "data": "",
      "executable": false
    },
    {
      "pubkey": "11157t3sqMV725NVRLrVQbAu98Jjfk1uCKehJnXXQs",
      "owner": "11111111111111111111111111111111",
      "lamports": 1000000000,
      "data": "",
      "executable": false
    }
  ]
}

Advanced Usage

You can override the default linker with a custom linker file by including it in the src directory with the same name as your program. For example:

src/example/example.s
src/example/example.ld

License

Licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contributing

PRs welcome!