Skip to content

Generic "slices" Functions not working - prevents use of OTEL in Traefik middleware #1704

@markdingram

Description

@markdingram

The following program sample.go triggers an unexpected result

package main

import (
	"fmt"
	"slices"
)

func main() {
	s := []string{"Bat", "Fox", "Owl", "Fox"}
	slices.Sort(s)
	fmt.Println(s)
}

// Output:
// [Bat Fox Fox Owl]

Expected result

$ go run _test/slices.go
[Bat Fox Fox Owl]

Got

$ yaegi _test/slices.go 
run: 16:19: undefined selector: slices.Sort

# After editing stdlib/generic/go1_22_generic.go 

$ yaegi _test/slices.go 
run: 16:19: undefined type for E

Go version

1.22.12

Yaegi Version

d93266d

Additional Notes

First seen while trying to use OTEL from inside a Traefik middleware:

2025-08-11T21:32:24Z ERR Command error error="command traefik error: plugin: failed to create plugin builder: failed to create Yaegi interpreter: failed to import plugin code \"trace-middleware\": 1:21: import \"trace-middleware\" error: plugins-local/src/trace-middleware/trace.go:7:2: import \"go.opentelemetry.io/otel/trace\" error: plugins-local/src/trace-middleware/vendor/go.opentelemetry.io/otel/trace/config.go:9:2: import \"go.opentelelemetry.io/otel/attribute\" error: plugins-local/src/trace-middleware/vendor/go.opentelemetry.io/otel/attribute/set.go:212:2: undefined selector: slices.SortStableFunc"

Failing test added to markdingram@0731b81

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions