PRO

SPEC

The specification is given in Anders language.

N2O

QUIC, WebSocket and MQTT embeddable protocol loop library with in-memory broker, sessions, cache, AES.GCM and Erlang Term Format serialization which is known to be faster and more efficient that JSON at server side.

axiom pickle : Binary -> Binary axiom depickle : Binary -> Binary axiom encode : Π (k: U), k -> Binary axiom decode : Π (k: U), Binary -> IO k axiom reg: Π (k: U), k -> IO k axiom unreg : Π (k: U), k -> IO k axiom send : Π (k v z: U), k -> v -> IO z axiom getSession : Π (k v: U), k -> IO v axiom putSession : Π (k v: U), k -> v -> IO v axiom getCache : Π (k v: U), Atom -> k -> IO v axiom putCache : Π (k v: U), Atom -> k -> v -> IO v axiom start : PI -> IO Sup

KVS

KVS is a wrapper around RocksDB interface also compatible with SpanDB database with direct NVMe access (SPDK).

axiom get : Π (f k v: U), f -> k -> IO (Maybe v) axiom put : Π (r: U), r -> IO StoreResult axiom delete : Π (f k: U), f -> k -> StoreResult axiom index : Π (f p v r: U), f -> Atom -> v -> List r axiom next : Reader -> IO Reader axiom prev : Reader -> IO Reader axiom take : Reader -> IO Reader axiom drop : Reader -> IO Reader axiom save : Reader -> IO Reader axiom append : Π (f r: U), f -> r -> IO StoreResult axiom remove : Π (f r: U), f -> r -> IO StoreResult

BPE

BPMN 2.0 core compliant process engine with scheduler for parallel processes and XML support compatible with Camunda Modeler.

axiom start : Proc -> IO Sup axiom stop : String -> IO Sup axiom next : ProcId -> IO ProcRes axiom amend : Π (k: U), ProcId -> k -> IO ProcRes axiom discard : Π (k: U), ProcId -> k -> IO ProcRes axiom modify : Π (k: U), ProcId -> k -> Atom -> IO ProcRes axiom event : ProcId -> String -> IO ProcRes axiom head : ProcId -> IO Hist axiom hist : ProcId -> IO (List Hist)

NITRO

NITRO is a Nitrogen-compatible Erlang Web Framework that has no BEAM competitors (yet) in terms of speed and productivity (including not only all Erlang frameworks but also all Elixir frameworks).

axiom q : Π (k: U), Atom -> k axiom qc : Π (k: U), Atom -> k axiom jse : Maybe Binary -> Binary axiom hte : Maybe Binary -> Binary axiom wire (actions: List Action) : IO (List Action) axiom render (content: Either Action Element) : Binary axiom insert_top (dom: Atom) (content: List Element) : IO (List Action) axiom insert_bottom (dom: Atom) (content: List Element) : IO (List Action) axiom update (dom: Atom) (content: List Element) : IO (List Action) axiom clear (dom: Atom) : IO Unit axiom remove (dom: Atom) : IO Unit

FormalTalk

FormalTalk is a Salesforce-like declarative language with limited imperative constructions designed to orchestrate N2O libraries in most effective manner. In BNF notation.

mod := 'module' name spec clauses spec := 'kvs' | 'bpe' | 'form' name := word | binary | string args := [] | name args clause := 'import' name | 'record' name args dec | 'notice' name args dec | 'event' name args dec | 'route' name args dec | 'form' name args dec dec := 'begin' decls 'end' clauses := clause | clause clauses decls := decl | decl '|' decls decl := word '=' args ':' union | word '=' args | args | 'document' word word '[' buttons ']' '[' fields ']' | 'result' '[' conts ']' args union := args | args '+' union conts := args | args '|' conts fields := args | args '|' fields buttons := args | args '|' buttons