# Nushell 0.108.0 Documentation Summary This directory contains comprehensive documentation for Nushell 0.108.0 breaking changes, new features, and migration guides. ## Files in This Documentation Set ### 1. NUSHELL_0.108.0_CHANGES.md **Comprehensive markdown documentation** covering all changes in Nushell 0.108.0. **Contents:** - Complete breaking changes with migration guides - All new features and enhancements - Experimental features (pipefail, enforce-runtime-annotations, reorder-cell-paths) - Plugin API changes and CustomValue improvements - Command changes (renamed, removed, added, modified) - Behavior changes and bug fixes - Build system changes - Best practices and recommendations **Use this file for:** - Human-readable reference documentation - Migration planning - Understanding impact of changes - Learning new features ### 2. nushell_0.108.0_changes.nu **Structured Nushell data file** with all changes in programmatic format. **Contents:** - Complete structured record with all version 0.108.0 data - Helper functions to access specific data: - `get-changes` - Get complete dataset - `get-breaking-changes` - Get all breaking changes - `get-high-impact-changes` - Filter high impact changes only - `get-new-features` - Get new features list - `get-experimental-features` - Get experimental features - `get-plugin-api-changes` - Get plugin API changes - `get-command-changes` - Get command changes - `get-recommendations` - Get best practices - `search-changes [keyword]` - Search all changes by keyword - `generate-migration-report` - Generate formatted migration report **Use this file for:** - Automated analysis of changes - Programmatic migration tools - Custom reporting - Integration with CI/CD pipelines **Example usage:** ```nushell # Load the module use nushell_0.108.0_changes.nu * # Get all breaking changes get-breaking-changes # Get only high impact changes get-high-impact-changes # Search for specific changes search-changes "into value" # Generate migration report generate-migration-report # Access specific data let changes = get-changes $changes.version $changes.experimental_features ``` ## Quick Reference ### Breaking Changes Summary 1. **`into value` → `detect type`** (HIGH IMPACT) - Type detection command renamed - `into value` now converts custom plugin values - Migration: Use `update cells {detect type}` for table cells 2. **Stream Error Collection** (HIGH IMPACT) - Collecting streams with errors now raises errors - Migration: Wrap in try-catch blocks 3. **`format bits` Endian** (MEDIUM IMPACT) - New `--endian` flag required - Migration: Specify endian explicitly 4. **Polars Changes** (MEDIUM IMPACT) - `polars fetch` removed - `polars pivot` requires `--stable` flag 5. **Windows Paths** (LOW IMPACT, Windows only) - UNC paths no longer get trailing backslash - Device paths now work with open/save/source 6. **Network Feature Flag** (LOW IMPACT, custom builds only) - Must use `--features network` for custom builds 7. **Power Operator** (LOW IMPACT) - Now right-associative (mathematically correct) ### New Features Summary 1. **MCP Server for AI Agents** (Optional, compile with `--features mcp`) 2. **Smarter Completions** (Inline completion lists) 3. **Enhanced CustomValue Support** (Plugin API improvements) 4. **`which` Enhancement** (Lists all commands when called without args) 5. **HTTP Metadata** (Response data as metadata) 6. **Date/Time Specifiers** (`%J` and `%Q` for compact formats) 7. **`metadata set --merge`** (Attach arbitrary metadata) 8. **`each --flatten`** (Better streaming) ### Experimental Features 1. **pipefail** (Opt-in) - Bash-like pipeline error handling 2. **enforce-runtime-annotations** (Opt-in) - Runtime type checking 3. **reorder-cell-paths** (Now opt-out/default) - Performance optimization ### Command Changes at a Glance **Renamed:** - `into value` → `detect type` (type detection) - N/A → `into value` (custom value conversion) **Removed:** - `polars fetch` **Added:** - `detect type` - `into value` (new purpose) **Modified:** - `format bits` - Added `--endian` flag - `polars pivot` - Added `--stable` flag - `which` - Lists all commands without args - `http *` - Metadata attachment - `format date` / `into datetime` - New specifiers - `metadata set` - Added `--merge` - `each` - Added `--flatten` - `compact` - Improved `--empty` - `open` / `save` / `source` - Windows device path support ## Migration Priority ### Immediate Actions Required (HIGH) 1. Replace all `into value` with appropriate command: - For tables: `update cells {detect type}` - For other types: `detect type` - For plugin values: Keep as `into value` 2. Add try-catch around stream collections 3. Update `polars` commands if using polars plugin ### Should Address (MEDIUM) 1. Add `--endian` flag to `format bits` calls 2. Update custom builds to include `--features network` 3. Review chained power operations 4. Test on Windows if applicable ### Nice to Have (LOW) 1. Adopt inline completion syntax 2. Use new date/time format specifiers 3. Enable experimental features for testing 4. Update plugin implementations for CustomValue ## Testing Your Migration ```nushell # 1. Search your codebase for problematic patterns use nushell_0.108.0_changes.nu * # Search for 'into value' usage rg "into value" . --type nu # Search for 'polars fetch' rg "polars fetch" . --type nu # Search for 'format bits' without endian flag rg "format bits" . --type nu | where ($it !~ "--endian") # 2. Run tests with experimental features nu --experimental-options='pipefail,enforce-runtime-annotations' your_tests.nu # 3. Generate migration report generate-migration-report | save migration_report.txt ``` ## Best Practices for 0.108.0 1. **Error Handling**: Always use try-catch for stream collection 2. **Type Safety**: Enable `enforce-runtime-annotations` in production 3. **Completions**: Use inline syntax for static completions 4. **Endian**: Be explicit with `--endian` flag 5. **Testing**: Test with experimental features enabled 6. **Documentation**: Document required version and features 7. **Future-Proofing**: Write code compatible with experimental features ## Resources - **Official Release Notes**: https://www.nushell.sh/blog/2025-10-15-nushell_v0_108_0.html - **GitHub Release**: https://github.com/nushell/nushell/releases/tag/0.108.0 - **Discord Community**: #ai-with-nu (for MCP discussions) - **Issue Tracking**: - Pipefail: #16760 - Reorder Cell Paths: #16766 ## Contributors Special thanks to all 24 contributors who made this release possible: @132ikl, @andoalon, @app/dependabot, @ayax79, @Bahex, @blindFS, @cablehead, @cptpiepmatz, @fdncred, @fixerer, @Jan9103, @maxim-uvarov, @mkatychev, @nome, @sgvictorino, @Sheape, @sholderbach, @simonborje, @Tyarel8, @weirdan, @WindSoilder, @xolra0d, @Xylobyte, @ysthakur ## Documentation Maintenance **Created:** 2025-10-18 **Nushell Version:** 0.108.0 **Previous Version:** 0.107.x **Maintained By:** Nushell Plugins Repository Team --- ## Quick Start Migration Guide For most users, these are the critical changes: 1. **Find and replace:** ```bash # Search for 'into value' rg "into value" . --type nu # Replace based on context: # - Tables: | update cells {detect type} # - Other: | detect type # - Plugins: | into value (no change) ``` 2. **Add error handling:** ```nushell # Before: let data = $stream | collect # After: let data = try { $stream | collect } catch { [] } ``` 3. **Fix polars commands (if using):** ```nushell # Remove: polars fetch (no replacement) # Update: polars pivot → polars pivot --stable ``` 4. **Test your code:** ```bash nu your_script.nu ``` That's it! For most users, these four steps will handle the migration to 0.108.0.