A flow based programming language built on uxn.
Add support for console buttons and allow moving cursor
Add cursor support


browse  log 



You can also use your local clone with git send-email.

#Beans lang


Beans is a flow based programming language built on the uxn virtual machine.

Beans' goal is to be a modular, explicit language that inspires play. Programs written in beans that are extremely decomposable, as the modules (called beans) are entirely independent from each other.

Questions, comments or feedback? Let me know on irc: irc://kyleperik.com#beans


My initial project to prove out this concept was written in javascript here: visual-cell-lang

For a walk-through of the initial ideas, checkout: Beans Genesis (May 2023)

Comparison with other frameworks: Evolution of Beans (July 2023).

Since then I've rewritten beans more formally and efficiently, without a built in visual interface. But the main concepts remain, and I hope to have a visual interface soon!


#Quick start

Required in PATH:

Run the build script to assemble beanasm and uxnbean. Optionally use --save to copy to ~/roms/`.

./build.sh --save

Assemble etc/hello.bean

uxncli bin/beanasm.rom etc/hello.bean > out.can

Run it

uxncli bin/uxnbean.rom out.can

Now see that each time you press return, it prints back "Hello World!".

For more information on writing programs, checkout the spec.


After switching to the drifblim assembler, I'm having some trouble assembling using uxnasm, so drifblim is required. (if you know what's wrong, please drop a note on IRC!)

For quick usage in the future, you can copy uxnbean.rom and uxnasm.rom to ~/roms and alias them in your .bashrc/.zshrc:

alias beanasm='uxncli ~/roms/beanasm.rom'
alias beancli='uxncli ~/roms/uxnbean.rom'
alias beanemu='uxnemu ~/roms/uxnbean.rom'

Now it's a bit easier to compile and run beans:

beanasm etc/particles.bean > out.can
beanemu out.can