Skip to content

Releases: zowe/zo

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 16:14

CLI Plug-in

  • Documented PBES2/AES-256 certificate exports, their System SSL/ICSF prerequisites, and the requirement for strong, unique 8–128-character passphrases in command help. #1205
  • Added the zowe zo delete vsam command with --erase and --purge options to delete VSAM clusters over SSH. #490

Client SDK

  • Documented the PBES2/AES-256 certificate export prerequisites and strong, unique 8–128-character passphrase requirement. #1205
  • Added optional z/OSMF-compatible execution fields to job list and status response types, including execSubmitted and execEnded for submitted-date and completed-date sorting. #1187
  • BugFix: Censored sensitive info when logging RPC request and response details in ZSshClient. #1190
  • Added support for the deleteVsam command to delete VSAM clusters with optional erase and purge behavior. #490
  • Fixed SSH utility helper functions closing their connection before asynchronous operations completed when passing an SshSession. #1195

z/OS Components

  • Breaking: c: Protected PKCS#12 certificate exports with PBES2/AES-256-CBC and PBKDF2-HMAC-SHA-256 instead of RC4/SHA-1, without an algorithm downgrade on failure. Export now requires System SSL APAR OA64899 support, active ICSF, and an 8–128-character passphrase; documented the need for strong, unique passphrases against offline guessing. #1205
  • c: Added additional error logging when zo fails to parse IDCAMS output while attempting to resolve a data set alias. #1198
  • c: Added z/OSMF-compatible execSystem, execMember, execSubmitted, execStarted, and execEnded fields to job list and status JSON responses, enabling submitted-date and completed-date sorting. #1187
  • python: Exposed job execution metadata and UTC timestamps through the job bindings. #1187
  • Added the zo ds delete-vsam command and the deleteVsam RPC method to delete VSAM clusters with optional erase and purge behavior. #490

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 09 Oct 12:09

CLI Plug-in

  • Corrected the create data-set-member success message to say Member instead of Dataset. #639

Client SDK

  • Fixed an error when issuing streamed RPC requests to a zowex server running in Bash shell. #1155
  • Updated RPC command method signatures so that the parameters object is optional when none of the request properties are required. #1174
  • Added SessionContext class to cache SSH connections so they can be reused across utility methods. #1144

z/OS Components

  • c: Clarified the zowex ds create-member success message to indicate it creates only the member and not the data set. #639
  • c: Fixed the --encoding help text for zowex data-set write, zowex uss write, and zowex job submit-jcl, which described reading contents instead of converting the input. #649
  • c: ResultTable columns are now named (add_column("name", width)), and data-set list, data-set list-members, job list, job list-files, and job view-status accept a new --response-format-header/--rfh option that prints those names as a header row in table and CSV output.
  • c: Added a --json option to zowex commands, which prints the command's result to stdout as a single line of JSON (success, exitCode, data, stderr) so callers can parse it without starting zowex server. #837
  • c: Fixed zowex job list-files --response-format-csv repeating every preceding record's fields at the start of each row, so only the first row had the documented five fields.
  • c: Fixed zowex uss list only returning structured results when --response-format-csv was also passed. #1128
  • c: Fixed plugin::Io::is_redirecting_error() and is_redirecting_input() reporting the state of the output stream instead of their own. #1128
  • c: Fixed a plug-in that registers an argument conflicting with an existing name or alias aborting zowex for every command instead of being rejected with a logged diagnostic. #1128
  • python: Added package_precompiled.py tool to package precompiled binary assets (equivalent to Python wheels) into zbind_bin_dist.tar.gz for instant compiler-free installation.
  • python: Added package_zbind.py tool to package a clean, self-contained source-based distribution bundle (zbind_src_dist.tar.gz) containing all necessary headers, sources, and objects to build the bindings on any z/OS host without SWIG.
  • python: Fixed compilation of Python bindings on z/OS by passing required Language Environment feature macros _EXT and _OPEN_SYS_FILE_EXT to the compiler in setup.py.
  • Reduced the size of the zo binary by over 40% (10MB -> 6MB) by optimizing the codebase. #1166
  • python: Fixed the Python bindings compiling the shared native/c sources with -fzos-le-char-mode=ascii, which flipped their execution charset to ASCII and broke every data set and job binding. #1121
  • python: list_data_sets accepts show_attributes so dsorg, volser, recfm and migrated can be populated. #1121
  • python: Fixed get_job_status returning unconverted EBCDIC strings and create_data_set raising errors with an empty message. #1121
  • python: Fixed list_jobs_by_owner failing when no job name prefix is given. #1121
  • python: Fixed the USS bindings (create_uss_file, create_uss_dir, move_uss_file_or_dir, list_uss_dir, chmod_uss_item, delete_uss_item, chown_uss_item, chtag_uss_item) not converting paths, and write_uss_file/write_uss_file_streamed not converting etags, between ASCII and EBCDIC. #1121

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 18 Sep 20:13

CLI Plug-in

  • Added --response-timeout option to all commands. It defaults to 60 seconds and can be increased for large uploads or downloads over slow connections. #988

Client SDK

  • Enhanced the post-failure cleanup in the ZSshUtils.installServer method to delete the zo program if the installation process failed while extracting the server.pax.Z file. #1143
  • Fixed an error where zowex is not found on the PATH if the OMVS shell is Bash. The expected behavior is that the zowex binary is automatically deployed. #1141
  • Exported the ZSshConstants module so that extenders can access its constants. #1142

z/OS Components

  • Fixed worker threads timing out in the zo RPC server for a long upload or download operation that exceeds the request timeout. #988
  • c: Adjusted the size of the etag field to improve compatibility with z/OS UNIX files. #1140
  • c: Rejected oversized data set etags before copying them into request storage. #1140
  • c: Rejected oversized USS file etags before copying them into request storage. #1140

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 19:29

CLI Plug-in

  • The zowex top level command group of this plug-in has been renamed to zo. zowex and zssh will still function as aliases. #1119
  • Added the zssh files list alias command to the CLI. #1108

Client SDK

  • Breaking The zowex program bundled in server.pax.Z is now renamed to zo. #1119
  • Added JSON-RPC support for listing parmlib data sets. #1124
  • Added support for the resolveDsAlias RPC command which allows the caller to resolve data set aliases. #1108

z/OS Components

  • Breaking: c: Renamed the ZOWEX_NUM_WORKERS environmental variable to ZO_NUM_WORKERS. #1119
  • Breaking: c: Renamed the ZOWEX_LOG_LEVEL environmental variable to ZO_LOG_LEVEL. #1119
  • Breaking: c: Renamed the ZOWEX_LOGS_DIR environmental variable to ZO_LOGS_DIR. #1119
  • Breaking: c: Renamed the ZOWEAX_PATH environmental variable to ZOA_PATH. #1119
  • Breaking: c: Renamed the ZOWEX_LOGS_DIR environmental variable to ZO_LOGS_DIR. #1119
  • Breaking: c: Renamed the ZOWEX_PLUGINS_DIR environmental variable to ZO_PLUGINS_DIR. #1119
  • Breaking: c: Renamed ZOWEX_PLUGIN_DECLARE_ABI() macro to ZO_PLUGIN_DECLARE_ABI(). #1119
  • Breaking: c: Renamed the zowex binary to zo, and the zoweax binary to zoa. #1119
  • c: Added JSON-RPC support for listing parmlib data sets. #1124
  • c: Added the zowex ds resolve-alias <dsn> command which allows the user to resolve data set aliases. #1108
  • c: Added zds_idcams utility function which allows the caller to execute the z/OS IDCAMS program and retrieve its output. #1108

v0.9.0

v0.9.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Aug 12:05

CLI Plug-in

  • Added the zssh issue console-command command. The --console-name option is now optional and defaults to the current user ID. #1112

Client SDK

  • Enable console commands through JSON-RPC. #1112

z/OS Components

  • c: unixCommand returns stderr in a new optional stderr response field. #1112
  • Breaking: c: zowex console command group is removed. #1112
  • Breaking: c: zoweax contains only the console command group and no longer supports plug-in loading. #1112
  • Breaking: c: Console commands are no longer issued with master authority. #1112
  • c: Console commands now use a unique CART instead of ZOWECART. #1112
  • c: The version command now reports the invoked binary's instead of always zowex. #1112
  • c: Preserve LRECL on PS write operations. #1109
  • c: Flipped to and from encoding arguments in error message to be accurate. #1106

v0.8.1

v0.8.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Aug 18:41

Client SDK

  • Fixed the SearchParser.parseSearchOutput function silently dropping matches when searching a sequential data set #1104

v0.8.0

v0.8.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Aug 10:50
4fb3c1d

CLI Plug-in

  • Added ESM (RACF or equivalent) certificate and key ring management to the zssh system command group over SSH: zssh system keyring create|delete|list|list-rings|count and zssh system cert import|export|delete|show|connect|set-default|trust|rename|refresh. #1079
  • Added --exact-match option to the zssh list data-set command. This option defaults to false for backwards compatibility, but can be set to true to avoid appending .** to the end of data set patterns. #914
  • Fixed attribute columns being displayed when zssh list data-set is run without the --attributes option. #1012

Client SDK

  • Added detection of available disk space on the z/OS Unix deployment directory in the ZSshUtils.installServer method, giving the user the opportunity to cancel deployment if they have less than the recommended amount of available space. #1088
  • Fixed server deploy/setup failing with "SSH setup cancelled" when connecting with a private key that requires a passphrase, even after entering the correct passphrase. #1094
  • Added a certificates client API for managing ESM (RACF or equivalent) key rings and digital certificates, exposing the following functions: createKeyring, deleteKeyring, refreshDigtcert, deleteCertificate, listCertificates, exportCertificate, importCertificate, showCertificate, listRings, countRing, connectCertificate, setDefaultCertificate, trustCertificate, and renameCertificate. #1079
  • Added recognition of Language Environment load failures. CEE3561S and CEE3501S error codes now produce an actionable error naming the required z/OS release and Language Environment APARs, with errorCode: "ELERUNTIME", instead of a generic "Error starting Zowe server." Startup output is now accumulated before it is classified, so a diagnostic split across reads is still recognized. #871
  • Added a verification step to installServer() that runs the installed server binary and reports whether the remote system can load it, so a runtime mismatch surfaces during installation rather than on the next operation. The target system level from the uname -srv command is included in the error details. #871
  • Added exactMatch property to the ListDatasetsRequest type. This option defaults to false for backwards compatibility, but can be set to true to avoid appending .** to the end of data set patterns. #914
  • When a command fails, a structured error payload attached by the server (e.g. the safReturns SAF/ESM codes from certificate commands) is now delivered to SDK consumers via the ImperativeError's causeErrors, instead of being flattened into the error text. #1079

z/OS Components

  • c: Stripped ASA control characters when reading spool files. #114
  • c: Fixed --local-encoding being ignored when reading spool files. The source codepage was never copied to the ZDS struct passed to zds_read, so the conversion always fell back to the default source encoding (UTF-8). #1097
  • c: Fixed an issue where passing numeric values to the encoding or local-encoding arguments would result in an empty string, as their argument definitions did not enable string coercion. Now, values provided to these options are converted to strings to ensure proper codepage conversion. #1095
  • c: Added ESM (RACF or equivalent) certificate and key ring management to the system command group, migrating the keyring-utilities functionality (R_datalib and System SSL) into zowex as two subgroups: system keyring create|delete|list|list-rings|count and system cert import|export|delete|show|connect|set-default|trust|rename|refresh. #1079
  • Breaking: c: Changed the plug-in SDK types ast::ObjMap and plugin::ArgumentMap from std::unordered_map to std::map, and added the ZOWEX_PLUGIN_ABI_VERSION constant with a matching load-time check. Plug-ins must now be rebuilt against the current extend/plugin.hpp and must expand ZOWEX_PLUGIN_DECLARE_ABI() alongside register_plugin(); a plug-in built against an earlier header is rejected at load time with a diagnostic instead of being loaded with mismatched type layouts. #871
  • c: Replaced the string-keyed std::unordered_map/std::unordered_set containers in zjson.hpp and the JSON-RPC server with the ordered std::map/std::set, removing the binary's dependency on the out-of-line libc++ symbol std::__1_e::__hash_memory. That symbol is absent from CRTEQCXE on z/OS systems below the required Language Environment maintenance level, where it caused CEE3561S at load time. JSON object members are now emitted in alphabetical key order rather than hash order; member order was never part of the API contract. #871
  • c: Pinned the build to Open XL C/C++ 2.1, since 2.2 requires z/OS 3.1+ and references a newer libc++ than a z/OS 2.5 system can provide. Added a declared minimum supported z/OS level, ZosMinLevel=zosv2r5 in native/c/toolchain.mk, passed to the compiler as -mzos-target. make runtime-imports (npm run z:imports) reports the LE/libc++ symbols the binary imports, and npm run lint:compat rejects string-keyed hash containers at the source level. #871
  • c: Added --exact-match option to the zowex ds list command. This option defaults to false for backwards compatibility, but can be set to true to avoid appending .** to the end of data set patterns. #914

v0.7.1

v0.7.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Aug 15:20
5f7c066

Client SDK

  • Fixed SSH connection softlocks and resource leaks when a connection drops or stalls during startup: the ZSshClient.create function now rejects when the connection closes before the server is ready or when a serverStartupTimeout (default 60s) elapses, cleans up the SSH connection on startup failure, rejects pending requests fast when the connection closes, and supports the keepAliveCountMax option (default 3). #1076
  • Fixed requests hanging until the response timeout when the Zowe Remote SSH server process ended while the SSH transport stayed healthy. ZSshClient now watches the server channel for the lifetime of the client and rejects requests written to a channel that is no longer writable. #1076
  • Fixed socket errors raised while tearing down a closed client being reported through the onError handler, which surfaced spurious errors to callers during a normal disconnect. #1076

z/OS Components

  • c: Fixed zowex server resource leaks that could exhaust a z/OS LPAR after a request timed out or a connection dropped. The shutdown signal handler no longer calls into the worker pool or logger, which could deadlock and leave the process running forever; the number of live force-detached worker threads is now bounded, and the server exits when the limit is exceeded so the system can reclaim them; late responses from a detached worker are discarded instead of being sent for an ID the client already failed; notifications are serialized with responses so concurrent writes cannot corrupt the JSON stream; and worker initializer threads are drained before the pool is destroyed. #537
  • c: Fixed an issue with zowex ds list-members when reading PDS directory blocks. [#1070] (#1070)

v0.7.0

v0.7.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Jul 20:48
3baab1b

Client SDK

  • Breaking: Updated the checkIfOutdated() utility to compare version numbers with semantic versioning rather than comparing checksums of the zowex program. Its parameter is changed to accept the version number of zowex on the remote system rather than checksums, and it is no longer an async method. #1073
  • Breaking: Removed the checksums.asc file from zowex server pax files and removed the serverChecksums getter method from the ZSshClient class. #1073
  • Added serverVersion getter method to the ZSshClient class. #1073
  • Added support to list link list data sets. #1061

z/OS Components

  • c: zowex plug-in loading is now opt-in: plug-ins are only loaded when the ZOWEX_PLUGINS_DIR environment variable is explicitly set, replacing the previous implicit <exec_dir>/plugins fallback. Added directory- and file-level ownership/permission checks before a plug-in is loaded, and rejected a plug-in command from registering if its name or an alias collides with a built-in verb or another plug-in's command. #1074
  • c: Added support to return information for current linklist. #1061

v0.6.1

v0.6.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jul 15:05

CLI Plug-in

  • Added --encoding flag to zssh submit local-file and zssh submit stdin commands to specify the encoding of the submitted JCL. #1050
  • Added zssh copy data-set command to copy data sets and members with optional --replace and --overwrite flags. Supports PDS-to-PDS, member-to-member, and sequential-to-sequential copies. #995
  • Added the zssh system view-syslog command to the CLI.

Client SDK

  • Added new functions to the ZSshUtils class called detectServerOnPath() and lacksWriteAccess(). #1055
  • Added support to list APF and PROCLIB data sets. #1029
  • Added support for viewing syslog.
  • Added response content for copy data sets and members operations. #995

z/OS Components

  • c: Implemented bounds checking and truncation for strings logged with the zwto_debug macro. #1059
  • c: Fixed an issue where data set member write operations did not produce self-contained records for stateful mixed single-byte and double-byte character sets. Now, each record written to a data set member is self-contained to avoid code page conversion errors. #1049
  • c: Fixed an issue where the zowex ds copy command would fail to allocate DDs when copying PDS members in parallel. #994
  • c: Added support for listing APF and PROCLIB data sets to JSON-RPC server.
  • c: Optimized Adler32 calculations to compute e-tags incrementally during streamed data set downloads. This significantly reduces memory footprint and resolves a failure when downloading large data sets. #1016
  • c: Fix regression on ENQ qname. #1027
  • c: Added z/OS recovery around JES operations in the zowex CLI binary to allow recovering from abends. #1011
  • Breaking: c: Renamed C function zjb_read_jobs_output_by_key in zjb.hpp to zjb_read_job_content_by_key to be consistent with `zjb_read_job_content_by_dsn.
  • c: Fixes issue where zowex failed to allocate sysout DDs that were dynamically allocated under z/OS UNIX. #840
  • c: Add command zowex system list-apf to list APF authorized data sets.
  • c: Fixed several vulnerabilities in C++ and Metal C code to improve stability. #997
  • c: Optimized USS file list operations by replacing CSV formatting and parsing with structured data transfer via the ZusfListEntry struct. This improves performance for zowex uss list and provides type-safe, programmatic access to file attributes for SDK consumers. #990
  • c: Fixed parsing of file names containing commas in USS list API responses, which caused data misalignment for SDK consumers. #989
  • c: Fixed an issue where the zoweax authorized CLI binary could run the server command or plugin command group as privileged. Now, zoweax disables privileges before commands are executed. Commands in the console group continue to run as privileged. #958
  • c: Added support for pre-command hooks in the command-line parser utility. #958
  • c: Fixes issue where ZWEPROLG could return to caller in an incorrect AMODE. #951
  • c: Improved error message when deleting a member fails because its parent PDS is open in ISPF. #916
  • c: Fixed an issue where incorrect values could be returned for the usedp (Used Space) and volsers (Volumes) attributes when listing data sets. #981
  • c: Fixed an issue where invalid data could be returned for attributes of PDS members. #1009
  • c: Fixed an issue where zowex system view-syslog could display invalid end time. #1017