{"id":17955641,"url":"https://github.com/smallnest/exp","last_synced_at":"2025-04-07T11:07:20.212Z","repository":{"id":174552276,"uuid":"652399097","full_name":"smallnest/exp","owner":"smallnest","description":"Experimental packages not in std and golang.org/exp","archived":false,"fork":false,"pushed_at":"2024-12-26T05:17:37.000Z","size":306,"stargazers_count":78,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T09:08:32.418Z","etag":null,"topics":["collections","container","generic","generics","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smallnest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-12T01:56:16.000Z","updated_at":"2024-12-26T05:14:18.000Z","dependencies_parsed_at":"2023-12-28T03:23:45.851Z","dependency_job_id":"f9852e13-a761-4af3-9864-871279f38b3c","html_url":"https://github.com/smallnest/exp","commit_stats":null,"previous_names":["smallnest/exp"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Fexp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Fexp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Fexp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Fexp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smallnest","download_url":"https://codeload.github.com/smallnest/exp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640462,"owners_count":20971557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collections","container","generic","generics","go"],"created_at":"2024-10-29T10:31:30.557Z","updated_at":"2025-04-07T11:07:20.196Z","avatar_url":"https://github.com/smallnest.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# exp\n\n![GitHub](https://img.shields.io/github/license/smallnest/exp) ![GitHub Action](https://github.com/smallnest/exp/actions/workflows/action.yaml/badge.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/smallnest/exp)](https://goreportcard.com/report/github.com/smallnest/exp)  [![GoDoc](https://godoc.org/github.com/smallnest/exp?status.png)](http://godoc.org/github.com/smallnest/exp)  \n\n\n\nExperimental packages not in std and golang.org/exp\n\n\n## packages\n\n- **sync**\n  - **generic sync.Map**: modify sync.Map to support generic\n  - **Phaser**: a reusable synchronization barrier, similar in functionality to java.util.concurrent.Phaser\n  - **Notifier**: implement the observer pattern via channel\n  - **Shard**: a sharding data structure with lock-free read and write\n  - **Exchanger**: a synchronization point at which goroutines can pair and swap elements within pairs. Each goroutine presents some object on entry to the exchange method, matches with a partner goroutine, and receives its partner's object on return. An Exchanger may be viewed as a bidirectional form of a channel.\n  - **atomicx**: add C++ 20 atomic wait/notify feature for go std atomic\n    - Pointer[T]\n    - Value\n    - Uintptr\n    - Bool\n    - Int32\n    - Int64\n    - Uint32\n    - Uint64\n  - **Pool**: a generic pool, forked from https://github.com/mkmik/syncpool\n  - **Broadcaster**: a broadcaster to broadcast message to multiple receivers\n\n- **container**\n  - **heap**: generic heap\n  - **binheap**: human friendly generic heap\n  - **list**: generic list\n  - **ring**: generic ring\n  - **skiplist**: generic skiplist based on [mauricegit/skiplist](https://github.com/mauricegit/skiplist)\n  - **set**: discussion at https://github.com/golang/go/discussions/47331\n    - **Set**: generic set\n    - **SortedSet**: generic sorted set \n  - **maps**:\n    - **OrderedMap**: an insert-order map. The main code is forked [wk8/go-ordered-map](https://github.com/wk8/go-ordered-map)\n    - **AccessOrderedMap**: an access-order map.\n    - **BidiMap**: a bidirectional map. \n  - **Tuple**: a collection of generic tuples.\n  - **bits**: a bitset implementation\n\n- **chanx**\n  - **Batch**: batch get from channels efficiently\n\n- **io**\n  - MmapReader: a mmap reader which implements io.Reader, io.ReadAt, io.Closer and can ReadLine\n\n- **db**\n  a group of sql helper functions.\n\n- **stat**\n  - `Hist` provides a Histogram.\n\n- **ebpf**\n  - **AttachUretprobe**: a helper function to add Uretprobe in Go programs to avoid crash\n\n- internal data structure in go std libs\n  - `PoolDequeue`: a lock-free, fixed-size single-producer, multi-consumer queue\n  - `PoolChain`: a lock-free, dynamically-sized single-producer, multi-consumer queue\n\n- mock\n  - `sqlmock`: a simple sql mock\n  - `kafkamock`: kafka mock","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallnest%2Fexp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmallnest%2Fexp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallnest%2Fexp/lists"}