Release Notes for P4Go, P4 API for Golang Version 2026.1 Introduction This document lists all user-visible changes to P4Go from release 2025.1, the first supported P4Go release. Perforce numbers releases YYYY.R/CCCCC, e.g. 2025.1/2766466. YYYY is the year; R is the release of that year; CCCCC is the bug fix change level. Each bug fix in these release notes is marked by its change number. Any build includes (1) all bug fixes of all previous releases and (2) all bug fixes of the current release up to the bug fix change level. The application versions of P4Go and P4 C/C++ API must align. For example, P4Go 2025.2 requires 2025.2 P4 C/C++ API. -------------------------------------------------------------------------- Important Product Rebrand Notice Helix Core is now P4 Perforce has a new look and logo that reflects our place in DevOps workflows. As part of these changes, Helix Core is now P4. Name updates and new icons to align with the P4 branding will be rolled out soon. To learn more, see: https://www.perforce.com/blog/vcs/introducing-the-p4-platform -------------------------------------------------------------------------- Building P4Go from Source The official source for P4Go is available at: https://github.com/perforce/p4go Instructions for building P4Go can be found in the README.md file: https://github.com/perforce/p4go/blob/main/README.md -------------------------------------------------------------------------- Compatibility Statements Server Compatibility This release of P4Go supports the 2026.1 P4 Server. Older releases might work but are not supported. API Compatibility This release of P4Go supports the 2026.1 P4 C/C++ API (2026.1/2951233). Older releases might work but are not supported. Golang Compatibility This release of P4Go supports the Go 1.26.x. Older releases might work but are not supported. OpenSSL Compatibility To build P4Go application with encrypted communication support, you must use the version of OpenSSL that P4 C/C++ API has been built against. Executables linked against the P4 C/C++ API libraries must also be linked against real OpenSSL libraries: The latest OpenSSL version 3 is recommended Platform Compatibility While P4Go is generally portable, this release is certified only on the following platforms: Windows for Intel(x64) Server 2022, 2025 Linux kernel 2.6+ for Intel(x86_64) Ubuntu 22.04, 24.04 RockyLinux 9, 10 Linux kernel 2.6+ for ARM(aarch64) Ubuntu 22.04, 24.04 RockyLinux 9, 10 MACOS ARM64 12+ MACOS x86_64 12+ The above platforms are tested and subject to regression testing on a frequent basis. Errors or bugs discovered in these platforms are prioritized for correction. Any platform not listed above is not actively tested by Perforce. P4Go may run on platforms that are not actively tested. Compiler Compatibility To build P4Go application from source, you must use a version of P4Go that has been compiled with the same compiler used to build the P4 C/C++ API: for most platforms, use gcc/g++. Attempting to use a different compiler or a different version of the compiler causes linker errors due to differences in name handling between compilers. Known Limitations The P4 client-server protocol is not designed to support multiple concurrent queries over the same connection. For this reason, multi-threaded applications using the P4 C/C++ API or the script APIs (P4Perl, P4Ruby, P4Go etc.) should ensure that a separate connection is used for each thread or that only one thread may use a shared connection at a time. -------------------------------------------------------------------------- New functionalities in 2026.1 Patch 2 (2026.1/3112262) (2026/10/21) #3095482 (Job #138483) Added a RunContext API that accepts a context.Context, allowing a command to be cancelled or timed out after it has started. #3085240 (Job #138484) Added SetInputBytes, allowing commands to send raw binary input to the server, including data that is not valid UTF-8 or that contains NUL bytes. #3061172 (Job #124616) Added support for streaming p4 print output, so large binary files can be downloaded without loading the entire file into memory. Bugs fixed in 2026.1 Patch 2 (2026.1/3112262) (2026/10/21) #3096352 (Job #140534) Fixed an issue where output from -o commands was printed to stdout instead of being returned by Run(). #3076904 (Job #137726) Fixed P4Map matching paths that a case-sensitive server would reject; new case-respecting APIs allow a map to be built with case-sensitive matching and to take server-returned entries directly. #3067115 (Job #137727) Fixed crashes during command result handling, a leaked buffer in P4Identify, P4TRUST being read from the wrong environment variable, successful commands being reported as errors, and slow spec parsing. #3067115 (Job #139406) Fixed native memory growth in long-running applications, where the memory holding command results was never released. (Job #138120) Fixed a crash when running commands concurrently on separate connections. -------------------------------------------------------------------------- Bugs fixed in 2026.1 Patch 1 (2026.1/2982500) (2026/06/17) #2981339 (Job #134671) Fixed an issue where clearing the resolve handler followed by Close() caused a SIGABRT due to a double-free. #2977791 (Job #134674) The documentation URL in the README.md file has been corrected. -------------------------------------------------------------------------- New functionalities in 2026.1 (2026.1/2974624) (2026/06/11) #2948839 (Job #133658) * ** *** This release of P4Go supports the 2026.1 P4 C/C++ API #2945314 (Job #130559) Added support for Go 1.26 (Job #128777) Added support for Windows Server 2025 Bugs fixed in 2026.1 #2942757 (Job #129979) Fixed incorrect nil error returns when command execution encounters FAILED or FATAL messages. P4Message results with FAILED or FATAL severity are now properly promoted to the error return value for correct error handling. -------------------------------------------------------------------------- New functionalities in 2025.2 (2025.2/2872356) (2025/12/18) #2842998 (Job #128789) This release of P4Go supports P4 C/C++ API 2025.2 (2025.2/2852709) #2837048 (Job #128776) Added support for Rocky Linux 10. #2867669 (Job #130054) Added support for three additional MinGW-w64 GCC 8 toolchain variants on Windows: win32-sjlj, posix-seh, and posix-sjlj. Bugs fixed in 2025.2 (2025.2/2872356) (2025/12/18) #2866492 (Job #129174) Added P4GoSpecData to provide proper Go slice ([]string) support for spec list fields, replacing the old numbered/bracketed key format. -------------------------------------------------------------------------- Bugs fixed in 2025.1 Patch 1 #2782990 (Job #127201) Corrected the module name from p4 to github.com/perforce/p4go in go.mod to enable fetching the P4Go module from GitHub. #2781326 (Job #127204) The documentation URL in the README.md file has been corrected. #2781251 (Job #127205) Removed the empty layer from the P4Go.tgz source directory. -------------------------------------------------------------------------- New functionalities in 2025.1 (2025.1/2780067) (2025/06/11) #2764902 (Job #125777) Added support of 2025.1 P4 C/C++ API (2025.1/2761706)