UP (Unified Properties)

A Human-Friendly Data Serialization Format

View the Project on GitHub uplang/spec

Official parser implementations in various programming languages. Each implementation is maintained in its own repository with complete documentation and examples.

Official Implementations

Go (Reference Implementation)

Go Reference Go Report Card CI License: GPL v3

Repository: https://github.com/uplang/go

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

The reference implementation includes both the parser library and command-line tools.

Features:

Installation:

go get github.com/uplang/go

JavaScript/TypeScript

npm version npm downloads CI License: GPL v3

Repository: https://github.com/uplang/js

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

Pure JavaScript/TypeScript implementation for Node.js and browsers.

Features:

Installation:

npm install @uplang/up

Python

PyPI version CI Documentation Status License: GPL v3

Repository: https://github.com/uplang/py

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

Python implementation with native types support.

Features:

Installation:

pip install up-lang

Rust

Crates.io Documentation CI License: GPL v3

Repository: https://github.com/uplang/rust

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

High-performance Rust implementation with zero-copy parsing.

Features:

Installation:

[dependencies]
up-lang = "1.0"

Java

CI Documentation License: GPL v3

Repository: https://github.com/uplang/java

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

Modern Java implementation using records and sealed classes (Java 21+).

Status: 🚧 In Progress


C

CI Documentation License: GPL v3

Repository: https://github.com/uplang/c

πŸ“š API Documentation πŸ§ͺ Test Status πŸ“– Quick Start

C implementation for maximum portability and embeddability.

Features:

Installation:

make && sudo make install

Implementation Status

All implementations support the core UP syntax. Advanced features vary by implementation:

Feature Go JS/TS Python Rust C
Core Parser βœ… βœ… βœ… βœ… βœ…
Type Annotations βœ… βœ… βœ… βœ… βœ…
Blocks & Lists βœ… βœ… βœ… βœ… βœ…
Multiline Strings βœ… βœ… βœ… βœ… βœ…
Dedenting βœ… βœ… βœ… βœ… βœ…
Tables βœ… βœ… βœ… βœ… βœ…
Templates βœ… 🚧 🚧 🚧 ❌
Schema Validation 🚧 ❌ ❌ ❌ ❌
CLI Tool βœ… ❌ ❌ ❌ ❌
Language Repository Package/Install Documentation CI Status
Go uplang/go go get github.com/uplang/go pkg.go.dev Tests
JavaScript uplang/js npm install @uplang/up TypeDoc Tests
Python uplang/py pip install up-lang ReadTheDocs Tests
Rust uplang/rust cargo add up-lang docs.rs Tests
Java uplang/java Maven/Gradle JavaDoc Tests
C uplang/c make install Doxygen Tests

Contributing

Improving Existing Implementations

Each implementation has its own contribution guidelines. Please see the respective repository for details.

Adding a New Implementation

Want to implement UP in another language? Great! Here’s what you need:

  1. Implement the core parser following the UP specification
  2. Pass the test suite - use examples from examples/
  3. Create comprehensive tests with good coverage
  4. Write clear documentation with examples
  5. Follow language best practices and idioms
  6. Use an open source license (MIT preferred)

Requirements:

Contact us via GitHub Discussions to have your implementation listed here!

Support

For implementation-specific issues, please file issues in the respective repository:

For specification issues or general questions: https://github.com/uplang/spec/issues

License

Each implementation has its own license (typically MIT). See individual repositories for details.