Opened 3 years ago

Closed 21 months ago

#1782 closed task (wontfix)

Reduce number of Windows configurations by removing Cygwin support

Reported by: felix winkelmann Owned by:
Priority: major Milestone: 5.4
Component: build system Version: 5.2.0
Keywords: Cc:
Estimated difficulty: easy


There are a confusing number of different build configurations on Windows that cause us nothing but pain, influencing build style, directory separators, shell quoting and egg scripts. This number must be reduced. One first step would be to drop Cygwin support, as WSL makes it somewhat obsolete.

Change History (3)

comment:1 Changed 3 years ago by sjamaan

Milestone: someday5.4

comment:2 Changed 2 years ago by johnwcowan

There are a few reasons why WSL does not replace Cygwin, roughly in decreasing order of importance to me:

  1. Cygwin can be installed on almost any Windows system from Windows 7 onwards on either 32-bit or 64-bit machines; WSL works only on 64-bit Windows 10 or 11.
  1. Cygwin can be installed with or without admin privilege; WSL requires privilege. This is important if you want Chicken on a corporate machine, where you probably aren't going to have privilege.
  1. Cygwin's access to the filesystem is a few percent slower than native Windows. In WSL1, the "Linux" part of the filesystem is less performant; in WSL2, the "Windows native" part of the filesystem is much less performant.
  1. Cygwin binaries can be shipped to any Windows user as long as cygwin1.dll goes along with them. (This DLL used to be GPL but is now LGPL.) WSL binaries are just Linux binaries, and require either Linux or WSL installed at the destination.
  1. WSL does not interoperate with VirtualBox?, because they use incompatible hypervisor technology. (MS is working on this, but it's a big deal.)
  1. Cygwin applications have access to a subset of the Linux API, the WinNT supervisor API, and the Win32 or Win64 API. WSL applications have access only to the Linux API.

comment:3 Changed 21 months ago by felix winkelmann

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.