0.0.1 • Published 8 years ago
pck v0.0.1
pck is a binary format specifically designed for generating efficient serializers and deserializers in javascript.
Current Status
WORK IN PROGRESS
Packages
pckCore data structures and helper functions for generating schemas.pck-emit-jsEmitter for Javascript/TypeScript (Browser/Node).pck-emit-goEmitter for Go.pck-browserHelper utilities for Javascript (Browser).pck-nodeHelper utilities for Javascript (Node).
Features
- Javascript API for generating schemas (custom data query languages)
- Binary format
- Compact storage size
- Efficient serialization and deserialization in javascript
- Compact javascript serializers and deserializers that can immediately generate objects with appropriate types without any additional steps
Data Types
| Type | Storage Size | Description |
|---|---|---|
| Bool | 1 bit (bit store) | Boolean |
| I8 | 1 byte | Int8 |
| U8 | 1 byte | Uint8 |
| I16 | 2 bytes | Int16 |
| U16 | 2 bytes | Uint16 |
| I32 | 4 bytes | Int32 |
| U32 | 4 bytes | Uint32 |
| F32 | 4 bytes | Float32 |
| F64 | 8 bytes | Float64 |
| IVAR | 1-5 bytes | Variadic Int32 (ZigZag encoding) |
| UVAR | 1-5 bytes | Variadic Uint32 |
| UTF8 | 1-5+N bytes | UTF8 String |
| ASCII | 1-5+N bytes | ASCII String |
| BYTES | 1-5+N bytes | Byte Array |
| ARRAY | 1-5+N bytes | Array |
| MAP(K,V) | 1-5+(NK+NV) bytes | Map |
| ASCII(N) | N bytes | Fixed ASCII String |
| BYTES(N) | N bytes | Fixed Byte Array |
| ARRAY(N) | NV bytes | Fixed Array |
| REF(T) | size(T) bytes | Reference to an Object |
| ONE_OF(T...) | 1-5+size(...T) bytes | One of Object types |
Object Structure
struct {
// bitSet is used to store flags for optional fields and boolean values
bitSet?: u8[N];
// Data
...data;
}0.0.1
8 years ago