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 🙏

© 2024 – Pkg Stats / Ryan Hefner

picobrain

v2.0.2

Published

Tiny Javascript brainfuck interpreter

Downloads

15

Readme

picobrain

npm npm Github file size GitHub

Perhaps the smallest Javascript brainfuck interpreter

picobrain is a 250-byte Javascript brainfuck interpreter.

Usage

The library exports a generator function which yields on output.

var bf = require("picobrain")

bf("+++[>++++++++++<-]>+++."); // Yields "!"

You can also provide your own tape.

// Here, we specify that we want the interpreter to use a new `Uint8Array` as
// the tape. This will set the tape size to 20 and cause cell values to wrap on
// overflow/underflow.
// If no tape is provided, the interpreter will just use a new empty unbounded
// number array.
var tape = new Uint8Array(20);
bf("-", tape);

For the input command to work (,), you must provide a function which is to be invoked on input:

function input() {
  return window.prompt();
}

bf(",.", [], function() {
  return window.prompt();
});

Why

Why not?

This library is also an open codegolf challenge. Please feel free to submit pull requests if you're able to make the code even shorter, or fork the project and make your own API!

Install, Build & Test

To install the package, use the standard NPM install command:

npm install picobrain

The package is hand-written, minified Javascript; therefore, no build process is required, and you can directly edit and execute the source!

An NPM script has been created for simplicity when running tests, which can be run from the command line as shown below:

npm test

picobrain uses the Tape library for testing.

Content Delivery Network (CDN)

The picobrain library can be imported via unpkg as shown below:

<script type="application/javascript">var module= {};</script>
<script src="https://unpkg.com/picobrain/index.js"></script>
<script type="application/javascript">
  var bf = module.exports;
  // Library is imported as `bf`!
</script>

Be aware that picobrain is a CommonJS module and therefore uses module.exports; before importing the script, you will need to define module or use a CommonJS-compatible module loader.

License

Please see the LICENSE file for license information.