PDK release notes
New features, enhancements, and resolved issues for PDK.
On this page:
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
ucrt64toolchain 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-stringsv5 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; theGEM_SOURCE_PUPPETCOREenvironment variable is no longer supported. CAT-2895 -
PDK now correctly passes Puppet Core authentication credentials when generating binstubs during validation, so
pdk validatecan 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_deferredis 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






