---
name: "Carton::Doc::Upgrading"
section: "3pm"
platform: "linux"
package: "carton"
version: "1.0.35-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Carton::Doc::Upgrading"
---

# Carton::Doc::Upgrading(3pm)

Upgrading document

## NAME

Carton::Doc::Upgrading - Upgrading document

## UPGRADING

Carton adds, changes and deprecates some features between major releases in backward incompatible ways. Here's the list of major changes between versions. See `"Changes"` file for more details.

### v0.9 to v1.0

- •

  `"carton exec -Ilib"` is deprecated. You must pass the optional include path to perl interpreter in the normal way, like:

  ```
    carton exec perl -Ilib myscript
  ```

  Or make your script to take its own `"-I"` option, like many command line launcher does (i.e. plackup, prove)

  ```
    carton exec plackup -Ilib myapp.psgi
  ```

- •

  `"carton.lock"` is now `"cpanfile.snapshot"`. Its name and file format has been changed. There's no automatic migration, but you can do:

  ```
    # run with Carton v0.9.64
    > carton install
    # upgrade to Carton v1.0
    > cpanm Carton
    > carton install
    > git add cpanfile.snapshot
    > git rm carton.lock
  ```

  This process will most likely preserve modules in your local library.

- •

  cpanfile is now a requirement, and extracting requirements from build files (`"Makefile.PL"`, `"Build.PL"`) is not supported.
