101 dépôts
Fundamental data structures and their implementations.
Explore 101 awesome GitHub repositories matching part of an awesome list · Data Structures. Refine with filters or upvote what's useful.
Protocol Buffers est un mécanisme neutre vis-à-vis du langage et indépendant de la plateforme pour sérialiser des données structurées. Il fournit une chaîne d'outils pilotée par schéma qui compile des définitions de données déclaratives en code source typé, permettant une communication cohérente et des contrats d'API fortement typés entre des services écrits dans différents langages de programmation. Le projet se distingue par un format binaire très efficace qui utilise un encodage basé sur des balises et une compression d'entiers à largeur variable pour minimiser la taille de la charge utile et la surcharge de traitement. Il prend en charge une gestion robuste des schémas évolutifs, permettant aux développeurs de mettre à jour les structures de données de manière incrémentale tout en maintenant la compatibilité ascendante et descendante. Ceci est soutenu par un système d'édition versionné qui gère les ensembles de fonctionnalités et la logique de sérialisation à travers les composants logiciels distribués. Au-delà de sa sérialisation binaire de base, le projet inclut des capacités pour la conversion JSON canonique avec validation de schéma, un contrôle granulaire de la visibilité des symboles et le suivi de la présence des champs pour distinguer les valeurs par défaut des valeurs non définies. Il fournit également des optimisations spécialisées, telles que la gestion de la mémoire basée sur des arènes pour les implémentations C++, afin d'améliorer les performances lors de la création et du nettoyage d'arbres de messages complexes.
Standardized data interchange format for structured data.
This project is a collection of portable, header-only C functions designed for integration into software projects without complex build dependencies or external linking requirements. It provides a suite of low-level utilities for graphics, audio, and data management, focusing on direct memory manipulation and zero-dependency portability. By utilizing a single-header distribution model, the library simplifies dependency management while allowing developers to maintain full control over memory allocation and binary size through compile-time configuration. The library distinguishes itself by off
Typesafe dynamic arrays and hash tables.
This is a persistent data structure library for JavaScript that provides collections which prevent the direct mutation of objects and arrays. It serves as an immutable state management tool and functional programming utility, ensuring that data remains unchanged after creation to simplify change detection and state tracking. The library enables the maintenance of application state by producing new versions of data structures during updates. It focuses on efficient data comparison by checking actual content instead of memory references and supports a functional programming workflow to prevent
Immutable data collections for JavaScript.
This project is a computer science educational resource and a library of common data structures and algorithms implemented in Swift. It serves as a practical reference for studying complexity and efficiency through solved algorithmic problems and conceptual guides. The collection includes implementations of linear and hierarchical data structures, such as stacks, queues, linked lists, and trees. It covers a wide range of computational patterns, including graph and pathfinding implementations, mathematical numerical methods, and data compression techniques. The project also provides implement
Educational algorithms and data structures.
ConcurrentQueue is a header-only C++ template library that provides a lock-free data structure for multi-producer multi-consumer thread communication. It functions as a synchronization primitive designed to coordinate data flow between concurrent execution units using atomic operations rather than traditional mutex locking. The library distinguishes itself through a design that minimizes contention and synchronization overhead. It utilizes sub-queue token mapping to distribute workloads across partitioned internal queues and supports bulk operations to transfer multiple data elements in singl
Lock-free multi-producer multi-consumer queue.
Awesome Emacs is a curated directory of community-driven resources, packages, and configurations designed to extend the functionality of the Emacs text editor. It serves as a comprehensive index for users seeking to transform their editor into a specialized development environment or a highly personalized productivity workspace. The collection highlights tools that enable deep customization of the Emacs experience, ranging from ergonomic key binding schemes and visual interface themes to advanced window management and navigation utilities. It provides a centralized reference for discovering e
Provides fundamental data structures for managing text, metadata, and buffer properties within the editor.
go-datastructures is a collection of thread-safe and lock-free data structures designed for high-performance concurrent applications in Go. It provides a modular library of specialized algorithmic toolsets, including a lock-free collection library and an immutable data structure library. The project distinguishes itself through a suite of persistent AVL trees and hash array mapped tries that use branch-copying to preserve previous versions. It also implements non-blocking hash maps, queues, and tries that enable linearizable snapshots and concurrent updates without the use of mutual exclusion
Collection of data structures.
uthash est une bibliothèque de structures de données basée sur des macros pour C, offrant des implémentations header-only de tables de hachage, listes chaînées, piles et tableaux dynamiques. Elle permet des recherches par clé et un stockage de données organisé sans nécessiter l'édition de liens avec des bibliothèques externes. La bibliothèque utilise le chaînage intrusif pour intégrer des métadonnées directement dans les structures définies par l'utilisateur via des macros. Cette approche permet l'extension de structures in-place, autorisant l'ajout de champs de hachage et de liaison aux structs existantes sans allocations mémoire séparées pour les nœuds conteneurs. Le projet couvre également la gestion spécialisée de la mémoire et des flux de données, incluant des buffers circulaires à taille fixe pour les flux de données continus et des buffers de chaînes avec allocation mémoire automatique. Ces utilitaires facilitent la manipulation de données dans des environnements aux ressources limitées et des systèmes embarqués.
Generic hash and list structures.
Ce projet est une bibliothèque de théorie des ensembles pour Go qui fournit une structure de données pour stocker des éléments uniques de tout type comparable en utilisant des génériques. Elle sert d'outil pour gérer des collections uniques et effectuer des opérations mathématiques telles que les intersections et les différences. La bibliothèque fournit des collections synchronisées pour éviter les courses aux données lors d'opérations de lecture et d'écriture simultanées. Elle prend également en charge la conversion de collections uniques vers et depuis des tableaux JSON pour la persistance des données et la transmission réseau. L'implémentation couvre le test d'appartenance, le clonage de collection et le calcul de taille. Elle inclut des utilitaires pour vérifier l'égalité des ensembles et exporter des collections uniques dans des listes triées. Les capacités supplémentaires incluent l'itération basée sur les canaux pour le traitement séquentiel des éléments.
Set collection implementation.
Cette bibliothèque de concurrence Java fournit une suite d'outils pour gérer l'exécution multi-thread, la synchronisation et la cohérence de la mémoire. Elle sert de framework complet pour implémenter l'exécution concurrente via des atomiques sans verrou, des collections thread-safe, des primitives de coordination de tâches et des pools de travailleurs. Le projet inclut une boîte à outils de synchronisation de threads dédiée comprenant des verrous, des barrières et des sémaphores pour coordonner le timing et l'ordre des tâches concurrentes. Il fournit également une suite de collections concurrentes de maps, files d'attente et listes qui permettent le partage de données sans verrouillage manuel, ainsi qu'un framework d'opérations atomiques pour les mises à jour sans verrouillage des types de base et des références. La bibliothèque couvre de vastes domaines de capacité, incluant la gestion de pool de threads pour optimiser l'utilisation des ressources, l'analyse du modèle de mémoire pour assurer la visibilité des données et divers mécanismes de gestion de verrouillage pour prévenir les conditions de course. Ces outils soutiennent collectivement le développement d'applications multi-thread qui maintiennent des transitions d'état cohérentes à travers la mémoire partagée.
Concurrent data structures and thread-safe implementations.
Wire is a cross-platform code generator and implementation of gRPC and Protocol Buffers. It transforms schema definitions into type-safe native language bindings for Kotlin, Swift, and Java to ensure consistent data exchange and communication between distributed systems. The project provides specialized tools for protocol buffer schema management, including the ability to prune unused types and filter fields by version to reduce final binary sizes. It also handles namespace management and allows for the creation of custom schema handlers to execute user-defined logic during the compilation ph
Lightweight protocol buffer implementation.
Dollar est une bibliothèque de programmation fonctionnelle pour Swift qui fournit une boîte à outils complète pour la manipulation de collections, le traitement de chaînes, les calculs mathématiques et la gestion des dates et heures. Elle sert de suite d'utilitaires pour filtrer, agréger et restructurer des tableaux et des dictionnaires. Le projet implémente des modèles de programmation fonctionnelle tels que le currying, la mémoïsation et la composition de fonctions. Il dispose également d'une interface de wrapper chaînable qui permet d'appliquer plusieurs transformations de données séquentiellement avant d'extraire un résultat final. La bibliothèque couvre un large éventail de domaines de capacités, incluant l'assainissement de texte et la conversion de casse, les opérations d'expressions régulières et le calcul de valeurs mathématiques comme les factorielles et les diviseurs. Elle inclut également des outils pour analyser les timestamps Unix et calculer des décalages temporels relatifs. La boîte à outils étend les types de la bibliothèque standard Swift avec des méthodes génériques pour la transformation et l'agrégation de données.
Functional tool-belt for Swift collections.
Il s'agit d'une implémentation de structure de données B-Tree en mémoire pour Go. Elle fournit une collection résidente en mémoire qui maintient des éléments triés pour permettre une récupération, une modification et une gestion efficaces des cartes clé-valeur triées. Le projet prend en charge les collections mutables ordonnées et les magasins clé-valeur triés, permettant des recherches, insertions et suppressions rapides tout en préservant l'ordre de tri des clés. Il fournit des capacités de recherche par plage au sein de structures en mémoire triées et maintient l'organisation des jeux de données grâce au fractionnement de nœuds auto-équilibré et à la recherche binaire récursive.
B-Tree implementation.
RoaringBitmap is a compressed integer set library designed for memory-efficient storage and high-speed in-memory analytics. It provides a professional implementation of the Roaring Bitmap format to maintain compact representations of integer collections. The project features a standardized binary serialization format that enables the exchange of compressed bitmap data across different programming languages and hardware architectures. This allows for consistent data portability and cross-language data exchange. The library performs rapid logical set operations, including intersections, unions
High-performance compressed bitmap implementation.
💻 A fast and flexible O(n) difference algorithm framework for Swift collection.
Fast O(n) difference algorithm for collections.
Simple Binary Encoding (SBE) - High Performance Message Codec
Low-latency binary message encoding format.
ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript
Persistent data structures for JavaScript.
A family of header-only, very fast and memory-friendly hashmap and btree containers.
Memory-efficient and fast hash maps and B-trees.
Roaring bitmaps in Go (golang), used by InfluxDB, Bleve, DataDog
Compressed bitmap implementation.
Postmodern immutable and persistent data structures for C++ — value semantics at scale
Immutable and persistent data structures.