crystal-lang / crystal-book

Crystal reference with language specification, manuals and learning materials
https://crystal-lang.org/reference
Other
392 stars 244 forks source link

Bump Windows platform to Tier 2 #772

Open Blacksmoke16 opened 1 month ago

Blacksmoke16 commented 1 month ago

Much progress has been made in regards to window support over the last years. While there are still some things here and there that need to be polished, there are no longer "major limitations" and things are expected to just work. As such, it seems like a reasonable step to bump Windows up to a Tier 2 level of support.

There is still work to be done to get it over the last hump to Tier 1, but this should be a welcomed change to show it is stable and supported.

Related: https://github.com/crystal-lang/crystal/issues/5430#issuecomment-2228661548

netlify[bot] commented 1 month ago

Deploy Preview for crystal-book ready!

Name Link
Latest commit 5a799df05afa5c7e854d8f9bd1425ed95badc6fa
Latest deploy log https://app.netlify.com/sites/crystal-book/deploys/669e6d43f274210008bab963
Deploy Preview https://deploy-preview-772--crystal-book.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

straight-shoota commented 1 month ago

I suppose the notion of major limitations is a bit subjective. In my opinion there are still too many rough edges in core parts of the standard library to consider it fully working on Windows. Especially spawning processes with shell semantics is a big unresolved question: https://github.com/crystal-lang/crystal/issues/9030, https://github.com/crystal-lang/crystal/issues/12873, https://github.com/crystal-lang/crystal/issues/14300

Btw, the effective difference between Tier 1 and 2 is that the latter either is not (fully) automatically tested or we don't provide official builds. We have both for Windows. So it would go directly into Tier 1 once we determine it fully working.

Blacksmoke16 commented 1 month ago

My thinking was, yes there are some things that still need polished, but it's not like where it was even a few years ago where there were a bunch of unchecked boxes in https://github.com/crystal-lang/crystal/issues/5430. I.e. sure if you try and use Process.new(command, args, shell: true) this specific command you might run into some wonkyness, but otherwise it works fine. Like the entirety of Athena CI passes on Windows so that at least says to me it's probably entirely fine for 95%+ of users. There just seems to be a lot of animosity around not having Windows support yet when that is just not true.

Maybe there's another solution to this, but to me tier 2's desc of:

The requirements for Tier 1 may be partially fulfilled, but are lacking in some way that prevents a solid gurantee.

Is a better statement in regards to how well developed support is than tier 3's desc of:

but there are some major limitations. Most typically, some parts of the standard library are not supported completely

Given "lacking in some way" equates to things being rough around the edges but otherwise is "expected to work", versus just not working at all.

:shrug:

Blacksmoke16 commented 2 weeks ago

Is that just a documentation change? Only reference I could find was https://github.com/crystal-lang/distribution-scripts/blob/1b7fb7ff2a2a9d535ec95dd3aedbf8e1fc627212/processes/crystal-release.md?plain=1#L59-L61. So seemingly would be an easy change. Are we wanting to go with the -portable.zip proposed over in https://github.com/crystal-lang/crystal/issues/5430#issuecomment-2232059612?

beta-ziliani commented 5 days ago

It's a documentation change, plus a post noting the new status and name