[python] Lambda runtime install cold-start performance improvements#15080
[python] Lambda runtime install cold-start performance improvements#15080
Conversation
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
🦋 Changeset detectedLatest commit: 870da37 The changes in this PR will be included in the next version bump. This PR includes changesets to release 18 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
📦 CLI Tarball ReadyThe Vercel CLI tarball for this PR is now available! Quick TestYou can test this PR's CLI directly by running: npx https://vercel-p2r3g1nff.vercel.sh/tarballs/vercel.tgz --helpUse in vercel.jsonTo use this CLI version in your project builds, add to your {
"build": {
"env": {
"VERCEL_CLI_VERSION": "vercel@https://vercel-p2r3g1nff.vercel.sh/tarballs/vercel.tgz"
}
}
}Python Runtime WheelA Python runtime wheel was also built for this PR. |
🧪 Unit Test StrategyComparing: Strategy: Code changed outside of a package - running all unit tests Affected packages - 40 (100%)
Results
This comment is automatically generated based on the affected testing strategy |
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
4f7edb8 to
d0053f5
Compare
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Co-authored-by: Elvis Pranskevichus <elvis@vercel.com>
…el/vercel into gscho/PY-99-pack-the-lambda
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
Signed-off-by: gscho <greg.c.schofield@gmail.com>
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## vercel@50.22.0 ### Minor Changes - feat(cli): add `vercel integration guide` command ([#15108](#15108)) Adds a new `vercel integration guide` subcommand that displays getting started guides, code snippets, and resource links for marketplace integrations directly in the terminal. Supports single-product and multi-product integrations with interactive product and framework selection. Includes `--framework` flag for non-interactive framework selection (useful for CI/agents). Output is raw markdown written to stdout for easy piping to files or other tools. ### Patch Changes - fix(cli): fix missing planId in non-subscription plan web fallback ([#15152](#15152)) - [services]([#15093](#15093)) - consolidate `workspace` and `entrypoint` from `experimentalServices` `vercel.json` schema - make `framework` config in service optional -- infer framework from service workspace when not explicitly provided - Updated dependencies \[[`09b3540742ac86b768de9775929fef1ef36db412`](09b3540), [`fc56fb91b4dafabe0f68f86efeabbaf98b2642bc`](fc56fb9)]: - @vercel/build-utils@13.4.3 - @vercel/python@6.15.0 - @vercel/backends@0.0.36 - @vercel/elysia@0.1.39 - @vercel/express@0.1.48 - @vercel/fastify@0.1.42 - @vercel/go@3.4.1 - @vercel/h3@0.1.48 - @vercel/hono@0.2.42 - @vercel/hydrogen@1.3.5 - @vercel/koa@0.1.22 - @vercel/nestjs@0.2.43 - @vercel/next@4.15.31 - @vercel/node@5.6.6 - @vercel/redwood@2.4.9 - @vercel/remix-builder@5.5.10 - @vercel/ruby@2.3.1 - @vercel/rust@1.0.5 - @vercel/static-build@2.8.40 ## @vercel/python@6.15.0 ### Minor Changes - Optimize cold starts for lambdas >250MB ([#15080](#15080)) 1. Remove `uv pip install` and replace it with `uv sync --inexact --frozen` 2. Pack the lambda zip with dependencies up to 245MB then only install the remaining ones at runtime ### Patch Changes - Updated dependencies \[[`fc56fb91b4dafabe0f68f86efeabbaf98b2642bc`](fc56fb9)]: - @vercel/python-analysis@0.6.0 ## @vercel/python-analysis@0.6.0 ### Minor Changes - Optimize cold starts for lambdas >250MB ([#15080](#15080)) 1. Remove `uv pip install` and replace it with `uv sync --inexact --frozen` 2. Pack the lambda zip with dependencies up to 245MB then only install the remaining ones at runtime ## @vercel/backends@0.0.36 ### Patch Changes - Updated dependencies \[[`09b3540742ac86b768de9775929fef1ef36db412`](09b3540)]: - @vercel/build-utils@13.4.3 ## @vercel/build-utils@13.4.3 ### Patch Changes - [services]([#15093](#15093)) - consolidate `workspace` and `entrypoint` from `experimentalServices` `vercel.json` schema - make `framework` config in service optional -- infer framework from service workspace when not explicitly provided - Updated dependencies \[[`fc56fb91b4dafabe0f68f86efeabbaf98b2642bc`](fc56fb9)]: - @vercel/python-analysis@0.6.0 ## @vercel/cervel@0.0.23 ### Patch Changes - Updated dependencies \[]: - @vercel/backends@0.0.36 ## @vercel/client@17.2.45 ### Patch Changes - Updated dependencies \[[`09b3540742ac86b768de9775929fef1ef36db412`](09b3540)]: - @vercel/build-utils@13.4.3 ## @vercel/elysia@0.1.39 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/express@0.1.48 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 - @vercel/cervel@0.0.23 ## @vercel/fastify@0.1.42 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/fs-detectors@5.8.9 ### Patch Changes - [services]([#15093](#15093)) - consolidate `workspace` and `entrypoint` from `experimentalServices` `vercel.json` schema - make `framework` config in service optional -- infer framework from service workspace when not explicitly provided ## @vercel/gatsby-plugin-vercel-builder@2.0.138 ### Patch Changes - Updated dependencies \[[`09b3540742ac86b768de9775929fef1ef36db412`](09b3540)]: - @vercel/build-utils@13.4.3 ## @vercel/h3@0.1.48 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/hono@0.2.42 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/koa@0.1.22 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/nestjs@0.2.43 ### Patch Changes - Updated dependencies \[]: - @vercel/node@5.6.6 ## @vercel/node@5.6.6 ### Patch Changes - Updated dependencies \[[`09b3540742ac86b768de9775929fef1ef36db412`](09b3540)]: - @vercel/build-utils@13.4.3 ## @vercel/static-build@2.8.40 ### Patch Changes - Updated dependencies \[]: - @vercel/gatsby-plugin-vercel-builder@2.0.138 ## @vercel/python-runtime@0.5.0 ### Minor Changes - Optimize cold starts for lambdas >250MB ([#15080](#15080)) 1. Remove `uv pip install` and replace it with `uv sync --inexact --frozen` 2. Pack the lambda zip with dependencies up to 245MB then only install the remaining ones at runtime <!-- VADE_RISK_START --> > [!NOTE] > Low Risk Change > > This PR is an automated Changesets release that only updates version numbers in package.json files and CHANGELOG.md files across multiple packages, with no logic changes. > > - Version bumps across ~25 packages (patch and minor versions) > - CHANGELOG.md updates documenting previous changes > - Deleted changeset markdown files consumed by release process > > <sup>Risk assessment for [commit f054c83](https://github.com/vercel/vercel/commit/f054c83041bfd8d833afeb59bac76918875f980e).</sup> <!-- VADE_RISK_END --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Warning
High Risk Change
Large refactor of Python Lambda dependency bundling logic introduces new knapsack packing algorithm and changes runtime installation from
uv pip installtouv sync --inexact --frozen, affecting cold-start behavior for oversized bundles.PythonDependencyExternalizerclass with knapsack algorithm for optimal Lambda packinguv pip install -r requirements.txttouv sync --inexact --frozengenerateRuntimeRequirementsfunction, replaces with JSON config-based approachRisk assessment for commit 870da37.