# Nushell 0.108.0 Complete Breaking Changes and Features Documentation **Release Date:** 2025-10-15 **Version:** 0.108.0 **Previous Version:** 0.107.x ## Table of Contents 1. [Breaking Changes](#breaking-changes) 2. [New Features](#new-features) 3. [Experimental Features](#experimental-features) 4. [Plugin API Changes](#plugin-api-changes) 5. [Command Changes](#command-changes) 6. [Behavior Changes](#behavior-changes) 7. [Build System Changes](#build-system-changes) 8. [Bug Fixes](#bug-fixes) 9. [Migration Guide](#migration-guide) 10. [Recommendations for Best Practices](#recommendations-for-best-practices) --- ## Breaking Changes ### 1. Command Rename: `into value` → `detect type` **Category:** command_rename **Impact:** HIGH **Old:** `into value` **New:** `detect type` (for type detection) and `into value` (for custom value conversion) **Description:** Until version 0.107, `into value` tried to detect the types of table cells by converting strings into typed values. This command is now called `detect type`, but it doesn't operate on cells anymore. **Migration Guide:** ```nushell # OLD (0.107) $data | into value # NEW (0.108.0) - for type detection on cells $data | update cells {detect type} # NEW (0.108.0) - for type detection on non-table types $value | detect type # NEW (0.108.0) - for converting custom plugin values to native values $custom_value | into value ``` **Additional Notes:** - `detect type` can now be used on non-table types to try to infer the types - The `into value` name is now used for converting custom values from plugins into native Nushell values --- ### 2. Stream Error Collection Behavior **Category:** behavior_change **Impact:** HIGH **Old:** Collecting a stream with errors would silently include or hide errors **New:** Collecting a stream that contains errors now raises an error itself **Description:** Implemented by @Bahex to fix an issue where some errors hiding inside other commands weren't showing up quite right. This makes error handling more explicit and prevents silent failures. **Migration Guide:** ```nushell # If you were relying on error suppression in stream collection, you now need to: # Option 1: Use try-catch to handle errors explicitly try { $stream | collect } catch { # Handle error } # Option 2: Use error handling flags where available $stream | collect --ignore-errors # If supported by command ``` **Impact:** - Code that was silently ignoring errors in streams will now fail explicitly - Better error visibility but may break existing scripts that relied on silent error handling --- ### 3. `format bits` Endian Behavior **Category:** behavior_change **Impact:** MEDIUM **Old:** `format bits` used native endian (before 0.107), then changed to big endian in 0.107 **New:** Explicit `--endian` flag to choose behavior **Description:** `format bits` used to output in native endian until Nu 0.107.0 changed it to big endian. Now, you can choose the behavior with `--endian`. **Migration Guide:** ```nushell # To get original behavior (before Nu 0.107.0): format bits --endian native # To use big endian (0.107.0 default): format bits --endian big # Or explicitly: format bits --endian little ``` --- ### 4. Polars Plugin Changes **Category:** api_change **Impact:** MEDIUM **Old:** `polars fetch` command available, `polars pivot` stable by default **New:** `polars fetch` removed, `polars pivot` requires `--stable` flag **Description:** - `polars fetch` has been removed due to no longer being supported on LazyFrame - `polars pivot` will no longer perform a stable pivot by default **Migration Guide:** ```nushell # polars fetch - REMOVED # OLD (0.107): $data | polars fetch # NEW (0.108.0): # No direct replacement - functionality removed due to upstream Polars changes # Alternative approaches depend on your use case # polars pivot - requires --stable flag # OLD (0.107): $data | polars pivot # Was stable by default # NEW (0.108.0): $data | polars pivot --stable # Must explicitly request stable pivot ``` --- ### 5. Windows Path Handling **Category:** behavior_change **Impact:** LOW (Windows-only) **Platform:** Windows **Old:** UNC and device paths got trailing `\` appended, device paths didn't work with `open`, `save`, `source` **New:** No trailing backslashes, full device path support **Description:** On Windows, UNC and device paths no longer get a trailing `\` appended when being cast to path, and `open`, `save`, and `source` now work with device paths like `\\.\NUL` or `\\.\CON`, as well as reserved device names like `NUL` and `CON`. **Migration Guide:** ```nushell # Windows device paths now work correctly: open \\.\NUL # Now works source \\.\CON # Now works save \\.\NUL # Now works # Reserved device names work: open NUL # Now works open CON # Now works # UNC paths no longer get trailing backslash: # OLD: \\server\share\ # NEW: \\server\share ``` **Note:** Using full device paths is recommended for clarity. --- ### 6. Network Commands Feature Flag **Category:** build_change **Impact:** LOW (affects custom builds only) **Old:** Network commands included by default **New:** Must explicitly enable with `--features network` when building without defaults **Description:** Nushell can now be compiled without network-related commands. If building manually without default features, you must pass `--features network` to get access to network commands. **Migration Guide:** ```bash # OLD (0.107): cargo build --no-default-features # NEW (0.108.0): cargo build --no-default-features --features network ``` **Affected Commands:** - `http get`, `http post`, `http delete`, etc. - Other network-related commands --- ### 7. Power Operator Associativity Fix **Category:** behavior_change **Impact:** LOW **Old:** `**` operator parsed left-to-right (incorrect) **New:** `**` operator parses right-to-left (mathematically correct) **Description:** The `**` (power) operator now parses as right-associative instead of left-associative, matching standard mathematical behavior. **Migration Guide:** ```nushell # Expression: 2.0 ** 3.0 ** 4.0 # OLD (0.107) - left-associative (WRONG): # (2.0 ** 3.0) ** 4.0 = 8.0 ** 4.0 = 4096 # NEW (0.108.0) - right-associative (CORRECT): # 2.0 ** (3.0 ** 4.0) = 2.0 ** 81.0 = 2.4178516392292583e+24 # If you were relying on the old (incorrect) behavior, use explicit parentheses: (2.0 ** 3.0) ** 4.0 ``` --- ## New Features ### 1. MCP Server for AI Agents **Category:** Optional Feature (Compilation Flag) **Added by:** @ayax79 **Status:** Experimental **Description:** Adds an MCP (Model Context Protocol) server for Nushell, allowing AI agents to run Nushell commands. **How to Enable:** ```bash # Compile Nushell with MCP feature (not included by default): cargo build --features mcp ``` **Usage:** When compiled with the "mcp" feature, the nushell binary can be used as a local (stdio) MCP server, allowing a local AI agent to use MCP to execute native nushell commands and external commands. **Capabilities:** - Execute native Nushell commands via MCP - Execute external commands via MCP - Secure command execution for AI agents **Community:** Join the discussion on Discord in #ai-with-nu channel. --- ### 2. Smarter Completions with Per-Command Completers **Category:** Enhancement **Impact:** User Experience Improvement **Description:** New, simpler way to define completions for command parameters with inline completion lists. **Features:** #### Inline Completion Lists ```nushell # Define completions inline: def go [direction: string@[left up right down]] { $direction } # Use const variables for reusable completions: const directions = [left up right down] def go [direction: string@$directions] { $direction } ``` #### Built-in Command Suggestions Built-in commands that expect a specific set of values now suggest these values automatically. #### File Completions for Redirections File completions have been added for command redirections (`o>>`, `e>`, etc.) #### Directory-Only Completions For commands expecting directory arguments, regular files will no longer be suggested as completions when no directory can be suggested. --- ### 3. Enhanced CustomValue Support **Category:** Plugin API Enhancement **Added by:** @cptpiepmatz **Impact:** Plugin Developers **Description:** CustomValues let plugin authors introduce their own data types without being limited to Nushell's built-in Values. They now behave much closer to regular Values. **New Capabilities:** #### Error Propagation Syntax Support ```nushell # Both syntaxes now work with CustomValues: $custom_value? # Old syntax (try operator) $custom_value! # New syntax (unwrap operator, added in 0.105.0) ``` Plugin authors can now decide exactly how these should behave for their custom types. #### Save Command Integration ```nushell # CustomValues now work with save: $custom_value | save output.dat ``` Plugin authors can define how their custom data should be saved, which is often more complex than for built-in types. #### New `into value` Command ```nushell # Convert custom plugin values to native Nushell values: $custom_value | into value ``` --- ### 4. `which` Command Enhancement **Category:** Command Enhancement **Description:** The `which` command now lists all commands (internal and external) when no argument is passed to it. **Usage:** ```nushell # OLD (0.107): which # Would show help or error # NEW (0.108.0): which # Lists ALL available commands (internal and external) # Still works with specific command: which ls which cargo ``` --- ### 5. Enhanced HTTP Commands **Category:** Command Enhancement **Description:** All http commands now attach response data (previously only accessible with `http * --full`) as metadata to their output streams. **Usage:** ```nushell # Access response metadata without --full flag: let response = http get https://api.example.com/data # Metadata now automatically attached $response | metadata ``` --- ### 6. New Date/Time Format Specifiers **Category:** Command Enhancement **Description:** The `format date` and `into datetime` commands now support two new format specifiers for creating compact, sortable date and time components. **New Specifiers:** - `%J` - Produces compact dates in YYYYMMDD format (e.g., 20250918) - `%Q` - Produces compact times in HHMMSS format (e.g., 131144) **Usage:** ```nushell # Compact date format: date now | format date "%J" # Output: 20251015 # Compact time format: date now | format date "%Q" # Output: 143022 # Combined for sortable timestamp: date now | format date "%J%Q" # Output: 20251015143022 ``` --- ### 7. Metadata Set Merge **Category:** Command Enhancement **Description:** New `--merge` flag for `metadata set` command to attach arbitrary metadata fields. **Usage:** ```nushell # Merge custom metadata: $value | metadata set --merge { custom_field: "value", priority: 1 } ``` --- ### 8. Each Flatten **Category:** Command Enhancement **Description:** New `--flatten` flag for `each` command for better streaming behavior. **Usage:** ```nushell # Flatten nested results while streaming: $data | each --flatten { |item| # Process and return potentially nested data } ``` --- ## Experimental Features ### 1. Pipefail **Status:** Opt-in Experimental **Added by:** @WindSoilder **Tracking Issue:** #16760 **Description:** When enabled, `$env.LAST_EXIT_CODE` will be set to the exit code of the rightmost command in a pipeline that exited with a non-zero status, or zero if all commands succeeded. **How to Enable:** ```bash # Command line: nu --experimental-options='pipefail' # Or in config: $env.config.experimental = { pipefail: true } ``` **Behavior:** **Before enabling pipefail:** ```nushell ^false | echo '' $env.LAST_EXIT_CODE # Returns 0 (incorrect) ``` **After enabling pipefail:** ```nushell ^false | echo '' $env.LAST_EXIT_CODE # Returns 1 (correct) ``` **Enhanced Error Reporting:** When used together with `$env.config.display_errors.exit_code = true`, Nushell will also report which command failed. **Use Cases:** - Shell scripting requiring strict error checking - CI/CD pipelines where any failure should be caught - Bash-like pipeline error handling --- ### 2. Enforce Runtime Annotations **Status:** Opt-in Experimental **Added by:** @mkatychev **Description:** When enabled, Nushell catches errors at runtime when assigning values to type-annotated variables, providing stronger runtime type safety. **How to Enable:** ```bash # Command line: nu --experimental-options='enforce-runtime-annotations' # Or in config: $env.config.experimental = { enforce-runtime-annotations: true } ``` **Behavior:** **Without feature:** ```nushell let x: int = "not a number" # May pass parse time, fail silently at runtime ``` **With feature enabled:** ```nushell let x: int = "not a number" # Throws cant_convert error at runtime ``` **Why Experimental:** This would be a breaking change for scripts where any coercion/conversions previously ignored field constraints for records and tables. **Use Cases:** - Stricter type safety in production scripts - Catching type conversion errors early - More predictable behavior for typed variables --- ### 3. Reorder Cell Paths (Now Enabled by Default) **Status:** Opt-out (Previously opt-in, now default) **Tracking Issue:** #16766 **Description:** Promoted from opt-in to opt-out, so it's now enabled by default. Improves cell-path accesses by reordering how the cell-path should be evaluated without modifying the output. **Performance:** Improves performance by reordering how cell-paths are evaluated, making lookups faster. **How to Disable (if needed):** ```bash # Command line: nu --experimental-options='reorder-cell-paths=false' # Or in config: $env.config.experimental = { reorder-cell-paths: false } ``` **Note:** Originally introduced in Nushell 0.106.0, now default in 0.108.0. --- ## Plugin API Changes ### 1. CustomValue API Enhancements **Impact:** Plugin Developers **Added by:** @cptpiepmatz **Changes:** #### Error Propagation Support ```rust // Plugin authors can now implement both: // - try operator (?) // - unwrap operator (!) impl CustomValue for MyCustomValue { fn follow_path_int(&self, ...) -> Result { // Supports both $value? and $value! syntax } } ``` #### Save Command Integration ```rust impl CustomValue for MyCustomValue { fn to_base_value(&self, span: Span) -> Result { // Define how custom value should be saved // This is called when using `save` command } } ``` #### Into Value Support ```rust // Custom values can now be converted to native values // via the new `into value` command impl CustomValue for MyCustomValue { fn to_base_value(&self, span: Span) -> Result { // Return native Nushell value representation } } ``` **Plugin Developer Notes:** - CustomValues now support all major value operations - Better integration with Nushell's type system - More predictable behavior matching built-in types --- ### 2. Plugin Protocol Stability **Status:** Stable **Version:** 0.108.0 **Notes:** No breaking changes to the plugin protocol in this release. Plugins compiled for 0.107.x should work with 0.108.0. **Recommendation:** While the protocol is stable, rebuilding plugins against 0.108.0 is recommended to take advantage of new CustomValue features. --- ## Command Changes ### Commands Renamed | Old Name | New Name | Purpose | |----------|----------|---------| | `into value` | `detect type` | Type detection from strings | | N/A | `into value` | Convert custom plugin values to native values | ### Commands Removed | Command | Reason | Alternative | |---------|--------|-------------| | `polars fetch` | No longer supported on LazyFrame | Depends on use case - functionality removed upstream | ### Commands Added | Command | Description | Category | |---------|-------------|----------| | `detect type` | Detect and convert string types to typed values | Type Conversion | | `into value` (new purpose) | Convert custom plugin values to native Nushell values | Plugin Integration | ### Commands Modified | Command | Change | Description | |---------|--------|-------------| | `format bits` | Added `--endian` flag | Choose endian behavior (native, big, little) | | `polars pivot` | Added `--stable` flag | Must explicitly request stable pivot | | `which` | No args lists all | Lists all commands when called without arguments | | `http *` | Metadata attachment | Response data attached as metadata without `--full` | | `format date` | New format specifiers | Added `%J` (compact date) and `%Q` (compact time) | | `into datetime` | New format specifiers | Added `%J` (compact date) and `%Q` (compact time) | | `metadata set` | Added `--merge` | Merge arbitrary metadata fields | | `each` | Added `--flatten` | Better streaming behavior for nested data | | `compact` | Improved `--empty` | Now recognizes 0 byte binary values as empty | | `open` | Windows improvement | Now works with device paths (Windows only) | | `save` | Windows improvement | Now works with device paths (Windows only) | | `save` | CustomValue support | Now works with custom plugin values | | `source` | Windows improvement | Now works with device paths (Windows only) | --- ## Behavior Changes ### 1. Error Handling in Try Blocks **Description:** Clean up error handlers when jumping outside of try blocks with break/continue. **Impact:** - Error handlers now properly clean up when using break/continue to exit try blocks - Previously, error handlers would remain active after breaking out - More predictable error handling behavior **Example:** ```nushell # Previously could cause issues: for $item in $items { try { if $condition { break # Now properly cleans up error handler } } catch { # This won't catch errors from outside the try block anymore } } ``` --- ### 2. Break/Continue Outside Loops **Description:** Using break/continue outside loops now raises a compile error. **Impact:** - Catches logical errors at compile time - Previously may have caused runtime errors or unexpected behavior **Example:** ```nushell # This now produces a compile error: break # Error: break used outside of loop # Must be inside a loop: for $i in 1..10 { if $i == 5 { break } # OK } ``` --- ### 3. Error Context Preservation **Description:** Errors inside `each` calls now keep their full context, making it easier to track down what went wrong. **Impact:** - Better error messages - Easier debugging of pipeline errors - Full stack traces preserved **Example:** ```nushell # Better error reporting: [1 2 "three"] | each { |x| $x + 1 } # Error now includes full context of which element failed ``` --- ### 4. Improved Error Messages **Description:** Improved error message is thrown for invalid binary, hexadecimal, and octal strings. **Impact:** - Clearer error messages when parsing number literals fails - Better guidance on correct syntax **Example:** ```nushell # Invalid binary: 0b102 # Better error message explaining invalid binary digit # Invalid hex: 0xGGG # Clearer error about invalid hex characters # Invalid octal: 0o999 # Better error for invalid octal digit ``` --- ## Build System Changes ### 1. Optional Network Commands **Change:** Network commands now optional via feature flag **Impact:** Custom builds can exclude network functionality **Feature Flag:** `network` **Usage:** ```bash # Include network commands (default): cargo build # Exclude network commands: cargo build --no-default-features # Explicitly include network commands: cargo build --no-default-features --features network ``` --- ### 2. Optional MCP Server **Change:** MCP server support via feature flag **Impact:** Can build Nushell with MCP server for AI integration **Feature Flag:** `mcp` **Usage:** ```bash # Include MCP server: cargo build --features mcp # Default build (no MCP): cargo build ``` --- ## Bug Fixes ### Critical Fixes 1. **Try block error handler cleanup** - Fixed: Error handlers not cleaning up when jumping out of try blocks with break/continue - Impact: More predictable error handling behavior 2. **Power operator associativity** - Fixed: `**` operator was left-associative (incorrect) - Impact: Mathematical expressions now compute correctly 3. **Stream error collection** - Fixed: Errors in streams weren't being properly reported - Impact: Errors are now explicitly raised when collecting streams with errors ### Platform-Specific Fixes 1. **Windows UNC and device paths** - Fixed: Trailing backslash on UNC paths - Fixed: Device paths (\\.\NUL, \\.\CON) now work with open, save, source - Impact: Better Windows compatibility ### Command-Specific Fixes 1. **compact --empty recognition** - Fixed: Now recognizes 0 byte binary values as empty - Impact: More consistent empty value handling 2. **Error context in each** - Fixed: Errors inside each calls now preserve full context - Impact: Easier debugging of pipeline errors 3. **Break/Continue compile-time checks** - Fixed: Using break/continue outside loops now caught at compile time - Impact: Better error detection during parsing --- ## Migration Guide ### High Priority Changes (Must Update) #### 1. Replace `into value` with `detect type` **Search for:** ```nushell | into value ``` **Replace with:** ```nushell | update cells {detect type} # For table cell type detection # OR | detect type # For non-table type detection ``` **Automated migration:** ```nushell # Find all uses of `into value`: rg "into value" --type nu # Review each case and update based on context ``` --- #### 2. Update stream error handling **Before:** ```nushell # Silently collected streams with errors let results = $stream | collect ``` **After:** ```nushell # Option 1: Handle errors explicitly let results = try { $stream | collect } catch { # Handle collection errors [] } # Option 2: Filter out errors first (if appropriate) let results = $stream | where ($it | describe) != "error" | collect ``` --- #### 3. Update `format bits` calls **Before:** ```nushell # Relied on default endian behavior $value | format bits ``` **After:** ```nushell # Explicitly specify endian if you need specific behavior: $value | format bits --endian native # Pre-0.107 behavior $value | format bits --endian big # 0.107 default $value | format bits --endian little # Little endian ``` --- ### Medium Priority Changes (Should Update) #### 1. Update `polars` commands **Remove `polars fetch`:** ```nushell # OLD: $data | polars fetch # NEW: # No direct replacement - review your use case # Alternative approaches depend on what you're trying to achieve ``` **Add `--stable` to `polars pivot`:** ```nushell # OLD: $data | polars pivot # Was stable by default # NEW: $data | polars pivot --stable # Must be explicit ``` --- #### 2. Update custom builds without defaults **Before:** ```bash cargo build --no-default-features ``` **After:** ```bash # Include network commands: cargo build --no-default-features --features network ``` --- #### 3. Review power operator usage **Check chained power operations:** ```nushell # This now evaluates differently: 2 ** 3 ** 4 # If you need the old behavior, use parentheses: (2 ** 3) ** 4 # Explicit left-to-right evaluation ``` --- ### Low Priority Changes (Nice to Have) #### 1. Adopt inline completion syntax **Old style:** ```nushell def my-command [direction: string] { # Custom completer function elsewhere } ``` **New style:** ```nushell # Inline completions: def my-command [direction: string@[left up right down]] { $direction } # Or with const: const directions = [left up right down] def my-command [direction: string@$directions] { $direction } ``` --- #### 2. Use new date/time format specifiers **New compact formats:** ```nushell # Sortable date stamps: date now | format date "%J" # 20251015 date now | format date "%Q" # 143022 date now | format date "%J%Q" # 20251015143022 ``` --- #### 3. Simplify HTTP metadata access **Before:** ```nushell # Had to use --full flag: let response = http get $url --full $response.headers ``` **After:** ```nushell # Metadata automatically attached: let response = http get $url $response | metadata # Includes headers and other response data ``` --- ### Testing Your Migration #### 1. Run your test suite ```bash nu your_test_suite.nu ``` #### 2. Check for deprecated patterns ```nushell # Search for problematic patterns: rg "into value" . --type nu rg "polars fetch" . --type nu rg "format bits" . --type nu | where ($it !~ "--endian") ``` #### 3. Test with experimental features ```bash # Test with stricter settings: nu --experimental-options='pipefail,enforce-runtime-annotations' your_script.nu ``` --- ## Recommendations for Best Practices ### 1. Error Handling **Always handle stream errors explicitly:** ```nushell # GOOD: try { $stream | collect } catch { |err| log error $"Failed to collect stream: ($err.msg)" [] } # AVOID: $stream | collect # May fail silently in older code ``` --- ### 2. Type Safety **Use explicit type annotations with runtime checks:** ```nushell # Enable runtime type checking for production: $env.config.experimental = { enforce-runtime-annotations: true } # Use type annotations: def process-data [count: int, name: string] -> list { # Implementation } ``` --- ### 3. Completions **Prefer inline completions for simple cases:** ```nushell # GOOD for static values: def deploy [env: string@[dev staging prod]] { # Implementation } # Use custom completers for dynamic values: def deploy [env: string@get-environments] { # Implementation } def get-environments [] { # Dynamic completion logic } ``` --- ### 4. Platform Compatibility **Windows path handling:** ```nushell # Use full device paths on Windows: if $nu.os-info.name == "windows" { open \\.\NUL # Better than "NUL" } # Handle UNC paths correctly: # Don't assume trailing backslashes ``` --- ### 5. Custom Values in Plugins **Implement full CustomValue support:** ```rust impl CustomValue for MyValue { // Support error propagation: fn follow_path_int(&self, ...) -> Result { ... } // Support save command: fn to_base_value(&self, span: Span) -> Result { ... } // Support into value: // (same as to_base_value) } ``` --- ### 6. Endian Handling **Be explicit about endian when it matters:** ```nushell # For binary data interchange, always specify: $data | format bits --endian big # Network byte order $data | format bits --endian little # Intel/AMD architecture $data | format bits --endian native # Platform-specific ``` --- ### 7. Pipeline Error Handling **Use pipefail for critical scripts:** ```nushell # In critical scripts: $env.config.experimental = { pipefail: true } $env.config.display_errors = { exit_code: true } # Then check exit codes: some-command | another-command if $env.LAST_EXIT_CODE != 0 { error make { msg: "Pipeline failed" } } ``` --- ### 8. Migration Testing **Test incrementally:** ```nushell # 1. Update syntax without logic changes # 2. Test with old behavior flags # 3. Enable new features one at a time # 4. Run comprehensive test suite # 5. Deploy to staging environment first ``` --- ### 9. Documentation **Update your code documentation:** ```nushell # Document required Nushell version: # @requires nushell >= 0.108.0 # @experimental pipefail, enforce-runtime-annotations def my-command [] { # Implementation } ``` --- ### 10. Future-Proofing **Prepare for experimental features to become default:** ```nushell # Write code that works with experimental features enabled: # - Explicit error handling (pipefail-ready) # - Type annotations (runtime-check-ready) # - Explicit endian specifications # - No reliance on removed commands ``` --- ## Summary of Impact Levels ### HIGH Impact (Must Address) - `into value` → `detect type` rename - Stream error collection behavior - Polars fetch removal (if using polars) ### MEDIUM Impact (Should Address) - `format bits` endian behavior - Network feature flag (custom builds only) - Power operator associativity (if using chained powers) - Polars pivot --stable flag (if using polars) ### LOW Impact (Nice to Have) - Windows UNC/device path improvements (Windows users) - Inline completion syntax adoption - HTTP metadata access simplification - New date/time format specifiers - Enhanced CustomValue support (plugin developers) --- ## Additional 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 server discussions) - **Experimental Options Tracking:** - Pipefail: Issue #16760 - Reorder Cell Paths: Issue #16766 --- ## Contributors This release was made possible by PR contributions from: @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 --- **Document Version:** 1.0 **Last Updated:** 2025-10-18 **Maintained By:** Nushell Plugins Repository Team