# 16.4. PMIx v2.x series

This file contains all the NEWS updates for all the PMIx v2.x series, in reverse chronological order.

## 16.4.1. 2.2.4 – 07 Jun 2020

- PR #1466: Silence spurious error log

- PR #1489: Allow specification of hostname to use by client

- PR #1499/#1512/#1518/#1525/#1528/#1533/#1553: Fix internal tests

- PR #1678: Update “check_vendor” for PGI problem

- PR #1734: Fix resource leaks in ptl/usock component

- PR #1777: Fix crash of dstor locks destructor in ds12

- PR #1788: Remove unnecessary error logs

## 16.4.2. 2.2.3 – 15 Aug 2019

- PR #1162: Fix race condition when clients fail while in a PMIx collective operation

- PR #1163: Fix a compiler warning in atomics on POWER arch

- PR #1165: Add BuildRequires: libevent-devel to spec file

- PR #1180: Remove dependency on C++ compiler for thread detection

- PR #1180: Add detection for Flex when building in non-tarball situations

- PR #1182: configury: use PMIX_ENABLE_DLOPEN_SUPPORT instead of enable_dlopen

- PR #1188: Link libpmix.so to MCA component libraries

- PR #1190: Ensure any cached notifications arrive after reg completes

- PR #1194: Ensure any cached notifications arrive after registration completes

- PR #1209: Update configure logic for clock_gettime

- PR #1213/#1217/#1221: Add configure option “–enable-nonglobal-dlopen” If the MCA component libraries should link back to libpmix.so

- PR #1231: SPEC: Allow splitting PMIx in pmix and pmix-libpmi packages

- PR #1253: Preserve user-provided CFLAGS to protect autotools

- PR #1267: Correct dmodex example

- PR #1275: IPv6 IF Read: Buffer Overflow

- PR #1295: Fix comment: IPv6 IF_NAMESIZE

- PR #1296: Allow setup_fork to proceed even if gdds and pnet don’t contribute

- PR #1296: Allow servers to pass NULL module

- PR #1297: Provide internal blocking ability to the register/deregister fns

- PR #1298: Add dummy handshake component to psec framework for testing

- PR #1303: Allow jobs to not specify proc-level info

- PR #1304: Provide proc data in cases where host does not

- PR #1305: Add some more values that can be computed

- PR #1308: Add missing tool rendezvous file

- PR #1309: Fix potential integer overflow in regex

- PR #1311: Work around memory bug in older gcc compilers

- PR #1329: Add -fPIC to static builds

- PR #1334: Cache only -W CFLAG entries to fix 32-bit builds

- PR #1341: Do not use ‘==’ in m4 test statements

- PR #1342: Fix if_linux_ipv6_open interface filter

- PR #1344: Remove unnecessary libtool init for c++

- PR #1346: Fix incorrect pointer casts/deref

- PR #1347/#1348: Fix use of gethostname

- PR #1353/#1357: util/environ: use setenv() if available

- PR #1354: Plug a misc memory leak in the pmix_query_caddy_t destructor

- PR #1356: Fix another pointer cast/deref in test suite

- PR #1358: Implement support for class-based info arrays

- PR #1359: Plug misc minor memory leaks

- PR #1369: Fix legacy support for PMI-1

- PR #1370: Cleanup handling of data requests for different nspaces

- PR #1193: Resolve get of proc-specific job-level info from another nspace

- PR #1377: Skip fastpath/dstore for NULL keys

- PR #1379: Change IF_NAMESIZE to PMIX_IF_NAMESIZE and set to safe size

- PR #1385: Check for EINVAL return from posix_fallocate

- PR #1389: Plug misc memory leaks in configure

## 16.4.3. 2.2.2 – 24 Jan 2019

> - Fix a bug in macro identifying system events

## 16.4.4. 2.2.1 – 18 Jan 2019

> - Fix a bug in registration of default event handlers that somehow slipped thru testing

## 16.4.5. 2.2.0 – 17 Jan 2019

Important

THIS RELEASE MARKS THE STARTING POINT FOR FULL COMPLIANCE WITH THE PMIX v2.2 STANDARD. ALL API BEHAVIORS AND ATTRIBUTE DEFINITIONS MEET THE v2.2 STANDARD SPECIFICATIONS.

- Add a new, faster dstore GDS component ‘ds21’

- Performance optimizations for the dstore GDS components.

- Plug miscellaneous memory leaks

- Silence an unnecessary warning message when checking connection to a non-supporting server

- Ensure lost-connection events get delivered to default event handlers

- Correctly handle cache refresh for queries

- Protect against race conditions between host and internal library when dealing with async requests

- Cleanup tool operations and add support for connections to remote servers.

- Automatically store the server URI for easy access by client

- Provide MCA parameter to control TCP connect retry/timeout

- Update event notification system to properly evict oldest events when more space is needed

- Fix a number of error paths

- Handle setsockopt(SO_RCVTIMEO) not being supported

- Pass the tool’s command line to the server so it can be returned in queries

- Add support for C11 atomics

- Fix a bug when registering default event handlers

## 16.4.6. 2.1.4 – 18 Sep 2018

- Updated configury to silence warnings on older compilers

- Implement job control and sensor APIs

- Update sensor support

- Fix a few bugs in the event notification system and provide some missing implementation (support for specifying target procs to receive the event).

- Add PMIX_PROC_TERMINATED constant

- Properly deal with EOPNOTSUPP from getsockopt() on ARM

## 16.4.7. 2.1.3 – 23 Aug 2018

- Fixed memory corruption bug in event notification system due to uninitialized variable

- Add numeric version definition

- Transfer all cached data to client dstore upon first connect

## 16.4.8. 2.1.2 – 6 July 2018

- Added PMIX_VERSION_RELEASE string to pmix_version.h

- Added PMIX_SPAWNED and PMIX_PARENT_ID keys to all procs started via PMIx_Spawn

- Fixed faulty compares in PMI/PMI2 tests

- Fixed bug in direct modex for data on remote node

- Correctly transfer all cached job info to the client’s shared memory region upon first connection

- Fix potential deadlock in PMIx_server_init in an error case

- Fix uninitialized variable

- Fix several memory and file descriptor leaks

## 16.4.9. 2.1.1 – 23 Feb 2018

- Fix direct modex when receiving new nspace

- Resolve direct modex of job-level info

- Fix a bug in attribute configuration checks

- Fix a couple of bugs in unpacking of direct modex job-level data

- Correcly handle application setup data during “instant on” launch

- add a PMIX_BYTE_OBJECT_LOAD convenience macro

- Fix two early “free” bugs

- Add an example PMI-1 client program

## 16.4.10. 2.1.0 – 1 Feb 2018

Important

This release contains the first implementation of cross-version support. Servers using v2.1.0 are capable of supporting clients using PMIx versions v1.2 and above. Clients using v2.1.0 are able to interact with servers based on v1.2 and above.

- Added cross-version communication support

- Enable reporting of contact URI to stdout, stderr, or file (PR #538)

- Enable support for remote tool connections (PR #540, #542)

- Cleanup libevent configure logi to support default install paths (PR #541)

- Debounce “unreachable” notifications for tools when they disconnect (PR #544)

- Enable the regex generator to support node names that include multiple sets of numbers

## 16.4.11. 2.0.3 – 1 Feb 2018

- Fix event notification so all sides of multi-library get notified of other library’s existence

- Update syslog protection to support Mac High Sierra OS

- Remove usock component - unable to support v1.x clients due to datatype differences

- Cleanup security handshake

- Cleanup separation of PMI-1/2 libraries and PMIx symbols

- Protect against overly-large messages

- Update data buffer APIs to support cross-version operations

- Protect receive callbacks from NULL and/or empty buffers as this can occur when the peer on a connection disappears.

- Fix tool connection search so it properly descends into the directory tree while searching for the server’s contact file.

- Fix store_local so it doesn’t reject a new nspace as that can happen when working with tools

- Ensure we always complete PMIx_Finalize - don’t return if something goes wrong in the middle of the procedure

- Fix several tool connection issues

## 16.4.12. 2.0.2 – 19 Oct 2017

- Update RPM spec file (rpmbuild -ta, and –rebuild fixes) (PR #523)

- Support singletons in PMI-1/PMI-2 (PR #537)

- Provide missing implementation support for arrays of pmix_value_t’s (PR #531)

- Remove unsupported assembly code for MIPS and ARM processors prior to v6 (PR #547)

- Fix path separator for PMIx configuration files (PR #547)

- Add configure option to enable/disable the default value for the show-load-errors MCA param (PR #547)

## 16.4.13. 2.0.1 – 24 Aug. 2017

- Protect PMIX_INFO_FREE macro from NULL data arrays

- Added attributes to support HWLOC shared memory regions

- Fixed several syntax errors in configure code

- Fixed several visibility errors

- Correctly return status from PMIx_Fence operation

- Restore tool connection support and implement search operations to discover rendezvous files

## 16.4.14. 2.0.0 – 22 Jun 2017

Important

This release implements the complete PMIX v2.0 Standard and therefore includes a number of new APIs and features. These can be tracked by their RFC’s in the RFC repository at: https://github.com/pmix/RFCs. A formal standards document will be included in a later v2.x release. Some of the changes are identified below.

- Added the Modular Component Architecture (MCA) plugin manager and converted a number of operations to plugins, thereby allowing easy customization and extension (including proprietary offerings)

- Added support for TCP sockets instead of Unix domain sockets for client-server communications

- Added support for on-the-fly Allocation requests, including requests for additional resources, extension of time for currently allocated resources, and return of identified allocated resources to the scheduler (RFC 0005 - https://github.com/pmix/RFCs/blob/master/RFC0005.md)

- Tightened rules on the processing of PMIx_Get requests, including reservation of the “pmix” prefix for attribute keys and specifying behaviors associated with the PMIX_RANK_WILDCARD value (RFC 0009 - https://github.com/pmix/RFCs/blob/master/RFC0009.md)

- Extended support for tool interactions with a PMIx server aimed at meeting the needs of debuggers and other tools. Includes support for rendezvousing with a system-level PMIx server for interacting with the system management stack (SMS) outside of an allocated session, and adds two new APIs:

- PMIx_Query: request general information such as the process table for a specified job, and available SMS capabilities

- PMIx_Log: log messages (e.g., application progress) to a system-hosted persistent store (RFC 0010 - https://github.com/pmix/RFCs/blob/master/RFC0010.md)

- Added support for fabric/network interactions associated with “instant on” application startup (RFC 0012 - https://github.com/pmix/RFCs/blob/master/RFC0012.md)

- Added an attribute to support getting the time remaining in an allocation via the PMIx_Query interface (RFC 0013 - https://github.com/pmix/RFCs/blob/master/RFC0013.md)

- Added interfaces to support job control and monitoring requests, including heartbeat and file monitors to detect stalled applications. Job control interface supports standard signal-related operations (pause, kill, resume, etc.) as well as checkpoint/restart requests. The interface can also be used by an application to indicate it is willing to be pre-empted, with the host RM providing an event notification when the preemption is desired. (RFC 0015 - https://github.com/pmix/RFCs/blob/master/RFC0015.md)

- Extended the event notification system to support notifications across threads in the same process, and the ability to direct ordering of notifications when registering event handlers. (RFC 0018 - https://github.com/pmix/RFCs/blob/master/RFC0018.md)

- Expose the buffer manipulation functions via a new set of APIs to support heterogeneous data transfers within the host RM environment (RFC 0020 - https://github.com/pmix/RFCs/blob/master/RFC0020.md)

- Fix a number of race condition issues that arose at scale

- Enable PMIx servers to generate notifications to the host RM and to themselves