Giter VIP home page Giter VIP logo

binc's People

Contributors

kolyshkin avatar ugorji avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

binc's Issues

Speed up - use little endian format as default encoding

Binc uses BigEndian format for encoding Integers, which is ok.
However, majority of CPUs (Intel, AMD, ARM) are inherently Little Endian.
If that is the case, why do conversion from Big Endian to Little endian and vice-versa, at the wire protocol.

Make Little Endian as the default encoding format for Integers.
Will that be a pragmatic approach ?

Even other emerging formats Capnproto (Google Protobuf successor) adopts LittleEndianness, precisely for the above reasons.

LittleEndianness will definitely speedup both encoding/decoding significantly.
Befor BINC is widely adopted, I think you may still consider changing it to Little Endianness.

working on binary object notation (bon)

I saw this beautifully constructed representation, and it is probably the best out there.

However, there are still some improvements to make in my opinion:

  1. special value should not have zero for both float and int. One is enough.
  2. symbol seems to be a compressor's task.
  3. single byte for 1-16 is unneeded.
  4. timestamp could be improved by indicating UTC only. other timezone can infer from this value.
  5. overflow issue: for map and array, it could be over 2^64-1 in length.

big.Int support?

I'm curious about support for Golang big.Int in binc.

I was happy to see support for long integers discussed early in the SPEC for binc. At the beginning of the spec it says there is support for

arbitrarily large precision negative and positive integers; Uses up to 2^64-1 bytes to represent integer value (for bignums, etc)

However, at the end, there is this w.r.t. to the Go implementation

For example, the Go library lists the following unsupported features:

integer values beyond 64 bit integers

Could you elaborate on whether big.Int numbers are supported at present? How difficult would it be to add big.Int encoding and decoding?

Thank you!

Jason

special value for NA to represent "missing data"

From data analysis and statistics, it is common to need to be able to represent that a particular piece of data is missing, or 'Not Available'. This is commonly abbreviated NA.

'Not Available' or NA or "Missing" is really a distinct notion, statistically, from Null and NaN.

Since R was built for data analysis, it has the NA special value built in. I believe R uses one of the multiple NaN values to represent this, but this is just convention.

I very much like that Binc has special values already for +/- Infinity, for NaN, and for Null.

It would be lovely to have the specification also choose a well-defined special value for NA or "NotAvailable".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.