-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable preliminary Windows support #190
Conversation
@Gottox is Awesome stuff so far! |
child_pty does only work on unix systems atm. There were some experiments with winpty but as I don't own a windows system to test it hasn't come that far yet. |
The main problem with winpty is that I refuse to ship winpty in binary. winpty itself has insane build deps requiring both, a cygwin and a MinGW toolchain. So for now I decided to keep it simple and only support unix systems. EDIT: I misread the Prerequisites, so MSYS should be enough. |
- enable preliminary cross-platform pty support on windows
I'm currently playing with a windows VM and nodejs. I let you know if I get it up and running. |
@Gottox looking forward to this! |
- setup initial script to install dependencies, build native modules - does not trigger packaging yet relates to #167
See ongoing process here: https://github.com/Gottox/child_pty/tree/windows |
I am just totally thrilled! I wonder if the windows build hyperterm will be able to attach to the terminal panel inside IntelliJ IDEA IDE ? |
This will take some time, I guess. winpty is quite different from the unix API... Especially I can't reuse child_process on windows, so a lot of stuff needs to be written. In order to get hyperterm on windows out fast, I guess switching back to pty.js is a better solution. |
Thanks for the update @Gottox. One thing I'd like to check before we temporarily switch back to this is: chatting with @Tyriar he shared some concerns about
|
The main issue with pty.js is that it must by run in a child process on OS X or it maxes out the CPU, see electron/electron#38 The current situation with vscode is that we do just that, but we don't use chjj/pty.js, instead we my personal fork of it Tyriar/pty.js which is a fork itself:
The purpose of the Tyriar/ fork is to gets it building on new node (which ptyw.js seems to do) and working with our build system (by removing prebuilt assets). I'm passively looking around for a maintained alternative that uses a newer version of winpty. |
pty.js has some issues with binding of functions. So |
Hey, There are already many forks of child_pty. Also some guys work on windows. The debt a second pty lib like pty.js would introduce in the project should be considered. |
Where are these windows forks your talking about? :) |
If there's any grunt work a newcomer to the project can do to help this along, let me know. |
I'd love to help, but I'm not sure what's needed here. |
@tyrbo child_pty needs windows support. There's a window branch in the child_pty repo. the branch includes the winpty project, but I haven't figured out how to intergrate it into child_pty. The hardest part is that winpty needs a custom exec method, so we cannot use child_process directly. |
can anybody share status of this issue/pr? |
@iamstarkov I think windows support is coming here: #946 |
Yes, I'm closing this on behalf of #946. Wish this could make it, but those PR seems much more ready-to-ship state. |
This PR consists couple of changes to enable preliminary support on Windows platform, by
child_pty
toptyw.js
: original module
pty
currently have known issues with windows build (Installation fails (max is not a template of std among others) chjj/pty.js#131), introducedptyw
until issue's fully resolved.appveyor
to trigger windows build.: currently only install dependenceis / bulid native modules, does not packaging it yet.
: resues existing install script (
install.sh
), so anyone want to build locally may require *nix shell environment still.As this PR replaces one of core module, I agree this can be risky change especially there isn't enough test coverage. Please feel freely reject if this need not to be considered at this moment.