๐ Wahey, it's 2025, it's the end of January and you've tuned in to another Pact blog. We'll take a look at what's been happening in the Pact ecosystem this month, as well as how you can get involved in shaping Pact's roadmap for the next year. We can't do it alone, and we would love to bring in more contributors and maintainers this year. Hopefully you'll be one of them :)
We'll also keep you posted on the updates from the PactFlow team, as they deliver new features for the commercial product, which brings net benefits to the open-source project, and some of the work our PactFlow engineers are doing across the open-source ecosystem.
Pact OSS Updatesโ
Linux ARM64 Runners now available for open-sourceโ
GitHub announced Linux ARM64 runners available in public preview, which means we can natively run our arm64 builds, eliminating the need for qemu, and actually providing better speeds / efficiency than their x86_64 counterparts.
We've started rolling them out around our different repos. If you spot one that could benefit, why not drop in a PR. Same goes for your other favourite open-source projects.
Pact 2025 Roadmap Planningโ
We are looking at 2024 in a retro, and getting together async to think about the future of Pact, and what our roadmap and priorities look like for the year. We've introduced multiple ways for collaborators to get involved, including bi-weekly maintainers meetings.
If you want to check out the discussion, and get involved, why not check out the issue, and drop us a line
Pact RFCsโ
Pact-Pluginsโ
Ali Ustek dropped in a PR to avoid us relying on a popular, but now unmaintained dependency.
Pact-Plugins - Slackโ
Chat with us in: #pact-plugins.
Pact-JSโ
Following on from pact-js-cli and its split platform/architecture npm packages, the same has now been applied to pact-js-core in this PR.
It's awaiting review, but I've been tested it out against npm, yarn, yarn pnp and pnpm, and it's pretty solid. You'll benefit from smaller package downloads (the benefits of which will depending on your packager) with all the previous benefits of prebuilt node bindings on your machine, eliminating the need for post install steps and a full compiler set (gcc or msvc toolchain).
Pact-JS - Slackโ
Chat with us in: #pact-js
Pact-Pythonโ
Just before the new year turned, Josh dropped the release of Pact Python version 2.3.0. Among the many incremental improvements, the most significant is the support of functional arguments, the ability to map functions to provider states and message descriptions, without the user needing to spin up a separate proxy, or endpoints on their application. This feature provides an improved user experience for providers, and also introduces several breaking changes to the pact.v3 preview.
Read about it here
Pact-Python - Slackโ
Chat to us in: #pact-python.
Pact-PHPโ
Continuing from Tiens RFC for adding matching rules for form/urlencoded bodies
, he has completed the implementation and added the examples to pact-php, rounding off work started this time last year.
Great work chap! We really hope you've enjoyed using pact-php v10. We've loved hearing your feedback about the migration, and the benefits you've seen after using it.
If you haven't yet, what are you waiting for?
Pact-PHP - Slackโ
Chat to us in: #pact-php.
Pact-Goโ
Alpine Linux support is now here, despite segfaults during the verification process. We would appreciate any extra eyes, if this feature would be useful to you. you can track my progress here
We've also had to drop the minimum version of golang, to 1.22, in this PR
You can grab these changes in pact-go v2.2.0
Pact-Go - Slackโ
Chat with us in: #pact-go.
Pact-Referenceโ
Marko Justinek aka @surpher, Pact Swift's author, has been working on his library again, and found a few issues when migrating it to the latest version of pact_ffi.
- Matchers: Using time matcher in a query parameter failing verification
- Matchers: Numeric matcher passing test sending String value
- Matchers: Include matcher in query parameters failing to match
These actually weeded out some regressions, which Ron has now fixed. Have you spotted something, let us know?
Pact-Reference - Slackโ
Chat with us in: #pact-rust.
Pact Brokerโ
We've been pleased to hire a few new members to the PactFlow team over the last year, who you may have seen beginning to drop in pull requests and tweaks to the Pact Broker repo.
We'll be introducing our engineers in our posts, over the year, and I can't wait for you to meet them!
Most Ruby applications, have migrated to use Rack 3.x now, however the Pact-Broker has been impeded due to one of its dependencies. This leaves us with an open CVE in the Sinatra library. Ron has been working on this by way of a custom adapter. You can track it here
One of the biggest challenges with contract-testing at scale, is the discoverability of provider states, in the broker, for any particular provider. I've dropped a PR in, which will be reviewed by the team. It will create a new resource that returns a aggregated de-duplicated list of all provider states for a given provider.
Whilst I think there is lots of room for improvement, which we can discuss another time, I think it provides a good start. Why not test it out and let me know your feedback.
Pact-Broker - Slackโ
Chat to us in: #pact-broker.
Community Eventsโ
Are you talking about Pact or contract-testing this year at an event? Why not let us know and get yourself featured!
Thats a wrapโ
Want to carry on the conversation? Sign up here to join our Slack community, where you will be amongst over 6k other users. It's a safe place to ask questions, and a great place to share the awesome work you are doing in the Pact ecosystem.
Whatever you are up to, let us know, and we can look to get you featured in the Pact post.
See you next month folks!
Cheers, Saf