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
3 changes: 3 additions & 0 deletions doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package core exposes basic building blocks
// to work with json and yaml documents, such
// as json schemas and OpenAPI specifications.
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package benchmarks hosts comparative benchmarks for the json building blocks.
//
// It is a separate Go module so that the heavy external dependencies pulled in
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package comparative

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/doc.go
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package comparative contains various benchmarks of our suite of JSON & YAML lexers.
package comparative
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/easyjson/walk.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package easyjson drives mailru/easyjson's jlexer over a whole JSON document as
// a generic recursive walk, so it can be benchmarked as a comparison point for
// the default-lexer (both are pull-style, []byte-only lexers; easyjson is the
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/iterator_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package comparative

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/jsontext/walk.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package jsontext drives the go-json-experiment (encoding/json/v2) jsontext
// tokenizer over a whole JSON document, so it can be benchmarked as a comparison
// point for the default-lexer.
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/profile_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package comparative

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/stdlib/lexer.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package stdlib provides a baseline [lexers.Lexer] implemented on top of the
// standard library encoding/json tokenizer (v1).
//
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/comparative/stdlib/lexer_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package stdlib

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/lanes/azure_lanes_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lane

// Azure-lanes benchmark: a single payload (the merged go-openapi/azure OpenAPI spec)
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/lanes/lexers_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lane

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/lanes/modes_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lane

// Compass benchmark (§10.5): a FAIR matrix of every way to drive the two lexers,
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/lanes/utf8scratch_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lane

// SCRATCH (utf-8 validation prototype): measures the cost of the three prototype
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/lanes/walkers.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package lane prepares a benchmark on a single workload, but many execution paths (lanes)
// for our lexer.
//
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/profile/alloc_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package profile

import (
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/lexers/profile/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package profile explores the lexer
// with profiling, tracing, examples and benchmark comparisons.
package profile
3 changes: 3 additions & 0 deletions json/benchmarks/writers/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package writers compares the throughput and allocations of the in-repo
// default-writer implementations (unbuffered, buffered, YAML) against
// mailru/easyjson's jwriter, the writer our design is inspired from.
Expand Down
3 changes: 3 additions & 0 deletions json/benchmarks/writers/writers_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package writers

import (
Expand Down
3 changes: 3 additions & 0 deletions json/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package json exposes an infrastructure
// to work with JSON documents.
package json
3 changes: 3 additions & 0 deletions json/expressions/pointer.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package expressions

import (
Expand Down
3 changes: 3 additions & 0 deletions json/internal/append_writer.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package internal

import (
Expand Down
3 changes: 3 additions & 0 deletions json/internal/pools.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package internal

import (
Expand Down
44 changes: 44 additions & 0 deletions json/internal/utf8x/_asm/asm.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//nolint:revive,mnd
package main

import (
"bytes"
"flag"
"log"
"os"

"github.com/mmcloughlin/avo/attr"
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
Expand All @@ -11,6 +19,42 @@ func main() {
validateUTF8()

Generate()
prependLicense()
}

// licenseHeader is the SPDX header every source file in this repository carries.
const licenseHeader = "// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers\n" +
"// SPDX-License-Identifier: Apache-2.0\n\n"

// prependLicense adds [licenseHeader] to the assembly file avo has just written.
//
// avo emits only its own "Code generated by command:" warning, and printer.Config offers no hook
// for extra header lines, so a header added to the .s by hand is lost on the next go generate.
// Adding it here keeps it. The output path comes from avo's own -out flag, parsed by Generate.
func prependLicense() {
out := flag.Lookup("out")
if out == nil {
return
}

name := out.Value.String()
if name == "" || name == "-" {
return
}

body, err := os.ReadFile(name)
if err != nil {
log.Fatalf("reading %s: %v", name, err)
}

if bytes.HasPrefix(body, []byte(licenseHeader)) {
return
}

//nolint:gosec // name is avo's own -out path, fixed by the go:generate directive in this repo
if err := os.WriteFile(name, append([]byte(licenseHeader), body...), 0o600); err != nil {
log.Fatalf("writing %s: %v", name, err)
}
}

// table16 emits a 16-byte read-only lookup table for VPSHUFB.
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/_asm/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package _asm is a generator-only module for the AVX2 UTF-8 validation kernel.
//
// It isolates the avo build-time dependency: only `go generate` (see ../validate_amd64.go) runs it, and the generated
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package utf8x

import (
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/cpuid_amd64.s
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

#include "textflag.h"

// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/detect_amd64.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//go:build amd64

package utf8x
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/utf8x.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package utf8x holds the UTF-8 validation and sanitization primitives shared by the JSON lexers and writers.
//
// It lives under json/internal (rather than under a lexer- or writer-private internal package) because it is the only
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/utf8x_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package utf8x

import (
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/validate_amd64.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//go:build amd64

package utf8x
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/validate_amd64.s
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Code generated by command: go run asm.go -out ../validate_amd64.s. DO NOT EDIT.

#include "textflag.h"
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/validate_amd64_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//go:build amd64

package utf8x
Expand Down
3 changes: 3 additions & 0 deletions json/internal/utf8x/validate_noasm.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//go:build !amd64

package utf8x
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/conformance_lineendings_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

import (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/conformance_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

import (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/constants.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

const (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/core.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

//go:generate go run ./internal/lexgen
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/core_pull_buffer.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//nolint:dupl // these functions are duplicated by codegen to monomorphize (aka devirt).
package lexer

Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/core_pull_stream.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//nolint:dupl // these functions are duplicated by codegen to monomorphize (aka devirt).
package lexer

Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/core_push_buffer.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//nolint:dupl // these functions are duplicated by codegen to monomorphize (aka devirt).
package lexer

Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/core_push_stream.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

//nolint:dupl // these functions are duplicated by codegen to monomorphize (aka devirt).
package lexer

Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/devirt_bench_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

import (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/devirt_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

import (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/doc.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

// Package lexer provides a JSON lexer.
//
// The lexer splits a JSON input stream or a slice of bytes into tokens [token.T] (or [token.VT] for verbatim support).
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/eof_reader.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

import "io"
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/fuzz_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package lexer

// Fuzz harness for the two lexers (L semantic, VL verbatim).
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/internal/input/boolean.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package input

import (
Expand Down
3 changes: 3 additions & 0 deletions json/lexers/default-lexer/internal/input/constants.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0

package input

// Byte constants of the JSON grammar consulted by the value scanners.
Expand Down
Loading
Loading