No AIX/IBM i PASE support (forkpty/openpty missing, but Unix98 primitives work)
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
- Domain
- devtools, operating-systems
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/node-pty
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
All issues in microsoft/node-pty
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
melgarafael/DeskcommCRM#1812 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
prisma/prisma-cli#309 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gregwebs/pi-quota-dispatcher#26 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
openwatersio/slackwater.xyz#124 ·
Maintainers usually reply within 1 day
-
agent-reported area/browser area/docs documentation good first issue hacktoberfest help wanted P2
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Maintainers usually reply within 2 days