hack

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2021 License: Apache-2.0 Imports: 2 Imported by: 8

Documentation

Overview

Package hack gives you some efficient functionality at the cost of breaking some Go rules.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DisableProtoBufRandomness added in v0.11.0

func DisableProtoBufRandomness()

DisableProtoBufRandomness disables the random insertion of whitespace characters when serializing Protocol Buffers in textual form (both when serializing to JSON or to ProtoText)

Since the introduction of the APIv2 for Protocol Buffers, the default serializers in the package insert random whitespace characters that don't change the meaning of the serialized code but make byte-wise comparison impossible. The rationale behind this decision is as follows:

"The ProtoBuf authors believe that golden tests are Wrong"

Fine. Unfortunately, Vitess makes extensive use of golden tests through its test suite, which expect byte-wise comparison to be stable between test runs. Using the new version of the package would require us to rewrite hundreds of tests, or alternatively, we could disable the randomness and call it a day. The method required to disable the randomness is not public, but that won't stop us because we're good at computers.

Tracking issue: https://github.com/golang/protobuf/issues/1121

func RuntimeMemhash added in v0.10.0

func RuntimeMemhash(b []byte, seed uint64) uint64

RuntimeMemhash provides access to the Go runtime's default hash function for arbitrary bytes. This is an optimal hash function which takes an input seed and is potentially implemented in hardware for most architectures. This is the same hash function that the language's `map` uses.

func RuntimeStrhash added in v0.10.0

func RuntimeStrhash(str string, seed uint64) uint64

RuntimeStrhash provides access to the Go runtime's default hash function for strings. This is an optimal hash function which takes an input seed and is potentially implemented in hardware for most architectures. This is the same hash function that the language's `map` uses.

func String

func String(b []byte) (s string)

String force casts a []byte to a string. USE AT YOUR OWN RISK

func StringPointer

func StringPointer(s string) unsafe.Pointer

StringPointer returns &s[0], which is not allowed in go

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL