Release v2.0.0: Complete Architecture Overhaul, PageFTL Integration, and Unified CLI#2
Merged
Conversation
- 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 newopennandlabnamespace, enforcing strict separation of concerns between logical translation (FTL), hardware execution (NAND Device), and optimization algorithms.Key Breaking Changes
3D-NAND-Flash-Storage-Optimization-TooltoOpenNANDLab.SimulatorConfigmodels for type-safe validation.scripts/,resources/,src/utils/, andsrc/ui/folders have been deprecated and safely removed.docs/folder has been flattened, standardized, and augmented with new design documents (FTL_DESIGN.md,DATA_FLOW.md).Major Features & Additions
PageFTLutilizing a flat-array L2P mapping table, significantly reducing memory overhead.GreedyGCandCostBenefitGCpolicies, actively tracking and reclaimingINVALIDpages during background write buffer flushes.click-powered CLI (opennandlab run,benchmark,characterize) and an interactive Streamlitdashboard.Critical Bug Fixes
NANDController.write_page(), guaranteeing that ECC encoding, optional scrambling, and physical write instructions are accurately executed.read_pagewhen the page-level compression flag is set.Testing & Stability
opennandlabAPI.Hypothesis.toxmatrix for Python 3.10, 3.11, 3.12, and 3.13.