WHAT N2O REALLY IS?
N2O is a formal philosophy and software engineering exercise. It stricts you to be minimal and concise while remains functional and complete. It's a kind of purity discipline in software development. The application of the N2O method is modern web development: JavaScript, server-side DOM updates, binary protocols. N2O teaches how to write minimal and robust software.
Formal spec for core libraries N2O, KVS and BPE in Anders language:
N2O blueprint implementations:
Client Tier 3 —(JavaScript、Lua):
N2O.JS CLIENT
ECMAScript client infrastructure for N2O full-stack specification.
- UTF-8.JS — UTF-8 serialization
- zlib.js — ZLIB inflate algorithm
- IEEE-754.JS — Real Number Format serialization
- BERT.JS — Binary Erlang Term Format serialization
- N2O.JS — N2O/WebSocket JavaScript Client Loop
- MQ.JS — N2O/MQTT JavaScript Client Loop
- NITRO.JS — NITRO/JavaScript bindings of DOM sources
- VALIDATION.JS — NITRO/JavaScript DOM sources validation
Server Tier 2 —(Erlang、Elixir):
O7 ERLANG ELIXIR HAMLER
These repos are stable and mature.
- synrc/n2o — N2O 7.12.0 Distributed WebSocket Server
- synrc/kvs — KVS 7.11.5 Key Value Store
- synrc/mad — MAD 7.1.1 Erlang Package Manager
- synrc/bpe — BPE 5.12.0 Business Process Engine
- synrc/nitro — NITRO 5.12.4 Nitrogen Web Framework
- synrc/rest — REST 5.10
- synrc/active — ACTIVE 4.11
- synrc/fs — FS 4.10
- synrc/exe — EXE 2.11
- synrc/bert — RPC 1.11.1 Swift protobuf ASN.1 JavaScript
- synrc/review — REVIEW 1.11 MQTT Chat with File Upload
- synrc/sample — SAMPLE 1.11 WebSocket Chat with File Upload
Server Tier 1 — (SML、Haskell、F#、Rust):
O1 STANDARD ML
This is first System-F implementation for SML/NJ and MLton.
O3 HASKELL
This is second System-F implementation.
O61 F#
This is third System-F implementation.
O83 RUST
This is proof-of-concept of formal CPS interpreter with SMP runtime.
- o83/kernel — KERNEL SMP OS and K interpreter
Server Tier 0 — (Coq、Agda、Lean):
O89 LEAN4
This is LEAN 4 N2O full-stack.
- o89/n2o — N2O WebSocket Server
- o89/nitro — NITRO Nitrogen Web Framework
- o89/bum — BUM Lean4 Package Manager
O29 COQ
Coq.io based system-level Coq programming.
- o29/n2o — N2O Coinductive Shell
HEART ADVICE
Each language, N2O TECH is implemented in, should
embed its philosophy most naturally and compact. If some layer between
the base library of a language is needed, it
could be provided, but it should be reduced
to zero if possible. In some cases, some parts
of a base library could be replaced with better replacement.
N2O should provide client companion library usually
implemented in a different set
of client languages: JavaScript, Swift, Kotlin.
If you did everything right, N2O should not
be more than 500 LOC in any language.
LEGEND:
- Client Tier 3:(JavaScript、Lua)
- Client Tier 2:(Swift、Kotlin、TypeScript)
- Client Tier 1:(UrWeb、OCaml)
- Client Tier 0:(Formality)
- Server Tier 3:(PHP、Python、Perl、Ruby)
- Server Tier 2:(Erlang、Elixir)
- Server Tier 1:(Standard ML、Haskell、F#、Rust)
- Server Tier 0:(Coq、Agda、Lean)