Skip to content

Conversation

@doorgan
Copy link
Collaborator

@doorgan doorgan commented Nov 18, 2025

Adds support for Windows
Closes #89
Fixes #60

Also adds a just start-tcp task to start a plain release in TCP mode for development because expert builds burrito releases SO SLOW on my windows machine that it spent more time waiting for the build than actually working on the relevant changes

One note here is that this implementation uses the user's globally installed elixir on Windows. I don't know if there's any version manager like mise/asdf/nix on windows, if there is we'll need to get the PATH for the project folder like we do for Unix

Another note is that for reasons I don't yet understand windows is way slower than unix even on my beefy machine, so I had to increase the timeouts for a few tests. I was also seeing a few timing issues due to this that I hope were reliably mitigated.

@doorgan

This comment was marked as outdated.

@doorgan

This comment was marked as resolved.

@doorgan doorgan force-pushed the doorgan/windows-support branch 5 times, most recently from 43c27ad to c938c4a Compare November 20, 2025 10:46
@doorgan
Copy link
Collaborator Author

doorgan commented Nov 21, 2025

There's a few tests failing on windows that I need to fix but this puppy can run
image

@doorgan doorgan marked this pull request as ready for review November 21, 2025 21:34
Comment on lines -168 to -180
defp app_globs do
app_globs = Enum.map(@allowed_apps, fn app_name -> "/**/#{app_name}*/ebin" end)
["/**/priv" | app_globs]
end

def glob_paths(_) do
entries =
for entry <- :code.get_path(),
entry_string = List.to_string(entry),
entry_string != ".",
Enum.any?(app_globs(), &PathGlob.match?(entry_string, &1, match_dot: true)) do
entry
end
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows was not finding the files on windows with the old code

@doorgan doorgan force-pushed the doorgan/windows-support branch from 3b99b09 to c476bd9 Compare November 21, 2025 22:40
@doorgan doorgan force-pushed the doorgan/windows-support branch 3 times, most recently from 0f11f1a to 9269f26 Compare November 26, 2025 05:08
@mhanberg
Copy link
Member

Is this ready for review?

@doorgan
Copy link
Collaborator Author

doorgan commented Nov 26, 2025

@mhanberg almost, there's a few failing tests on windows I'm fixing. I'll tag you when it is.

@doorgan doorgan force-pushed the doorgan/windows-support branch from 9269f26 to bf7cb5f Compare November 26, 2025 19:19
@doorgan doorgan force-pushed the doorgan/windows-support branch from 86651c4 to 1e93243 Compare November 27, 2025 02:49
@doorgan
Copy link
Collaborator Author

doorgan commented Nov 27, 2025

@mhanberg it's ready for review now!

@doorgan doorgan requested a review from mhanberg November 27, 2025 03:23
@lakako
Copy link

lakako commented Dec 4, 2025

mise support windows. https://mise.jdx.dev/installing-mise.html#windows-winget

@mhanberg
Copy link
Member

mhanberg commented Dec 4, 2025

@mhanberg it's ready for review now!

Sorry, got lost in the holiday jumble. The recent comment made me remember this. I'll try and review and get it running.

@mhanberg
Copy link
Member

mhanberg commented Dec 9, 2025

Sorry, still haven't gotten a chance, i have to climb under my desk and plug my desktop into the monitor 😭.

Will try and get to it soon. If someone else who runs windows wants to test this out, it would be a great boon!

@rad96
Copy link

rad96 commented Dec 11, 2025

Hi
I compiled it on my windows machine with just release-local
There was no compilation errors outside of initial changes to justfile to use my pwsh as shell and variable passing. And xz installation
How do I check if it works?

I tried to invoke it in terminal - got error (I checked, file exists)

> .\expert_windows_amd64.exe
Failed to open arguments file "C:\Users\╨Р╤А╤В╨╡╨╝\AppData\Local\.burrito\expert_erts-16.2_0.1.0\releases\0.1.0\vm.args" at "C:\Users\└ЁЄхь\zig_projects\expert\apps\expert\burrito_out": No such file or directory
Usage: erl [-version] [-sname NAME | -name NAME] [-noshell] [-noinput] [-env VAR VALUE] [-compile file ...] [-start_erl [datafile]] [-make] [-man [manopts] MANPAGE] [-x] [-emu_args] [-start_epmd BOOLEAN] [-emu_type TYPE] [-emu_flavor FLAVOR] [-args_file FILENAME] [+A THREADS] [+a SIZE] [+B[c|d|i]] [+c [BOOLEAN]] [+C MODE] [+dcg DECENTRALIZED_COUNTER_GROUPS_LIMIT] [+h HEAP_SIZE_OPTION] [+J[Pperf|Msingle] JIT_OPTION] [+M<SUBSWITCH> <ARGUMENT>] [+P MAX_PROCS] [+Q MAX_PORTS] [+r] [+rg READER_GROUPS_LIMIT] [+s<SUBSWITCH> SCHEDULER_OPTION] [+S NO_SCHEDULERS:NO_SCHEDULERS_ONLINE] [+SP PERCENTAGE_SCHEDULERS:PERCENTAGE_SCHEDULERS_ONLINE] [+T LEVEL] [+V] [+v] [+W<i|w|e>] [+z MISC_OPTION] [args ...]

I tried to pass it to zed by next construction, it was failing.

"lsp": {
    "expert": {
      "binary": {
        "path": "C:/Users/Артем/zig_projects/expert/apps/expert/burrito_out/expert_windows_amd64.exe"
      }
    }
  }
Language server expert:

initializing server expert, id 19: Server reset the connection
-- stderr --
Usage: erl [-version] [-sname NAME | -name NAME] [-noshell] [-noinput] [-env VAR VALUE] [-compile file ...] [-start_erl [datafile]] [-make] [-man [manopts] MANPAGE] [-x] [-emu_args] [-start_epmd BOOLEAN] [-emu_type TYPE] [-emu_flavor FLAVOR] [-args_file FILENAME] [+A THREADS] [+a SIZE] [+B[c|d|i]] [+c [BOOLEAN]] [+C MODE] [+dcg DECENTRALIZED_COUNTER_GROUPS_LIMIT] [+h HEAP_SIZE_OPTION] [+J[Pperf|Msingle] JIT_OPTION] [+M<SUBSWITCH> <ARGUMENT>] [+P MAX_PROCS] [+Q MAX_PORTS] [+r] [+rg READER_GROUPS_LIMIT] [+s<SUBSWITCH> SCHEDULER_OPTION] [+S NO_SCHEDULERS:NO_SCHEDULERS_ONLINE] [+SP PERCENTAGE_SCHEDULERS:PERCENTAGE_SCHEDULERS_ONLINE] [+T LEVEL] [+V] [+v] [+W<i|w|e>] [+z MISC_OPTION] [args ...]

I did not tried lexical, because, as I understand, it does not support windows - lexical-lsp/lexical#762

@mhanberg
Copy link
Member

Is your username obfuscated there are did it actually print out the weird Unicode characters?

@rad96
Copy link

rad96 commented Dec 11, 2025

@mhanberg It's Артем, Cyrillic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

windows support status just release-local does not find mix.exs

5 participants