expert icon indicating copy to clipboard operation
expert copied to clipboard

feat: windows support

Open doorgan opened this issue 1 month ago • 6 comments

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 avatar Nov 18 '25 21:11 doorgan

Currently investigating an odd error preventing the engine from being built:

Building engine: Runtime terminating during boot ({'cannot get bootfile','C:\\Users\\Dorgan\\AppData\\Local\\.burrito\\expert_erts-16.1.1_0.1.0/bin/start.boot'})

But, I can build and run expert at least

doorgan avatar Nov 18 '25 21:11 doorgan

Making progress, now debugging this error that came back for some reason:

15:44:02.538 [info] Engine build available at: c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns
15:44:02.594 [info] ebin paths:
["c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/mix_install/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/patch/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_bunt/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_credo/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_deps_nix/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_elixir_sense/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_engine/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_file_system/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_forge/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_gen_lsp/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_hpax/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_jason/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_mint/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_nimble_options/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_nimble_parsec/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_path_glob/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_refactorex/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_schematic/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_snowflake/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_sourceror/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_telemetry/ebin",
 "c:/Users/Dorgan/AppData/Local/Expert/0.1.0/ex-1.19.3-erl-16.1.1/VjE49oK-HQYk-UkxL9dpkw/_build/dev_ns/lib/xp_typed_struct/ebin"]
15:44:02.645 [debug] sent notification server -> client $/progress
15:44:02.899 [debug] Node port message: ** (MatchError) no match of right hand side value:

    {:error,
     {{:shutdown,
       {:failed_to_start_child, XPForge.EPMD,
        {:EXIT,
         {:undef,
          [
            {XPForge.EPMD, :start_link, [], []},
            {:supervisor, :do_start_child_i, 3,
             [file: ~c"supervisor.erl", line: 996]},
            {:supervisor, :do_start_child, 3, [file: ~c"supervisor.erl", line: 982]},
            {:supervisor, :"-start_children/2-fun-0-", 3,
             [file: ~c"supervisor.erl", line: 966]},
            {:supervisor, :children_map, 4, [file: ~c"supervisor.erl", line: 1891]},
            {:supervisor, :init_children, 2, [file: ~c"supervisor.erl", line: 932]},
            {:gen_server, :init_it, 2, [file: ~c"gen_server.erl", line: 2276]},
            {:gen_server, :init_it, 6, [file: ~c"gen_server.erl", line: 2236]}
          ]}}}},
      {:child, :undefined, :net_sup_dynamic,
       {:erl_distribution, :start_link,
        [
          %{
            name: :"[email protected]",
            supervisor: :net_sup_dynamic,
            net_tickintensity: 4,
            net_ticktime: 60,
            name_domain: :longnames,
            clean_halt: false
          }
        ]}, :permanent, false, 1000, :supervisor, [:erl_distribution]}}}

    (stdlib 7.1) erl_eval.erl:672: :erl_eval.expr/6
    nofile:1: (file)
    (elixir 1.19.3) lib/code.ex:629: Code.validated_eval_string/3

doorgan avatar Nov 19 '25 20:11 doorgan

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

doorgan avatar Nov 21 '25 21:11 doorgan

Is this ready for review?

mhanberg avatar Nov 26 '25 12:11 mhanberg

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

doorgan avatar Nov 26 '25 13:11 doorgan

@mhanberg it's ready for review now!

doorgan avatar Nov 27 '25 03:11 doorgan

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

lakako avatar Dec 04 '25 14:12 lakako

@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 avatar Dec 04 '25 15:12 mhanberg