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