Skip to content

Jakobeha/devolve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

version documentation LICENSE

devolve: node-based DSL

for rapid iteration and reactive programming.

Obligitory disclaimer: this is an experimental and early project

What?

Devolve is a node-based DSL like Node-RED or Unreal's Blueprints. Also known as Flow-based Programming.

Each node is an effectful computation (function), and nodes are defined in Rust using macros. .dvl files can also be converted into Rust functions using macros.

Each Devolve program is a function: it takes a set of inputs and a context, and produce a set of outputs. Devolve programs are instant: they have no poll or sleep and only iterate over collections, though they are not 100% pure. Devolve programs are strongly-typed and the type system interfaces with Rust's, although there are no linear types so everything must be Copy or a shared reference. Devolve programs are typically edited in the devolve IDE though they may also be edited directly.

Why?

devolve facilitates rapid iteration. A big issue with Rust is that you must recompile and rerun your program every time you want to make changes. .dvl files can be live-reloaded.

devolve facilitates high-level thinking. Visual languages are terrible for representing complex computations, but better than text-based languages at representing simple higher-level computations, as they are also diagrams.

devolve may facilitate collaboration with non-programmers, as visual languages may be more familiar to them.

Use cases:

  • UI (reactive)
  • Heuristics
  • Shaders
  • Low-code or high-level

Scenarios:

  • Prototyping
  • Collaboration with non-programmers

devolve-ui

The primary use case for devolve scripts is devolve-ui, a UI framework. devolve-ui is designed to rapidly-iterable, low-code, functional, accessible to non-programmers - all use cases of the devolve language.

devolve-ui is more than devolve: it also includes the UI nodes, and a separate framework for building asynchronous UIs in Python. But devolve's design is tightly integrated with devolve-ui.

About

compound view graph for devolve-ui (very WIP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages