Repository navigation
Releases: zowe/zo
Releases · zowe/zo
Release list
v1.1.0
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 vsamcommand with--eraseand--purgeoptions 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
execSubmittedandexecEndedfor 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
deleteVsamcommand 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. #1198c: Added z/OSMF-compatibleexecSystem,execMember,execSubmitted,execStarted, andexecEndedfields to job list and status JSON responses, enabling submitted-date and completed-date sorting. #1187python: Exposed job execution metadata and UTC timestamps through the job bindings. #1187- Added the
zo ds delete-vsamcommand and thedeleteVsamRPC method to delete VSAM clusters with optional erase and purge behavior. #490
v1.0.2
CLI Plug-in
- Corrected the
create data-set-membersuccess message to sayMemberinstead ofDataset. #639
Client SDK
- Fixed an error when issuing streamed RPC requests to a
zowexserver 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
SessionContextclass to cache SSH connections so they can be reused across utility methods. #1144
z/OS Components
c: Clarified thezowex ds create-membersuccess message to indicate it creates only the member and not the data set. #639c: Fixed the--encodinghelp text forzowex data-set write,zowex uss write, andzowex job submit-jcl, which described reading contents instead of converting the input. #649c:ResultTablecolumns are now named (add_column("name", width)), anddata-set list,data-set list-members,job list,job list-files, andjob view-statusaccept a new--response-format-header/--rfhoption that prints those names as a header row in table and CSV output.c: Added a--jsonoption tozowexcommands, which prints the command's result to stdout as a single line of JSON (success,exitCode,data,stderr) so callers can parse it without startingzowex server. #837c: Fixedzowex job list-files --response-format-csvrepeating every preceding record's fields at the start of each row, so only the first row had the documented five fields.c: Fixedzowex uss listonly returning structured results when--response-format-csvwas also passed. #1128c: Fixedplugin::Io::is_redirecting_error()andis_redirecting_input()reporting the state of the output stream instead of their own. #1128c: Fixed a plug-in that registers an argument conflicting with an existing name or alias abortingzowexfor every command instead of being rejected with a logged diagnostic. #1128python: Addedpackage_precompiled.pytool to package precompiled binary assets (equivalent to Python wheels) intozbind_bin_dist.tar.gzfor instant compiler-free installation.python: Addedpackage_zbind.pytool 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_EXTand_OPEN_SYS_FILE_EXTto the compiler insetup.py.- Reduced the size of the
zobinary by over 40% (10MB -> 6MB) by optimizing the codebase. #1166 python: Fixed the Python bindings compiling the sharednative/csources with-fzos-le-char-mode=ascii, which flipped their execution charset to ASCII and broke every data set and job binding. #1121python:list_data_setsacceptsshow_attributessodsorg,volser,recfmandmigratedcan be populated. #1121python: Fixedget_job_statusreturning unconverted EBCDIC strings andcreate_data_setraising errors with an empty message. #1121python: Fixedlist_jobs_by_ownerfailing when no job name prefix is given. #1121python: 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, andwrite_uss_file/write_uss_file_streamednot converting etags, between ASCII and EBCDIC. #1121
v1.0.1
CLI Plug-in
- Added
--response-timeoutoption 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.installServermethod to delete thezoprogram if the installation process failed while extracting theserver.pax.Zfile. #1143 - Fixed an error where
zowexis not found on the PATH if the OMVS shell is Bash. The expected behavior is that thezowexbinary is automatically deployed. #1141 - Exported the
ZSshConstantsmodule so that extenders can access its constants. #1142
z/OS Components
- Fixed worker threads timing out in the
zoRPC server for a long upload or download operation that exceeds the request timeout. #988 c: Adjusted the size of theetagfield to improve compatibility with z/OS UNIX files. #1140c: Rejected oversized data set etags before copying them into request storage. #1140c: Rejected oversized USS file etags before copying them into request storage. #1140
v1.0.0
CLI Plug-in
- The
zowextop level command group of this plug-in has been renamed tozo.zowexandzsshwill still function as aliases. #1119 - Added the
zssh files list aliascommand to the CLI. #1108
Client SDK
- Breaking The
zowexprogram bundled inserver.pax.Zis now renamed tozo. #1119 - Added JSON-RPC support for listing parmlib data sets. #1124
- Added support for the
resolveDsAliasRPC command which allows the caller to resolve data set aliases. #1108
z/OS Components
- Breaking:
c: Renamed theZOWEX_NUM_WORKERSenvironmental variable toZO_NUM_WORKERS. #1119 - Breaking:
c: Renamed theZOWEX_LOG_LEVELenvironmental variable toZO_LOG_LEVEL. #1119 - Breaking:
c: Renamed theZOWEX_LOGS_DIRenvironmental variable toZO_LOGS_DIR. #1119 - Breaking:
c: Renamed theZOWEAX_PATHenvironmental variable toZOA_PATH. #1119 - Breaking:
c: Renamed theZOWEX_LOGS_DIRenvironmental variable toZO_LOGS_DIR. #1119 - Breaking:
c: Renamed theZOWEX_PLUGINS_DIRenvironmental variable toZO_PLUGINS_DIR. #1119 - Breaking:
c: RenamedZOWEX_PLUGIN_DECLARE_ABI()macro toZO_PLUGIN_DECLARE_ABI(). #1119 - Breaking:
c: Renamed thezowexbinary tozo, and thezoweaxbinary tozoa. #1119 c: Added JSON-RPC support for listing parmlib data sets. #1124c: Added thezowex ds resolve-alias <dsn>command which allows the user to resolve data set aliases. #1108c: Addedzds_idcamsutility function which allows the caller to execute the z/OS IDCAMS program and retrieve its output. #1108
v0.9.0
CLI Plug-in
- Added the
zssh issue console-commandcommand. The--console-nameoption is now optional and defaults to the current user ID. #1112
Client SDK
- Enable console commands through JSON-RPC. #1112
z/OS Components
c:unixCommandreturns stderr in a new optionalstderrresponse field. #1112- Breaking:
c:zowexconsolecommand group is removed. #1112 - Breaking:
c:zoweaxcontains only theconsolecommand 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 ofZOWECART. #1112c: Theversioncommand now reports the invoked binary's instead of alwayszowex. #1112c: Preserve LRECL on PS write operations. #1109c: Flipped to and from encoding arguments in error message to be accurate. #1106
v0.8.1
Client SDK
- Fixed the
SearchParser.parseSearchOutputfunction silently dropping matches when searching a sequential data set #1104
v0.8.0
CLI Plug-in
- Added ESM (RACF or equivalent) certificate and key ring management to the
zssh systemcommand group over SSH:zssh system keyring create|delete|list|list-rings|countandzssh system cert import|export|delete|show|connect|set-default|trust|rename|refresh. #1079 - Added
--exact-matchoption to thezssh list data-setcommand. 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-setis run without the--attributesoption. #1012
Client SDK
- Added detection of available disk space on the z/OS Unix deployment directory in the
ZSshUtils.installServermethod, 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
certificatesclient 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, andrenameCertificate. #1079 - Added recognition of Language Environment load failures.
CEE3561SandCEE3501Serror codes now produce an actionable error naming the required z/OS release and Language Environment APARs, witherrorCode: "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 theuname -srvcommand is included in the error details. #871 - Added
exactMatchproperty to theListDatasetsRequesttype. 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
safReturnsSAF/ESM codes from certificate commands) is now delivered to SDK consumers via theImperativeError'scauseErrors, instead of being flattened into the error text. #1079
z/OS Components
c: Stripped ASA control characters when reading spool files. #114c: Fixed--local-encodingbeing ignored when reading spool files. The source codepage was never copied to theZDSstruct passed tozds_read, so the conversion always fell back to the default source encoding (UTF-8). #1097c: Fixed an issue where passing numeric values to theencodingorlocal-encodingarguments 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. #1095c: Added ESM (RACF or equivalent) certificate and key ring management to thesystemcommand group, migrating thekeyring-utilitiesfunctionality (R_datalib and System SSL) intozowexas two subgroups:system keyring create|delete|list|list-rings|countandsystem cert import|export|delete|show|connect|set-default|trust|rename|refresh. #1079- Breaking:
c: Changed the plug-in SDK typesast::ObjMapandplugin::ArgumentMapfromstd::unordered_maptostd::map, and added theZOWEX_PLUGIN_ABI_VERSIONconstant with a matching load-time check. Plug-ins must now be rebuilt against the currentextend/plugin.hppand must expandZOWEX_PLUGIN_DECLARE_ABI()alongsideregister_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-keyedstd::unordered_map/std::unordered_setcontainers inzjson.hppand the JSON-RPC server with the orderedstd::map/std::set, removing the binary's dependency on the out-of-line libc++ symbolstd::__1_e::__hash_memory. That symbol is absent fromCRTEQCXEon z/OS systems below the required Language Environment maintenance level, where it causedCEE3561Sat 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. #871c: 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=zosv2r5innative/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, andnpm run lint:compatrejects string-keyed hash containers at the source level. #871c: Added--exact-matchoption to thezowex ds listcommand. 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
Client SDK
- Fixed SSH connection softlocks and resource leaks when a connection drops or stalls during startup: the
ZSshClient.createfunction now rejects when the connection closes before the server is ready or when aserverStartupTimeout(default 60s) elapses, cleans up the SSH connection on startup failure, rejects pending requests fast when the connection closes, and supports thekeepAliveCountMaxoption (default 3). #1076 - Fixed requests hanging until the response timeout when the Zowe Remote SSH server process ended while the SSH transport stayed healthy.
ZSshClientnow 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
onErrorhandler, which surfaced spurious errors to callers during a normal disconnect. #1076
z/OS Components
c: Fixedzowex serverresource 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. #537c: Fixed an issue withzowex ds list-memberswhen reading PDS directory blocks. [#1070] (#1070)
v0.7.0
Client SDK
- Breaking: Updated the
checkIfOutdated()utility to compare version numbers with semantic versioning rather than comparing checksums of thezowexprogram. Its parameter is changed to accept the version number ofzowexon the remote system rather than checksums, and it is no longer anasyncmethod. #1073 - Breaking: Removed the
checksums.ascfile fromzowexserver pax files and removed theserverChecksumsgetter method from theZSshClientclass. #1073 - Added
serverVersiongetter method to theZSshClientclass. #1073 - Added support to list link list data sets. #1061
z/OS Components
c:zowexplug-in loading is now opt-in: plug-ins are only loaded when theZOWEX_PLUGINS_DIRenvironment variable is explicitly set, replacing the previous implicit<exec_dir>/pluginsfallback. 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. #1074c: Added support to return information for current linklist. #1061
v0.6.1
CLI Plug-in
- Added
--encodingflag tozssh submit local-fileandzssh submit stdincommands to specify the encoding of the submitted JCL. #1050 - Added
zssh copy data-setcommand to copy data sets and members with optional--replaceand--overwriteflags. Supports PDS-to-PDS, member-to-member, and sequential-to-sequential copies. #995 - Added the
zssh system view-syslogcommand to the CLI.
Client SDK
- Added new functions to the
ZSshUtilsclass calleddetectServerOnPath()andlacksWriteAccess(). #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 thezwto_debugmacro. #1059c: 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. #1049c: Fixed an issue where thezowex ds copycommand would fail to allocate DDs when copying PDS members in parallel. #994c: 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. #1016c: Fix regression on ENQ qname. #1027c: Added z/OS recovery around JES operations in thezowexCLI binary to allow recovering from abends. #1011- Breaking:
c: Renamed C functionzjb_read_jobs_output_by_keyin zjb.hpp tozjb_read_job_content_by_keyto be consistent with `zjb_read_job_content_by_dsn. c: Fixes issue wherezowexfailed to allocatesysoutDDs that were dynamically allocated under z/OS UNIX. #840c: Add commandzowex system list-apfto list APF authorized data sets.c: Fixed several vulnerabilities in C++ and Metal C code to improve stability. #997c: Optimized USS file list operations by replacing CSV formatting and parsing with structured data transfer via theZusfListEntrystruct. This improves performance forzowex uss listand provides type-safe, programmatic access to file attributes for SDK consumers. #990c: Fixed parsing of file names containing commas in USS list API responses, which caused data misalignment for SDK consumers. #989c: Fixed an issue where thezoweaxauthorized CLI binary could run theservercommand orplugincommand group as privileged. Now,zoweaxdisables privileges before commands are executed. Commands in theconsolegroup continue to run as privileged. #958c: Added support for pre-command hooks in the command-line parser utility. #958c: Fixes issue where ZWEPROLG could return to caller in an incorrect AMODE. #951c: Improved error message when deleting a member fails because its parent PDS is open in ISPF. #916c: Fixed an issue where incorrect values could be returned for theusedp(Used Space) andvolsers(Volumes) attributes when listing data sets. #981c: Fixed an issue where invalid data could be returned for attributes of PDS members. #1009c: Fixed an issue wherezowex system view-syslogcould display invalid end time. #1017