Migration Guide: cancer to ferro
This guide documents the upgrade path from cancer to ferro (v2.0).
Overview
The framework has been renamed from "cancer" to "ferro" for crates.io publication. The API remains identical - only package names and imports have changed.
Migration Steps
1. Update Cargo.toml Dependencies
Replace all cancer dependencies with their ferro equivalents:
# Before
[dependencies]
cancer = "1.0"
cancer-events = "1.0"
cancer-queue = "1.0"
cancer-notifications = "1.0"
cancer-broadcast = "1.0"
cancer-storage = "1.0"
cancer-cache = "1.0"
# After
[dependencies]
ferro = "2.0"
ferro-events = "2.0"
ferro-queue = "2.0"
ferro-notifications = "2.0"
ferro-broadcast = "2.0"
ferro-storage = "2.0"
ferro-cache = "2.0"
2. Update Rust Imports
Replace cancer with ferro in all import statements:
#![allow(unused)] fn main() { // Before use cancer::prelude::*; use cancer_events::Event; use cancer_queue::Job; // After use ferro::prelude::*; use ferro_events::Event; use ferro_queue::Job; }
Use find-and-replace across your project:
use cancer::touse ferro::use cancer_touse ferro_cancer::toferro::(in type paths)
3. Update CLI Commands
The CLI binary has been renamed:
# Before
cancer serve
cancer make:model User
cancer migrate
# After
ferro serve
ferro make:model User
ferro migrate
Update any scripts, CI configurations, or documentation that reference the CLI.
4. Update MCP Server Configuration
If using the MCP server for IDE integration:
// Before
{
"mcpServers": {
"cancer-mcp": {
"command": "cancer-mcp",
"args": ["serve"]
}
}
}
// After
{
"mcpServers": {
"ferro-mcp": {
"command": "ferro-mcp",
"args": ["serve"]
}
}
}
5. Update Environment Variables (Optional)
If you have custom environment variable prefixes, consider updating them for consistency:
# Optional - these still work but consider updating
CANCER_APP_KEY=... -> FERRO_APP_KEY=...
Breaking Changes
None. The v2.0 release contains only naming changes. All APIs, behaviors, and features remain identical to v1.x.
Verification
After migration, verify your setup:
# Check CLI installation
ferro --version
# Run tests
cargo test
# Start development server
ferro serve
Gradual Migration
For large projects, you can migrate gradually using Cargo aliases:
[dependencies]
# Temporary: use new crate with old import name
cancer = { package = "ferro", version = "2.0" }
This allows keeping existing imports while transitioning. Remove the alias once all code is updated.