• Stars
    star
    244
  • Rank 165,885 (Top 4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

µON - a compact and simple binary object notation

µON [muon]

A compact and simple object notation. µ[mju:] stands for "micro".

Muon on Twitter

File extension:     .mu
MIME type:          application/muon
Endianness:         little-endian
Signature/Magic:    optional, 8F B5 30 31 ["�µ01"] @ 0x0

Muon has some interesting properties (see presentation and docs):

  • Every null-terminated UTF8 string is at the same time a valid muon object
  • Gaps in the UTF8 encoding space (code units) are used to encode things like [ ] { } etc.
  • Muon is self-describing and schemaless, just like JSON (unlike Protobuf and FlatBuffers)
  • Compact (~10..50% smaller than JSON). On par or outperforms CBOR, MsgPack, UBJSON
  • Unlimited size of objects and values
  • Data is ready to be used in-place without pre-processing
  • Supports raw binary data (values and TypedArrays)
  • Can optionally contain count of elements (and size in bytes) of all structures for efficient document processing, similar to BSON

Future goals:

  • Strict specification (little or no room for implementation-specific behavior / vendor-specific extensions)

Try it yourself

python3 muon_py/json2mu.py ./data/AirlineDelays.min.json ./AirlineDelays.mu
python3 muon_py/mu2json.py ./AirlineDelays.mu > ./AirlineDelays.json

Run benchmarks:

python3 muon_py/extra/json-analyze.py ./data/*.json ./data/small/*.json
python3 muon_py/mu-benchmark.py ./data/*.json ./data/small/*.json

Muon structure

Muon diagram

See more in documentation.

Disclaimer: the notation is still Work In Progress. If you have any ideas or comments, please feel free to post them here.


Stand With Ukraine

More Repositories

1

TinyGSM

A small Arduino library for GSM modules, that just works
C++
1,935
star
2

StandWithUkraine

#StandWithUkraine banner and related documents
JavaScript
1,394
star
3

awesome-wasm-tools

😎 A curated list of awesome, language-agnostic WebAssembly tools
453
star
4

miband-js

MiBand 2 JS library for Node.JS and HTML5 (WebBluetooth)
JavaScript
342
star
5

ViperIDE

An innovative MicroPython / CircuitPython IDE for Web and Mobile
Python
341
star
6

blynk-library-python

Blynk library for Python. Works with Python 2, Python 3, MicroPython.
Python
284
star
7

blynk-library-js

Blynk library for JS. Works with Browsers, Node.js, Espruino.
JavaScript
215
star
8

node-inline-cpp

Inline C++ with Node.js
JavaScript
168
star
9

wasm2native

Turn WASI apps into native executables
C
117
star
10

Preferences

Preferences library for Arduino, ESP8266, RP2040, Particle, Realtek Ameba
C
69
star
11

blynk-library-particle

Blynk library for Particle Core, Photon, Electon, P0, P1, RedBear Duo etc.
C++
46
star
12

wasm3_dino_rpi_pico

WebAssembly Dino game for PPi Pico
WebAssembly
45
star
13

interp

Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
C
43
star
14

Wasm3_RGB_Lamp

Animating an RGB lamp, using WebAssembly!
C++
42
star
15

blynk-library-lua

Blynk library for Lua. Works with Lua 5.1+, LuaJIT, NodeMCU.
Lua
41
star
16

w600tool

Firmware upload tool for Winner Micro W600 & W601 WiFi
Python
38
star
17

StreamDebugger

StreamDebugger allows easier debugging of Serial-based communication on Arduino, like AT command interface in ESP8266, SIM800, SIM900, and other GSM modules
C++
35
star
18

randomart

Generative WebGL Random Art renderer
JavaScript
31
star
19

ESP32_PPPoS

PPP over Serial for ESP32
C++
27
star
20

serial-server

Simple serial port server
JavaScript
26
star
21

GY80

Arduino/Processing sketch for GY80 9DOF AHRS
Arduino
22
star
22

UNO-R4-WiFi-freedom

UNO R4 WiFi set free!
C++
20
star
23

JIDL

Simple, flexible, JSON-based Interface Definition Language
Python
18
star
24

blynk-library-openwrt

OpenWRT packages for Blynk C++ library
Makefile
18
star
25

blynk-pc-remote

This app allows you to control your PC remotely using the Blynk App.
JavaScript
13
star
26

espruino-await

async/await example for Espruino
JavaScript
11
star
27

OpenWRT-Espruino-packages

Espruino package for OpenWRT
Makefile
10
star
28

blynk-tools

Tools for working with Blynk IoT Platform
JavaScript
8
star
29

blynk-library-ez-connect

Blynk example for Marvell® EZ-Connect™ MW302
C++
6
star
30

pypp

Python PreProcessor
Python
6
star
31

wasm2mpy

Running WebAssembly as a native MicroPython module
C
4
star
32

vshymanskyy

4
star
33

aiodns

A small async DNS client for MicroPython
Python
4
star
34

ESP_UNO_R4

C
4
star
35

TurtlOS

educational os project
C++
3
star
36

blynk-community-map

JavaScript
3
star
37

xplat

C++ cross-platform abstraction library
C++
1
star
38

vshymanskyy.github.io

1
star
39

bronyk

bronyk robot control system
C++
1
star
40

lbm-micropython

LoRa Basic Modem integration for MicroPython
C
1
star
41

kad

kademlia overlay network implementation
C++
1
star