Skip to content

Commit

Permalink
Update to libcnb 0.21, Buildpack API 0.10 and switch from stacks to t…
Browse files Browse the repository at this point in the history
…argets (#197)

A `libcnb.rs` release supports a single Buildpack API version, so
whenever we update to a libcnb release that now implements a newer
Buildpack API version, we must switch to that version in the buildpack
at the same time.

This change updates the buildpack to the latest libcnb release, which
requires both a switch to Buildpack API 0.10, a switch from stacks to
targets, and also some adjustments for layer API changes.

As part of the switch from stacks to targets, the buildpack now consumes
the Python runtime from the new S3 location/filenames (that use distro
name/version in the URL instead of stack ID), which were added in:
heroku/heroku-buildpack-python#1567

The new archives also now use Zstandard (aka zstd) for compression
instead of gzip, which results in a faster download due to the smaller
archive size (for example, the Ubuntu 22.04 Python 3.12.3 AMD64 archive
was 26% smaller) as well as faster decompression. This required
switching from the `flate2` crate to the `zstd` crate.

A side-effect of switching to the new S3 files is that the archives for
Python 3.7 are no longer available, since I intentionally did not build
them given that Python 3.7 is EOL. As such, this change also drops
support for Python 3.7 (something that the classic buildpack has already
done, and would have been done here already if it were not for being
blocked on #8).

The switch to targets unblocks Heroku-24/multi-architecture support,
which will be handled in a later PR.

See:
https://github.com/heroku/libcnb.rs/blob/main/CHANGELOG.md#0210---2024-04-30
https://github.com/buildpacks/spec/releases/tag/buildpack%2Fv0.10
https://github.com/buildpacks/spec/blob/buildpack/0.10/buildpack.md#targets-1
https://docs.rs/zstd/latest/zstd/

Closes #192.
Closes #194.
GUS-W-15261168.
  • Loading branch information
edmorley authored May 2, 2024
1 parent e47ec51 commit fd95924
Show file tree
Hide file tree
Showing 14 changed files with 396 additions and 350 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- The buildpack now implements Buildpack API 0.10 instead of 0.9, and so requires `lifecycle` 0.17.x or newer. ([#197](https://github.com/heroku/buildpacks-python/pull/197))
- The buildpack's base image compatibility metadata is now declared using `[[targets]]` instead of `[[stacks]]`. ([#197](https://github.com/heroku/buildpacks-python/pull/197))
- Changed compression format and S3 URL for Python runtime archives. ([#197](https://github.com/heroku/buildpacks-python/pull/197))

### Removed

- Removed support for Python 3.7. ([#197](https://github.com/heroku/buildpacks-python/pull/197))

## [0.8.4] - 2024-04-09

### Changed
Expand Down
Loading

0 comments on commit fd95924

Please sign in to comment.