~kylep/beans

A flow based programming language built on uxn.
Add some sprites
Fix typo causing bad lookups after id 10
Add some sprites

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~kylep/beans
read/write
git@git.sr.ht:~kylep/beans

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

#Beans lang

beans_icon

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.

#Installation

To install beans, first make sure uxn is installed, and it's in the path install uxn here

To assemble the main building blocks into bin/:

make

This assembles beanc.rom and uxnbean.rom, that are used to compile and run beans. Optionally use make save to copy them ~/roms/`.

Compile etc/hello.bpod

uxncli bin/beanc.rom etc/hello.bpod out.can

Run it

uxncli bin/uxnbean.rom out.can

#Make Shortcuts

To simplify the compilation/run steps, make provides some shortcuts to run examples in the etc folder.

make bin/snake.can runemu

This compiles etc/snake.bpod to bin/snake.can, then copies it to out.can. Then runemu triggers uxnemu ~/roms/uxnbean.rom out.can.

Similarly runcli will run the can without a window.

make bin/hello.can runcli

Note: make won't detect changes to nested dependencies now. To force a rebuild, either pass the -B flag, or include clean in the make command.

#Alias it!

For quick usage in the future in other directories, you can copy uxnbean.rom and beanc.rom to ~/roms, or use make save, then alias them in your .bashrc/.zshrc:

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

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

beanc etc/hello.bpod out.can
beancli out.can

Now you're ready to write some beans!

#Docs

See the Overview Guide to get started working with the language.

See the Opcodes Reference for specifics on writing functions.

To understand the inner workings, src/rombuilder.tal is a pretty short read, this plus src/minimal-platform.tal is what's used to run precompiled roms (without the JIT compilation device).

#Devlog

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!