which provide functionality similar to a Linux distribution on Windows ˒ A DLL (cygwin1.dll) which provides substantial POSIX API functionality Cygwin is... 5 h tt ps://cygwin.com/
→ package becomes orphaned ˒ Orphaned = no active maintainer ˒ Ruby went orphaned after 2.6 ˒ Ruby commi tt ers had no Cygwin maintainer either [1] The Orphaned Package 11 [1] h tt ps://github.com/ruby/ruby/blob/master/doc/maintainers.md
📦 ruby (3.2.2) Wants to install Which ABI? ˒ New Ruby → ABI changes → gems must be rebuilt ˒ The installer had no way to know which Ruby ABI each gem was built for ˒ → Unable to resolve dependencies 31
the release ˒ gdb investigation, but hard to use e ff ectively ˒ With AI's step-by-step guidance, narrowed down the cause Climbing Again: 3.2 to 3.4 — Debugging with AI 35
˒ 3.2 was fi ne: linked against libssl 1.1 ˒ Shipped with 3.4.7, after libssl resolved the issue ˒Lesson: sometimes the bug is outside Ruby Climbing Again: 3.2 to 3.4 — Root Cause & Resolution 36
Ruby HEAD ˒ Fix issues upstream, reduce local patches ˒ Led to several upstream PRs ˒ #9269 (#9357), #11952, #14870 Running CI Myself — and What I Found 38
de fi ned(__CYGWIN__) ˒ native_thread_init_stack() was skipped ˒ Tried removing the exclusion → SEGV was gone ˒ But why? 🤔 ˒ Kept digging to fi nd the reason #9269: Use native_thread_init_stack — Problem 40
→ exclusion was justi fi ed ˒ Cygwin fi xed signal stack in 2015 [2] ˒ Code outlived the reason #9269: Use native_thread_init_stack — Investigation 41 [1] h tt ps://github.com/ruby/ruby/commit/6957c6d9cf0b6a1e211c4b0175bc5474296f2031 [2] h tt ps://github.com/cygwin/cygwin/commit/c8432a01c8401c121940c806a9d868c4adc4cefd
to ˒ Fills a Dl_info struct with the result ˒ dli_fname member holds the library fi le path ˒ libname holds dli_fname... #11952: Avoid dangling pointer — Problem: The Code 46
47 Linux [1] Cygwin [2] [1] h tt ps://sourceware.org/git/?p=glibc.git;a=blob;f=dlfcn/dlfcn.h [2] h tt ps://github.com/cygwin/cygwin/blob/main/winsup/cygwin/include/dlfcn.h
in POSIX Issue 8 (2024) ˒ Cygwin: 2017 [1] ˒ Each platform de fi ned types independently #11952: Avoid dangling pointer — Investigation: Background 48 [1] h tt ps://github.com/cygwin/cygwin/commit/c8432a01c8401c121940c806a9d868c4adc4cefd
The executable bit was not set on the copy #14870: Fix extension fi le permissions in namespace feature — Investigation: Permission 53 -rwxr-xr-x openssl.so -rw-r--r-- openssl.so Copy by fwrite
ACL → ERROR_ACCESS_DENIED ˒ Not o ff icially documented, but widely known behavior #14870: Fix extension fi le permissions in namespace feature — Investigation: Implementation 54
Deepened understanding of the packaging system ˒ Encountered a new debugging experience ˒ A dependency-blocked release tackled with AI Looking Back — Packaging Journey 60