diff --git a/cmd/cli/kubectl-kyverno/commands/jp/function/command.go b/cmd/cli/kubectl-kyverno/commands/jp/function/command.go
index a19d5366c6..7368e0bdf2 100644
--- a/cmd/cli/kubectl-kyverno/commands/jp/function/command.go
+++ b/cmd/cli/kubectl-kyverno/commands/jp/function/command.go
@@ -1,15 +1,15 @@
 package function
 
 import (
+	"cmp"
 	"fmt"
 	"io"
+	"slices"
 
 	"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/command"
 	"github.com/kyverno/kyverno/pkg/config"
 	"github.com/kyverno/kyverno/pkg/engine/jmespath"
-	datautils "github.com/kyverno/kyverno/pkg/utils/data"
 	"github.com/spf13/cobra"
-	"golang.org/x/exp/slices"
 	"k8s.io/apimachinery/pkg/util/sets"
 )
 
@@ -29,7 +29,7 @@ func Command() *cobra.Command {
 func printFunctions(out io.Writer, names ...string) {
 	functions := jmespath.GetFunctions(config.NewDefaultConfiguration(false))
 	slices.SortFunc(functions, func(a, b jmespath.FunctionEntry) int {
-		return datautils.Compare(a.String(), b.String())
+		return cmp.Compare(a.String(), b.String())
 	})
 	namesSet := sets.New(names...)
 	for _, function := range functions {
diff --git a/cmd/cli/kubectl-kyverno/fix/test.go b/cmd/cli/kubectl-kyverno/fix/test.go
index 9a745b2395..f629fb4f52 100644
--- a/cmd/cli/kubectl-kyverno/fix/test.go
+++ b/cmd/cli/kubectl-kyverno/fix/test.go
@@ -1,12 +1,12 @@
 package fix
 
 import (
+	"cmp"
 	"errors"
 	"fmt"
+	"slices"
 
 	"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/apis/v1alpha1"
-	datautils "github.com/kyverno/kyverno/pkg/utils/data"
-	"golang.org/x/exp/slices"
 	"k8s.io/apimachinery/pkg/util/sets"
 )
 
@@ -83,35 +83,35 @@ func FixTest(test v1alpha1.Test, compress bool) (v1alpha1.Test, []string, error)
 		}
 	}
 	slices.SortFunc(results, func(a, b v1alpha1.TestResult) int {
-		if x := datautils.Compare(a.Policy, b.Policy); x != 0 {
+		if x := cmp.Compare(a.Policy, b.Policy); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.Rule, b.Rule); x != 0 {
+		if x := cmp.Compare(a.Rule, b.Rule); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.Result, b.Result); x != 0 {
+		if x := cmp.Compare(a.Result, b.Result); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.Kind, b.Kind); x != 0 {
+		if x := cmp.Compare(a.Kind, b.Kind); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.PatchedResource, b.PatchedResource); x != 0 {
+		if x := cmp.Compare(a.PatchedResource, b.PatchedResource); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.GeneratedResource, b.GeneratedResource); x != 0 {
+		if x := cmp.Compare(a.GeneratedResource, b.GeneratedResource); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.CloneSourceResource, b.CloneSourceResource); x != 0 {
+		if x := cmp.Compare(a.CloneSourceResource, b.CloneSourceResource); x != 0 {
 			return x
 		}
 		slices.Sort(a.Resources)
 		slices.Sort(b.Resources)
-		if x := datautils.Compare(len(a.Resources), len(b.Resources)); x != 0 {
+		if x := cmp.Compare(len(a.Resources), len(b.Resources)); x != 0 {
 			return x
 		}
 		if len(a.Resources) == len(b.Resources) {
 			for i := range a.Resources {
-				if x := datautils.Compare(a.Resources[i], b.Resources[i]); x != 0 {
+				if x := cmp.Compare(a.Resources[i], b.Resources[i]); x != 0 {
 					return x
 				}
 			}
diff --git a/go.mod b/go.mod
index e996ee5a6f..3b8d3667a8 100644
--- a/go.mod
+++ b/go.mod
@@ -65,7 +65,6 @@ require (
 	go.uber.org/multierr v1.11.0
 	go.uber.org/zap v1.26.0
 	golang.org/x/crypto v0.13.0
-	golang.org/x/exp v0.0.0-20230905200255-921286631fa9
 	golang.org/x/text v0.13.0
 	gomodules.xyz/jsonpatch/v2 v2.4.0
 	google.golang.org/grpc v1.58.1
@@ -376,6 +375,7 @@ require (
 	go.uber.org/atomic v1.11.0 // indirect
 	go4.org/intern v0.0.0-20230525184215-6c62f75575cb // indirect
 	go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect
+	golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
 	golang.org/x/mod v0.12.0 // indirect
 	golang.org/x/net v0.15.0 // indirect
 	golang.org/x/oauth2 v0.12.0 // indirect
diff --git a/pkg/autogen/autogen.go b/pkg/autogen/autogen.go
index 74e3571d1f..a8c09c3e42 100644
--- a/pkg/autogen/autogen.go
+++ b/pkg/autogen/autogen.go
@@ -2,12 +2,12 @@ package autogen
 
 import (
 	"encoding/json"
+	"slices"
 	"strings"
 
 	"github.com/kyverno/kyverno/api/kyverno"
 	kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
 	kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
-	"golang.org/x/exp/slices"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/sets"
 )
diff --git a/pkg/background/generate/generate.go b/pkg/background/generate/generate.go
index 6fb2463451..b1753c8cfe 100644
--- a/pkg/background/generate/generate.go
+++ b/pkg/background/generate/generate.go
@@ -4,6 +4,7 @@ import (
 	"context"
 	"encoding/json"
 	"fmt"
+	"slices"
 	"strings"
 	"time"
 
@@ -27,7 +28,6 @@ import (
 	engineutils "github.com/kyverno/kyverno/pkg/utils/engine"
 	kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
 	"github.com/pkg/errors"
-	"golang.org/x/exp/slices"
 	admissionv1 "k8s.io/api/admission/v1"
 	apierrors "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
diff --git a/pkg/config/metricsconfig.go b/pkg/config/metricsconfig.go
index 862e024a33..5e6360fe8d 100644
--- a/pkg/config/metricsconfig.go
+++ b/pkg/config/metricsconfig.go
@@ -1,10 +1,10 @@
 package config
 
 import (
+	"slices"
 	"sync"
 	"time"
 
-	"golang.org/x/exp/slices"
 	corev1 "k8s.io/api/core/v1"
 )
 
diff --git a/pkg/controllers/report/resource/controller.go b/pkg/controllers/report/resource/controller.go
index 24b7c635f4..dfbb7d893b 100644
--- a/pkg/controllers/report/resource/controller.go
+++ b/pkg/controllers/report/resource/controller.go
@@ -3,6 +3,7 @@ package resource
 import (
 	"context"
 	"errors"
+	"slices"
 	"sync"
 	"time"
 
@@ -16,7 +17,6 @@ import (
 	kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
 	reportutils "github.com/kyverno/kyverno/pkg/utils/report"
 	"github.com/kyverno/kyverno/pkg/validatingadmissionpolicy"
-	"golang.org/x/exp/slices"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
diff --git a/pkg/controllers/validatingadmissionpolicy-generate/translation.go b/pkg/controllers/validatingadmissionpolicy-generate/translation.go
index c994212a50..047823dfcf 100644
--- a/pkg/controllers/validatingadmissionpolicy-generate/translation.go
+++ b/pkg/controllers/validatingadmissionpolicy-generate/translation.go
@@ -2,10 +2,10 @@ package validatingadmissionpolicygenerate
 
 import (
 	"fmt"
+	"slices"
 
 	kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
 	kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
-	"golang.org/x/exp/slices"
 	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
 	"k8s.io/api/admissionregistration/v1alpha1"
 )
diff --git a/pkg/controllers/webhook/utils.go b/pkg/controllers/webhook/utils.go
index e408d23115..c455808105 100644
--- a/pkg/controllers/webhook/utils.go
+++ b/pkg/controllers/webhook/utils.go
@@ -1,12 +1,12 @@
 package webhook
 
 import (
+	"cmp"
+	"slices"
 	"strings"
 
 	"github.com/kyverno/kyverno/api/kyverno"
 	kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
-	datautils "github.com/kyverno/kyverno/pkg/utils/data"
-	"golang.org/x/exp/slices"
 	admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
@@ -46,11 +46,11 @@ func (wh *webhook) buildRulesWithOperations(ops ...admissionregistrationv1.Opera
 		})
 	}
 	less := func(a []string, b []string) (int, bool) {
-		if x := datautils.Compare(len(a), len(b)); x != 0 {
+		if x := cmp.Compare(len(a), len(b)); x != 0 {
 			return x, true
 		}
 		for i := range a {
-			if x := datautils.Compare(a[i], b[i]); x != 0 {
+			if x := cmp.Compare(a[i], b[i]); x != 0 {
 				return x, true
 			}
 		}
diff --git a/pkg/engine/jsonutils/traverse.go b/pkg/engine/jsonutils/traverse.go
index ede2832b59..a66bca50e8 100644
--- a/pkg/engine/jsonutils/traverse.go
+++ b/pkg/engine/jsonutils/traverse.go
@@ -2,11 +2,11 @@ package jsonutils
 
 import (
 	"fmt"
+	"slices"
 	"strconv"
 	"strings"
 
 	datautils "github.com/kyverno/kyverno/pkg/utils/data"
-	"golang.org/x/exp/slices"
 )
 
 // ActionData represents data available for action on current element
diff --git a/pkg/engine/utils/match.go b/pkg/engine/utils/match.go
index d76681a879..230eec99de 100644
--- a/pkg/engine/utils/match.go
+++ b/pkg/engine/utils/match.go
@@ -2,13 +2,13 @@ package utils
 
 import (
 	"fmt"
+	"slices"
 
 	kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
 	kyvernov1beta1 "github.com/kyverno/kyverno/api/kyverno/v1beta1"
 	datautils "github.com/kyverno/kyverno/pkg/utils/data"
 	matchutils "github.com/kyverno/kyverno/pkg/utils/match"
 	"github.com/kyverno/kyverno/pkg/utils/wildcard"
-	"golang.org/x/exp/slices"
 	authenticationv1 "k8s.io/api/authentication/v1"
 	rbacv1 "k8s.io/api/rbac/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
diff --git a/pkg/openapi/utils.go b/pkg/openapi/utils.go
index ae3f61a554..bce9a458f2 100644
--- a/pkg/openapi/utils.go
+++ b/pkg/openapi/utils.go
@@ -3,6 +3,7 @@ package openapi
 import (
 	"encoding/json"
 	"fmt"
+	"slices"
 	"strconv"
 	"strings"
 	"sync"
@@ -11,7 +12,6 @@ import (
 	openapiv2 "github.com/google/gnostic-models/openapiv2"
 	"github.com/kyverno/kyverno/data"
 	"github.com/kyverno/kyverno/pkg/logging"
-	"golang.org/x/exp/slices"
 	"gopkg.in/yaml.v3"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
diff --git a/pkg/utils/data/compare.go b/pkg/utils/data/compare.go
deleted file mode 100644
index a02513a49e..0000000000
--- a/pkg/utils/data/compare.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package data
-
-import (
-	"golang.org/x/exp/constraints"
-)
-
-func Compare[T constraints.Ordered](a, b T) int {
-	if a < b {
-		return -1
-	}
-	if a > b {
-		return 1
-	}
-	return 0
-}
diff --git a/pkg/utils/report/results.go b/pkg/utils/report/results.go
index 748f26f726..8725f4a2a4 100644
--- a/pkg/utils/report/results.go
+++ b/pkg/utils/report/results.go
@@ -1,6 +1,8 @@
 package report
 
 import (
+	"cmp"
+	"slices"
 	"sort"
 	"strings"
 	"time"
@@ -11,29 +13,27 @@ import (
 	kyvernov1alpha2 "github.com/kyverno/kyverno/api/kyverno/v1alpha2"
 	policyreportv1alpha2 "github.com/kyverno/kyverno/api/policyreport/v1alpha2"
 	engineapi "github.com/kyverno/kyverno/pkg/engine/api"
-	datautils "github.com/kyverno/kyverno/pkg/utils/data"
-	"golang.org/x/exp/slices"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/client-go/tools/cache"
 )
 
 func SortReportResults(results []policyreportv1alpha2.PolicyReportResult) {
 	slices.SortFunc(results, func(a policyreportv1alpha2.PolicyReportResult, b policyreportv1alpha2.PolicyReportResult) int {
-		if x := datautils.Compare(a.Policy, b.Policy); x != 0 {
+		if x := cmp.Compare(a.Policy, b.Policy); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(a.Rule, b.Rule); x != 0 {
+		if x := cmp.Compare(a.Rule, b.Rule); x != 0 {
 			return x
 		}
-		if x := datautils.Compare(len(a.Resources), len(b.Resources)); x != 0 {
+		if x := cmp.Compare(len(a.Resources), len(b.Resources)); x != 0 {
 			return x
 		}
 		for i := range a.Resources {
-			if x := datautils.Compare(a.Resources[i].UID, b.Resources[i].UID); x != 0 {
+			if x := cmp.Compare(a.Resources[i].UID, b.Resources[i].UID); x != 0 {
 				return x
 			}
 		}
-		return datautils.Compare(a.Timestamp.String(), b.Timestamp.String())
+		return cmp.Compare(a.Timestamp.String(), b.Timestamp.String())
 	})
 }
 
diff --git a/pkg/validation/policy/actions.go b/pkg/validation/policy/actions.go
index 883317535f..44be497304 100644
--- a/pkg/validation/policy/actions.go
+++ b/pkg/validation/policy/actions.go
@@ -3,6 +3,7 @@ package policy
 import (
 	"context"
 	"fmt"
+	"slices"
 
 	kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
 	"github.com/kyverno/kyverno/pkg/clients/dclient"
@@ -10,7 +11,6 @@ import (
 	"github.com/kyverno/kyverno/pkg/policy/generate"
 	"github.com/kyverno/kyverno/pkg/policy/mutate"
 	"github.com/kyverno/kyverno/pkg/policy/validate"
-	"golang.org/x/exp/slices"
 )
 
 // Validation provides methods to validate a rule
diff --git a/pkg/validation/policy/validate.go b/pkg/validation/policy/validate.go
index 44cd533a50..b6c5f1483d 100644
--- a/pkg/validation/policy/validate.go
+++ b/pkg/validation/policy/validate.go
@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"reflect"
 	"regexp"
+	"slices"
 	"sort"
 	"strings"
 
@@ -28,7 +29,6 @@ import (
 	datautils "github.com/kyverno/kyverno/pkg/utils/data"
 	kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
 	"github.com/kyverno/kyverno/pkg/utils/wildcard"
-	"golang.org/x/exp/slices"
 	"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/sets"