> В Net 3.5 сделали унифицированную подсистему- где обёртка а где перенаправление- без бутылки не разберешся.Возможно, если перестать пить и начать читать документацию, что-то получится.
> Поэтому и mono застопорилось,слишком много пришлось с wine портировать/ интегрировать.
Mono никуда не застопорилось, было радостно куплено MS-ом, а старый .NET Framework, который был родной для Windows оставлен для обратной совместимости рядом с DirectDraw, GDI и прочими технологиями прошлого.
Просто внутри .NET Framework существовали классы-обёртки над Win32, кусками ядра, реализацией XML и много чем еще из нативного мира. Банально реализация HTTP клиентов упиралась в Triedent, а реализаия TLS упиралась в schannel, который в Windows в ядре, а не как OpenSSL
Потом, когда они купили это всё они разделили .NET на 2 части:
- .NET Core - минимальные компоненты .NET, который имеют отношения только .NET и базовым нативным библиотекам, которые поставляются с ним в комплекте
- .NET Standard - расширение .NET Core, которое используется в Windows Desktop и содержит привязки к нативным библиотекам и компонентам Windows, которые не нужно портировать.
Сейчас Mono - переименовали и оно называется ".NET" версии начиная с 5 - это кодовая база Mono, которая теперь является основной. Сейчас вроде версия .NET 8 уже.
> на 98 Винде у народа внезапно куча не net приложения стала нормально работать, особенно с юникодной кодировкой.
В отличии от Windows 98 в любой версии .NET все строки всегда представлены исключительно в UTF-16. Windows 98 не поддерживает Unicode ни в формате UCS-2 (ранние версии WinNT до 2000), ни тем более ни в каком другом виде. Единственное, что там можно сделать - объявить Multi Byte String в рамках своего приложения и пользоваться ей на своё усмотрение, потому что вывод в DOS и версия WinAPI тех лет восьмибитная. В этом нет ничего внезапного.