Developer Notes for P4API, the Helix Application Programming Interface for C/C++ P4, the Helix Command line client P4P, the Helix Proxy P4Broker, the Helix Broker Version 2019.1 Introduction This document is contains developer notes for: * Helix C/C++ API and other derived APIs and * Helix Client (P4) * Helix Proxy (P4P) and * Helix Broker (P4Broker) For details about installing and using the Helix C/C++ API, refer to the API User's Guide, posted on the Perforce Web site at: http://www.perforce.com/perforce/technical.html Supported Platforms for p4api Linux kernel 2.6+ for Intel(x86,x86_64) Windows for Intel(ntx86, ntx64) Apple OS X 10.12+ for Intel(x86_64) Important Platform End-of-Life Notice This notice identifies the platforms that will be placed in End-of-Life (EOL) status on October 2020. This applies to the p4api component of the server release. The following platforms have entered the Obsolescent phase in this release: Mac OS X 10.5, 10.6, 10.7, 10.8, 10.9(x86, x86_64), 10.10(x86_64), 10.11(x86_64) OBSOLESCENT Phase: Starting with this release,these platforms will no longer be supported. Customers will receive full support and patches for the deprecated platforms during this phase for older releases. The platforms will remain in this phase until October 2020 after which they will transition into the discontinued phase. DISCONTINUED (EOL) Phase: Patches will no longer be issued for these platforms. We will no longer provide technical support to customers with servers on these platforms SSL Support Beginning with the 2017.1 release of the Helix C/C++ API, the dependency on OpenSSL is now enforced and the SSL stub library has been removed. Executables linked against the P4API libraries must also be linked against real OpenSSL libraries: the latest 1.1.1 or 1.0.2 patch is recommended. ------------------------------------------------------------------------- See marks in the notes below: * -- requires new p4 client program including all client applications and derived APIs ** -- requires new p4d server program *** -- requires new p4p proxy program **** -- requires new p4broker program -------------------------------------------------------------------------- Technology Preview features: Technology Preview features are currently unsupported, might not be functionally complete, and are not suitable for deployment in production. These features are provided to the customer to solicit interest and feedback, with the goal of full support in future releases. Customers are encouraged to provide feedback and functionality suggestions for Technology Preview features before they become fully supported. ------------------------------------------------------------------------- Major new functionality in 2019.1 #1760437 * The P4API may now be build against OpenSSL 1.1.1 Note that the P4API now comes in OpenSSL 1.0.2 and 1.1.1 variants and that each may only be linked against its respective OpenSSL version. When including the P4API in a product that links against OpenSSL, the OpenSSL versions must match. #1749825 (Bug #97547) * ** A new ClientUser::HandleUrl() method has been added. This method will be called when the server requests that the client opens a URL. The default implementation uses 'xdg-open' and 'open' on Linux and Mac to launch the default browser. On Windows, the ShellApi is used to achieve the same result; note that this means that the P4API now requires shell32.lib to be linked in. To disable the default implementation from the environment, use 'p4 set' or P4CONFIG files to set 'P4USEBROWSER=false'. #1743677 * Autotune has been enabled by default. This functionality enables the TCP stack to manage the size of the network send and receive buffers, allowing more efficient use of the network, especially over slow high latency connections. This behaviour can be disabled in clients, proxies, brokers and the server by setting the 'net.autotune' configurable to 0; the default is now 1 (enabled). Clients can set this via "p4 set" or by adding the configurable to P4CONFIG files and servers can set this via 'p4 configure'. On Windows based platforms, send buffer sizes are not autotuned but are still manually configurable with the 'net.tcpsize' configurable. Technology Preview features in 2019.1 #1750665 (Bug #21301) * The Helix Core Client Extension mechanism is a feature that allows the client to run scripts written in the Lua programming language, packaged with metadata and other resources. The client runs these programs natively, providing a portable runtime with a programmatic API. See 'p4 help extension' for further info. Minor new functionality in 2019.1 #1735885 (Bug #373) * The verbose message output from 'p4 -s' now displays the actual error level: warning, error or fatal. Both error and fatal levels still cause 'p4' to return 1. For the case where existing scripts depend on the previous behaviour, the API level can be set with '-Zapi=85' to cause all non-info output to be tagged with error. Bugs fixed in 2019.1 Patch 14 #2079572 (Bug #105445) * Deprecated OpenSSL methods have been removed from the OpenSSL 1.1.1 builds of the P4API. Bugs fixed in 2019.1 #1742085 (Bug #97307) * Error::Merge() following an Error::Clear() on the target of the merge without an intervening Error::Set() now correctly returns only the ErrorPrivate ep content of the source.