Support for Windows
Support for the Windows platform would be nice. As a member of the open source community (not acting officially with any company), here are some things I noticed that stand in the way of full Windows support.
Cloning the repo on Windows
Currently the Git repo cannot be cloned on Windows.
This file has a backslash in its name:
pkl-core/src/test/files/LanguageSnippetTests/input-helper/globtest/\moduleC.pkl
Since Windows uses the backslash a path separator, it is unable to create this file. Cloning fails with this error message:
error: invalid path 'pkl-core/src/test/files/LanguageSnippetTests/input-helper/globtest/\moduleC.pkl' fatal: unable to checkout working tree
I tried working around this by doing a sparse checkout and have not had success. Git appears to validate path names before applying the sparse checkout filter.
Additionally, there are two directories with colons in the name. By default Git on Windows does not like these paths, but that could be worked around by setting git config core.protectNTFS false.
- pkl-doc/src/test/files/DocGeneratorTest/output/data/localhost:12110
- pkl-doc/src/test/files/DocGeneratorTest/output/localhost:12110
Building on Windows
Not yet attempted.
CI support for Windows
Net yet attempted
Release builds on Windows
Net yet attempted
Evidently enough, we haven't tried developing on Windows yet :D
Thanks for the report. We do plan on supporting Windows, so this is helpful.
In the short term, I found a work around: checkout the code in WSL and point IntelliJ at it:
https://www.jetbrains.com/help/idea/how-to-use-wsl-development-environment-in-product.html
I am re-purposing this issue to track Pkl support for Windows, and pointing other issues to this one.
Is it possible to build native executables on windows as of now?
A great first step would be to fix the Git clone issues. They block all other work/contributions.
I updated the description of the issue to reflect the broader scope that as been assigned to this issue. I don't know know how issue editing permissions work in GitHub, so feel free to update the issue description as you see fit. Or close this in favor an issue that the maintainers of this project control if that is more convenient.
Is it possible to build native executables on windows as of now?
It is not actively supported. @translatenix makes a valid point about cloning needing to be fixed first. Native executables are part of "done" for this issue.
Extending the above comments about WSL, you can simply type bash in PowerShell to put your current terminal instance into a WSL bash shell. It's what I have been doing to test this on Windows. Saves faffing about with cd 🤣
Some additional items to add to this:
- [ ] Paths on windows are not case sensitive but things like internal whitelisting checks are. AKA
--allowed-modules file:///c:/myPath/to/Somethingwill fail when it expects a capital drive letter--allowed-modules file:///C:/myPath/to/Somethingwill work - [ ] backslash paths explode, windows allows forward slash paths too though so can work around
- [ ] Windows absolute paths fail as file:// is not appended as it is for linux paths, calling with "c:/myPath/to/Something/test.pkl" when adding "c:/myPath/to/Something" will fail with "MalformedURLException: unknown protocol: c"
- [ ]
/myPath/to/Somethingis transformed into:file:///myPath/to/Something;./myPath/to/Somethingis transformed tofile:///C:/myPath/to/Something;c:/myPath/to/Somethingjust fails (per above) ;file:///c:/myPath/To/Somethingwill work, but is not whitelisted by either offile:///myPath/to/Something/file:///C:/myPath/to/Somethingthere is https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfinalpathnamebyhandlea which will return the full final path to the handle opened it will return it likeFinalPath: \\?\C:\myPathbut that is easy enough to translate to file:/// form.
Please fix this. I want to try to mess around with Pkl but only own a windows machine.
@Ai-N3rd my PR #241 or #237 include details on how to acquire and use the java version of PKL on windows. Not the most convenient given some of the above but it certainly works.
This is now available in Pkl 0.26!