Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

No AIX/IBM i PASE support (forkpty/openpty missing, but Unix98 primitives work)

Open
#963 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
c, node.js

Research direction

Start at the PtyFork and PtyOpen call sites and inspect the existing platform branches, then review the OS=="os400" link settings in binding.gyp. Compare the AIX/PASE Unix98 PTY behavior described here with the current Unix implementations. Done means IBM i 7.5 PASE builds without -lutil and the node-pty JS API supports spawning, interactive echo, resize(), and exit callbacks.

Written by the indexing model from the issue text.

Description

forkpty(3)/openpty(3) (BSD convenience wrappers) don't exist on AIX/PASE — no header declares them. However, the underlying POSIX Unix98 primitives (posix_openpt, grantpt, unlockpt, ptsname) are present and fully functional (confirmed with a standalone test: opening a pty, forking, setsid() + open() of the slave without O_NOCTTY is enough to acquire it as the controlling terminal — no TIOCSCTTY needed, and it isn't even defined on this platform).

Proposed fix: an #elif defined(_AIX) branch providing pase_forkpty()/pase_openpty() built on those primitives, wired into the two call sites in PtyFork/PtyOpen, plus removing -lutil from the link step for OS=="os400" in binding.gyp (that library doesn't exist on PASE and isn't needed once forkpty/openpty aren't used directly).

Validated end-to-end on IBM i 7.5 PASE (gcc-12, Node 22): compiled cleanly, spawned a real bash shell through node-pty's JS API, confirmed interactive echo (readline), resize(), and the exit-code callback all work correctly. Also confirmed live through the actual RemoteForI Server (a fork of openvscode-server) in a real browser.

Happy to open a PR with the full patch if useful.

Dominant language
TypeScript
Stars
2k
Forks
337
Avg merge
21h 58m
Merged PRs (30d)
3

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/node-pty

All issues in microsoft/node-pty

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.