PDK release notes

New features, enhancements, and resolved issues for PDK.

PDK 4.0.1

Released in October 2026, PDK 4.0.1 resolves issues with PDK templates (pdk-templates) files used in internal processes.

Resolved issues

Templates

  • Two files used for our internal CI are no longer managed by default in pdk-templates.
    CAT-2913
    , CAT-2914

  • A file added in the last release as part of internal development processes has been removed. CAT-2912

PDK 4.0.0

Released in October 2026, PDK 4.0.0 expands runtime coverage for Puppet 8 and Puppet Core 9, including Ruby 4 compatibility and the ucrt64 Windows toolchain. This version updates packaged pdk-templates, updates RuboCop defaults, pins the puppet-strings version, improves pdk validate, improves the gem experience for air-gapped installations, and includes improvements to help prevent security issues. PDK packages are no longer available for RHEL 7; however, you can still use PDK to test your modules against RHEL 7.

New features and enhancements

Runtime

  • PDK now builds and validates against both Puppet 8 and Puppet Core 9, including the Ruby 4 runtime needed for Puppet Core 9 support. CAT-2575

  • PDK now uses the ucrt64 toolchain on Windows to keep native gems compatible with Puppet Core 9. CAT-2566

  • When PDK builds environments for modules, it is routed through a shared method. If all needed gems are available locally, local gems are used. If any gems are unavailable, PDK automatically retries installing all gems using remote sources. When installing the PDK gem directly (instead of installing PDK via the package), installation is unchanged. PUPDOC-6114

Template

  • PDK templates now use streamlined RuboCop defaults for clean scaffolds, helping generated modules validate cleanly and preventing older settings from being reintroduced during pdk update. CAT-1698

  • PDK templates now pin puppet-strings v5 so generated module documentation tooling stays compatible with the current documentation stack. CAT-2751

Security

Runtime

  • The bundled version of Git was updated to 2.55.0 to address security vulnerabilities. CAT-2901

Resolved issues

  • PDK-generated Gemfiles now use Puppet Core as the default gem source, improving compatibility with bundled gems in air-gapped environments. To use public gems instead, set bundle config set gemsource.public true; the GEM_SOURCE_PUPPETCORE environment variable is no longer supported. CAT-2895

  • PDK now correctly passes Puppet Core authentication credentials when generating binstubs during validation, so pdk validate can complete without failing on missing gems. CAT-2758

Deprecations

Runtime

  • PDK packages are no longer available for RHEL 7. You can still use PDK to test your modules against RHEL 7. CAT-2846

Get ready for Puppet Core 9

Along with using PDK to update legacy code, you can also update code manually to get ready for Puppet Core 9 for the following change while continuing to use Puppet 8:

  • By default, preprocess_deferred is set to true.

Update code if you rely on deferred function dependencies to be run when the catalog is applied

In Puppet 8, preprocess_deferred was by default set to false, so deferred functions were lazily evaluated during catalog application. This behavior caused regressions in some custom types and providers, including many third-party types and providers.

In Puppet Core 9, preprocess_deferred is set to true by default, so deferred functions are processed before catalog application. This change restores the behavior used in Puppet 7. There is no change to preprocessed resources, just a change to when they are applied.

If you rely on deferred function dependencies to be run when the catalog is applied, refactor your code to work with the updated setting. PA-7802