396 lines
10 KiB
Markdown
396 lines
10 KiB
Markdown
# 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 <contact@hfthot-lab.eu>
|
|||
|
|
- ✅ 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 <your-crates-io-token>
|
|||
|
|
```
|
|||
|
|
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/optimizr
|
|||
|
|
- 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/optimizr/1.0.0
|
|||
|
|
- [ ] **Verify PyPI**: https://pypi.org/project/optimizr/1.0.0
|
|||
|
|
- [ ] **Test Rust installation**:
|
|||
|
|
```bash
|
|||
|
|
cargo new test-optimizr
|
|||
|
|
cd test-optimizr
|
|||
|
|
cargo add optimizr
|
|||
|
|
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 optimizr` or `pip install optimizr`
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- [ ] **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: `[](https://crates.io/crates/optimizr)`
|
|||
|
|
- Add PyPI badge: `[](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! 🚀**
|