Skip to content

zserge/bfapi

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
api
 
 
mem
 
 
ptr
 
 
 
 
 
 
 
 

Brainf*ck-as-a-Service

A little BF interpreter, inspired by modern systems design trends.

How to run it?

docker-compose up -d
bash hello.sh # Should print "Hello World!"

How does it work?

Microservices! There is some nginx gateway, that does load balancing to the API instances. Each API instance (see ./api directory) handles parsing and loops. Of course, nobody in his sane mind would implement a stack manually these days, so we use Redis for stack operations. Pointer movements are controlled by another microservice, ./ptr. This one uses MongoDB, because, well, what could possibly go wrong? Finally, there is memory access service (./mem) that uses Postgres as a memory storage, battle-tested, scalable technology.

As a result, a typical hello world script runs in ~400ms on a modern MacBook, not bad at all!

80% of the code was copied from StackOverflow, so it should be bug-free. Enjoy!

About

Resilient, scalable Brainf*ck, in the spirit of modern systems design

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published