Releases: heroku/libcnb.rs
Releases · heroku/libcnb.rs
v0.17.0
Added
libcnb
:- An optional
trace
feature has been added that emits OpenTelemetry tracing
data to a File Export. (#723)
- An optional
v0.16.0
Changed
- Raised Minimum Supported Rust Version (MSRV) to
1.74
. (#747) - Improved the consistency of all user-facing libcnb.rs error message wordings. (#722)
- The assistance error message shown when the necessary cross-compilation tools are not found now also includes the
rustup target add
step. (#729) - Updated the documentation for
TestRunner::build
andTestContext::start_container
to mention when Docker resource teardown occurs. (#743)
Fixed
libcnb-test
:- Fixed incorrect error messages being shown for buildpack compilation/packaging failures. (#720)
- The Docker volumes created by Pack for the build and launch layer caches are now cleaned up after each test. (#741)
- The Docker image cleanup process no longer makes duplicate attempts to remove images when using
TestContext::rebuild
. (#741) - Test failures due to the Docker daemon not being installed or started no longer cause a non-unwinding panic abort with noisy traceback. (#741)
- Containers created by
TestContext::start_container
are now correctly cleaned up if the container failed to start. (#742)
v0.15.0
Added
libcnb
:LayerTypes
now implementsCopy
andClone
. (#670).
libcnb-data
:ExecDProgramOutputKey
,ProcessType
,LayerName
,BuildpackId
andStackId
now implementOrd
andPartialOrd
. (#658)- Added
generic::GenericMetadata
as a generic metadata type. Also makes it the default forBuildpackDescriptor
,SingleBuildpackDescriptor
,CompositeBuildpackDescriptor
andLayerContentMetadata
. (#664)
libcnb-test
:- Added the
BuildpackReference::WorkspaceBuildpack
enum variant. This allows for the testing of any libcnb.rs or composite buildpack in the Cargo workspace, instead of only the buildpack of the current crate. Note: The testing of composite buildpacks requirespack
CLI version>=0.30
. (#666)
- Added the
Changed
libcnb-data
:- Renamed the
buildpackage
module topackage_descriptor
, and theBuildpackage*
types within it toPackageDescriptor*
. (#656) - Renamed multiple types to match the new composite vs component buildpack upstream terminology. Renamed
SingleBuildpackDescriptor
toComponentBuildpackDescriptor
,MetaBuildpackDescriptor
toCompositeBuildpackDescriptor
andBuildpackDescriptor::{Single,Meta}
toBuildpackDescriptor::{Component,Composite}
. (#682)
- Renamed the
libcnb-cargo
:libcnb-test
:- Renamed
BuildpackReference::Crate
toBuildpackReference::CurrentCrate
. (#666)
- Renamed
v0.14.0
Added
libcnb-package
: Added cross-compilation assistance for Linuxaarch64-unknown-linux-musl
. (#577)libcnb-cargo
: Added--package-dir
command line option to control where packaged buildpacks are written. (#583)libcnb-test
:
Changed
libcnb-cargo
: Moved the default location for packaged buildpacks from Cargo'starget/
directory topackaged/
in the Cargo workspace root. This simplifies the path and stops modification of thetarget/
directory which previously might have caching implications when other tools didn't expect non-Cargo output in that directory. Users that implicitly rely on the output directory need to adapt. The output ofcargo libcnb package
will refer to the new locations. (#583)libcnb-package
:libcnb-test
:ContainerContext::address_for_port
will now panic for all failure modes rather than just some, and so now returnsSocketAddr
directly instead ofOption<SocketAddr>
. This reduces test boilerplate due to the caller no longer needing to.unwrap()
and improves debugging UX when containers crash after startup. (#605 and #636)- Docker commands are now run using the Docker CLI instead of Bollard and the Docker daemon API. (#620)
ContainerConfig::entrypoint
now accepts a String rather than a vector of strings. Any arguments to the entrypoint should be moved toContainerConfig::command
. (#620)- Removed
TestRunner::new
since its only purpose was for advanced configuration that's no longer applicable. UseTestRunner::default
instead. (#620) - Removed
stdout_raw
andstderr_raw
fromLogOutput
. (#607) - Improved wording of panic error messages. (#619 and #620)
libherokubuildpack
: Changed theflate2
decompression backend fromminiz_oxide
tozlib
. (#593)
Fixed
libcnb-test
:TestContext::run_shell_command
andContainerContext::shell_exec
now validate the exit code of the spawned commands and panic if they are non-zero. (#620)ContainerContext::expose_port
now only exposes the port to localhost. (#610)- If a test with an expected result of
PackResult::Failure
unexpectedly succeeds, the built app image is now correctly cleaned up. (#625)
v0.13.0
The highlight of this release is the cargo libcnb package
changes to support compilation of both buildpacks and meta-buildpacks.
Changed
libcnb-cargo
: Thecargo libcnb package
command now supports compiling buildpacks and meta-buildpacks (#575):- When used in a buildpack directory it will compile only that buildpack.
- When used in a workspace directory it will compile all buildpacks found in subdirectories.
libcnb-package
: Changeddefault_buildpack_directory_name
to accept aBuildpackId
(#575)
Added
libcnb-cargo
- Buildpacks can reference other buildpacks within a workspace by using
uri = "libcnb:{buildpack_id}"
as a dependency entry in the buildpack's package.toml file. (#575)
- Buildpacks can reference other buildpacks within a workspace by using
libcnb-data
- Serialization / deserialization of package.toml files supported with the
Buildpackage
struct. (#575)
- Serialization / deserialization of package.toml files supported with the
libcnb-package
- Added
read_buildpackage_data
,find_buildpack_dirs
,get_buildpack_target_dir
to support packaging operations. (#575) - Added
buildpack_dependency::BuildpackDependency
,buildpack_dependency::get_local_buildpackage_dependencies
,buildpack_dependency::rewrite_buildpackage_local_dependencies
,buildpack_dependency::rewrite_buildpackage_relative_path_dependencies_to_absolute
to support Buildpack dependency handling and packaging operations. (#575) - Added
buildpack_package::BuildpackPackage
,buildpack_package::read_buildpack_package
to support libcnb.rs-based Rust packages. (#575) - Added
dependency_graph::DependencyNode
,dependency_graph::create_dependency_graph
,dependency_graph::get_dependencies
to support dependency ordering and resolution in libcnb.rs-based Rust packages. (#575)
- Added
v0.12.0
Highlight of this release is the bump to Buildpack API 0.9. This release contains breaking changes, please refer to the items below for migration advice.
Changed
- libcnb.rs now targets Buildpack API 0.9. Buildpacks need to upgrade the
api
key to0.9
in theirbuildpack.toml
. (#567)Process
no longer supports thedirect
flag. All processes are nowdirect
. Processes that need to use bash can use bash explicitly in the command. (#567)Process::command
has been changed to a sequence of values where the first one is the executable and any additional values are arguments to the executable. The already existingargs
field behaves slightly different now as its contents can now be overridden by the user. See the upstream CNB specification for details. (#567)
Env::get
now returnsOption<&OsString>
instead ofOption<OsString>
. This is more in line with expectations users have when dealing with a collection type. This is a breaking change, compile errors can be fixed by adding aOption::cloned
call afterEnv::get
to get the old behaviour. In some cases, cloning might not be necessary, slightly improving the code that usesEnv::get
. (#565)
Added
v0.11.5
v0.11.4
v0.11.3
v0.11.2
Fixed
- libcnb-test:
TestContext::download_sbom_files
now checks the exit code of thepack sbom download
command it runs. (#520)
Changed
- libcnb: Drop the use of the
stacker
crate when recursively removing layer directories. (#517) - libcnb-cargo: Updated to Clap v4. (#511)
Added
- libherokubuildpack: Add
command
andwrite
modules for working withstd::process::Command
output streams. (#535)