Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
+++
title = "Protocol Buffers"
title = "Protobuf"
weight = 5
toc_hide = "true"
description = "Protocol Buffers are language-neutral, platform-neutral extensible mechanisms for serializing structured data."
description = "Protobuf is a language-neutral, platform-neutral extensible mechanism for serializing structured data."
type = "docs"
no_list = "true"
+++

## What Are Protocol Buffers?
## What Is Protobuf?

Protocol buffers are Google's language-neutral, platform-neutral, extensible
mechanism for serializing structured data – think XML, but smaller, faster, and
simpler. You define how you want your data to be structured once, then you can
use special generated source code to easily write and read your structured data
to and from a variety of data streams and using a variety of languages.
Protobuf ("Protocol Buffers") is Google's language-neutral, platform-neutral,
extensible mechanism for serializing structured data – think XML, but smaller,
faster, and simpler. You define how you want your data to be structured once,
then you can use special generated source code to easily write and read your
structured data to and from a variety of data streams and using a variety of
languages.

## Pick Your Favorite Language

Protocol buffers support generated code in C++, C#, Dart, Go, Java,
Kotlin,
Objective-C, Python, Rust, and Ruby. With proto3, you can also work with PHP.
Protobuf supports generated code in C++, C#, Dart, Go,
Java, Kotlin, Objective-C, Python, Rust, and Ruby. With proto3,
you can also work with PHP.

## Example Implementation

Expand Down Expand Up @@ -67,7 +68,7 @@ email = john.email();

<li>
<a href="https://github.com/protocolbuffers/protobuf#protobuf-compiler-installation">Download
and install</a> the protocol buffer compiler.
and install</a> the Protobuf compiler.
</li>

<li>
Expand Down
2 changes: 1 addition & 1 deletion content/best-practices/1-1-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ for when to diverge from the guideline.

## Symbol Visibility in Edition 2024 and Later {#2024-later}

Starting in `edition = "2024"`, Protocol Buffers introduces
Starting in `edition = "2024"`, Protobuf introduces
[Symbol Visibility](/programming-guides/symbol_visibility)
with `export` and `local` keywords
and the `features.default_symbol_visibility` option.
Expand Down
14 changes: 7 additions & 7 deletions content/best-practices/dos-donts.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Proto Best Practices"
weight = 90
description = "Shares vetted best practices for authoring Protocol Buffers."
description = "Shares vetted best practices for authoring Protobuf schemas."
type = "docs"
aliases = "/programming-guides/dos-donts"
+++
Expand Down Expand Up @@ -71,7 +71,7 @@ To safely remove the original name (if it's being used for interchange, which it

Almost never change the type of a field; it'll mess up deserialization, same as
re-using a tag number. The
[protobuf docs](/programming-guides/editions#updating)
[Protobuf docs](/programming-guides/editions#updating)
outline cases where old binary encoded data may successfully parse under a
different type (for example, going between `int32`, `uint32`, `int64` and
`bool`). However, changing a field's type can be difficult to roll out safely
Expand Down Expand Up @@ -191,9 +191,9 @@ when a perfectly suitable common type already exists!
is a color in the RGBA color space.

**Note:** While the "Well-Known Types" (such as `Duration` and `Timestamp`) are
included with the Protocol Buffers compiler, the "Common Types" (such as `Date`
and `Money`) are not. To use the Common Types, you may need to add a dependency
on the [googleapis repository](https://github.com/googleapis/googleapis).
included with the Protobuf compiler, the "Common Types" (such as `Date` and
`Money`) are not. To use the Common Types, you may need to add a dependency on
the [googleapis repository](https://github.com/googleapis/googleapis).

<a id="do-define-widely-used-message-types-in-separate-files"></a>

Expand Down Expand Up @@ -279,7 +279,7 @@ For example:

Text-based serialization formats like text format and
JSON represent fields and enum values as strings. As a result, deserialization
of protocol buffers in these formats using old code will fail when a field or
of Protobuf messages in these formats using old code will fail when a field or
enum value is renamed, or when a new field or enum value or extension is added.
Use binary serialization when possible for data interchange, and use text format
for human editing and debugging only.
Expand Down Expand Up @@ -341,7 +341,7 @@ overrides are possible.
## Avoid Using Language Keywords for Field Names {#avoid-keywords}

If the name of a message, field, enum, or enum value is a keyword in the
language that reads from/writes to that field, then protobuf may change the
language that reads from/writes to that field, then Protobuf may change the
field name, and may have different ways to access them than normal fields. For
example, see
[this warning about Python](/reference/python/python-generated#keyword-conflicts).
Expand Down
6 changes: 3 additions & 3 deletions content/downloads.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
+++
title = "Downloads"
weight = 1000
description = "The downloads page for protocol buffers."
description = "The downloads page for Protobuf."
type = "docs"
+++

## Release Packages

### Latest Version

The latest release of Protocol Buffers can be found on the
The latest release of Protobuf can be found on the
[release page](https://github.com/protocolbuffers/protobuf/releases/latest).

### Old Versions
Expand All @@ -21,5 +21,5 @@ Older versions are available in our historical releases

### GitHub Repository

Protocol Buffers source code is hosted on
Protobuf source code is hosted on
[GitHub](https://github.com/protocolbuffers/protobuf).
10 changes: 5 additions & 5 deletions content/editions/features.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Feature Settings for Editions"
weight = 43
description = "Protobuf Editions features and how they affect protobuf behavior."
description = "Protobuf Editions features and how they affect Protobuf behavior."
type = "docs"
+++

Expand Down Expand Up @@ -388,7 +388,7 @@ enum Foo {
### `features.field_presence` {#field_presence}

This feature sets the behavior for tracking field presence, or the notion of
whether a protobuf field has a value.
whether a Protobuf field has a value.

**Values available:**

Expand Down Expand Up @@ -754,10 +754,10 @@ sections show these imports.

**Languages:** Go

The `api_level` feature enables you to select which API version the Go protobuf
The `api_level` feature enables you to select which API version the Go Protobuf
plugin should generate code for. The Opaque API is the latest version of the
Protocol Buffers implementation for the Go programming language. The previous
version is now called Open Struct API. See the
Protobuf implementation for the Go programming language. The previous version is
now called Open Struct API. See the
[Go Protobuf: Releasing the Opaque API](https://go.dev/blog/protobuf-opaque)
blog post for an introduction.

Expand Down
14 changes: 7 additions & 7 deletions content/editions/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ type = "docs"
+++

Protobuf Editions replace the proto2 and proto3 designations that we have used
for Protocol Buffers. Instead of adding `syntax = "proto2"` or `syntax =
"proto3"` at the top of proto definition files, you use an edition number, such
as `edition = "2024"`, to specify the default behaviors your file will have.
Editions enable the language to evolve incrementally over time.
for Protobuf. Instead of adding `syntax = "proto2"` or `syntax = "proto3"` at
the top of proto definition files, you use an edition number, such as `edition =
"2024"`, to specify the default behaviors your file will have. Editions enable
the language to evolve incrementally over time.

Instead of the hardcoded behaviors that older versions have had, editions
represent a collection of [features](/editions/features)
with a default value (behavior) per feature. Features are options on a file,
message, field, enum, and so on, that specify the behavior of protoc, the code
generators, and protobuf runtimes. You can explicitly override a behavior at
generators, and Protobuf runtimes. You can explicitly override a behavior at
those different levels (file, message, field, ...) when your needs don't match
the default behavior for the edition you've selected. You can also override your
overrides. The [section later in this topic on lexical scoping](#scoping) goes
Expand All @@ -40,7 +40,7 @@ it. For example:

3. A later edition, such as edition 2033, switches the default of
`feature.amazing_new_feature` from `false` to `true`. This is the desired
behavior for all protos, and the reason that the protobuf team created the
behavior for all protos, and the reason that the Protobuf team created the
feature.

Using the Prototiller tool to migrate earlier versions of proto files to
Expand Down Expand Up @@ -413,7 +413,7 @@ proto_library(
```

Option imports and `option_deps` are strongly recommended when importing
protobuf language features and other custom options to avoid generating
Protobuf language features and other custom options to avoid generating
unnecessary code.

This replaces `import weak`, which was removed in Edition 2024.
Expand Down
8 changes: 4 additions & 4 deletions content/getting-started/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
+++
title = "Tutorials"
weight = 200
description = "Each tutorial in this section shows you how to implement a simple application using protocol buffers in your favourite language, introducing you to the language's protocol buffer API as well as showing you the basics of creating and using .proto files."
description = "Each tutorial in this section shows you how to implement a simple application using Protobuf in your favourite language, introducing you to the language's Protobuf API as well as showing you the basics of creating and using .proto files."
type = "docs"
+++

The complete sample code for each application is also provided.

The tutorials don't assume that you know anything about protocol buffers, but do
assume that you are comfortable writing code in your chosen language, including
using file I/O.
The tutorials don't assume that you know anything about Protobuf, but do assume
that you are comfortable writing code in your chosen language, including using
file I/O.
Loading
Loading