twitter/algebird
60.4
Adequate · 27 September 2026
19.5k
lines of production code
Scala
primary language
4
measurements over time
What this system is
Features
Add bijection support for Algebird algebraic types
A new \AlgebirdBijections\ module was added to provide implicit conversions between Algebird's algebraic types (Semigroup, Monoid, Group, and Ring) and their corresponding bijection-wrapped counterparts. This allows users to leverage bijection capabilities on these algebraic structures, enabling seamless conversion and manipulation of these types within the bijection framework.
algebird-bijection/src/main · high confidence
Add generic algebraic instances for Shapeless HLists
The algebird-generic module now provides algebraic typeclass instances for Shapeless HLists, enabling users to perform semigroup, monoid, group, and ring operations on heterogeneous lists. This includes new implementations for ordering and equivalence checks, as well as summing capabilities for HLists, allowing algebraic operations to be lifted to generic representations of case classes.
algebird-generic · high confidence
Add macro for generating ScalaCheck Arbitrary instances for case classes
A new macro, \ArbitraryCaseClassMacro\, has been added to the \algebird-test\ module. This macro automatically generates \Arbitrary\ instances for case classes using ScalaCheck, allowing for easier property-based testing of case class structures. The implementation includes helper methods \caseClassGen\ and \caseClassArbitrary\ that reflect on the type to generate appropriate generators.
algebird-test/src/main/scala/com/twitter/algebird/macros · high confidence
Add project governance, contributing, and license files
The repository now includes standard governance and contribution documentation. A new \COMMITTERS.md\ file lists active and emeritus committers, while \CONTRIBUTING.md\ provides guidelines for pull requests, testing, and documentation. The \LICENSE\ file establishes the Apache 2.0 license terms, and \NOTICE\ credits the Apache Software Foundation for the MurmurHash implementation. Additionally, \.gitignore\ and \.jvmopts\ files are added to manage build artifacts and JVM options, and \README.md\ is expanded with badges, usage examples, and project information.
(repo-wide) · high confidence
Added JMH benchmarks for Algebird data structures
Added a suite of JMH micro-benchmarks for various Algebird components, including QTree, Moments, Bloom Filters, Count-Min Sketch, HyperLogLog, and Tuple4 operations. These new benchmark files provide performance measurements for core library functionality.
algebird-benchmark/src · high confidence
Added ScalaCheck generators for Algebird data structures
New ScalaCheck Arbitrary and Gen instances have been added for Algebird types, including ExpHist, Interval, NonEmptyVector, PosNum, and others. This enables automatic generation of test data for these structures in property-based tests.
algebird-test/src/main/scala/com/twitter/algebird/scalacheck · high confidence
Added asynchronous computation support with new Monoid implementations
Added new Scala files introducing \TunnelMonoid\ and \PromiseLinkMonoid\ to support asynchronous computation patterns, allowing code to depend on the results of async operations. Additionally, \UtilAlgebras\ provides implicit Monad instances for \Future\ and \Try\, along with Applicative Semigroups and Monoids for these types, enabling functional programming abstractions over asynchronous and partial result types.
algebird-util/src/main/scala/com/twitter/algebird/util · high confidence
Added scripts to generate product and tuple algebraic structure classes
Two new Ruby scripts, \ntuple\_generators.rb\ and \product\_generators.rb\, have been added to the \scripts\ directory. These scripts automatically generate Scala code for product and tuple algebraic structures (semigroups, monoids, groups, and rings) up to size 22. Running the scripts produces \GeneratedAbstractAlgebra.scala\ and \GeneratedProductAlgebra.scala\ respectively, providing users with pre-generated implementations for common algebraic operations on tuples and products.
scripts · high confidence
Java API and Scala 2.13/2.12 compatibility layers for Algebird core
Added Java API classes (Monoids, Semigroups, MethodRegistry) to allow Java code to easily access Algebird's algebraic structures. Additionally, introduced Scala 2.12 and 2.13 specific compatibility files (compat.scala, MacroCompat.scala, etc.) to handle library differences between Scala versions, ensuring the core library functions correctly across both versions.
algebird-core/src/main · high confidence
New AlgebirdRDD enrichment for Spark
A new \AlgebirdRDD\ class and \ToAlgebird\ implicit conversion are added to the \algebird-spark\ module, enabling users to call Algebird aggregators (such as \aggregate\, \aggregateOption\, \sum\, and \sumByKey\) directly on Spark RDDs. This provides a convenient API for performing distributed algebraic computations on Spark data structures.
algebird-spark/src/main · high confidence
New asynchronous aggregation utilities for high-throughput data processing
The \algebird-util\ module now includes a suite of asynchronous summer implementations (\AsyncListSum\, \AsyncMapSum\, \AsyncListMMapSum\, \SyncSummingQueue\, and \HeavyHittersCachingSummer\) that enable non-blocking, concurrent accumulation of key-value pairs. These components provide configurable buffer sizes, memory-based and timeout-based flush conditions, and optional heavy-hitters tracking to optimize memory usage and processing speed for streaming workloads.
algebird-util/src/main/scala/com/twitter/algebird/util/summer · high confidence
Behavioural changes
Build system updated to sbt 1.9.9 with modernized plugin versions
The project's build configuration has been updated to use sbt version 1.9.9, as specified in the new project/build.properties file. Additionally, the project/plugins.sbt file has been created to explicitly define the versions of various sbt plugins, including sbt-microsites (1.4.4), sbt-unidoc (0.5.0), sbt-scalafmt (2.5.2), sbt-mima-plugin (1.1.3), sbt-scoverage (2.0.10), sbt-jmh (0.4.7), sbt-scalafix (0.11.1), and sbt-ci-release (1.5.12). A new code generator, GenTupleAggregators.scala, has been added to the project directory, which is responsible for generating tuple and map aggregator implementations.
project · high confidence
Test coverage
Add compilation test for algebraic type resolution; Added Java API tests for Semigroups and Monoids; Added compilation test for AlgebirdRDD API; Added empty test scaffold for AlgebirdBijectionLaws; Added property-based tests for Future and Try algebraic structures; Added property-based tests for async and sync summer implementations; Added property-based tests for case class macro-generated algebraic structures; Added unit tests for Gaussian distribution and statistics monoids; Adds property-based tests for algebraic structures and utility classes; Expanded test coverage for algebraic structures and aggregators.
Dependencies
Updated build dependencies and Scala versions
The build configuration has been updated with newer versions of several libraries, including Scala 2.12.18, ScalaTest 3.2.18, ScalaCheck 1.15.2, JUnit 4.13.2, and Spark 2.4.8. The project now supports Scala 2.11, 2.12, and 2.13, with specific compiler flags and source directory structures configured for each version.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 39 → 60 (+21.0)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 93 (-5.0)
- Architecture 69 → 99 (+30.2)
- Maturity 50 → 48 (-2.5)
- Readiness 30 → 77 (+46.5)
- Security 31 → 58 (+27.1)
Resolved (28)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (5 lines × 2) (algebird-core/src/main/java/com/twitter/algebird/CassandraMurmurHash.java)
- Duplicated block (7 lines × 2) (algebird-core/src/main/java/com/twitter/algebird/CassandraMurmurHash.java)
- Duplicated block (7 lines × 3) (algebird-core/src/main/java/com/twitter/algebird/CassandraMurmurHash.java)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 8 more
New (96)
- BitSet.compact (cognitive 22) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- BloomFilterMonoid.sumOption (cognitive 18) (algebird-core/src/main/scala/com/twitter/algebird/BloomFilter.scala)
- Branch.& (cognitive 26) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.-- (cognitive 55) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.-- (cyclomatic 20) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.^ (cognitive 29) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.intersects (cognitive 18) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.| (cognitive 21) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Branch.|= (cognitive 18) (algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala)
- Documentation: no architecture or design documentation (docs/src/main/mdoc/datatypes/first_and_last.md)
- Documentation: no architecture or design documentation (docs/src/main/mdoc/datatypes/min_plus_algebra.md)
- Documentation: no architecture or design documentation (docs/src/main/mdoc/datatypes/reset_state.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- Dormant codebase
- Duplicated block (10 lines × 2) (algebird-core/src/main/scala/com/twitter/algebird/BloomFilter.scala)
- Duplicated block (10–11 lines × 2) (algebird-core/src/main/scala/com/twitter/algebird/BloomFilter.scala)
- Duplicated block (21 lines × 2) (algebird-core/src/main/scala/com/twitter/algebird/BloomFilter.scala)
- Duplicated block (22 lines × 2) (algebird-core/src/main/scala/com/twitter/algebird/macros/Cuber.scala)
- Duplicated block (29–30 lines × 2) (algebird-core/src/main/scala/com/twitter/algebird/BloomFilter.scala)
- …and 76 more
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- repository
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
twitter/algebird was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 464917d6a3f2b1c9f2048e3dd38df5dd97edc965 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.