New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

wasm-brainfuck

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wasm-brainfuck

Blazing-fast Brainfuck compiler for WebAssembly

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
increased by200%
Maintainers
1
Weekly downloads
 
Created
Source

Fuck

Do you want to write blazing-fast WebAssembly code in a practially useless esoteric programming language? Do you enjoy overcomplicating everything for bragging rights? Are you a connoisseur of profanity-laden tech? If any of those are true, then wasm-brainfuck is the Brainfuck-to-WebAssembly compiler for you!

Usage

$ npm install fuck
import { Brainfuck } from "wasm-brainfuck";

const program = new Brainfuck(`
		++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]
    >>.>---.+++++++..+++.>>.<-.<.+++.------.--------.
    >>+.>++.
	`);

const result = program.execute("input");
console.log(result.output); // 'Hello World!\n'

Brainfuck

Brainfuck operates on an array of 30,000 8-bit memory cells by default. A data pointer, initially set to 0, keeps track of what cell to operate on.

CommandDescription
>Increment the data pointer
<Decrement the data pointer
+Increment the byte at the data pointer
-Decrement the byte at the data pointer
.Output the byte at the data pointer as a character
,Input a character and store it in the byte at the data pointer
[Jump to instruction after the matching ] if the byte at the data pointer is 0
]Jump back to the matching [ if the byte at the data pointer is not 0.

All characters other than ><+-.,[] are considered comments and are ignored.

Customization

wasm-brainfuck uses 30,000 memory cells by default, but this can be customized at compile time. When the data pointer is moved out of range, it wraps back around to the other side of the array.

const program = new Brainfuck("+.>+.", { memorySize: 100_000 });

End-of-file conditions aren't handled consistently in Brainfuck implementations. By default, EOF input is a no-op, leaving the memory cell unchanged. For flexibility, wasm-brainfuck allows EOF behavior to be set at compile time to map EOF to 0 or 255.

import { EofBehavior } from "wasm-brainfuck";
const program = new Brainfuck("+.>+.", { eofBehavior: EofBehavior.SetZero });

Roadmap

  • Brainfuck-to-WebAssembly compiler
  • Compiler optimizations
  • Compiler CLI
  • Syntax highlighter

Publishing to NPM

We recommend using np.

Keywords

FAQs

Package last updated on 07 May 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc