jack-pappas/ExtCore
46.0
Weak · 24 September 2026
38.9k
lines of production code
F#
primary language
5
measurements over time
What this system is
ExtCore is a functional programming utility library for F\# that provides core data structures and utilities. It implements high-performance collections such as IntMap, IntSet, and HashMap, alongside an LRU cache and command-line argument parsing. The system is designed for cross-platform compatibility, supporting multiple .NET Standard and .NET Core versions, and includes comprehensive unit tests and performance benchmarks to ensure correctness and efficiency.
Features
Add .editorconfig for consistent code formatting
An .editorconfig file has been added to the repository to enforce consistent code formatting rules, specifically setting 4-space indentation for F\# source files (.fs, .fsi, .fsl, .fsy) and globally enabling trailing whitespace trimming and final newlines.
(repo-wide) · high confidence
Added command-line argument parsing and LRU cache implementations
Introduced a new ExtCore.Args module for parsing command-line arguments, including an ArgInfo type and ArgParser class that support various argument types (string, int, float, unit, set/clear flags) and display usage text. Additionally, added a new ExtCore.Caching module containing an LruCache implementation with full functionality, including creation, retrieval, and equality comparison, along with corresponding unit tests.
ExtCore · high confidence
Behavioural changes
Enabled automatic NuGet package restore during build
The project now includes NuGet configuration files (NuGet.Config and NuGet.targets) that enable automatic package restoration before building. This ensures that all required packages are downloaded and restored automatically during the build process, eliminating the need for manual package restoration steps.
.nuget · high confidence
Test coverage
Added benchmarks for IntMap and IntSet performance; Expanded unit test coverage for ExtCore collections and caching modules.
Dependencies
Added NuGet package repository configuration
A new file, packages/repositories.config, was added to configure the local package repository path for the ExtCore.Tests project. This change affects how the build system locates and resolves NuGet packages for the test project.
packages · high confidence
ExtCore project files migrated to SDK-style format with multi-targeting support
The ExtCore library and its test/benchmark projects have been converted to the modern SDK-style .fsproj format. ExtCore now targets netstandard1.6, netstandard2.0, and net45, while the test project targets netcoreapp1.1, netcoreapp2.0, and net45. This enables building for multiple .NET platforms and using the SDK's built-in test runner and package management.
(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
Score
- CAI 49 → 46 (-2.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 73 → 70 (-2.5)
- Architecture 100 → 100 (+0.0)
- Maturity 18 → 26 (+7.4)
- Readiness 67 → 67 (+0.0)
- Security 100 → 55 (-45.0)
Resolved (216)
- Dependency hygiene not measured — no packages were read
- Duplicated block (10 lines × 2) (ExtCore/Collections.HashSet.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.LongMap.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.LongMap.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.ResizeArray.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.Vector.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Maybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderMaybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderMaybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderMaybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderMaybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderMaybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderState.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.State.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.State.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.State.fs)
- Duplicated block (10 lines × 4) (ExtCore/ControlCollections.ReaderProtectedState.fs)
- …and 196 more
New (252)
- Documentation: no installation or build instructions (README.rst)
- Documentation: no usage examples (README.rst)
- Duplicated block (10 lines × 2) (ExtCore/Collections.Array.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.IntMap.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.IntMap.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.IntMap.fs)
- Duplicated block (10 lines × 2) (ExtCore/Collections.ResizeArray.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Choice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Choice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Choice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Choice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Maybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.Maybe.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ProtectedState.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 2) (ExtCore/ControlCollections.ReaderChoice.fs)
- Duplicated block (10 lines × 3) (ExtCore/Collections.Array.fs)
- Duplicated block (10 lines × 3) (ExtCore/ControlCollections.ReaderState.fs)
- …and 232 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jack-pappas/ExtCore 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 24 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 86ff5620eee77b972ee3e929b982b189c6fe355d — 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-923689c465cf.