Skip to content

Release v2.0.0: Complete Architecture Overhaul, PageFTL Integration, and Unified CLI#2

Merged
muditbhargava66 merged 7 commits into
mainfrom
v2.0.0-dev
May 20, 2026
Merged

Release v2.0.0: Complete Architecture Overhaul, PageFTL Integration, and Unified CLI#2
muditbhargava66 merged 7 commits into
mainfrom
v2.0.0-dev

Conversation

@muditbhargava66
Copy link
Copy Markdown
Owner

Overview

This PR introduces OpenNANDLab v2.0.0, representing a massive structural overhaul and stabilization of the 3D NAND Flash Storage Optimization Tool. The entire src/ directory has been modularized under the new opennandlab namespace, enforcing strict separation of concerns between logical translation (FTL), hardware execution (NAND Device), and optimization algorithms.

Key Breaking Changes

  • Project Renamed: Officially transitioned from 3D-NAND-Flash-Storage-Optimization-Tool to OpenNANDLab.
  • Configuration Engine: Replaced loose YAML dicts with strict Pydantic SimulatorConfig models for type-safe validation.
  • Directory Flattening: Obsolete scripts/, resources/, src/utils/, and src/ui/ folders have been deprecated and safely removed.
  • Documentation Refactor: The docs/ folder has been flattened, standardized, and augmented with new design documents (FTL_DESIGN.md, DATA_FLOW.md).

Major Features & Additions

  • Flash Translation Layer (FTL): Introduced a high-performance PageFTL utilizing a flat-array L2P mapping table, significantly reducing memory overhead.
  • Garbage Collection (GC): Fully implemented GreedyGC and CostBenefitGC policies, actively tracking and reclaiming INVALID pages during background write buffer flushes.
  • Hardware Telemetry: Added real-time tracking for Write Amplification Factor (WAF), IOPS, and Error Rates.
  • Unified Interfaces: Replaced legacy GUI and standalone scripts with a click-powered CLI (opennandlab run, benchmark, characterize) and an interactive Streamlit dashboard.
  • Endurance Modeling: Implemented Weibull RBER endurance models based on P/E cycles.

Critical Bug Fixes

  • Resolved the placeholder issue in NANDController.write_page(), guaranteeing that ECC encoding, optional scrambling, and physical write instructions are accurately executed.
  • Decompression is now strictly enforced during read_page when the page-level compression flag is set.

Testing & Stability

  • Refactored all Unit and Integration tests to map to the new opennandlab API.
  • Introduced Property-Based testing using Hypothesis.
  • Passed 100% of testing suites across tox matrix for Python 3.10, 3.11, 3.12, and 3.13.

- Transition to pyproject.toml as the primary entry point

- Update tox matrix for Python 3.10 through 3.13

- Add missing dependencies: pydantic, click, streamlit, methodtools
- Flatten docs/design_docs/ directory and capitalize markdown files

- Author FTL_DESIGN, DATA_FLOW, and SCRIPTS_AND_SPECS guides

- Add SECURITY.md threat model and vulnerability reporting

- Refactor README.md for SEO and feature highlights

- Move firmware templates to declarative specs/ folder
- Introduce PageFTL with flat-array L2P mapping for extreme efficiency

- Add GreedyGC and CostBenefitGC garbage collection policies

- Implement Weibull RBER endurance models and error injection

- Replace loose YAML configs with Pydantic SimulatorConfig

- Migrate to a unified Click CLI and Streamlit dashboard
- Introduce Hypothesis property-based testing for ECC and GC

- Fix mock integration and test signatures for the v2.0.0 API

- Guarantee 100% pass rate across tox environments
- Deprecate legacy scripts/ folder (performance, characterization)

- Integrate utilities directly into opennandlab CLI

- Update examples/ to utilize the new opennandlab namespace and config model
- Add structured Issue and Pull Request templates

- Update GitHub Actions workflows for matrix testing and linting
- Delete obsolete src/ui, src/utils, and old namespace directories

- Remove legacy resources/ folder to flatten repository structure
@muditbhargava66 muditbhargava66 self-assigned this May 20, 2026
@muditbhargava66 muditbhargava66 added enhancement New feature or request documentation Improvements or additions to documentation labels May 20, 2026
@muditbhargava66 muditbhargava66 merged commit bf2cde7 into main May 20, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant