Skip to content

FasterXML/smile-format-specification

Folders and files

Image for: Folders and files
NameName
Last commit message
Last commit date

Latest commit

Image for: Latest commit
 

History

Image for: History
57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image for: Repository files navigation

Smile Data Format

"Smile" is a binary data format that defines a binary equivalent of standard JSON data format (*).

Format was specified in 2010 by Jackson JSON processor development team. First compliant implementation was included as a Jackson backend for Jackson version 1.6, released in September 2010.

(*) with following exceptions

  • Number magnitude and precision are limited by length-indicators: so while for most practical purposes limits are never reached, there are theoretical limits. Specifically, "Big Integers" and "Big Decimals" (matching Java java.math.BigInteger and java.math.BigDecimal) are limited to encoded byte-lengths representable by 32-bit positive integers (about 2 GB).

Specification

Image for: Specification

Design documentation includes:

Community

Image for: Community

Documentation

Image for: Documentation

Implementations

Image for: Implementations

Smile Codecs

  • Clojure
    • Cheshire library offers support via Jackson jackson-dataformat-smile
  • C
    • libsmile is a small C-library for reading and writing Smile data.
  • Go
    • go-smile Smile decoder written in Golang.
  • Java
    • Jackson provides Smile support through jackson-dataformat-smile modules) format codec
      • Full support: including streaming access, data binding and tree model (100% parity with textual JSON)
      • Jackson 2.9 added "non-blocking" ((aka "asynchronous") decoding for JSON and Smile format backends
    • Protostuff project supports Smile both as a low-level data format, and as format used for its RPC implementation
  • Javascript
    • smile-js Smile decoder written in Javascript (only decodes (reads), does not encode (write))
  • Kotlin Multiplatform
  • Python
    • NewSmile Another Smile Format Decoder/Encoder for Python 3
    • PySmile Python codec
  • Rust
    • serde-smile Serde serializer and deserializer written in Rust.

Frameworks, Systems that use Smile codec (encoder and decoder)

  • Elastic Search uses Smile as transport format supports access using Smile encoding.
  • Apache Solr can use Smile as the response format with the wt=smile parameter.

Related Publications

Image for: Related Publications

Here are some external articles, blog posts, research papers that may be of interest:

Releases

Image for: Releases
No releases published

Packages

Image for: Packages 0
No packages published

Contributors 8

Image for: Contributors 8