- 1
https://blogs.msdn.microsoft.com/commandline/2018/03/07/windows10v1803/
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://blogs.msdn.microsoft.com/commandline/2018/03/07/windows10v1803/
в винду завезли far, openssh и AF_UNIX (aka unix domain sockets), хотя раньше были только named pipes.
Мне кажется что скоро завезут подсистему tty и posix-compatible шел
tar завезли
я рукожоп
Да и линуксы нынче не те: с dbusами, polkitами и systemd
Subsystem указывался в заголовке PE (опция линковщика я полагаю).
Причем подсистемы должны были крутиться отдельными процессами: (отсюда Client-Server-Runtime-Subsystem для win32, psxss для позикс, ntvdm для V86 тоже в каком-то смысле)
Posix (точнее его малую часть) завезли чтобы получить сертификат американского минобороны.
Ну а потом на все подсистемы забили хуйца и теперь кроме Win32API других нормальных API нету.
зы: ситуация напоминает .NET: там тоже хотели чтобы было миллион языков, а в итоге 80% кода под .NET написано на C#.
В целом .NET более рекомендуемый API для винды чем Win32API: MS говорит что если ты можешь что-то написать на .NET то лучше так и сделай
А как можно отказаться от .dll?
Чем заменить?
Как в Linux ABI что-ль?
Кстати, kernel32 уже тоже разобрали по колышкам. MinWin же: там теперь вместо kernel32 импортируется 150 "виртуальных" библиотек
В середине нулевых Руссинович заметил что kernel32, user32, advapi32 итд слились в единую какашку циклических зависимостей и надо бы навести порядок.
Решено было разделить .dll на уровни: есть core, есть crt, есть eventing (для evt). И вот core не может депендица на evt.
Однако чтобы не сломать 100500 старых программ, сделано было так: новые программы линкуются с дин. зависимостью на такие вот .dllы (их назвали "наборы api -- api sets").
В момент загрузки умный виндовый лоадер исползьует механизм namespace redirection чтобы подменить их на настоящую .dll.
К примеру он знает что api-ms-pituh.dll реализован в user32.dll, и ее грузит. А завтра API "pituh" унесут в "pethu.dll', поправят редирект и программа ничо даже не узнает.
Короче, ты линкуешься на ИНТЕРФЕЙС а не на конкретную реализацию.
Почитай про проект MinWin и API Sets.
ps: забавно поломался dependency walker по понятным причинам
оч советую читнуть
https://ofekshilon.com/2016/03/27/on-api-ms-win-xxxxx-dll-and-other-dependency-walker-glitches/
я из фара не вылезаю
зачем мне проводник?
да нет его там
Многие вещи в винде вообще никак не документированы. Например, существует крайне хитрая логика по которой выбирается наследует-ли процесс консольку (conhost) или создает новую.
Кроме как методом проб и ошибок это никак не узнать