CARMI

CARMI

  • Getting started
  • Design
  • API Reference
  • Help
  • GitHub

Compiler for Automatic Reactive Modelling of Inference

Getting Started
API

Derived/Computed state with Zero Cost Abstraction

Phil Karlton - "There are only two hard things in Computer Science: cache invalidation and naming things"

CARMI lets you ignore cache invalidation without sacrificing performance

Write a naive version of your state derivation in a lodash inspired syntax and get back an optimized function that makes sure all your computation is incremental and super performant.

CARMI replaces Redux, Mobx, & Lodash

A better Redux

A state container for JavaScript apps without the boilerplate - Just write the selectors (derivations) and setters you need

If a derivation isn't exposed it isn't computed and if something in the state isn't writable it won't be tracked

A better Mobx

Reactive without setters/getters, and without relying on immutability. Plain objects are 5x-10x faster and all calculations are incremental

And unlike Mobx - you don't need to manually define tiny compute functions nor remember that you already calculated something in a different part of your codebase so it doesn't get computed twice

A better Lodash/Ramda

Uses a simple declarative lodash inspired syntax, but because everything is declarative you can write the shared expressions in the context in which they make sense without paying for it in runtime/performance

Reactive

All derived state is always up to date, all computation is incremental

Zero Cost Abstraction

Values are not boxed, plain objects are 5x-10x faster

Easy

Uses a simple declarative lodash inspired syntax

Simple

Focus 100% on your business logic, without boilerplate and get unmatched performance

Docs
Getting StartedDesignAPI ReferenceHelp
More
GitHubStar
Copyright © 2019 Wix