System Requirements and Release Notes

P4 API for Ruby is supported on Windows, Linux, and macOS.

For system requirements, see the P4 API for Ruby Release notes.

Platform Compatibility

P4 API for Ruby is certified and regression-tested on the following platforms

Windows (x64)

  • Windows Server: 2016, 2019, 2022

  • Windows Desktop: 10, 11

macOS

  • Intel: macOS 11, 12

  • Apple Silicon (ARM64): macOS 12, 13

Linux (x86_64)

  • Ubuntu: 20.04, 22.04, 24.04

  • CentOS 8

  • Rocky Linux 9

  • RHEL 10

Linux (ARM64)

  • Ubuntu: 20.04, 22.04, 24.04

  • CentOS 8

  • Rocky Linux 9

  • RHEL 10

Platforms not listed above are not actively tested by Perforce. P4 API for Ruby may still run on other platforms, but issues on unlisted platforms are not prioritized for fixes.

Ruby Compatibility

The following versions of P4 API for Ruby can be built from source using the following Ruby versions:

Ruby Version

Minimum P4 API for Ruby Release

3.2

2023.1 or later

3.3

2024.1 or later

3.4

2024.2.1 or later

Server Compatibility

P4 API for Ruby is officially supported with the 2025.1 P4 Server. Older server versions may work, but are not officially supported.

P4 API for C/C++ Compatibility

P4 API for Ruby requires P4 API for C/C++ version 2025.1 or later. Older API versions will not compile and are not supported.

OpenSSL Compatibility

To enable encrypted communication, P4 API for Ruby must be built using the same OpenSSL version as the P4 API for C/C++.

Since P4 API for C/C++ 2017.1, OpenSSL is a mandatory dependency (SSL stub library removed).

Preferred OpenSSL versions:

  • OpenSSL 3.x.x

  • OpenSSL 1.1.1

Compiler Compatibility

P4 API for Ruby must be built with the same compiler used to build the P4 API for C/C++. The preferred compilers are gcc or g++.

Using mismatched compiler versions may cause linker errors due to symbol name differences.

Known Limitations

The P4 client-server protocol does not support concurrent queries over the same connection.

Multi-threaded applications using P4 API for Ruby (or other script APIs like P4 API for Perl) must either:

  • Use separate connections per thread.

  • Ensure only one thread accesses a shared connection at a time.