Finally: A Language Specification for Protocol Buffers

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • Protobuf

    Protocol Buffers - Google's data interchange format

  • It's been 15 years since I wrote this so I don't remember exactly, but I think it's just an implementation quirk. See:

    https://github.com/protocolbuffers/protobuf/blob/main/src/go...

    The parser consumes a "-", then consumes a number. The number can be any 64-bit integer. It is then converted to a double. Finally, if a "-" was seen earlier, it is negated. So by accident, it ends up allowing the range of a 65-bit signed integer.

  • buf

    The best way of working with Protocol Buffers.

  • We keep an eye on the protobuf repo, so if a change is made we can both incorporate it into our products (https://buf.build) and into this spec.

    A great outcome for the ecosystem would be that Google chooses to engage with the community before making language changes. And the best possible outcome would be that the authority is eventually inverted: a specification doc becomes the definitive source of truth on the language and `protoc` is updated to conform to it, instead of vice versa.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • wireshark

  • intellij-protobuf-editor

    Discontinued Protocol Buffers for IntelliJ-based IDEs

  • This seems like a great resource. Kudos.

    > But most of them are based on the incomplete specs from Google's developer site. None of them can correctly predict what source files protoc will actually accept or reject 100% of the time.

    I'd like to think I got pretty close with the plugin that now ships with IntelliJ. It even supports the 65-bit integer literal [1] that protoc happens to support for proto2-style float and double default values.

    With this as a starting point, it'd be nice to fix some of the pecularities that arise from "implementation as spec", such as that literal value, and the fact that colon optionality in text format is based on value type, not syntax.

    1: https://github.com/jvolkman/intellij-protobuf-editor/blob/6e...

  • This is a similar situation to Ruby and Rubinius (an alternative implementation of Ruby). Because there was no Ruby specification other than the original MRI implementation, the Rubinius project (a new alternative implementation) created their own test suite to codify expected Ruby behavior. However, the MRI developers didn't use it, and the behavior diverged.

    The original creator gave up on the idea [0] but it was immediately taken over by others and is still maintained [1]. In case of conflict, though, Matz (lead developer on MRI), not the specification, is the source of truth [2].

    [0] https://github.com/rubinius/rubinius-website-archive/blob/87...

  • spec

    The Ruby Spec Suite aka ruby/spec (by ruby)

  • protobuf-grammar

    This repository contains grammars for parsing Protocol Buffers's .proto files

  • bufdev brought up some good concerns on that issue:

    > This as a community project defeats the purpose of creating a definitive grammar/spec that protocolbuffers/protobuf holds itself to - without that component, having a community-written spec is no improvement over the current situation from what I can see, and in fact could create even more fragmentation and confusion, just my two cents.

    It looks like the protobuf team created a repo intended for this (https://github.com/protocolbuffers/protobuf-grammar), perhaps the spec could be contributed there, including a review/blessing from the official team.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Using graphQL+gRPC+Golang to Create a Bike Rental Microservices, with persistence on ArangoDB.

    4 projects | dev.to | 2 Jun 2022
  • Introduction to Protocol Buffers

    3 projects | dev.to | 25 Oct 2021
  • GRPC WITH MICRONAUT

    4 projects | /r/u_sybrenbolandit | 9 Sep 2021
  • Building a gRPC Server with NestJS and Buf: A Comprehensive Showcase

    1 project | dev.to | 6 May 2024
  • Hitting every branch on the way down

    4 projects | news.ycombinator.com | 29 Apr 2024