diff --git a/go.mod b/go.mod index 0fa8fc1e..5c7fc3fc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/vimeo/galaxycache -go 1.18 +go 1.20 require ( github.com/golang/protobuf v1.4.3 diff --git a/lru/lru.go b/lru/lru.go index 19e2dea5..259a4679 100644 --- a/lru/lru.go +++ b/lru/lru.go @@ -1,3 +1,5 @@ +//go:build !go1.20 + /* Copyright 2013 Google Inc. diff --git a/lru/lru_go120.go b/lru/lru_go120.go new file mode 100644 index 00000000..24e8554d --- /dev/null +++ b/lru/lru_go120.go @@ -0,0 +1,34 @@ +//go:build go1.20 + +/* +Copyright 2023 Vimeo Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package lru implements an LRU cache. +package lru + +// A Key may be any value that is comparable. See http://golang.org/ref/spec#Comparison_operators +type Key interface{} + +// Cache is an LRU cache. It is not safe for concurrent access. +// This is a compatibility alias for TypedCache[Key,any] +type Cache = TypedCache[Key, any] + +// New creates a new Cache. +// If maxEntries is zero, the cache has no limit and it's assumed +// that eviction is done by the caller. +func New(maxEntries int) *Cache { + return TypedNew[Key, any](maxEntries) +}