# OptimizR v1.0.0 Publication Guide **Status:** ✅ READY FOR PUBLICATION **Date:** February 16, 2026 **Repository:** https://github.com/ThotDjehuty/optimiz-r **Tag:** v1.0.0 --- ## ✅ Completed Preparation ### 1. Fixed Cargo.toml (Commit: f44280e) - ✅ Removed `python-bindings` from default features - ✅ Updated version: 0.3.0 → 1.0.0 - ✅ Updated authors: HFThot Research Lab - ✅ Updated repository URL: https://github.com/ThotDjehuty/optimiz-r ### 2. Fixed pyproject.toml (Commit: f44280e, a3117fe) - ✅ Updated version: 0.3.0 → 1.0.0 - ✅ Updated authors: HFThot Research Lab - ✅ Updated URLs (homepage, docs, repository) - ✅ Fixed maturin configuration to use python-bindings feature ### 3. Updated README.md (Commit: f44280e) - ✅ Version badge: 0.3.0 → 1.0.0 - ✅ What's New section updated for v1.0.0 - ✅ Citation author updated - ✅ Contact information updated ### 4. Added .gitignore (Commit: 0dfb9b8) - ✅ Excluded wheels/ directory from git ### 5. Created RELEASE_NOTES_v1.0.0.md (Commit: 07d4529) - ✅ Comprehensive release notes - ✅ Breaking changes documentation - ✅ Migration guide - ✅ Roadmap for future versions ### 6. Build Verification - ✅ `cargo publish --dry-run` - SUCCESS - ✅ `maturin build --release --features python-bindings` - SUCCESS - ✅ Wheel built: `optimizr-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl` ### 7. Git Tag & Push - ✅ Created tag: v1.0.0 - ✅ Pushed to GitHub: main branch + v1.0.0 tag --- ## 📋 Next Steps: Actual Publication ### Step 1: Set Up crates.io Account 1. **Create Account** (if not already done) - Visit: https://crates.io/ - Sign in with GitHub account 2. **Generate API Token** - Go to: https://crates.io/settings/tokens - Create new token: "OptimizR v1.0.0 Publication" - Copy the token (you won't see it again) 3. **Configure Credentials** ```bash cargo login ``` This creates `~/.cargo/credentials` with your token ### Step 2: Publish to crates.io ```bash cd /Users/melvinalvarez/Documents/Workspace/optimiz-r # Final verification (already tested ✅) cargo publish --dry-run # Actual publication cargo publish # Expected output: # Updating crates.io index # Packaging optimizr v1.0.0 (/Users/.../optimiz-r) # Uploading optimizr v1.0.0 # Published optimizr v1.0.0 ``` **Verification:** - Visit: https://crates.io/crates/optimiz-rs - Should show v1.0.0 within a few minutes --- ### Step 3: Set Up PyPI Account 1. **Create PyPI Account** (if not already done) - Visit: https://pypi.org/account/register/ - Verify email 2. **Enable 2FA** (required for publishing) - Settings → Account Security - Set up 2FA with authenticator app 3. **Create API Token** - Account settings → API tokens - Scope: Entire account (or specific project after first upload) - Copy the token (starts with `pypi-`) 4. **Configure Credentials** ```bash # Create ~/.pypirc cat > ~/.pypirc << 'EOF' [distutils] index-servers = pypi [pypi] username = __token__ password = pypi-YOUR_TOKEN_HERE EOF # Secure the file chmod 600 ~/.pypirc ``` ### Step 4: Publish to PyPI ```bash cd /Users/melvinalvarez/Documents/Workspace/optimiz-r # Build wheels for multiple platforms (current: macOS only) # Option 1: Build for current platform only maturin build --release --features python-bindings # Option 2: Use maturin publish which builds and uploads maturin publish --username __token__ --password pypi-YOUR_TOKEN_HERE # OR if ~/.pypirc is configured: maturin publish ``` **Multi-Platform Wheels (Optional but Recommended):** To publish wheels for Linux, Windows, and macOS: ```bash # Use GitHub Actions (recommended) # Already have .github/workflows/ci.yml - extend it with: # - maturin publish on tag push # - Build wheels for: Linux (x86_64, aarch64), Windows (x86_64), macOS (x86_64, aarch64) # Manual alternative: Use cibuildwheel pip install cibuildwheel cibuildwheel --platform linux cibuildwheel --platform windows cibuildwheel --platform macos # Upload all wheels maturin upload target/wheels/* ``` **Verification:** - Visit: https://pypi.org/project/optimizr/ - Should show v1.0.0 within a few minutes - Test installation: ```bash pip install optimizr==1.0.0 python -c "import optimizr; print(optimizr.__version__)" ``` --- ## 🔄 GitHub Actions Automation (Recommended) To automate future releases, update `.github/workflows/ci.yml`: ```yaml name: Release on: push: tags: - 'v*' jobs: publish-crates: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Publish to crates.io env: CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }} run: cargo publish --token $CARGO_REGISTRY_TOKEN publish-pypi: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install maturin run: pip install maturin - name: Build wheels run: maturin build --release --features python-bindings - name: Publish to PyPI env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} run: maturin publish --username __token__ --password $MATURIN_PYPI_TOKEN ``` **Setup Secrets:** 1. GitHub repo → Settings → Secrets and variables → Actions 2. Add secrets: - `CRATES_TOKEN`: Your crates.io API token - `PYPI_TOKEN`: Your PyPI API token (starts with `pypi-`) --- ## 📊 Post-Publication Checklist ### Immediate (After Publishing) - [ ] **Verify crates.io**: https://crates.io/crates/optimiz-rs/1.0.0 - [ ] **Verify PyPI**: https://pypi.org/project/optimizr/1.0.0 - [ ] **Test Rust installation**: ```bash cargo new test-optimiz-rs cd test-optimiz-rs cargo add optimiz-rs cargo build ``` - [ ] **Test Python installation**: ```bash python -m venv test-env source test-env/bin/activate pip install optimizr==1.0.0 python -c "import optimizr; print(optimizr.__version__)" ``` ### Documentation Updates - [ ] **Update OPEN_SOURCE_STRATEGY.md**: ```markdown #### 2. **Optimiz-R** - Portfolio Optimization Engine - **Current Status:** ✅ v1.0.0 published (crates.io + PyPI) - **Repository:** https://github.com/ThotDjehuty/optimiz-r - **Documentation:** https://optimiz-r.readthedocs.io - **Installation:** `cargo add optimiz-rs` or `pip install optimiz-rs` ``` - [ ] **Create GitHub Release**: - Go to: https://github.com/ThotDjehuty/optimiz-r/releases/new - Tag: v1.0.0 - Title: "OptimizR v1.0.0 - First Stable Release" - Description: Copy from RELEASE_NOTES_v1.0.0.md - Attach assets: wheels from target/wheels/ ### Marketing & Announcements - [ ] **Blog Post** (https://hfthot-lab.eu): ```markdown Title: "OptimizR v1.0.0: High-Performance Optimization in Rust" Sections: 1. What is OptimizR? 2. Performance benchmarks (50-100× speedup) 3. Key features & algorithms 4. Getting started (Rust & Python) 5. Why open source? 6. Roadmap & community ``` - [ ] **Social Media Announcements**: - Twitter/X: "🚀 OptimizR v1.0.0 is live! High-performance optimization algorithms in Rust with Python bindings. 50-100× faster than pure Python. MIT licensed. #rustlang #python #optimization" - LinkedIn: Professional announcement with benchmarks - Reddit: - r/rust: "OptimizR v1.0.0: Optimization algorithms with 50-100× speedup" - r/Python: "Fast optimization library (Rust-powered) now on PyPI" - r/algotrading: "Open-source optimization for quant finance" - [ ] **Hacker News** (https://news.ycombinator.com/submit): ``` Title: "OptimizR v1.0.0 – High-Performance Optimization Algorithms in Rust" URL: https://github.com/ThotDjehuty/optimiz-r ``` - [ ] **Dev.to Article**: - "Building a 100× Faster Optimization Library with Rust and PyO3" - Include benchmarks, code examples, lessons learned ### Community Building - [ ] **Update README badges**: - Add crates.io badge: `[![Crates.io](https://img.shields.io/crates/v/optimiz-rs.svg)](https://crates.io/crates/optimiz-rs)` - Add PyPI badge: `[![PyPI](https://img.shields.io/pypi/v/optimizr.svg)](https://pypi.org/project/optimizr/)` - Add downloads badge - [ ] **Create Discord/Discussions**: - Enable GitHub Discussions for Q&A - Or create Discord server for community - [ ] **Contributing Guide** (CONTRIBUTING.md): - How to contribute - Development setup - Code style guidelines - PR process --- ## 🎯 Success Metrics (Month 1) ### Downloads - **Target crates.io**: 100 downloads - **Target PyPI**: 500 downloads ### Community - **GitHub Stars**: 50+ - **Issues/Questions**: 5-10 - **Contributors**: 2-3 ### Documentation - **ReadTheDocs views**: 1000+ - **Tutorial completions**: 50+ --- ## 🐛 Known Issues & Limitations ### Current Limitations 1. **Single-platform wheels**: Only macOS built locally - **Solution**: Use GitHub Actions for multi-platform builds 2. **Compiler warnings**: 8 unused variable warnings - **Solution**: Run `cargo fix --lib -p optimizr` and commit 3. **Documentation**: Some examples could be more comprehensive - **Solution**: Add more real-world use cases to tutorials ### Not Yet Implemented - GPU acceleration (roadmap: v1.2.0) - Additional DE variants (JADE, SHADE) - roadmap: v1.1.0 - Multi-objective optimization - roadmap: v2.0.0 --- ## 📞 Support If publication issues occur: **Crates.io Issues:** - Check: https://crates.io/policies - Email: help@crates.io - Docs: https://doc.rust-lang.org/cargo/reference/publishing.html **PyPI Issues:** - Check: https://pypi.org/help/ - Docs: https://packaging.python.org/tutorials/packaging-projects/ - Forum: https://discuss.python.org/c/packaging/14 **General:** - Email: contact@hfthot-lab.eu - GitHub Issues: https://github.com/ThotDjehuty/optimiz-r/issues --- ## ✅ Summary **OptimizR v1.0.0 is READY FOR PUBLICATION** All code changes committed ✅ All tests passing ✅ Documentation complete ✅ Git tag created (v1.0.0) ✅ Release notes written ✅ Pushed to GitHub ✅ **Next Action:** Set up crates.io and PyPI credentials, then run: ```bash cargo publish # For Rust users maturin publish # For Python users ``` **Total Time Invested:** ~2 hours (as estimated) **Publication Time:** 15-30 minutes (once credentials configured) --- **Ready to publish! 🚀**